Язык Move, как язык смарт-контрактов нового поколения, изначально учитывал проблемы безопасности блокчейна и смарт-контрактов при его разработке. В этой статье будет проанализирована безопасность языка Move с трех сторон: характеристик языка, механизма выполнения и инструментов верификации.
1. Безопасные характеристики языка Move
Язык Move обладает несколькими основными характеристиками безопасности:
Отказались от динамического распределения, рекурсивных внешних вызовов и других нелинейных логик, избегая уязвимостей, таких как повторный вход.
Использование типов ресурсов и глобального механизма хранения для обеспечения безопасного управления хранением и ресурсами
Двойная проверка безопасности во время компиляции с помощью инвариантных сокращений и валидатора байт-кода
Вот пример простого контракта Move:
движение
модуль 0x1::TestCoin {
используйте 0x1::signer;
const ADMIN: address = @0x1;
структура Coin имеет ключ {
значение: u64
}
структура Info имеет ключ {
total_supply: u64
}
инвариант для всех addr: адрес где существует<coin>(addr):
глобальный<info>(ADMIN).total_supply >= глобальный<coin>0192837465657483939201addr(.value;
Публичные развлечения initialize)account: &signer( {
assert!)signer::address_of(account( == ADMIN, 1);
переместить)счет, Информация { общее_предложение: 0 }(;
}
public fun mint)account: &signer, сумма: u64(: Монета {
assert!)signer::address_of(account( == ADMIN, 1);
let supply = borrow_global_mut<info>)ADMIN(;
supply.total_supply = supply.total_supply + сумма;
Монета { значение: сумма }
}
Публичные развлечения value_mut)coin: &mut Coin(: &mut U64 {
&mut coin.value
}
}
Move обеспечивает безопасность кода с помощью инвариантных редукций и валидаторов байт-кода:
Нормализация инвариантов: используется для проверки, что сумма значений всех объектов Coin в системе должна равняться total_supply в Info.
Байт-код проверка: обязательная проверка типов и линейная логика, предотвращающая незаконное создание, копирование или уничтожение ресурсов.
![Move безопасность анализа: язык смарт-контрактов - изменение правил игры])https://img-cdn.gateio.im/webp-social/moments-419437619d55298077789e6eca578b48.webp(
2. Механизм работы Move
Программа Move работает в виртуальной машине и имеет следующие характеристики:
Во время выполнения нельзя получить доступ к системной памяти, чтобы гарантировать безопасную работу в ненадежной среде.
Использование стекового интерпретатора для выполнения байт-кодовых инструкций, легко реализовать и контролировать
Разделите хранилище данных и стек вызовов, чтобы повысить безопасность и эффективность выполнения
Ресурсы могут быть перемещены только разрушительным образом, их нельзя копировать
Состояние выполнения программы Move состоит из кортежа ⟨C, M, G, S⟩:
C: стек вызовов
M:Память)куча(
G:Глобальная переменная ) стек (
S:операнд
Этот дизайн разделяет состояние пользователя и логику программы, что повышает безопасность и эффективность параллельного выполнения.
![Анализ безопасности Move: революция в языке смарт-контрактов])https://img-cdn.gateio.im/webp-social/moments-69101617731b12c40620802eecf76caf.webp(
3. Переместить Провер
Move Prover — это инструмент формальной верификации, предназначенный для обеспечения корректности смарт-контрактов. Его рабочий процесс выглядит следующим образом:
Получите исходные файлы Move и спецификации в качестве ввода
Извлеките спецификации и скомпилируйте их в байт-код
Преобразование в модель объекта валидатора
Перевести на промежуточный язык Boogie
Генерация условий проверки
Используйте решатель Z3 для проверки формулы
Генерация диагностического отчета
Move Prover использует язык спецификаций Move для описания спецификаций программ. Этот язык является подмножеством Move и может быть написан независимо от бизнес-кода.
![Анализ безопасности Move: революция языка смарт-контрактов])https://img-cdn.gateio.im/webp-social/moments-372ff914a241634ca57784dc9685a03d.webp(
Резюме
Язык Move уделяет всеобъемлющее внимание безопасности на уровне языковых особенностей, выполнения виртуальных машин и инструментов безопасности. Он эффективно предотвращает распространенные уязвимости, такие как повторные входы и переполнения, но все же следует обращать внимание на проблемы аутентификации и логики. Рекомендуется разработчикам использовать услуги стороннего аудита и передавать написание спецификаций специализированным компаниям по безопасности для дальнейшего повышения безопасности контрактов.
![Анализ безопасности Move: Игровая революция языка смарт-контрактов])https://img-cdn.gateio.im/webp-social/moments-f7cd11fef1c66709b219e1a1e8d2e4da.webp(
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
10 Лайков
Награда
10
6
Репост
Поделиться
комментарий
0/400
gaslight_gasfeez
· 08-19 03:55
движение, наверное, взлетело на небеса, в конце концов, это все же зависит от тестирования.
Посмотреть ОригиналОтветить0
GhostChainLoyalist
· 08-18 16:10
Этот Move действительно жесткий!
Посмотреть ОригиналОтветить0
LiquidityNinja
· 08-16 06:53
Механизм типов ресурсов действительно что-то значит!
Посмотреть ОригиналОтветить0
ProofOfNothing
· 08-16 06:50
Старые игроки move уже сдохли?
Посмотреть ОригиналОтветить0
JustAnotherWallet
· 08-16 06:49
Move неплохо, да?
Посмотреть ОригиналОтветить0
rekt_but_not_broke
· 08-16 06:44
Снова куча пустых слов. Тестировали ли вы реальные характеристики?
Анализ безопасности языка Move: всесторонний разбор характеристик, механизмов и инструментов верификации
Анализ безопасности языка Move
Язык Move, как язык смарт-контрактов нового поколения, изначально учитывал проблемы безопасности блокчейна и смарт-контрактов при его разработке. В этой статье будет проанализирована безопасность языка Move с трех сторон: характеристик языка, механизма выполнения и инструментов верификации.
1. Безопасные характеристики языка Move
Язык Move обладает несколькими основными характеристиками безопасности:
Вот пример простого контракта Move:
движение модуль 0x1::TestCoin { используйте 0x1::signer;
}
Move обеспечивает безопасность кода с помощью инвариантных редукций и валидаторов байт-кода:
Нормализация инвариантов: используется для проверки, что сумма значений всех объектов Coin в системе должна равняться total_supply в Info.
Байт-код проверка: обязательная проверка типов и линейная логика, предотвращающая незаконное создание, копирование или уничтожение ресурсов.
![Move безопасность анализа: язык смарт-контрактов - изменение правил игры])https://img-cdn.gateio.im/webp-social/moments-419437619d55298077789e6eca578b48.webp(
2. Механизм работы Move
Программа Move работает в виртуальной машине и имеет следующие характеристики:
Состояние выполнения программы Move состоит из кортежа ⟨C, M, G, S⟩:
Этот дизайн разделяет состояние пользователя и логику программы, что повышает безопасность и эффективность параллельного выполнения.
![Анализ безопасности Move: революция в языке смарт-контрактов])https://img-cdn.gateio.im/webp-social/moments-69101617731b12c40620802eecf76caf.webp(
3. Переместить Провер
Move Prover — это инструмент формальной верификации, предназначенный для обеспечения корректности смарт-контрактов. Его рабочий процесс выглядит следующим образом:
Move Prover использует язык спецификаций Move для описания спецификаций программ. Этот язык является подмножеством Move и может быть написан независимо от бизнес-кода.
![Анализ безопасности Move: революция языка смарт-контрактов])https://img-cdn.gateio.im/webp-social/moments-372ff914a241634ca57784dc9685a03d.webp(
Резюме
Язык Move уделяет всеобъемлющее внимание безопасности на уровне языковых особенностей, выполнения виртуальных машин и инструментов безопасности. Он эффективно предотвращает распространенные уязвимости, такие как повторные входы и переполнения, но все же следует обращать внимание на проблемы аутентификации и логики. Рекомендуется разработчикам использовать услуги стороннего аудита и передавать написание спецификаций специализированным компаниям по безопасности для дальнейшего повышения безопасности контрактов.
![Анализ безопасности Move: Игровая революция языка смарт-контрактов])https://img-cdn.gateio.im/webp-social/moments-f7cd11fef1c66709b219e1a1e8d2e4da.webp(