Ознайомлення зі смартконтрактами та формальною верифікацією за допомогою однієї статті 01928374656574839201

Вступ

Зі значним зростанням вартості активів у блокчейні, різні проекти починають послідовно запускати різноманітні економічні застосування. У цій ситуації запобігання можливим уразливостям та загрозам стає важливішим, ніж будь-коли раніше.

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

Ця стаття глибоко досліджує Формальна верифікація смарт-контрактів, аналізує їх переваги та недоліки та вплив на екосистему шифрування, зокрема на застосування Ethereum.

Історія розвитку смарт-контрактів

Джерело: CryptoSlate

Нік Сзабо (Nick Szabo), американський вчений в галузі комп'ютерних наук та криптограф, часто вважається самим Сатоші Накамото. Як засновник концепції смарт-контрактів, він вперше висловив поняття "смарт-контрактів" в 1994 році. Сзабо визначив смарт-контракт як цифровий протокол для автоматичного виконання умов протоколу. Його початкова мета полягала в удосконаленні електронних транзакцій, таких як POS-системи, та розширенні їхньої функціональності до цифрової сфери.

Сабо уявляв, що майбутній протокол буде автоматизованим, надійним та не піддасться спотворенню, схожим на автомат з продажу. Навіть колишні технічні умови ще не повністю реалізували його задум, його ідея поклала основу для подальшої децентралізації галузі технології Блокчейн. У 2015 році, запуск Ethereum дозволив справжнє застосування смартконтрактів, а теорія Сабо стала ключовою технологією для застосування децентралізації.

Його візія полягає в тому, щоб угоди могли управляти відносинами обох сторін точно, автоматично, зменшуючи потребу в людському втручанні та контролі. Цей підхід надає більш безпечний та ефективний спосіб управління протоколом, що створює шлях для розвитку смартконтрактів і робить їх важливим інструментом у екосистемі блокчейну. Перші уявлення Сабо і досі впливають на розвиток цифрових торгів та смартконтрактів.

什么是Формальна верифікація?

Джерело: Medium

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

Для досягнення цієї мети технологія верифікації спочатку описує очікувану поведінку системи за допомогою формальної моделі, а потім використовує мову специфікацій для визначення конкретних умов, які повинна задовольняти угода. За допомогою конкретних прикладів у статті ви дізнаєтеся більше. Технологія формальної верифікації забезпечує точність угоди, порівнюючи фактичну виконавчу ситуацію з її специфікацією за допомогою математичних методів. Якщо угода відповідає цим специфікаціям, її вважають «функціонально правильною» або «правильною з точки зору конструкції», що підтверджує її надійність та безпеку в середовищі Блокчейн.

Тип формалізованої специфікації смарт-контракту

Джерело: Ever Scale

Формалізований стандарт використовує математичне мислення для перевірки правильності роботи програми. Ці стандарти можуть бути використані для опису поведінки програми в цілому (на високому рівні) або внутрішніх деталей роботи контракту (на низькому рівні). Завдяки математичному визначенню поведінки контракту формалізований стандарт гарантує, що контракт буде працювати так, як очікується.

Високорівневі нормативні документи

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

Стандарти високого рівня наголошують на двох аспектах: безпека та ліквідність. Безпека дозволяє уникнути непередбачуваних подій, таких як недостатній баланс рахунку відправника для здійснення операції. Ліквідність забезпечує нормальне функціонування контракту, зокрема, збереження достатньої кількості коштів для забезпечення зручності користувачів у будь-який час. Ці два аспекти разом гарантують безпеку та надійність смарт-контракту, захищають активи користувачів та їх взаємодію.

Нижчий рівень специфікації

Нижчий рівень специфікації, також відомий як специфікація, спрямована на властивості, зосереджена на визначенні правильності поведінки шляхом аналізу внутрішнього виконання контракту. На відміну від високорівневої специфікації, яка розглядає контракт як скінчений становий автомат, низькорівнева специфікація розглядає Смарт-контракт як математичну систему функцій та аналізує порядок виконання функцій (відомий як траєкторія), які призводять до зміни стану контракту.

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

Джерело: Ever Scale

Виявлення моделі

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

Доведення теореми

По відміну від перевірки моделі, теорема доведення - це математичний метод, який використовується для перевірки правильності програм (включаючи смартконтракти). Цей метод перетворює модель контракту та специфікацію на логічні формули для перевірки їх логічної еквівалентності, тобто якщо одне твердження є правдивим, то інше твердження також є правдивим. За допомогою вираження цього відношення у вигляді теореми, інструменти автоматичного доведення теорем можуть перевірити правильність моделі контракту та його специфікації.

З відміною від модельного перевірки, обмеженого стану, теоремне доведення може аналізувати нескінченний становий системи, але зазвичай потребує людського керівництва для вирішення складних логічних проблем. Тому теоремне доведення часто виявляється більш часовими та енергоємними, ніж повністю автоматизована модельна перевірка.

Символьне виконання

Символьне виконання - це потужний метод аналізу смартконтрактів, який використовує символьні значення замість конкретного введення для виконання функцій. Цей метод перетворює шлях виконання контракту на математичні формули (відомі як шляхові предикати) та використовує розв'язувач SMT для визначення чи є ці предикати істинними, тобто чи існує вхідні дані, які відповідають умовам.

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

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

Джерело: Tenderly

Смарт-контракт - це автоматизована програма, яка працює в ланцюжку Блоку блокчейні та автоматично виконує відповідні дії при виконанні певних умов. Вони можуть бути від простих протоколів до складних програм, які можуть керувати мільйонами або навіть мільярдами доларів активів.

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

Безпекові уразливості смарт-контрактів

Помилки безпеки в коді смарт-контракту (https://ethereum.org/en/developers/docs/smart-contracts/security/) можуть призвести до катастрофічних наслідків, таких як втрата всіх активів у контракті. Недавні події наочно це підтверджують.

  • У 2021 році AMMUranium Finance було викрадено 50 млн доларів через помилку в Смарт-контракті. Докладніше.
  • У 2021 році Compound Finance через помилку в одному символі неочікувано виплатив 80 мільйонів доларів невибраної винагороди.
  • У 2022 році Wormhole Bridge був вкрадений через уразливість в смартконтракті на суму 320 мільйонів доларів.

Ці приклади показують, що смартконтракт, перед розгортанням, повинен бути переконаний в точності свого коду. Смартконтракт є відкритим вихідним кодом, і як тільки він розгорнутий, код стає загальнодоступним, і хакер може легко скористатися виявленими уразливостями. Крім того, незмінність смартконтракту визначає, що як тільки код опубліковано, безпекові проблеми, як правило, не можуть бути виправлені. Тому, якщо розробка не достатньо точна, вони завжди будуть на ризику.

Як відбувається перевірка смартконтракту?

Джерело: Certik

Цей процес включає наступні кроки:

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

Ключові особливості смартконтрактів

Джерело: Certik

Можна розглядати Смарт-контракт як 'протокол, викарбований у камені', який не можна змінити після створення. Ці контракти працюють на незмінному розрахунковому журналі блокчейну, виконуючи умови автоматично без посередників, що прискорює транзакції та зменшує витрати. Ця фіксована властивість не тільки зміцнює безпеку, але й забезпечує Децентралізацію управління, значно знижуючи ризик шахрайства та корупції.

Чому перевірка смарт-контракту так важлива?

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

Успішний приклад підтвердження смарт-контракту підкреслює його важливу роль у уникненні значних фінансових втрат.

Uniswap

Наприклад, відомий AMM Uniswap під час розробки свого V1 смарт-контракту провів формальну верифікацію і виявив та виправив помилки, які можуть призвести до втрати коштів. Посилання

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

Також, інший AMM Balancer V2 виявив помилку обчислення витрат, пов'язану з Термінові позики через Формальна верифікація, що уникнуло потенційної ризику крадіжки.

SafeMoon

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]

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

Інструментальна рамка для доведення теорем

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

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

Документація з використання

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

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

Документація користувача

Інструмент виявлення вразливостей на основі символьного виконання

  • Manticore - Manticore - це інструмент, який використовує символьний аналіз виконання байт-коду EVM, спеціалізується на виявленні уразливостей.GitHub

Посилання на документацію

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

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

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

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

Посилання на документацію

Висновок

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити