# Тарифы Namada

Для того чтобы урегулировать рынок спроса на блок-пространство Namada, с транзакциями связаны комиссии. Для того чтобы любая транзакция namada считалась действительной, должна быть уплачена соответствующая плата. Точный размер комиссии устанавливается пользователем и должен быть больше или равен установленной руководством минимальной цене на газ, которая включена в файл genesis в разделе `gas_cost`.

### Порядок внесения платы

При явном указании плата за газ вносится с помощью флага `--gas-payer`. Если флаг `--gas-payer` не указан, то плата за газ вносится первым ключом во флаге `--signing-keys`.

Это означает, что в транзакции:

```rust
namada client transfer \
  --source my-new-acc \
  --target validator-1 \
  --token NAM \
  --amount 10 \
  --signing-keys keysha
```

счет, связанный с ключом `keysha`, должен будет оплатить комиссию. Это означает, что даже если счет `accountant` может иметь положительный баланс `NAM`, для оплаты комиссии за транзакцию необходимо, чтобы у `keysha` был связанный с ним `NAM`.

Пользователь также может указать флаг `--gas-payer`, чтобы указать другой счет для оплаты комиссии. Это полезно в тех случаях, когда счет, подписывающий транзакцию, не имеет достаточного количества `NAM` для оплаты комиссии. Например, если у `keysha` баланс 5 NAM, а у `accountant` - 100 NAM, то следующая транзакция будет действительна:

```rust
namada client transfer \
  --source my-new-acc \
  --target validator-1 \
  --token NAM \
  --amount 10 \
  --signing-keys keysha \
  --gas-payer keysha2
```

(Предполагается, что `keysha2` существует и находится в кошельке пользователя)

Для целей тестовой сети мы рекомендуем [использовать кран](https://docs.namada.net/networks/testnets/pow) для получения `NAM` для оплаты транзакций.

### Как рассчитывается комиссия

Комиссия за транзакцию рассчитывается путем умножения лимита газа на цену газа. Пользователь может указать как параметр `--gas-limit`, так и `--gas-price`. Если не задано ни то, ни другое, то используется лимит газа и минимальная цена газа по умолчанию . В настоящее время лимит газа по умолчанию для любой транзакции установлен равным 20\_000.

Минимальная цена газа задается в файле `genesis` в разделе `gas_cost`.

### Как установить цену на газ и лимит газа

Рекомендуется устанавливать лимит газа в зависимости от проводимой сделки. Для того чтобы оценить лимит газа для конкретной транзакции, следует указать аргумент `--dry-run-wrapper`. Это означает, что транзакция смоделирована, но еще не отправлена.

Например, следующая команда смоделирует транзакцию перевода и вернет количество использованного газа:

```rust
namadac transfer \
  --source my-new-acc \
  --target validator-1 \
  --token NAM \
  --amount 10 \
  --signing-keys keysha \
  --gas-payer keysha2 \
  --dry-run-wrapper
```

В результате получится что-то вроде:

```
Dry-run result: Transaction is valid. Gas used: 1785;
```

Это означает, что мы вполне могли бы осуществить эту передаточную операцию при лимите газа 2000.

Следовательно, при осуществлении перевода мы можем указать лимит газа следующим образом:

```rust
namadac transfer \
  --source my-new-acc \
  --target validator-1 \
  --token NAM \
  --amount 10 \
  --signing-keys keysha \
  --gas-payer keysha2 \
  --gas-limit 2000
```

Если по каким-то причинам мы хотим оплатить более высокую стоимость газа, мы можем указать это следующим образом:

```rust
namadac transfer \
  --source my-new-acc \
  --target validator-1 \
  --token NAM \
  --amount 10 \
  --signing-keys keysha \
  --gas-payer keysha2 \
  --gas-limit 2000 \
  --gas-price 0.01
```

Это будет стимулировать валидаторов отдавать предпочтение этой сделке перед сделками с более низкой ценой газа.

### Оплата сборов токенами в MASP

Также существует возможность оплачивать комиссии с помощью MASP. Это делается для того, чтобы пользователь, даже не имея на своем прозрачном балансе NAM, мог совершать прозрачные транзакции по цепочке. Это еще один стимул для пользователей держать максимальное количество активов в MASP.

Для того чтобы оплачивать комиссии с помощью MASP, пользователь должен указать флаг `--gas-spending-key` и задать ему псевдоним расходного ключа в своем кошельке. Это означает, что вознаграждения будут списываться с экранированного баланса ключа-расходника, а перед оплатой `--gas-payer` - с прозрачного баланса (или с адреса, соответствующего первому ключу в строке `--signing-keys` ), до того, как за него заплатит `--gas-payer`.

Например, если у пользователя в кошельке есть ключ `spending-key-1`, и он хочет оплатить комиссию за транзакцию с помощью MASP, то он выполнит следующую команду:

```rust
namadac transfer \
  --source keysha \
  --target address-b \
  --token OSMO \
  --amount 10 \
  --gas-payer keysha \
  --gas-spending-key spending-key-1
```

В данном примере у `keysha` на прозрачном балансе может быть только баланс OSMO, а у `spending-key-1` на экранированном балансе может быть положительный баланс NAM. В этом случае NAM будет разэкранирован на прозрачный баланс `keysha`, а затем использован для оплаты комиссии за транзакцию.

### Использование одноразового `--gas-payer`

Также возможно использование одноразового `--gas-payer` для оплаты транзакционных комиссий. Это удобно в тех случаях, когда пользователь не хочет раскрывать личность `--gas-payer`. Для использования одноразового `--gas-payer` пользователь должен включить в команду флаг `--disposable-gas-payer` , и также должен указывать ключ `--gas-spending-key`. Это означает, что комиссия будет списана с экранированного баланса ключа `--gas-spending-key`, а затем снята с прозрачного баланса эфемерного прозрачного адреса, прежде чем будет оплачена эфемерным адресом.

Например, если у пользователя в кошельке есть ключ spending-key-1, и он хочет оплатить комиссию за транзакцию, используя одноразовый адрес, то он выполнит следующую команду:

```rust
namadac transfer \
  --source keysha \
  --target address-b \
  --token OSMO \
  --amount 10 \
  --gas-spending-key spending-key-1 \
  --disposable-gas-payer
```
