Мова Move як нове покоління мов смарт-контрактів з самого початку проектування приділяла велику увагу проблемам безпеки блокчейну та смарт-контрактів. У цій статті буде проаналізовано безпеку мови Move з трьох аспектів: характеристик мови, механізму виконання та інструментів верифікації.
1. Безпекові характеристики мови Move
На відміну від багатьох існуючих мов програмування, мова Move відмовляється від нелінійної логіки, що базується на гнучкості, не підтримує динамічну диспетчеризацію та рекурсивні зовнішні виклики, натомість використовує такі концепції, як узагальнення, глобальне зберігання, ресурси тощо, щоб реалізувати альтернативні моделі програмування. Цей дизайн допомагає уникати вразливостей, таких як повторний вхід.
Основні функції безпеки Move включають:
Модульність: кожен модуль Move складається з визначення структур типів і процедур, може імпортувати типи з інших модулів та викликати процедури з інших модулів.
Тип ресурсу: структуру типу ресурсу визначають за допомогою синтаксису has key, можна зберігати у глобальному сховищі ключ-значення.
Глобальне зберігання: дозволяє постійно зберігати дані, які можуть бути прочитані та записані лише тими, хто має модуль, але зберігаються в загальному реєстрі для перегляду.
Контроль доступу: можна обмежити права виклику процесу за допомогою попередніх умов тощо.
Інваріантна редукція: можна визначити статичні перевірки інваріантів, що гарантують узгодженість стану системи.
Віртуальна машина: на рівні байт-коду забезпечує контроль за типовою системою, запобігаючи незаконному створенню, розпаковуванню, копіюванню та знищенню ресурсів.
Ці характеристики забезпечують Move потужний рівень безпеки на рівні мови.
2. Механізм роботи Move
Програма Move виконується у віртуальній машині, не може безпосередньо отримати доступ до системної пам'яті. MoveVM використовує стековий інтерпретатор для виконання байт-кодів, що спрощує реалізацію та контроль.
Основний механізм роботи MoveVM включає:
Статусний показник: використання чотирикутника ⟨C, M, G, S⟩ для представлення стану програми, включаючи стек викликів, пам'ять, глобальні змінні та операнди.
Стек викликів: містить контекстну інформацію та номери інструкцій, що виконуються.
Статичний перехід: не підтримує динамічне розподілення, залежність викликів функцій без циклів, що запобігає повторному входу.
Розділення даних та логіки: відокремлення стану користувача ( ресурсу ) від програмної логіки, що підвищує безпеку та ефективність виконання.
Ці механізми забезпечують високу безпеку Move під час виконання.
3. Рух Ровер
Move Prover — це інструмент формальної верифікації, заснований на міркуваннях, який може допомогти розробникам забезпечити правильність смарт-контрактів. Його основні характеристики включають:
Використання формальної мови для опису поведінки програми
Використання алгоритму дедуктивної верифікації
Підтримка написання специфікацій за допомогою Move Specification Language
Можна писати специфікації незалежно від бізнес-коду
Генерація звітів про помилки на рівні виходу
Move Prover надає потужні можливості автоматизованої верифікації для смарт-контрактів Move, що сприяє підвищенню безпеки коду.
В цілому, мова Move була спроектована з урахуванням безпеки, і показує відмінні результати в характеристиках мови, виконанні віртуальної машини та безпекових інструментах. Однак, все ж рекомендується розробникам використовувати сторонні послуги з аудиту безпеки та доручити написання та перевірку коду специфікації професійній безпековій команді, щоб ще більше підвищити безпеку контракту.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
8 лайків
Нагородити
8
4
Репост
Поділіться
Прокоментувати
0/400
PumpStrategist
· 08-03 05:54
Аналіз хороший, подивіться, чи Свічка форма є підтримкою.
Переглянути оригіналвідповісти на0
SchrödingersNode
· 08-02 03:33
Move дуже смачно, я вже давно на нього націлився.
Переглянути оригіналвідповісти на0
GateUser-e51e87c7
· 07-31 07:25
Той Move виглядає набагато стабільніше, ніж Solidity...
Аналіз безпеки мови Move: всебічний розгляд мовних особливостей, механізмів виконання та засобів валідації
Аналіз безпеки мови Move
Мова Move як нове покоління мов смарт-контрактів з самого початку проектування приділяла велику увагу проблемам безпеки блокчейну та смарт-контрактів. У цій статті буде проаналізовано безпеку мови Move з трьох аспектів: характеристик мови, механізму виконання та інструментів верифікації.
1. Безпекові характеристики мови Move
На відміну від багатьох існуючих мов програмування, мова Move відмовляється від нелінійної логіки, що базується на гнучкості, не підтримує динамічну диспетчеризацію та рекурсивні зовнішні виклики, натомість використовує такі концепції, як узагальнення, глобальне зберігання, ресурси тощо, щоб реалізувати альтернативні моделі програмування. Цей дизайн допомагає уникати вразливостей, таких як повторний вхід.
Основні функції безпеки Move включають:
Модульність: кожен модуль Move складається з визначення структур типів і процедур, може імпортувати типи з інших модулів та викликати процедури з інших модулів.
Тип ресурсу: структуру типу ресурсу визначають за допомогою синтаксису has key, можна зберігати у глобальному сховищі ключ-значення.
Глобальне зберігання: дозволяє постійно зберігати дані, які можуть бути прочитані та записані лише тими, хто має модуль, але зберігаються в загальному реєстрі для перегляду.
Контроль доступу: можна обмежити права виклику процесу за допомогою попередніх умов тощо.
Інваріантна редукція: можна визначити статичні перевірки інваріантів, що гарантують узгодженість стану системи.
Віртуальна машина: на рівні байт-коду забезпечує контроль за типовою системою, запобігаючи незаконному створенню, розпаковуванню, копіюванню та знищенню ресурсів.
Ці характеристики забезпечують Move потужний рівень безпеки на рівні мови.
2. Механізм роботи Move
Програма Move виконується у віртуальній машині, не може безпосередньо отримати доступ до системної пам'яті. MoveVM використовує стековий інтерпретатор для виконання байт-кодів, що спрощує реалізацію та контроль.
Основний механізм роботи MoveVM включає:
Статусний показник: використання чотирикутника ⟨C, M, G, S⟩ для представлення стану програми, включаючи стек викликів, пам'ять, глобальні змінні та операнди.
Стек викликів: містить контекстну інформацію та номери інструкцій, що виконуються.
Статичний перехід: не підтримує динамічне розподілення, залежність викликів функцій без циклів, що запобігає повторному входу.
Розділення даних та логіки: відокремлення стану користувача ( ресурсу ) від програмної логіки, що підвищує безпеку та ефективність виконання.
Ці механізми забезпечують високу безпеку Move під час виконання.
3. Рух Ровер
Move Prover — це інструмент формальної верифікації, заснований на міркуваннях, який може допомогти розробникам забезпечити правильність смарт-контрактів. Його основні характеристики включають:
Move Prover надає потужні можливості автоматизованої верифікації для смарт-контрактів Move, що сприяє підвищенню безпеки коду.
В цілому, мова Move була спроектована з урахуванням безпеки, і показує відмінні результати в характеристиках мови, виконанні віртуальної машини та безпекових інструментах. Однак, все ж рекомендується розробникам використовувати сторонні послуги з аудиту безпеки та доручити написання та перевірку коду специфікації професійній безпековій команді, щоб ще більше підвищити безпеку контракту.