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

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

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

Язык Move — это язык смарт-контрактов, который может работать в блокчейн-среде, реализующей MoveVM. Он был разработан с учетом множества проблем безопасности, связанных с блокчейном и смарт-контрактами, и заимствовал некоторые принципы безопасного проектирования языка Rust. Какова безопасность Move как языка нового поколения, основным отличием которого является безопасность? Может ли он на уровне языка или через связанные механизмы избежать распространенных угроз безопасности, присущих виртуальным машинам контрактов, таким как EVM и WASM? Существуют ли уникальные угрозы безопасности, связанные с самим Move?

В данной статье рассматриваются вопросы безопасности языка Move с трех сторон: языковые характеристики, механизм работы и инструменты валидации.

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

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

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

Вот некоторые ключевые особенности безопасности языка Move:

  1. Модульность: каждый модуль Move состоит из набора определений структур и процессов. Модули могут импортировать типы, объявленные в других модулях, и вызывать их процессы.

  2. Тип ресурса: структура, определенная с помощью синтаксиса has key, может храниться в долговременном глобальном хранилище ключ-значение.

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

  4. Статическая типизация: Move имеет мощную статическую типизацию, которая может обнаруживать многие ошибки на этапе компиляции.

  5. Линейные типы: тип ресурса по умолчанию является линейным типом, чтобы предотвратить его копирование или неявное уничтожение.

  6. Невариантные условия: можно определить неварианты, сохраняющие состояние, для формальной верификации.

  7. Проверка байт-кода: принудительное выполнение системы типов на уровне байт-кода для предотвращения злонамеренных действий.

Эти характеристики совместно создают безопасную основу языка Move, позволяя ему избегать многих распространенных уязвимостей смарт-контрактов.

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

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

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

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

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

![Анализ безопасности Move: смарт-контракты как изменяющий игру язык])https://img-cdn.gateio.im/webp-social/moments-372ff914a241634ca57784dc9685a03d.webp(

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

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

Рабочий процесс Move Prover следующий:

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

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

![Анализ безопасности Move: смарт-контракты как изменяющий игру язык])https://img-cdn.gateio.im/webp-social/moments-f7cd11fef1c66709b219e1a1e8d2e4da.webp(

4. Резюме

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

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

MOVE-0.78%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Репост
  • Поделиться
комментарий
0/400
OptionWhisperervip
· 07-15 10:34
Быстро перейти к Самая низкая цена смотрите move
Посмотреть ОригиналОтветить0
NftCollectorsvip
· 07-14 08:08
Move эта ловушка безопасности не уступает золотому сечению в византийском искусстве, с точки зрения истории искусства Блокчейн это полностью является вехой.
Посмотреть ОригиналОтветить0
BearMarketSurvivorvip
· 07-14 03:19
Безопасность — это пустая болтовня.
Посмотреть ОригиналОтветить0
ForkTonguevip
· 07-14 03:08
Появились новые игрушки для написания контрактов?
Посмотреть ОригиналОтветить0
FancyResearchLabvip
· 07-14 03:05
Ещё одна новая яма, которую любит Любань. Теоретически довольно безопасно.
Посмотреть ОригиналОтветить0
  • Закрепить