Язык Move, как язык смарт-контрактов нового поколения, отличается безопасностью как основным признаком. В данной статье анализируется безопасность языка Move с трех аспектов: языковые особенности, механизмы работы и инструменты верификации.
1. Безопасные характеристики языка Move
Язык Move был разработан с учетом вопросов безопасности блокчейна и смарт-контрактов, основываясь на безопасном дизайне языка Rust. В отличие от многих существующих языков программирования, Move отказался от нелинейной логики, основанной на гибкости, не поддерживает динамическую диспетчеризацию и рекурсивные внешние вызовы, а вместо этого использует концепции обобщений, глобального хранения, ресурсов и другие для реализации альтернативных программных моделей.
Основные функции безопасности Move включают:
Модуль (Module): состоит из определения типа структуры и процесса, может импортировать определения типов и процессы из других модулей.
Структуры (Structs): могут быть определены как тип ресурса, хранящиеся в глобальном хранилище ключ/значение.
Процесс ( Функция ): определяет инициализацию, безопасный процесс и небезопасный процесс.
Глобальное хранилище: позволяет сохранять постоянные данные, которые могут быть прочитаны и записаны программным образом только модулем, которому они принадлежат.
Проверка инвариантов: можно определить инварианты для статической проверки, чтобы гарантировать сохранение состояния системы.
Верификатор байт-кода: принудительно выполняет типовую систему на уровне байт-кода, предотвращая незаконные операции.
2. Механизм работы Move
Программа Move работает в виртуальной машине и не может напрямую обращаться к системной памяти. Программа выполняется на стеке, глобальное хранилище делится на память (, кучу ) и глобальные переменные (, стек ) делится на две части.
Байткод инструкции Move выполняется в стековом интерпретаторе. Состояние программы состоит из стека вызовов, памяти, глобальных переменных и операционных массивов. Значения ресурсов могут быть перемещены только разрушительно, некоторые значения (, такие как целые числа ), могут быть скопированы.
MoveVM разделяет хранение данных и стек вызовов, в отличие от EVM. Этот дизайн значительно улучшает безопасность и эффективность выполнения, но жертвует определенной гибкостью.
3. Переместить Провера
Move Prover является инструментом формальной верификации, использующим алгоритмы дедуктивной верификации для проверки того, соответствует ли программа ожидаемому. Его рабочий процесс следующий:
Получите исходные файлы Move и стандарты в качестве входных данных
Извлечение спецификаций, компиляция исходных файлов в байт-код
Преобразовать в модель объекта валидатора
Перевести на промежуточный язык Boogie
Генерация условий проверки
Использование решателя Z3 для проверки SMT-формул
Генерация диагностического отчета
Язык спецификаций Move используется для описания спецификаций и является подсистемой языка Move. Спецификации могут быть написаны независимо, не влияя на производственный код.
4. Резюме
Язык Move очень хорошо разработан с точки зрения безопасности, учитывая все аспекты, начиная от характеристик языка, выполнения виртуальной машины и заканчивая инструментами безопасности. Он может эффективно избегать уязвимостей, таких как повторный вход и переполнение, которые часто встречаются в EVM, но все же необходимо обращать внимание на такие проблемы, как аутентификация и логика.
Хотя 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.
13 Лайков
Награда
13
7
Поделиться
комментарий
0/400
MEVSupportGroup
· 07-11 05:45
Эй, даже безопаснее, чем rust. Больше не буду неудачником.
Посмотреть ОригиналОтветить0
SnapshotBot
· 07-11 05:45
Move совсем не понятно, где стало проще
Посмотреть ОригиналОтветить0
liquidation_watcher
· 07-11 05:45
rust все копируют? Нельзя ли придумать что-то новое?
Посмотреть ОригиналОтветить0
AllTalkLongTrader
· 07-11 05:45
rust все скопировали, что тут хорошего говорить?
Посмотреть ОригиналОтветить0
¯\_(ツ)_/¯
· 07-11 05:39
Эра rust закончилась, сейчас царствует move!
Посмотреть ОригиналОтветить0
HashBrownies
· 07-11 05:28
Я признаю, что Rust действительно силен!
Посмотреть ОригиналОтветить0
LonelyAnchorman
· 07-11 05:18
Неясно, имитируют ли Rust или хотят innovировать...
Полный анализ безопасности языка Move: особенности, механизмы и инструменты верификации
Анализ безопасности языка Move
Язык Move, как язык смарт-контрактов нового поколения, отличается безопасностью как основным признаком. В данной статье анализируется безопасность языка Move с трех аспектов: языковые особенности, механизмы работы и инструменты верификации.
1. Безопасные характеристики языка Move
Язык Move был разработан с учетом вопросов безопасности блокчейна и смарт-контрактов, основываясь на безопасном дизайне языка Rust. В отличие от многих существующих языков программирования, Move отказался от нелинейной логики, основанной на гибкости, не поддерживает динамическую диспетчеризацию и рекурсивные внешние вызовы, а вместо этого использует концепции обобщений, глобального хранения, ресурсов и другие для реализации альтернативных программных моделей.
Основные функции безопасности Move включают:
Модуль (Module): состоит из определения типа структуры и процесса, может импортировать определения типов и процессы из других модулей.
Структуры (Structs): могут быть определены как тип ресурса, хранящиеся в глобальном хранилище ключ/значение.
Процесс ( Функция ): определяет инициализацию, безопасный процесс и небезопасный процесс.
Глобальное хранилище: позволяет сохранять постоянные данные, которые могут быть прочитаны и записаны программным образом только модулем, которому они принадлежат.
Проверка инвариантов: можно определить инварианты для статической проверки, чтобы гарантировать сохранение состояния системы.
Верификатор байт-кода: принудительно выполняет типовую систему на уровне байт-кода, предотвращая незаконные операции.
2. Механизм работы Move
Программа Move работает в виртуальной машине и не может напрямую обращаться к системной памяти. Программа выполняется на стеке, глобальное хранилище делится на память (, кучу ) и глобальные переменные (, стек ) делится на две части.
Байткод инструкции Move выполняется в стековом интерпретаторе. Состояние программы состоит из стека вызовов, памяти, глобальных переменных и операционных массивов. Значения ресурсов могут быть перемещены только разрушительно, некоторые значения (, такие как целые числа ), могут быть скопированы.
MoveVM разделяет хранение данных и стек вызовов, в отличие от EVM. Этот дизайн значительно улучшает безопасность и эффективность выполнения, но жертвует определенной гибкостью.
3. Переместить Провера
Move Prover является инструментом формальной верификации, использующим алгоритмы дедуктивной верификации для проверки того, соответствует ли программа ожидаемому. Его рабочий процесс следующий:
Язык спецификаций Move используется для описания спецификаций и является подсистемой языка Move. Спецификации могут быть написаны независимо, не влияя на производственный код.
4. Резюме
Язык Move очень хорошо разработан с точки зрения безопасности, учитывая все аспекты, начиная от характеристик языка, выполнения виртуальной машины и заканчивая инструментами безопасности. Он может эффективно избегать уязвимостей, таких как повторный вход и переполнение, которые часто встречаются в EVM, но все же необходимо обращать внимание на такие проблемы, как аутентификация и логика.
Хотя Move имеет значительные преимущества в безопасности, полностью безопасных языков и программ не существует. Рекомендуется, чтобы разработчики все же использовали сторонний аудит безопасности и чтобы профессиональная команда безопасности писала и проверяла нормативный код.