Что такое формальная проверка смарт-контрактов?

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

Введение

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

Если в коде умного контракта есть уязвимости, это может привести к разрушительным последствиям, например, к краже всех активов, которыми он владеет. В 2021 году из-за орфографической ошибки в умных контрактах был украден 50 миллионов долларов у автоматического маркет-мейкера (AMM) Uranium Finance.

Также в 2021 году из-за одной ошибки в коде Compound Finance неправомерно было выдано 80 миллионов долларов в виде наград. В 2022 году из-за ошибки в умных контрактах был украден мост Wormhole на сумму 3,2 миллиарда долларов.

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

Как работает проверка умных контрактов?

Формальная проверка умных контрактов реализуется путём представления логики и ожидаемого поведения контракта в виде математических выражений. Затем аудиторы используют автоматизированные инструменты для проверки правильности этих выражений.

Этот процесс включает:

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

Почему проверка умных контрактов важна

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

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

Uniswap

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

Balancer

Balancer V2 также является проверенным автоматическим маркет-мейкером. Формальная проверка выявила и исправила ошибку в расчёте стоимости функции flash loan, которая могла бы сделать платформу уязвимой для кражи.

SafeMoon

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

Большинство ручных аудитов форка SafeMoon V1 пропустили эту ошибку, поскольку для её обнаружения требовался анализ конкретных комбинаций значений переменных программы. Люди легко могут пропустить такую проблему, тогда как машина — своевременно зафиксировать её.

Как формальная проверка и ручной аудит работают вместе

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

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

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

Заключение

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

Хотя формальная проверка требует значительных ресурсов, для контрактов с высокой ценностью или высоким риском это оправданные инвестиции. В конце концов, безопасность — превыше всего, и необходимо приоритетно учитывать безопасность, чтобы умные контракты оставались свободными от ошибок, уязвимостей и нежелательных сбоев. **$BNT **$BROCCOLI

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