Move є мовою смарт-контрактів, розробленою для блокчейн-середовища, яка може працювати на ланцюгах, що підтримують MoveVM. Її дизайн враховує питання безпеки блокчейну та смарт-контрактів і запозичує деякі концепції безпеки з Rust. У цій статті буде проаналізовано безпеку мови Move з трьох аспектів: мовні особливості, механізм виконання та інструменти валідації.
1. Безпекові характеристики Move
Мова Move підвищує безпеку, відмовляючись від певної гнучкості, не підтримує динамічне розподілення та рекурсивні зовнішні виклики, а натомість використовує концепції, такі як узагальнення, глобальне сховище, ресурси тощо, для реалізації альтернативних програмних моделей.
Основні складові частини Move включають:
Модуль: складається з типу структури та визначення процесу
Структура: може бути визначена як тип ресурсу, зберігається в глобальному сховищі ключ-значення
Процес: визначення логіки контракту
Глобальне сховище Move дозволяє зберігати дані, які можна програмно читати та записувати лише власникам модуля, але їх можна переглядати в публічній книзі обліку.
Move гарантує безпеку компіляції коду за допомогою двох механізмів:
Невід'ємна редукція: для статичного контролю, визначає збереження стану системи
Біт-код перевірник: забезпечує виконання безпечних типів і лінійності, запобігаючи незаконним операціям
2. Механізм роботи Move
Програма Move виконується у віртуальній машині і не може безпосередньо отримати доступ до системної пам'яті. Вона використовує стековий виконавчий модель, розділяючи глобальне сховище на пам'ять ( стек ) та глобальні змінні ( стек ).
Стан Move складається з викликів стеку, пам'яті, глобальних змінних та операційного масиву. Під час виконання викликів стек зберігає інформацію про контекст, статичний перехід запобігає динамічній диспетчеризації, тим самим запобігаючи атакам повторного входу.
MoveVM відокремлює зберігання даних та стек викликів, на відміну від EVM. Цей дизайн підвищує безпеку та ефективність виконання.
3. Перемістити доказ
Move Prover є інструментом формальної верифікації, який використовує алгоритми дедуктивної верифікації для перевірки правильності програм. Його робочий процес такий:
Отримати вихідні файли Move та специфікації
Скомпілювати в байт-код та перевірити об'єктну модель
Перетворення на проміжну мову Boogie
Генерація умов верифікації
Використання Z3-решателя для верифікації
Генерація діагностичного звіту
Move Specification Language використовується для опису специфікацій програм, може бути написаний незалежно від бізнес-коду.
4. Підсумок
Move враховує всі аспекти дизайну мови, виконання віртуальної машини та інструментів безпеки. Він жертвує частиною гнучкості, але підвищує безпеку та перевіряємість. Загальні вразливості EVM, такі як повторний вхід, переповнення тощо, можна ефективно уникнути, але все ще потрібно звертати увагу на проблеми авторизації, логіки та переповнення великих цілих чисел.
Хоча Move надає багато рівнів безпеки, все ж рекомендується, щоб розробники користувалися послугами сторонніх аудиторів безпеки та передавали написання та перевірку стандартів професійним компаніям з безпеки.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
26 лайків
Нагородити
26
8
Репост
Поділіться
Прокоментувати
0/400
CountdownToBroke
· 08-04 13:47
Знову копіює rust-брата, майже те саме, що і Тіро написав урізану версію
Переглянути оригіналвідповісти на0
TerraNeverForget
· 08-03 01:26
Знову рухаєшся, так? Тоді я теж рухаюсь.
Переглянути оригіналвідповісти на0
DuckFluff
· 08-02 19:38
І частково запозичив у Rust, дивитися на це вже важко.
Переглянути оригіналвідповісти на0
SurvivorshipBias
· 08-01 22:52
Move занадто безпечно, тепер у акули немає чим харчуватися.
Переглянути оригіналвідповісти на0
Ser_This_Is_A_Casino
· 08-01 22:50
Відчувається, що move трохи надто жорсткий, навіть більш жорсткий, ніж rust.
Переглянути оригіналвідповісти на0
SchrodingerAirdrop
· 08-01 22:50
Знову не можу вчитися, справді голова болить.
Переглянути оригіналвідповісти на0
MetaverseMigrant
· 08-01 22:49
Швидкість написання move ще не настільки швидка, як моя run...
Переглянути оригіналвідповісти на0
GasFeeDodger
· 08-01 22:45
Ще краще було б написати на solidity, справжня морока.
Повний аналіз безпеки мови Move: характеристики мови, механізм роботи та інструменти перевірки
Аналіз безпеки мови Move
Вступ
Move є мовою смарт-контрактів, розробленою для блокчейн-середовища, яка може працювати на ланцюгах, що підтримують MoveVM. Її дизайн враховує питання безпеки блокчейну та смарт-контрактів і запозичує деякі концепції безпеки з Rust. У цій статті буде проаналізовано безпеку мови Move з трьох аспектів: мовні особливості, механізм виконання та інструменти валідації.
1. Безпекові характеристики Move
Мова Move підвищує безпеку, відмовляючись від певної гнучкості, не підтримує динамічне розподілення та рекурсивні зовнішні виклики, а натомість використовує концепції, такі як узагальнення, глобальне сховище, ресурси тощо, для реалізації альтернативних програмних моделей.
Основні складові частини Move включають:
Глобальне сховище Move дозволяє зберігати дані, які можна програмно читати та записувати лише власникам модуля, але їх можна переглядати в публічній книзі обліку.
Move гарантує безпеку компіляції коду за допомогою двох механізмів:
Невід'ємна редукція: для статичного контролю, визначає збереження стану системи
Біт-код перевірник: забезпечує виконання безпечних типів і лінійності, запобігаючи незаконним операціям
2. Механізм роботи Move
Програма Move виконується у віртуальній машині і не може безпосередньо отримати доступ до системної пам'яті. Вона використовує стековий виконавчий модель, розділяючи глобальне сховище на пам'ять ( стек ) та глобальні змінні ( стек ).
Стан Move складається з викликів стеку, пам'яті, глобальних змінних та операційного масиву. Під час виконання викликів стек зберігає інформацію про контекст, статичний перехід запобігає динамічній диспетчеризації, тим самим запобігаючи атакам повторного входу.
MoveVM відокремлює зберігання даних та стек викликів, на відміну від EVM. Цей дизайн підвищує безпеку та ефективність виконання.
3. Перемістити доказ
Move Prover є інструментом формальної верифікації, який використовує алгоритми дедуктивної верифікації для перевірки правильності програм. Його робочий процес такий:
Move Specification Language використовується для опису специфікацій програм, може бути написаний незалежно від бізнес-коду.
4. Підсумок
Move враховує всі аспекти дизайну мови, виконання віртуальної машини та інструментів безпеки. Він жертвує частиною гнучкості, але підвищує безпеку та перевіряємість. Загальні вразливості EVM, такі як повторний вхід, переповнення тощо, можна ефективно уникнути, але все ще потрібно звертати увагу на проблеми авторизації, логіки та переповнення великих цілих чисел.
Хоча Move надає багато рівнів безпеки, все ж рекомендується, щоб розробники користувалися послугами сторонніх аудиторів безпеки та передавали написання та перевірку стандартів професійним компаніям з безпеки.