Sui.

Допис

Діліться своїми знаннями.

article banner.
Meaning.Sui.
Jul 08, 2025
Стаття

Поглиблений аналіз технічних деталей Move VM

Sui: Поглиблений аналіз технічних деталей Move VM

У сучасній галузі технологій блокчейнуMove VM, як ключовий технічний компонент, відіграє важливу роль уSui. У цій статті наведенопоглиблений аналізтехнічних деталей Move VM, зокрема:

  • Процес ініціалізації
  • Механізм кешування коду
  • Публікація модулів та сценаріїв
  • Виконання функції
  • Аналіз двійкового формату

1. Перемістити ініціалізацію VM

Ініціалізація Move VM є простою та ефективною**. LoaderДля цього потрібен лише один екземпля Mutexр - по суті кілька HashMapзахищених порожніх таблиць, таких як Vecі.

Цей процес є недорогим і створює основу для всіх операцій VM.

Move VM використовуєзавантаження коду на вимогу. Код не попередньо завантажений; натомість він отримується під час виконання під час виконання функції або сценарію.

Після завантаження модулі/скриптикешуються та повторно використовуються, що значно підвищує продуктивність.


2. Механізм кешування коду

2.1 Перше завантаження

Коли VM завантажує модуль вперше:

  1. Vec<u8>Запитує сховище даних для отримання двійкових даних ()
  2. Десеріалізує та перевіряє дані на точність та цілісність
  3. Завантажує всі залежності одним і тим же процесом
  4. Пов'язує модуль з його залежностями
  5. Кешує модуль через Loaderдля повторного використання протягом життєвого циклу віртуальної машини

2.2 Узгодженість кешу

-Системні транзакції(наприклад, жорсткі оновлення) можуть порушити узгодженість кешу коду.

  • Клієнт повиненпризупинити обробку транзакціїі перезапустити віртуальну машину, коли це станеться.
  • Клієнти повинні вирівняти свій DataStoreвигляд із завантаженим кодом та відновити інстанцію віртуальної машини, якщо це необхідно.

3. Процес публікації модуля

Щоб опублікувати модуль, клієнт зателефонує publish_moduleза допомогою:

  • Серіалізовані модульні байти
  • Адреса відправника
  • Посилання на GasMeter

Кроки:

1.Десеріалізація

  • Якщо не вдається → повернути помилку.

2.Перевірка адреси

  • Адреса модуля повинна збігатися з адресою відправника → elseMODULE_ADDRESS_DOES_NOT_MATCH_SENDER.

3.Перевірка дублікування DUPLICATE_MODULE_NAME- Повторна публікація однойменного модуля → помилка.

4.Перевірка завантаження

  • Забезпечує завантаження модуля пізніше. Невдається? Помилка повернення.

5.Записати в сховище

  • Після перевірки серіалізований модуль зберігається і вважається дійсним.

4. Механізм виконання сценарію

Скрипт у Move по суті є одноразовою функцією, яка часто використовується для виконання транзакцій.

Кроки:

1.** Завантаження сценарію та основної функції**

  • Обчислі sha3_256ть хеш сценарію.
  • Використовуйте хеш, щоб перевірити, чи є він у кеші.
  • Якщо не кешовано → завантажити та перевірити.
  • Перевірте параметри основного типу функції.

2.Список параметрів збірки

  • Signerзначення на основі облікових записів відправника. TYPE_MISMATCH- Інші арги повинні відповідати дозволеним типам → else.

3.Виконати скрипт

  • ВМ викликів інтерпретатора.
  • При помилці → транзакція не вдається і повертається помилка.
  • Інакше → повернути успіх.

5. Виконання функції сценарію

Представлено в Move VM версії 2.0.

  • Працює як звичайний сценарій
  • Джерело - це scriptвидима функція всередині ланцюгового модуля

Кроки:

  1. Завантажте функцію за допомогою ModuleIdі назви функції
  2. Перевірити видимість (script)
  • Не видно сценарію? → EXECUTE_SCRIPT_FUNCTION_CALLED_ON_NON_SCRIPT_VISIBLE
  1. Виконати так само, як звичайний скрипт

6. Виконання загальної функції

Move VM дозволяє виконуватибудь-яку функціюв модулі за назвою.

Назви функцій є** унікальними**в модулі → підпис не потрібен.

Етапи виконання:

1.Модуль навантаження

  • Якщо помилка → повернення збій

2.Вирішити функцію

  • Якщо не знайдено → FUNCTION_RESOLUTION_FAILURE
  • Перевірте відповідність параметрам типу → помилка else

3.Список параметрів збірки

  • Зіставте всі параметри до дозволених типів → інше TYPE_MISMATCH

4.Виконати

  • Інтерпретатор запускає функцію
  • VM повертає результат

7. Аналіз двійкового формату

7.1 Загальна архітектура

  • Всі модулі/скрипти існують удвійковій формі
  • Модулі = колекції функцій і структур
  • Скрипти = прості точки входу (без повернення значення)

ВикористовуєULEB128для цілочисельного стиснення тапрефіксацію розмірудля векторів.

7.2 Двійковий заголовок

3 компоненти:

-Магія: Виправлено 4 байт → 0xA1, 0x1C, 0xEB, 0x0B -Версія: 4-байтовий літл-ендіан int -Кількість столів: ULEB128

7.3 Заголовки таблиць

Кожен заголовок включає в себе:

  • TableKind(1 байт)
  • TableOffset(УЛЕБ128)
  • TableLength(УЛЕБ128)

Таблиці повинні бутисуміжні, не перекриватися.

7.4 Деталі таблиці

Таблиці описують:

-MODULE_HANDLES: розташування модулів за допомогою індексу -ADDRESS_IDENTIFIERS,IDENTIFIERS,STRUCT_HANDLES,FUNCTION_HANDLES: метадані типу та функції -FUNCTION_INSTANTIATIONS,SIGNATURES,CONSTANT_POOL: екземпляри та константи

7.5 Допоміжні визначення

-Type Parameter Kind: 1 байт →ALL,COPYABLE, RESOURCE -SignatureToken: 1 байт для представлення типів (U8, U64``STRUCT, і т.д.) Bytecodes``POP-RET: 1 байтовий операційний код+додаткове корисне навантаження → наприклад,,, BR_TRUE

7.6 Двійкові дані для конкретних скриптів

  • Відсутність скриптів FUNCTION_DEFINITIONS
  • Натомість вони вбудовують інформацію про запис безпосередньо:
  • Кількість параметрів типу & типи
  • Індекси типу параметра
  • Довжина байт-коду та корпус

✅ Висновок

Move VMпропонуєпотужне, безпечне та ефективністьсередовище для виконання блокчейну. Розуміючи:

  • Ініціалізація VM
  • Стратегії кешування
  • Виконання функції/модуля
  • Бінарна структура

Розробники можуть оптимізувати свої додатки на основі Move**та ефективно налагоджувати проблеми, сприяючи еволюції екосистеми Sui.

  • Sui
  • Architecture
0
Поділитися
Коментарі
.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

394Пости554Відповіді
Sui.X.Peera.

Зароби свою частку з 1000 Sui

Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

Кампанія винагородЛипень