Обсуждение безопасности языка Move: всесторонний анализ характеристик, механизмов и инструментов верификации

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

Введение

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

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

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

движение модуль 0x1::TestCoin { используйте 0x1::signer;

const ADMIN: address = @0x1;

структура Coin имеет ключ, хранилище {
    значение: u64
}

структура Info имеет ключ {
    total_supply: u64  
}

// Общая эмиссия равна сумме значений всех монет инвариант для каждого addr: адрес, где существует(addr): глобальный(ADMIN).total_supply == сумма(выбрать Coin.value (глобальный(addr)));

публичная функция initialize(account: &signer) {
    assert!(signer::address_of(account) == ADMIN, 0);
    переместить_в(аккаунт, Информация { общее_предложение: 0 });
}

public fun mint(account: &signer, сумма: u64): Монета {
    assert!(signer::address_of(account) == ADMIN, 0);
    let supply = borrow_global_mut<info>(ADMIN);
    supply.total_supply = supply.total_supply + сумма;  
    Монета { значение: сумма }
}

Публичные развлечения value_mut(coin: &mut Coin): &mut U64 {
    &mut coin.value  
}

}

Два важных механизма безопасности языка Move:

a) Проверка неизменяемости: определение сохранения состояния через язык спецификаций.

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

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

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

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

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

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

3. Переместите Провайдера

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

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

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

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

4. Резюме

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

Анализ безопасности Move: игра в изменения для языков смарт-контрактов\u003c/info\u003e\u003c/coin\u003e\u003c/info\u003e\u003c/coin\u003e

Посмотреть Оригинал
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.
  • Награда
  • 7
  • Поделиться
комментарий
0/400
FromMinerToFarmervip
· 07-08 18:00
Двигайся, убийца пришёл~
Посмотреть ОригиналОтветить0
ProxyCollectorvip
· 07-08 01:41
Серия «Написано слишком долго, никто не читает»
Посмотреть ОригиналОтветить0
TestnetScholarvip
· 07-06 08:22
Move — это будущее!
Посмотреть ОригиналОтветить0
MetaverseVagabondvip
· 07-06 08:20
Какова польза от безопасности, если не умеешь зарабатывать?
Посмотреть ОригиналОтветить0
RektCoastervip
· 07-06 08:18
Move очень вкусно!
Посмотреть ОригиналОтветить0
FlyingLeekvip
· 07-06 08:05
Код написан действительно вкусно
Посмотреть ОригиналОтветить0
GasFeeBarbecuevip
· 07-06 08:01
движение - единственное решение, да?
Посмотреть ОригиналОтветить0
  • Закрепить