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

robot
Генерація анотацій у процесі

Перший дизайн GAS у MOVE: метод розрахунку витрат GAS у блокчейні

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

Цей план GAS викладає принципи, процеси, методи розрахунку, пізні коригування та прийняття пропозицій від спільноти.

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

процес

Для ефективного виконання, у блокчейні процес такий:

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

принцип

Визначені принципи включають:

  1. Витрати на операції повинні бути безпосередньо пов'язані з доступними ресурсами мережі та знижуватися з розвитком технологій.
  2. GAS повинні бути встановлені управлінням у блокчейні, можуть бути безшовно налаштовані
  3. GAS може запобігти DoS-атакам, може швидко налаштовуватися відповідно до мережевої ситуації
  4. Ціна GAS має відображати бачення прискореного зростання та підтримки доступності у блокчейні.
  5. Заохочення до прийняття хороших рішень у дизайні, таких як пріоритет безпеки, модульність тощо

обчислення 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
· 9год тому
Говорити про це не так важливо, як сказати, скільки газу можна знизити?
Переглянути оригіналвідповісти на0
MetaverseMigrantvip
· 9год тому
Це газ може бути ще складнішим?
Переглянути оригіналвідповісти на0
NewDAOdreamervip
· 9год тому
Отримувати гроші навпаки - це також біль програміста на все життя.
Переглянути оригіналвідповісти на0
¯\_(ツ)_/¯vip
· 9год тому
move справжній бик! Ускладнили?
Переглянути оригіналвідповісти на0
  • Закріпити