Тарифы Namada

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

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

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

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

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, то следующая транзакция будет действительна:

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

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

Для целей тестовой сети мы рекомендуем использовать кран для получения NAM для оплаты транзакций.

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

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

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

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

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

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

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.

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

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

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

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, то он выполнит следующую команду:

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, и он хочет оплатить комиссию за транзакцию, используя одноразовый адрес, то он выполнит следующую команду:

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

Last updated