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

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

Вступ

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

1. Безпека мови Move

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

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

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

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

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

// Загальна пропозиція дорівнює сумі значень усіх монет
незмінний для всіх addr: адреса де існує<coin>(addr):
    глобальний<info>(АДМІН).загальна_пропозиція == сума(вибрати Coin.value (глобальний<coin>(адрес)));

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

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

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

}

Два важливі механізми безпеки мови Move:

a) Перевірка незмінності: визначення збереження стану за допомогою мови скорочень.

b) Віртуальна машина: примусове виконання безпечних типів і лініаризація, щоб запобігти незаконним операціям.

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

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

Програма Move виконується у віртуальній машині та не може безпосередньо отримувати доступ до системної пам'яті. Стан програми складається з викликів стека, пам'яті, глобальних змінних та операційного масиву.

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

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

3. Перемістити Доказник

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

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

Move Specification Language використовується для опису специфікацій поведінки програми, може бути написана незалежно від бізнес-коду.

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

4. Підсумок

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

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

Переглянути оригінал
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.
  • Нагородити
  • 7
  • Поділіться
Прокоментувати
0/400
FromMinerToFarmervip
· 07-08 18:00
Move вбивця прийшов~
Переглянути оригіналвідповісти на0
ProxyCollectorvip
· 07-08 01:41
Написано занадто довго, ніхто не читає серію
Переглянути оригіналвідповісти на0
TestnetScholarvip
· 07-06 08:22
Move є майбутнім!
Переглянути оригіналвідповісти на0
MetaverseVagabondvip
· 07-06 08:20
Яка користь від безпеки, якщо не вмієш заробляти?
Переглянути оригіналвідповісти на0
RektCoastervip
· 07-06 08:18
Move справді чудово!
Переглянути оригіналвідповісти на0
FlyingLeekvip
· 07-06 08:05
Код написаний дуже добре
Переглянути оригіналвідповісти на0
GasFeeBarbecuevip
· 07-06 08:01
рух є єдиним рішенням, так?
Переглянути оригіналвідповісти на0
  • Закріпити