Газ и плата за транзакции

Концепция

Чтобы провести любую транзакцию с блокчейном Aptos в сети mainnet, необходимо заплатить комиссию за обработку. Сюда входят транзакции от клиентского приложения, от держателя Стейка, оператора узла или избирателя. Плата за обработку, которую вы должны заплатить, зависит от вычислительных ресурсов и ресурсов хранения, которые вы используете в блокчейне:

  1. Обработка транзакций на блокчейне.

  2. Разместить подтвержденную запись по всей распределенной сети mainnet.

  3. Храните подтвержденную запись в распределенном хранилище блокчейна.

СПРАВКА

Концептуально этот сбор можно представить себе примерно так же, как мы платим за электричество или воду.

Определение приоритетов вашей транзакции

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

Единица измерения газа

Вы можете совершить простую транзакцию или сложную транзакцию, требующую от блокчейна большого количества вычислений и распределенного хранения данных. В любом случае вам придется потратить плату за обработку, достаточную для завершения транзакции. Именно здесь становится понятным понятие газа. Вот как это работает:

В блокчейне Aptos единица газа представляет собой базовую единицу потребления ресурсов. Одна единица газа представляет собой комбинированное представление:

  • Вычислительный ресурс, и

  • Ресурс хранения.

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

Стоимость газа

В сети Aptos руководство Aptos устанавливает минимальную цену за единицу газа. Однако рынок определяет фактическую минимальную цену единицы газа. Смотрите, например, Ethereum Gas Tracker, который показывает движение рыночной цены газа Ethereum.

ЕДИНИЦА ГАЗА 👉 Единица газа - это безразмерное число, выраженное целым числом. Общее количество единиц газа, потребляемого вашей транзакцией, зависит от сложности вашей транзакции. Цена газа, с другой стороны, выражается в терминах нативной coin блокчейна Aptos (Octas). Также смотрите раздел "Транзакции и состояния", чтобы узнать, как выглядит транзакция, представленная в блокчейне Aptos.

Газ и комиссия за транзакции на блокчейне Aptos

Когда транзакция поступает в блокчейн Aptos, она должна содержать следующие обязательные поля газа:

  • max_gas_amount: Максимальное количество единиц газа, которое отправитель транзакции готов потратить на выполнение транзакции. Это определяет максимальные вычислительные ресурсы, которые могут быть потреблены транзакцией.

  • gas_price: Цена газа, которую готов заплатить отправитель транзакции. Она выражается в единицах Octa, где:

    • 1 Octa = 10-8 APT и

    • это coin Aptos.

    Во время выполнения транзакции общее количество газа, выраженное в виде:

(total gas units consumed) * (gas_price)

не должна превышать max_gas_amount, иначе транзакция прервет выполнение.

Комиссия за транзакцию, взимаемая с пользователя, будет составлять максимум gas_price * max_gas_amount.

Параметры газа, установленные управлением

Следующие параметры газа устанавливаются управлением Aptos.

РАСПИСАНИЕ ГАЗА В СЕТИ Эти параметры газа в сети публикуются в блокчейне Aptos по адресу 0x1::gas_schedule::GasScheduleV2.

  • txn.maximum_number_of_gas_units: Максимальное количество единиц газа, которое может быть потрачено (это максимально допустимое значение для параметра max_gas_amount газа в транзакции). Это необходимо для того, чтобы корректировки динамического ценообразования не превышали сумму, которую вы готовы заплатить в целом.

  • txn.min_transaction_gas_units: Минимальное количество единиц газа, которое может быть потрачено. Значение max_gas_amount в транзакции должно быть установлено больше, чем значение этого параметра.

Динамическое ценообразование на газ для хранения

Ценообразование на газ в Aptos использует динамические цены для операций хранения. Это означает, что стоимость хранения, а значит и количество gas_used, может расти экспоненциально по мере заполнения базы данных состояния блокчейна Aptos. Стоимость хранения может увеличиться в 100x раз при 100% использовании. Однако ожидается, что валидаторы будут использовать более крупное и дешевое оборудование для хранения данных, чтобы смягчить такой экспоненциальный рост стоимости хранения.

Динамическое ценообразование используется для защиты сети Aptos в худших сценариях. Однако мы ожидаем, что модернизация сети Aptos произойдет задолго до того, как сеть окажется в зоне высоких затрат.

Примеры

Пример 1: Остаток на учетной записи в сравнении с комиссией за транзакцию

На учетной записи отправителя должно быть достаточно средств для оплаты комиссии за транзакцию.

Если, допустим, вы переведете все деньги со своей учетной записи так, что у вас не останется средств для оплаты комиссии за транзакцию. В этом случае блокчейн Aptos сообщит вам, что транзакция не состоится, и ваш перевод также не будет успешным.

Пример 2: Суммы транзакций в сравнении с комиссией за транзакцию

Комиссия за транзакцию не зависит от суммы перевода в транзакции.

В транзакции, например, транзакции А, вы переводите 1000 coins с одной учетной записи на другую учетную запись. Во второй транзакции B, с теми же значениями газа, что и в транзакции A, вы переводите 100 000 coins с одной учетной записи на другую учетную запись. Если предположить, что обе транзакции A и B отправляются примерно в одно и то же время, то затраты на газ для транзакций A и B будут практически идентичными.

Оценка единиц газа

Газ, используемый для транзакции, можно оценить путем моделирования транзакции. При моделировании транзакции результаты моделирования представляют собой точное количество, которое необходимо при точном состоянии блокчейна на момент моделирования. Используемые единицы газа могут меняться в зависимости от состояния сети. По этой причине любая сумма, полученная в результате симуляции, является лишь приблизительной, и при установке максимального количества газа его следует увеличить на сумму, которая вас устраивает.

Моделирование транзакции для оценки газа

Транзакции можно моделировать с помощью API SimulateTransaction. Этот API запустит именно ту транзакцию, которую вы планируете запустить.

СПРАВКА Обратите внимание, что подпись, указанная в транзакции, должна состоять из одних нулей. Это необходимо для того, чтобы никто не смог использовать действительную подпись.

Для имитации транзакции используются два флага:

  • estimate_gas_unit_price: Этот флаг оценивает цену единицы газа в транзакции, используя тот же алгоритм, что и API estimate_gas_price.

  • estimate_max_gas_amount: Этот флаг определит максимально возможное количество газа, которое вы можете использовать, и смоделирует транзакцию, чтобы сообщить вам фактическое количество gas_used.

Этапы моделирования

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

  1. Оценить газ с помощью моделирования, при этом для параметров estimate_gas_unit_price и estimate_max_gas_amount установлено значение true.

  2. Используйте gas_unit_price в возвращенной транзакции в качестве gas_unit_price вашей новой транзакции.

  3. Рассматривайте значения gas_used * gas_unit_price в возвращенной транзакции как нижнюю границу стоимости транзакции.

  4. Чтобы рассчитать верхнюю границу стоимости, возьмите минимальное значение max_gas_amount в возвращенной транзакции и gas_used * safety factor. В CLI для safety factor используется значение 1,5. Используйте это значение как max_gas_amount для транзакции, которую вы хотите отправить. Обратите внимание, что верхняя граница стоимости транзакции равна max_gas_amount * gas_unit_price, т.е. это наибольшая сумма, которая взимается с отправителя транзакции.

  5. Теперь у вас есть gas_unit_price и максимальное max_gas_amount, чтобы отправить транзакцию следующим образом:

    1. gas_unit_price из возвращенной смоделированной транзакции.

    2. max_gas_amount как минимальное количество gas_used * safety factor или max_gas_amount от транзакции.

  6. Если вы чувствуете необходимость установить приоритет или понизить приоритет вашей транзакции, измените значение параметра gas_unit_price транзакции. Увеличьте значение для более высокого приоритета и уменьшите значение для более низкого приоритета.

Last updated