MOVE первооткрыватель дизайна GAS: анализ метода вычисления потребления ресурсов в блокчейне

robot
Генерация тезисов в процессе

Первый дизайн GAS в языке MOVE: метод расчета затрат GAS в блокчейне

Предыдущая версия языка MOVE изначально планировалась для работы без GAS, поэтому не была подготовлена к плану GAS. Недавно созданный план GAS для одной из публичных цепочек стал первым дизайном GAS для языка MOVE и называется "приключением".

Этот план GAS объясняет принципы, процессы, методы расчета, последующие корректировки и принятие предложений сообщества.

GAS-измерение является основной концепцией многих блокчейнов, оно определяет абстрактные вычисления объема вычислительных и хранилищных ресурсов, необходимых для выполнения и хранения транзакций в блокчейне. GAS-план определяет стоимость всех затрат на выполнение в блокчейне, используемую для расчета затрат на GAS, использованный во время выполнения транзакции.

процесс

Для эффективного выполнения, в блокчейне процесс следующий:

  1. Определение принципов
  2. Подготовьте оценочную рамку, определите цену для каждого исполнения
  3. Создание системы измерения GAS и безопасной алгебры GAS для MOVE
  4. Импортировать верхний GAS фреймворк
  5. Сделайте GAS-рамку осведомленной о хранилище
  6. Далее уточнить план GAS

принцип

Определенные принципы включают:

  1. Операционные расходы должны быть непосредственно связаны с доступными ресурсами сети и снижаться с прогрессом технологий.
  2. GAS должен быть установлен управлением в блокчейне, его можно бесшовно настраивать.
  3. GAS может предотвратить атаки DoS и быстро адаптироваться в зависимости от состояния сети.
  4. Цены на GAS должны отражать видение ускоренного роста и поддержания доступности в блокчейне.
  5. Поощряйте делать хорошие выборы в дизайне, такие как приоритизация безопасности, модульности и т.д.

расчет GAS

Пользователь должен указать при отправке транзакции:

  • Максимальное количество GAS: максимальное количество единиц GAS, которое пользователь готов потратить на выполнение сделки.
  • Цена на GAS: рассчитывается в восьмеричном виде за единицу GAS, 1 восьмеричное = 0.00000001 APT

В процессе выполнения сделки будет взиматься:

  1. Фиксированные расходы
  2. Стоимость выполнения команды MOVE
  3. Стоимость чтения данных из постоянного хранилища
  4. Стоимость записи данных в постоянное хранилище

Итоговая комиссия за транзакцию = Общее количество использованного GAS × Цена за единицу GAS

Например, если транзакция потребляет 670 единиц GAS, а заданная пользователем цена за единицу GAS составляет 100 Octa/единица, то окончательная стоимость составит 670 × 100 = 67000 Octa = 0.00067 APT.

Если во время выполнения сделки исчерпается GAS, отправитель будет взиматься плата по максимальному объему GAS, изменения, внесенные в эту сделку, будут отменены.

Создание плана GAS

  1. Основная конфигурация

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

  1. Масштаб сделки

Большинство объемов транзакций находятся на уровне тысяч байт. Модуль MOVE может достигать нескольких тысяч байт, а некоторый фреймворк составляет около 100 КБ. Пользовательские модули обычно находятся в диапазоне от 4 до 40 КБ. Изначально объем транзакции был установлен на уровне 32 КБ, затем был скорректирован до 64 КБ на основе отзывов сообщества.

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

  1. Максимальное количество GAS

Максимальная единица GAS в плане GAS определяет максимальное количество операций, которые могут быть выполнены в одной транзакции. Слишком высокая установка может негативно повлиять на производительность в блокчейне. По тестам, даже с максимальным обновлением фрейма, используется менее 90% от максимальной единицы GAS, установленной на 1,000,000(.

  1. Выполнение

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

На основе этого грубо оцените относительную стоимость всех команд MOVE и встроенных функций. Обратите внимание, что существуют некоторые проблемы с встроенными функциями, которые можно решить путем сложения чисел.

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

  1. Хранение

При доступе к элементам состояния или данным книги учета узел отправляет запросы на чтение и запись на устройство хранения. Общее количество обращений к данным в секунду зависит от пропускной способности устройства хранения и емкости IOPS. Доступ к данным представляет собой мгновенно дефицитный ресурс, за который пользователи конкурируют на рынке сборов в условиях нагрузки на систему. Стоимость использования диска для записи данных в блокчейне является постоянной.

Доступ и хранение любого элемента состояния влекут за собой затраты, связанные со структурой данных, необходимой для проверки всего состояния в блокчейне. Эти затраты зависят от базиса различных элементов состояния )$2^{256}$(. Также существуют затраты, пропорциональные размеру каждого элемента.

За исключением случаев, описанных в следующем разделе, стоимость операций с элементами состояния ) составляет:

Хранение GAS-оплаты = item_fee + (byte_fee × bytes)

( Чтение, создание и запись

Доступ к элементам состояния делится на три типа: чтение, создание или запись. Доступ оплачивается в зависимости от стоимости элемента и стоимости байта.

Чтение операций наиболее распространено, ограничено только временной нехваткой ресурсов. Стоимость чтения калибруется в зависимости от IOPS диска и пропускной способности эталонных аппаратных спецификаций.

Создание операции добавляет новые элементы в хранилище состояния, увеличивая стоимость структуры данных аутентификации, и, следовательно, является самой дорогой. Стоимость создания калибруется в зависимости от объема дискового пространства, доступного в сети.

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

Стоимость хранения рассчитывается на основе каждой транзакции: даже если один и тот же ресурс читается/записывается несколько раз, взимается только одна плата.

Основываясь на приведенных выше соображениях, определено 6 параметров GAS, составляющих общую стоимость:

  • per_item_read:Калибровка по IOPs
  • per_byte_read: калибровка в зависимости от фактической пропускной способности
  • per_item_create:Калибровка в соответствии с общей целью проекта
  • per_byte_create: Калибровка ) по целевому общему размеру, каждый элемент содержит первый 1KB ###
  • per_item_write: То же, что и per_item_read
  • per_byte_write: То же, что и per_byte_create

( стабильная стоимость единицы GAS

Каждая операция и сама транзакция требуют фиксированной единичной стоимости относительно затрат на хранение и выполнение, независимо от рыночной стоимости, рассчитанной в APT или фиате. Фиксированная единичная стоимость GAS помогает поддерживать стабильность плана GAS и отрывает его от рыночной стоимости APT. Правильный выбор точности единицы GAS помогает поддерживать стабильность плана GAS. Учитывая это, единицы GAS представлены с точностью примерно до 3 знаков. Таким образом, стоимость транзакции перевода составляет примерно 700 единиц GAS.

) участие сообщества

Члены сообщества могут:

  1. Найдите неразумные моменты в плане GAS
  2. Выразите беспокойство и участвуйте в обсуждении
  3. Проголосовать по предложениям по управлению, связанным с GAS

Корректировка стоимости GAS

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

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

Иногда формулы GAS могут требовать сложных изменений. Эти формулы обычно кодируются на Rust и различаются по признакам GAS в блокчейне. Для обновления этих формул необходимо обновить программное обеспечение узлов, широко применять их и утвердить новое поколение GAS через предложения по управлению.

Будущая работа

В качестве первого жизнеспособного GAS-фрейма MOVE, будущие направления работы включают:

  1. Снижение затрат на выполнение: использование реальной модели GAS для отображения эффективности компилятора и виртуальной машины, улучшение для снижения затрат на выполнение

  2. Многоуровневый расчет GAS: позволяет пользователям задавать отдельные бюджеты для выполнения и хранения, избегая высоких цен на GAS из-за проблем с качеством кода.

  3. Снижение громоздкости: исследовать концепцию TTL для каждого проекта, удалять не посещенные состояния проектов по истечении TTL

Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Награда
  • 5
  • Поделиться
комментарий
0/400
rugged_againvip
· 10ч назад
Говорить об этом не так важно, как сказать, насколько Газ может снизиться?
Посмотреть ОригиналОтветить0
MetaverseMigrantvip
· 10ч назад
Эх, этот Газ может быть еще сложнее?
Посмотреть ОригиналОтветить0
NewDAOdreamervip
· 10ч назад
Получение денег наоборот — это боль всей жизни кодера.
Посмотреть ОригиналОтветить0
¯\_(ツ)_/¯vip
· 10ч назад
🔥 Что сложного?
Посмотреть ОригиналОтветить0
  • Закрепить