一文读懂смарт-контракт的Формальная верификация

Введение

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

BTC изначально разработана для замены банков, но технология Блокчейн показывает свою способность заменить промежуточные структуры. В этом процессе она открывает новые возможности для Цифровые деньги, такие как программирование валюты, недоступные для бумажных денег. Цифровые деньги стимулируют развитие Децентрализация путем автоматического выполнения контрактов, прозрачности и отсутствия человеческого вмешательства. В результате адвокаты и контракты могут быть заменены в финансовых сделках. Однако, как работают смарт-контракты? Можно ли доверять этой системе, не зависящей от доверия?

本文将深入探讨смарт-контракт的Формальная верификация,分析其优缺点及其对шифрование生态的影响,特别是以太坊的应用。

История развития смарт-контрактов

Источник:CryptoSlate

Ник Сабо (Nick Szabo), американский ученый-компьютерщик и криптограф, часто считается самим Сатоши Накамото. Он впервые предложил концепцию «смарт-контракта» в 1994 году в качестве основателя смарт-контрактов. Сабо определяет смарт-контракт как цифровой протокол для автоматического выполнения условий протокола. Его целью было улучшение способов электронных транзакций, таких как POS-системы, и расширение их возможностей на цифровое пространство.

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

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

Что такое Формальная верификация?

Источник:Medium

Формальная верификация - это процесс строгой проверки системы (например, смарт-контракта) на соответствие установленным правилам или нормам. Кратко говоря, это проверка, может ли система работать в соответствии с ожиданиями, гарантируя ее соответствие необходимым условиям и безошибочное выполнение ее запланированных функций.

Для достижения этой цели технология верификации в первую очередь описывает ожидаемое поведение системы с помощью формальной модели, а затем определяет конкретные условия, которым должен удовлетворять контракт с помощью нормативного языка. По мере продвижения статьи мы увидим больше практических примеров. Технология формальной верификации сравнивает фактическое выполнение контракта с его спецификациями математическим способом, обеспечивая его точность. Как только контракт соответствует этим спецификациям, он считается «функционально правильным» или «правильно спроектированным», что подтверждает его надежность и безопасность в блокчейн-среде.

Тип формальной спецификации смарт-контракта

Источник: Ever Scale

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

Высокий уровень стандартов

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

Высокий уровень регулирования сосредотачивается на двух аспектах: безопасности и ликвидности. Безопасность может предотвратить возникновение непредвиденных событий, например, когда баланс счета отправителя недостаточен для осуществления сделки. Ликвидность обеспечивает нормальное функционирование контракта, например, поддерживает достаточную ликвидность для обеспечения возможности пользователей выводить средства в любое время. Оба аспекта вместе обеспечивают безопасность и надежность смарт-контрактов и защищают активы и опыт взаимодействия пользователей.

Низкоуровневые спецификации

Низкоуровневая спецификация, также известная как спецификация на основе свойств, фокусируется на определении правильности поведения контракта путем анализа его внутреннего выполнения. В отличие от высокоуровневой спецификации, которая рассматривает контракт как конечный автомат, низкоуровневая спецификация рассматривает смарт-контракт как математическую систему функций и анализирует последовательность выполнения функций (называемую траекторией), которая приводит к изменению состояния контракта.

Технология формальной верификации смарт-контракта

Источник: Ever Scale

Модельное тестирование

Модельный анализ - это метод проверки, который использует Алгоритм для проверки соответствия модели Смарт-контракта заранее определенным спецификациям. Смарт-контракт обычно представляется как система переходов состояний, свойства которой определяются с помощью временной логики. Этот метод основан на создании математической модели и использовании логических формул для описания ее поведения, что позволяет Алгоритму проверить, соответствует ли модель заданным требованиям.

Доказательство теоремы

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

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

Символьное выполнение

Символьное выполнение - это мощный метод анализа смарт-контрактов, который осуществляется путем выполнения функций с использованием символьных значений, а не конкретных входных данных. Этот метод преобразует путь выполнения контракта в математические формулы (называемые предикатами пути) и использует решатель SMT для определения, верны ли эти предикаты, то есть существует ли подходящий ввод, удовлетворяющий условиям.

Например, если функция контракта откатывается при значении от 5 до 10, символьное выполнение может быстро найти значение, которое вызывает этот откат, оценивая условие X > 5 и X < 10. Этот метод более эффективен, чем традиционное тестирование, имеет более низкий уровень ложных срабатываний и может напрямую генерировать конкретные значения, вызывающие ошибки, что делает его мощным инструментом для обеспечения надежности смарт-контрактов.

Что такое смарт-контракт?

Источник:Tenderly

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

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

Уязвимости безопасности смарт-контрактов

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

  • В 2021 году AMMUranium Finance был украден 50 миллионов долларов из-за опечатки в смарт-контракте.
  • Также в 2021 году Compound Finance случайно выплатил 80 миллионов долларов в качестве неполученной награды из-за ошибки в символе. Ссылка
  • В 2022 году Wormhole Bridge был взломан, и в результате уязвимости в смарт-контракте было похищено $320 млн. подробнее

Эти примеры показывают, что перед развертыванием смарт-контракта необходимо обеспечить точность его кода. Смарт-контракт - это открытый исходный код, и после развертывания код становится общедоступным, что позволяет хакерам легко использовать обнаруженные уязвимости. Кроме того, неизменяемость смарт-контракта означает, что раз размещенный, код с уязвимостями обычно не может быть исправлен. Поэтому, если разработка не достаточно точна, они всегда будут подвержены риску.

Как происходит проверка смарт-контракта?

Источник:Certik

Этот процесс включает в себя следующие шаги:

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

Ключевые особенности смарт-контрактов

Источник:Certik

Смарт-контракт можно рассматривать как "Протокол, вырезанный в камне", который нельзя изменить после создания. Эти контракты работают на неизменяемой книге учета блокчейна и автоматически выполняют условия без промежуточного лица, что ускоряет сделки и снижает затраты. Эта фиксированная особенность не только усиливает безопасность, но также осуществляет децентрализованное управление, что значительно снижает риски мошенничества и коррупции.

Почему так важна проверка смарт-контрактов?

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

Успешные примеры проверки смарт-контрактов подчеркивают их важную роль в предотвращении серьезных финансовых потерь.

Uniswap

Например, известный AMM Uniswap во время разработки своего V1 смарт-контракта провел формальную верификацию и обнаружил и исправил ошибки, которые могли привести к потере средств. (ссылка на статью: https://hexn.io/blog/exploring-the-need-for-formal-verification-in-smart-contracts-323)

Балансировщик

Также, другой AMM Balancer V2, благодаря Формальная верификация, обнаружил ошибку в расчете комиссии, связанную с Срочные займы, что позволило избежать потенциальных рисков кражи.

Безопасная Луна

После развертывания SafeMoon V1 был обнаружен критический баг, который был выявлен при Формальной верификации. Этот баг позволяет владельцу отказаться от собственности в определенных условиях и затем снова получить контроль, а из-за сложности этот момент был проигнорирован большинством ручных проверок. Формальная верификация позволяет эффективно выявлять проблемы, которые могут быть упущены при ручных проверках путем анализа конкретных комбинаций значений переменных.

Как формальная верификация и ручная проверка могут взаимодействовать?

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

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

Преимущества и недостатки смарт-контрактов

Источник:Blockonomi

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

Преимущества смарт-контракта

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

Недостатки смарт-контрактов

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

EthereumСмарт-контракт的Формальная верификация工具

Источник:Calibraint

Язык для написания формальных спецификаций

  • Act: Act позволяет пользователям определять обновление хранилища, предусловия, постусловия и неизменяемость контракта. Его набор инструментов предоставляет верификацию различных свойств с использованием Coq, SMT-решателя или hevm.

(https://github.com/ethereum/act)[GitHub]

Документация по использованию

  • Scribble: Scribble может преобразовывать комментарии в коде, написанном на определенном языке, в утверждения проверочной спецификации.

Документация

  • Dafny: Dafny - это язык программирования, специально разработанный для проверки дизайна, используя продвинутые аннотации, чтобы помочь выводить и проверять правильность кода.

(https://github.com/dafny-lang/dafny)[GitHub]

Инструмент для проверки правильности контракта

  • Certora Prover: Certora Prover - это автоматизированный инструмент для Формальной верификации, специально предназначенный для проверки корректности кода смарт-контрактов. Он использует язык верификации Certora (CVL) для создания спецификаций контрактов и обнаружения потенциальных нарушений свойств с помощью статического анализа и технологии решения ограничений.

официальный сайт

[Пользовательская документация] (https://docs.certora.com/en/latest/index.html)

  • Solidity SMTChecker: это встроенный в Solidity инструмент модельного проверяющего, который использует технологию SMT (теория удовлетворимости моделей) и решение уравнений Хорна для обеспечения того, что исходный код контракта соответствует заданным спецификациям на этапе компиляции, а также для обнаружения нарушений безопасности.

(https://github.com/ethereum/solidity)[GitHub]

  • Solc-verify: Solc-verify - это усовершенствованная версия компилятора Solidity, которая позволяет автоматизировать формальную верификацию кода Solidity с помощью комментариев и модульной проверки программы.

(https://github.com/SRI-CSL/solidity)[GitHub]

  • KEVM: KEVM - это формальное представление Виртуальная машина Ethereum (EVM), созданное через фреймворк K, способное выполнять и использовать проверку логики достижимости для определенных свойств.

(https://github.com/runtimeverification/evm-semantics)[GitHub]

[Пользовательская документация] (https://jellopaper.org/)

Инструментальная структура для математического доказательства

  • Изабель: Isabelle/HOL - это помощник в доказательствах, который помогает пользователям выражать математические формулы на формализованном языке и предоставляет инструменты для их доказательства. Он используется в основном для формализации математических доказательств, особенно для проверки правильности компьютерного оборудования, программного обеспечения и языков программирования.

(https://github.com/isabelle-prover)[GitHub]

[Пользовательская документация] (https://isabelle.in.tum.de/documentation.html)

  • Coq: Coq это интерактивный инструмент для доказательства теорем, который помогает пользователям определить программу и теоремы через интерактивный процесс и создавать машинно-проверяемые доказательства корректности.

(https://github.com/coq/coq)[GitHub]

[Пользовательская документация] (https://coq.github.io/doc/v8.13/refman/index.html)

Инструмент обнаружения уязвимостей на основе символьного выполнения

  • Manticore - Manticore это инструмент, использующий символьный анализ EVM байт-кода для обнаружения уязвимостей.GitHub

[Пользовательская документация] (https://github.com/trailofbits/manticore/wiki)

  • Hevm - hevm - это символический исполнительный движок, используемый для проверки эквивалентности байт-кода EVM.

(https://github.com/dapphub/dapptools/tree/master/src/hevm)[GitHub]

  • Mythril - Mythril - это инструмент символьного выполнения, специально предназначенный для обнаружения потенциальных уязвимостей в смарт-контрактах Ethereum.

(https://github.com/ConsenSys/mythril-classic)[GitHub]

[Пользовательская документация] (https://mythril-classic.readthedocs.io/en/develop/)

Заключение

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

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить