Вступ

Вперше смарт-контракти було описано у 1990-х роках Ніком Сабо. Він визначив смарт-контракт як інструмент, який формалізує та захищає комп'ютерні мережі, комбінуючи протоколи з інтерфейсом користувача.

Сабо розглядав використання смарт-контрактів у різних галузях, пов'язаних, наприклад, з договірними угодами, кредитними системами, обробкою платежів та правоволодінням на контент.

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

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

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

У центрі уваги цієї статті смарт-контракти, що працюють на віртуальній машині Ethereum (EVM), яка є найважливішою частиною блокчейну Ethereum.


Як це працює?

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

У мережі Ethereum смарт-контракти відповідають за виконання операцій між користувачами (адресами). Будь-яка адреса, яка не є смарт-контрактом, називається особистим акаунтом (EOA). Таким чином, смарт-контракти управляються програмним кодом, а особисті облікові записи - користувачами.

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

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


Основні характеристики

Смарт-контракт Ethereum часто має такі характеристики:

Розподіл. Смарт-контракти відтворено та розподілено по всіх вузлах мережі Ethereum. Це одна з їх основних відмінностей від інших рішень, що використовують централізовані сервери.

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

Автономність. Смарт-контракти можуть автоматизувати всі види завдань, працюючи як програма, що самовиконується. Найчастіше, якщо смарт-контракт не ініційований, він перебуває «у бездіяльності» і виконує будь-яких дій.

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

Персоналізація. Смарт-контракти можна закодувати кількома способами, наприклад, для створення різних типів децентралізованих програм (DApps). Це з тим, що Ethereum було створено відповідно до повнотою по Тьюрингу.

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

Прозорість. Оскільки смарт-контракти засновані на публічному блокчейні, їхній вихідний код доступний для кожного.


Чи можу я змінити або видалити смарт-контракт?

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

Примітно, що так звані смарт-контракти, що оновлюються, забезпечують розробникам доступ до змін коду, тим самим надаючи велику гнучкість порівняно з незмінними контрактами. Існує безліч способів створення такого виду смарт-контрактів різного ступеня складності.

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


Переваги та варіанти використання

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

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

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

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


ERC-20

Токени, випущені на блокчейні Ethereum, відповідають стандарту ERC-20, який описує основні функції. Їх часто називають токенами ERC-20, і вони становлять більшу частину існуючих криптовалют.

Багато компаній та стартапи розробляють смарт-контракти для випуску власних цифрових токенів у мережі Ethereum. Після емісії більшість із них розподіляє свої токени ERC-20 через первинну пропозицію монет (ICO). Смарт-контракти дозволяють надійно та ефективно обмінювати та розподіляти кошти.


Недоліки

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

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

Іноді незмінність буває корисною, але не завжди. Наприклад, у 2016 році хакери зламали децентралізовану автономну організацію The DAO та вкрали мільйони доларів ефіру (ETH), скориставшись уразливістю у коді смарт-контракту.

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

Слід зазначити, що проблема виникла через роботу блокчейна Ethereum. Натомість помилка була викликана неправильною реалізацією смарт-контракту.

Ще одна вада смарт-контрактів пов'язана з їх невизначеним юридичним статусом. І це пов'язано не лише з тим, що в більшості країн ця технологія знаходиться в «сірій зоні», а й через те, що смарт-контракти не відповідають їхній поточній нормативно-правовій базі.

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


Критика

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

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

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

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


Резюме

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

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