Аналіз безпеки мови Move: всебічний розгляд характеристик, механізмів та інструментів верифікації

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

Аналіз безпеки мови Move

Мова Move, як нове покоління мови смарт-контрактів, з самого початку проектування враховувала питання безпеки блокчейну та смарт-контрактів. У цій статті буде проаналізовано безпеку мови Move з трьох аспектів: мовні характеристики, механізм виконання та інструменти верифікації.

1. Безпекові характеристики мови Move

Мова Move має такі основні характеристики безпеки:

  • Відмовилися від динамічної диспетчеризації, рекурсивних зовнішніх викликів та інших нелінійних логік, уникнувши уразливостей, таких як повторний вхід
  • Використання типів ресурсів та глобального механізму зберігання для забезпечення безпечного управління зберіганням та ресурсами
  • За допомогою інваріантних редукцій та байт-кодового валідатора проводиться подвійна перевірка безпеки під час компіляції

Ось простий приклад контракту Move:

переміщати модуль 0x1::TestCoin { використовуйте 0x1::signer;

const ADMIN: адреса = @0x1;

структура Coin має ключ {
    значення: u64
}

struct Info має ключ {
    total_supply: U64  
}

інваріант для всіх addr: адреса, де існує<coin>(addr):
    <info>глобальний (ADMIN).total_supply >= глобальний<coin>(addr).value;

Публічні веселощі initialize(account: &signer) {
    assert!(signer::address_of(account) == ADMIN, 1);
    перемістити_до(рахунку, Інформація { загальна_кількість: 0 });
}

публічні веселощі mint(account: &підписувач, кількість: u64): Coin {
    assert!(signer::address_of(account) == ADMIN, 1);
    Нехай пропозиція = borrow_global_mut<info>(ADMIN);
    supply.total_supply = supply.total_supply + сума;
    Монета { значення: кількість }
}

Публічні веселощі value_mut(coin: &mut Coin): &mut u64 {
    &mut coin.value
}

}

Move забезпечує безпеку коду за допомогою зменшення інваріантів та перевірки байт-коду:

  1. Невизначена регресія: використовується для перевірки, що сума значень усіх об'єктів Coin у системі повинна дорівнювати total_supply в Info.

  2. Байт-код перевірник: примусова перевірка типів та лінійна логіка, запобігання незаконному створенню, копіюванню або знищенню ресурсів.

Аналіз безпеки Move: зміна правил гри для мов смарт-контрактів

2. Механізм роботи Move

Програма Move працює у віртуальній машині і має такі характеристики:

  • Не можна отримати доступ до системної пам'яті під час виконання, забезпечуючи безпечну роботу в ненадійному середовищі
  • Використання стекового інтерпретатора для виконання байт-коду, легко реалізувати та контролювати
  • Розділіть зберігання даних та стек викликів, щоб підвищити безпеку та ефективність виконання
  • Ресурси можуть бути переміщені лише з руйнівним ефектом, не можуть бути скопійовані

Стан виконання програми Move складається з чотирикутника ⟨C, M, G, S⟩:

  • C: стек викликів
  • M: пам'ять ( купа )
  • G: Глобальна змінна ( стек )
  • S:операнди

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

Аналіз безпеки Move: зміна гри для мов смарт-контрактів

3. Рух Ровер

Move Prover є інструментом формальної верифікації, що використовується для забезпечення коректності смарт-контрактів. Його робочий процес виглядає так:

  1. Прийняття вихідного файлу Move та стандартів як вхідних даних
  2. Витягніть специфікації та скомпілюйте в байт-код
  3. Перетворити на модель об'єкта валідатора
  4. Перекласти на проміжну мову Boogie
  5. Генерація умов перевірки
  6. Використання Z3-солвера для верифікації формули
  7. Генерація діагностичного звіту

Move Prover використовує мову специфікацій Move для опису специфікацій програми. Ця мова є підмножиною Move, що дозволяє писати специфікації незалежно від бізнес-коду.

Аналіз безпеки Move: змінювач гри мови смарт-контрактів

Підсумок

Мова Move враховує безпеку на рівні мовних характеристик, виконання віртуальної машини та інструментів безпеки. Вона може ефективно уникати таких поширених вразливостей, як повторний вхід та переповнення, але потрібно також звертати увагу на проблеми аутентифікації та логіки. Рекомендується розробникам використовувати послуги сторонніх аудитів та передати написання специфікацій на розгляд безпековим компаніям для подальшого підвищення безпеки контрактів.

Аналіз безпеки Move: зміна правил гри в мові смарт-контрактів

MOVE-2.51%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Репост
  • Поділіться
Прокоментувати
0/400
gaslight_gasfeezvip
· 08-19 03:55
move, мабуть, злетіла в небо, але в кінці кінців все одно залежить від тестування.
Переглянути оригіналвідповісти на0
GhostChainLoyalistvip
· 08-18 16:10
Цей Move справді міцний!
Переглянути оригіналвідповісти на0
LiquidityNinjavip
· 08-16 06:53
Механізм типів ресурсів справді має дещо цікаве!
Переглянути оригіналвідповісти на0
ProofOfNothingvip
· 08-16 06:50
Старі гравці move вже померли?
Переглянути оригіналвідповісти на0
JustAnotherWalletvip
· 08-16 06:49
Move ще непогано
Переглянути оригіналвідповісти на0
rekt_but_not_brokevip
· 08-16 06:44
Знову купа порожніх слів. Чи перевіряли ви реальну продуктивність?
Переглянути оригіналвідповісти на0
  • Закріпити