Смарт-контракт ( — «розумний контракт») — різновид угоди в формі закодованих математичних алгоритмів, де укладення, зміни, виконання і розривання можна виконати лише з використанням комп'ютерних програм (блокчейн-платформ) у рамках мережі Інтернет.
В реальному світі широке охоплення в реалізації смарт-контрактів здобула DAO, для венчурного фінансування, яка була запущена у травні 2016 року.
Першою країною, яка законодавчо закріпила розумні контракти стала Білорусь у 2017 році.Беларусь первой в мире законодательно закрепила smart-контракт , БЕЛТА, 22 ДЕКАБРЯ 2017
Історія Словосполучення «смарт-контракт» було створено вченим у галузі інформатики, криптографії, а також в області права, Ніком Сабо у 1994 році[ Smart Contracts], для підкреслення того, що він називає «високорозвинені практики» договірного права і пов'язаних з діловою практикою в розробці електронних протоколів торгівлі, між незнайомими людьми в Інтернеті. Можна сказати, що йдеться про врегулювання відносин сторін шляхом закріплення їх вираженої волі у формі певного коду, який придатний для зчитування комп'ютером.
У 1996 році Сабо описував його так:
Сабо, натхненний дослідником , також мав широке очікування того, що специфікації на основі чіткої логіки і перевірки, або виконання через криптографічні протоколи та інші механізми цифрової безпеки, може являти собою різке поліпшення в порівнянні з традиційним контрактом, навіть для деяких традиційних видів договірних положень, які можуть бути передані під владу комп'ютерних протоколів.
У документі 2013 року та інші як основи безпеки розумних контрактів, на відміну від Чаума та інших дослідників в криптографічній фінансовій спільноті, які використовують сучасні криптографічні протоколи, щоб забезпечити безпеку і конфіденційність цифрових грошей, облікових даних, підписання контракту, аукціонів, а також інших комерційних механізмів.
Кілька формальних мов були розроблені та запропоновані для визначення договірних положень. IEEE провів два семінари з електронним укладенням договорів.
Розумні контракти вперше отримали широке поширення з появою Ethereum. Ідея створення проєкту виникла в 2013 році. В той момент засновник журналу Bitcoin Magazine Віталік Бутерін прийшов до висновку, що технологія блокчейна може використовуватися значно ширше, не тільки в криптовалютах. Він висунув ідею універсальної децентралізованої блокчейн-платформи, в якій будь-хто бажаючий може програмно реалізувати різні системи зберігання та обробки інформації. Головна умова — дії повинні бути описані як математичні правила.
Останнім часом галас навколо блокчейну та смарт-контрактів використовується в сенсі загального розуміння цілі, що відбувається на блокчейні. У цій інтерпретації смарт-контракт не обов'язково має відношення до класичної концепції договору, але може бути будь-якою комп'ютерною програмою.
Питання безпеки
Смарт-контракти — це програми, код яких виконується у блокчейні та відтворюється всіма вузлами мережі. Якщо контракт розгорнуто в публічному блокчейні (наприклад, Ethereum), його код і стан зазвичай є відкритими, а логіка роботи після розгортання стає незмінною або важко змінюваною. Це означає, що будь-яка помилка у логіці контракту може бути виявлена і використана сторонніми особами без участі власника контракту.
Додаткова проблема полягає в тому, що типовий смартконтракт не можна оновити так само, як звичайне програмне забезпечення. Його байткод зберігається в блокчейні, а безпосередня зміна цього коду заборонена правилами мережі.
Для розв’язання цієї проблеми було розроблено оновлювані архітектури на основі проксі-контрактів. У такій системі один контракт виконує роль проксі та перенаправляє виклики до окремого контракту з програмною логікою, який за потреби можна замінити. Водночас адреса проксі-контракту та збережений стан залишаються незмінними.
Зазвичай проксі-контракт має адміністратора, уповноваженого змінювати адресу реалізації. Це дає змогу виправляти критичні вразливості та оновлювати функціональність навіть після розгортання контракту в публічній мережі..
Класичним прикладом експлуатації вразливості смарт-контракту стала атака на The DAO у червні 2016 року. Зловмисник використав так звану «реентрантність» (reentrancy): контракт дозволяв багаторазово викликати функцію виведення коштів до того, як внутрішній баланс оновлювався. Унаслідок цього близько 3,6 млн ETH було виведено у дочірній контракт. Кошти не могли бути негайно виведені через вбудовану затримку, що дало спільноті час на реакцію. Пізніше мережа Ethereum провела хардфорк, аби повернути кошти інвесторам; це призвело до розділення ланцюга на Ethereum та Ethereum Classic.
Станом на 2024—2025 роки вразливості смарт-контрактів систематизуються у профільних оглядах на кшталт OWASP Smart Contract Top 10. Серед найтиповіших ризиків: недоліки контролю доступу (access control), коли неавторизований користувач може виконувати адміністративні дії (карбувати токени, змінювати власника, виводити кошти); реентрантність (reentrancy), тобто повторний виклик зовнішнього контракту до завершення оновлення стану, як у випадку з The DAO; арифметичні переповнення й заниження (integer overflow / underflow), а також залежність від маніпульованих параметрів середовища (наприклад, часової позначки блоку або даних цінового оракула); економічні атаки типу фронт-раннінгу й маніпуляції ціною через миттєві кредитні операції (flash loan), які змінюють економічні умови контракту на користь нападника; відмова в обслуговуванні (DoS) через блокування логіки контракту або вичерпання газу.
Щоб зменшити ризики, у розробці смарт-контрактів застосовують типові захисні підходи. Патерн «checks-effects-interactions» передбачає послідовність: (1) перевірити права й умови виклику (checks), (2) оновити внутрішній стан контракту (effects), і лише потім (3) викликати зовнішні контракти або надсилати кошти (interactions). Це ускладнює реентрантні атаки. Додатково використовуються «reentrancy guard» (заборона повторних одночасних викликів), суворі ролі та обмеження доступу (наприклад, onlyOwner / role-based access control), аудит коду й формальна верифікація до публічного розгортання.
Принцип роботи Смарт-контракти Ethereum розробляються на одній з мов, спроєктованих для трансляції в байт-код віртуальної машини Ethereum — Solidity (схожий на С або JavaScript), Vyper і Serpent (схожі на Python), LLL (низькорівнева версія Lisp), Mutan (заснований на Go).Chris Dannen ntroducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners
Сторони підписують розумний контракт, використовуючи методи, аналогічні підписанню перерахунку коштів в криптовалютній мережі. Після підписання сторонами, контракт зберігається в блокчейні та набуває чинності. Для забезпечення автоматизованого виконання зобов'язань договору обов'язково потрібно середовище існування (ноди блокчейна Ethereum), яке дозволяє повністю автоматизувати виконання пунктів контракту. Це означає, що розумні контракти зможуть існувати тільки всередині середовища, що має безперешкодний доступ виконуваного коду до об'єктів розумного контракту.
Всі умови контракту повинні мати програмний опис і ясну логіку виконання. У зв'язку з цим перші розумні контракти мають завдання формалізації найбільш простих взаємин, що складаються з невеликої кількості умов. Маючи безперешкодний доступ до об'єктів контракту, розумний контракт відстежує за вказаними умовами досягнення або порушення пунктів і ухвалює самостійні рішення, ґрунтуючись на запрограмованих умовах. Таким чином, основний принцип розумного контракту полягає в повній автоматизації і правдивості виконання договірних відносин.
Для того, щоб розумні контракти могли існувати, потрібні певні умови:
Використання широко поширених методів електронного підпису на основі публічних і приватних ключів (асиметричне шифрування). Існування відкритих, децентралізованих і довірчих сторін контракту баз даних для виконуваних транзакцій, робота яких повністю виключає людський фактор. Як приклад: блокчейн в Bitcoin. Децентралізація середовища виконання розумного контракту. Як приклад: Ethereum, Codius, Counterparty. Правдивість джерела цифрових даних. Як приклад: кореневі центри сертифікації SSL в базах сучасних інтернет-браузерів.
Об'єкти розумного контракту Підписанти — сторони розумного контракту, які беруть або відмовляються від умов з використанням електронних підписів. Прямим аналогом є підпис відправника коштів в мережі Bitcoin, яка підтверджує внесення транзакції в ланцюжок блоків.
Предмет договору. Предметом договору може бути тільки об'єкт, що знаходиться всередині середовища існування розумного контракту, або ж повинен забезпечуватися безперешкодний, прямий доступ розумного контракту до предмету договору без участі людини.
Умови. Умови розумного контракту повинні мати повний математичний опис, який можливо запрограмувати в середовищі існування розумного контракту. Саме в умовах описується логіка виконання пунктів предмета договору.
Децентралізована платформа. Для розподіленого зберігання смарт-контракту необхідний його запис в блокчейні цієї платформи.
Винагорода та виконання Сабо передбачає, що смарт-контракт — це інфраструктура, яка може бути реалізована шляхом тиражованих реєстрів активів та виконання контрактів з використанням криптографічного хеш-ланцюга і Візантійської відмовостійкої винагороди. Кожен вузол у мережі рівноправних вузлів виступає як заголовок реєстру і умовна порука, що виконує зміни права власності та автоматично відзначає правила, що регулюють ці операції, і перевіряє ту ж роботу інших вузлів. Аскемос реалізував цей підхід в 2002 році, використовуючи схему як мову сценаріїв контракту.
Криптовалюти, такі як bitcoin впровадили спеціальні випадки таких реєстрів,
Одна з пропозицій для використання Bitcoin для реєстрації активів і виконання контракту називається «кольорові монети». Реєстрація доменного імені реєстру здійснюється в Namecoin; реєструємо назви для потенційно довільних форм власності, поряд з виконанням контракту, реалізовані в Crypti, Ripple, Mastercoin і Ethereum. NXT реалізує право власності на доказі власності, частки в базовій валюті.
Смарт-контракти можуть бути реалізовані за допомогою проєктування контракту.
Додатки можуть містити в собі фінансові інструменти, такі як облігації, акції та похідні, договорів з забезпечення, а також інші документи та угоди, де вузли можуть стежити за розвитком подій, на яких зумовлені розумні правила контракту. Переваги смарт-контракту як еквівалента звичайного фінансового інструменту гіпотетично включають зведення до мінімуму ризику контрагента, скорочення термінів розрахунків, а також підвищення прозорості. UBS експериментував з «розумними» облігаціями, які використовують bitcoin блокчейн, в якому платіжні потоки гіпотетично могли б бути повністю автоматизовані, створюючи самостійно оплачуваний інструмент.
Токени Токен — запис в блокчейні, одиниця обліку, яка не являється криптовалютою, лише призначена для представлення цифрового балансу в деякому активі, іншими словами виконує функцію «замінника цінних паперів» в цифровому світі. Управління токеном зазвичай реалізується за допомогою смарт-контракту, в якому записані значення залишків на рахунках власників токенів, і який надає можливість переказу токенів з одного рахунку на інший. Отримати доступ до токенів можна через спеціальні додатки, які використовують схеми електронного підпису.
Стандарти токенів Стандарти токенів — це набір узгоджених правил, які керують проектуванням, розробкою, поведінкою та роботою токенів криптовалюти на певному протоколі блокчейну. Щоб стандарти токенів були корисними, вони повинні бути широко прийняті. Без прийняття їх правила неможливо підняти до статусу «стандарту», оскільки стандарти — це правила, яких зазвичай дотримується широке коло людей.