Полный анализ безопасности языка Move: характеристики языка, механизмы работы и инструменты проверки

robot
Генерация тезисов в процессе

Анализ безопасности языка Move

Введение

Move — это язык смарт-контрактов, разработанный для блокчейн-среды, который может работать на цепочках, поддерживающих MoveVM. Его дизайн учитывает вопросы безопасности блокчейна и смарт-контрактов и заимствует некоторые концепции безопасности из Rust. В данной статье будет проанализирована безопасность языка Move с трех аспектов: языковые особенности, механизм выполнения и инструменты верификации.

Анализ безопасности Move: изменяющий правила игры язык смарт-контрактов

1. Безопасные характеристики языка Move

Язык Move повышает безопасность за счет отказа от некоторой гибкости, не поддерживает динамическую диспетчеризацию и рекурсивные внешние вызовы, а вместо этого использует такие концепции, как обобщения, глобальное хранилище, ресурсы и т. д. для реализации альтернативных программных моделей.

Основные компоненты Move включают:

  • Модуль: состоит из типов структуры и определения процессов
  • Структура: может быть определена как тип ресурса, хранящийся в глобальном хранилище ключ-значение
  • Процесс: Определение логики контракта

Глобальное хранилище Move позволяет сохранять данные на постоянной основе, которые могут быть прочитаны и записаны программным способом только владельцем модуля, но могут быть просмотрены в публичном реестре.

Move обеспечивает безопасность компиляции кода двумя механизмами:

  1. Невариантное преобразование: используется для статической проверки, определяет сохранение состояния системы.

  2. Бит-код валидатор: принудительное выполнение безопасных типов и линейной структуры, предотвращение незаконных операций

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

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

Программа Move выполняется в виртуальной машине и не может напрямую получить доступ к системной памяти. Она использует стековый модель выполнения, разделяя глобальное хранилище на память (, кучу ) и глобальные переменные ( стек ).

Состояние Move состоит из стека вызовов, памяти, глобальных переменных и операций. В процессе выполнения стек вызовов сохраняет информацию о контексте, статический переход избегает динамической диспетчеризации, тем самым предотвращая атаки повторного входа.

MoveVM отделяет хранилище данных и стек вызовов, в отличие от EVM. Этот дизайн повышает безопасность и эффективность выполнения.

Анализ безопасности Move: Game Changer языка смарт-контрактов

3. Переместить Провер

Move Prover — это инструмент формальной верификации, использующий алгоритмы дедуктивной проверки для верификации корректности программы. Его рабочий процесс следующий:

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

Язык спецификации Move используется для описания спецификаций программ и может быть написан независимо от бизнес-кода.

4. Итоги

Move учитывает все аспекты проектирования языка, выполнения виртуальной машины и средств безопасности. Он жертвует некоторой гибкостью, но повышает безопасность и проверяемость. Распространенные уязвимости EVM, такие как повторный вход, переполнение и т.д., могут быть эффективно предотвращены, но необходимо по-прежнему обращать внимание на проблемы аутентификации, логики и переполнения больших целых чисел.

Несмотря на то, что Move предлагает множество средств безопасности, разработчикам все равно рекомендуется использовать услуги стороннего аудита безопасности и передать написание и проверку стандартов профессиональным компаниям по безопасности.

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

MOVE3.01%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 8
  • Репост
  • Поделиться
комментарий
0/400
CountdownToBrokevip
· 08-04 13:47
Снова копирует брата rust, почти как если бы Тиецзы написал урезанную версию.
Посмотреть ОригиналОтветить0
TerraNeverForgetvip
· 08-03 01:26
Снова закручиваем, да? Тогда я тоже закручиваю.
Посмотреть ОригиналОтветить0
DuckFluffvip
· 08-02 19:38
И взял часть от Rust, выглядит довольно сложно.
Посмотреть ОригиналОтветить0
SurvivorshipBiasvip
· 08-01 22:52
Move слишком безопасно, теперь у акул нет еды.
Посмотреть ОригиналОтветить0
Ser_This_Is_A_Casinovip
· 08-01 22:50
Кажется, move немного слишком жесткий, даже более строгий, чем rust.
Посмотреть ОригиналОтветить0
SchrodingerAirdropvip
· 08-01 22:50
Снова не могу учиться, голова просто разрывается.
Посмотреть ОригиналОтветить0
MetaverseMigrantvip
· 08-01 22:49
писать на move не так быстро, как я бегаю...
Посмотреть ОригиналОтветить0
GasFeeDodgervip
· 08-01 22:45
Еще лучше написать на solidity, это действительно тяжело.
Посмотреть ОригиналОтветить0
  • Закрепить