Вступ
Нік Сабо вперше описав смарт-контракти у 1990-х роках. Тоді він визначив смарт-контракт як інструмент, який формалізує та захищає комп'ютерні мережі, комбінуючи протоколи з інтерфейсами користувача.
Сабо описав потенційне використання смарт-контрактів у різних галузях, пов'язаних з договірними угодами, такими як кредитні системи, обробка платежів та управління правами на контент.
Смарт-контракти блокчейну дозволяють створювати протоколи які не потребують довіри. Це означає, що дві сторони можуть брати на себе зобов'язання через блокчейн, не знаючи один одного та не довіряючи один одному. Вони можуть бути впевнені, якщо умови не будуть виконані, контракт не буде виконаний. Крім того, використання смарт-контрактів може усунути потребу в посередниках, що значно знижує операційні витрати.
У цій статті основна увага буде приділена смарт-контрактам, які працюють на віртуальній машині Ethereum (EVM), яка є невід'ємною частиною блокчейну Ethereum.
Як працюють смарт-контракти?
Простіше кажучи, смарт-контракт працює як детермінована програма. Вона виконує певне завдання та задає "коли і як виконуються певні умови". Таким чином, система смарт-контрактів часто слідує твердженням "якщо… то…". Але, незважаючи на популярну термінологію, смарт-контракти не є ні юридичними контрактами, ні розумними (смарт). Це просто фрагмент коду, що працює у розподіленій системі (блокчейні).
У мережі Ethereum смарт-контракти відповідають за виконання блокчейн-операцій та керування ними, коли користувачі (адреси) взаємодіють один з одною. Будь-яка адреса, яка не є смарт-контрактом, називається зовнішнім акаунтом (EOA). Таким чином, смарт-контракти контролюються комп'ютерним кодом, а EOA – користувачами.
По суті, смарт-контракти Ethereum складаються з коду контракту та двох публічних ключів. Перший публічний ключ надається автором контракту. Інший ключ представляє сам контракт, діючи як цифровий ідентифікатор, унікальний для кожного смарт-контракту.
Розгортання будь-якого смарт-контракту здійснюється через транзакцію в блокчейні, і вона може бути активована лише під час виклику EOA (або іншими смарт-контрактами). Однак перший тригер завжди викликає EOA (користувач).
Основні можливості
Смарт-контракт на Ethereum часто має наступні характеристики:
Розподіленість. Смарт-контракти реплікуються та розподіляються у всіх нодах мережі Ethereum. Це одна з основних відмінностей від інших рішень, що базуються на централізованих серверах.
Детермінованість. Смарт-контракти виконують лише ті дії, для яких вони були розроблені, за умови виконання вимог. Крім того, результат завжди буде однаковим незалежно від того, хто їх виконує.
Автономність. Смарт-контракти можуть автоматизувати всі види завдань, працюючи як програма, що виконується самостійно. Однак у більшості випадків, якщо смарт-контракт не запускається, він знаходиться в "бездіяльності" і не виконує жодних дій.
Незмінність. Смарт-контракти не можна змінити після розгортання. Їх можна "видалити" лише в тому випадку, якщо раніше була реалізована та чи інша функція. Таким чином ми можемо сказати, що смарт-контракти можуть надавати захист від несанкціованого доступу до коду.
Система "без довіри". Дві або більше сторін можуть взаємодіяти через смарт-контракти, не знаючи та не довіряючи одна одній. Крім того, блокчейн-технологія гарантує точність даних.
Прозорість. Оскільки смарт-контракти засновані на публічному блокчейні, їхній вихідний код не тільки незмінний, але й доступний всім.
Чи можу я змінити або видалити смарт-контракт?
Неможливо додати нові функції до смарт-контракту Ethereum після його розгортання. Проте, якщо його творець включає функцію під назвою SELFDESTRUCT, він може "видалити" смарт-контракт у майбутньому, і замінити його новим. І навпаки, якщо функція не додана в код заздалегідь, він не зможе його видалити.
Примітно, що смарт-контракти, які оновлюються, дозволяють розробникам мати більшу гнучкість втрачаючи незмінність контрактів. Існує безліч способів створення смарт-контрактів різного ступеня складності.
Візьмемо спрощений приклад і уявімо, що смарт-контракт розділений на декілька дрібніших контрактів. Деякі з них призначені для незмінності, тоді як в інших включена функція видалення. Це означає, що частину коду (смарт-контракту) можна видалити та замінити, а інші функції залишаться недоторканими.
Переваги та варіанти використання
Як програмований код, смарт-контракти легко налаштовуються і можуть бути розроблені у різний спосіб, пропонуючи безліч видів послуг і рішень.
Як децентралізована та автономна програма, смарт-контракт може забезпечити підвищену прозорість і знизити операційні витрати. Залежно від напряму діяльності, вони можуть підвищити ефективність і знизити бюрократичні витрати.
Смарт-контракти особливо корисні в ситуаціях, пов'язаних із переказом або обміном коштів між двома чи більше сторонами.
ERC-20
Обмеження
Смарт-контракти складаються із комп'ютерного коду, написаного людьми. Це пов'язано з численними ризиками, оскільки код схильний до вразливостей та помилок. В ідеалі вони мають бути написані та розгорнуті досвідченими програмістами, особливо коли йдеться про конфіденційну інформацію або великі суми грошей.
Крім цього, деякі стверджують, що централізовані системи можуть надати більшість рішень та функцій, які пропонуються смарт-контрактами. Основна відмінність полягає в тому, що смарт-контракти працюють у розподіленій P2P-мережі, а не на централізованому сервері. І оскільки вони засновані на блокчейн-системі, вони зазвичай або незмінні, або їх дуже важко змінити.
Бути незмінним може бути добре в одних ситуаціях, але дуже погано в інших. Наприклад, коли в 2016 році зламали децентралізовану автономну організацію (DAO) під назвою The DAO, мільйони ether (ETH) були вкрадені через недоліки в коді смарт-контракту.
Важливо відзначити, що проблема виникла не через блокчейн Ethereum. Натомість це було викликано неправильною реалізацією смарт-контракту.
Ще одне обмеження смарт-контрактів пов'язане з їх невизначеним правовим статусом. Не тільки тому, що він знаходиться в сірій зоні в більшості країн, але й тому, що смарт-контракти не відповідають чинній правовій базі.
Наприклад, багато контрактів вимагають, щоб обидві сторони були належним чином ідентифіковані та старші 18 років. Псевдоанонімність, що забезпечується блокчейн-технологією, у поєднанні з відсутністю посередників може загрожувати цим вимогам. Хоча для цього є потенційні рішення, юридична сила смарт-контрактів є реальною проблемою, особливо коли йдеться про безмежні розподілені мережі.
Критика
Деякі блокчейн-ентузіасти розглядають смарт-контракти як рішення, яке незабаром замінить та автоматизує більшу частину наших комерційних та бюрократичних систем. Хоча це можлива реальність, вона, певно, далека від того, щоб стати нормою.
Смарт-контракти, безперечно, цікава технологія. Але будучи розподіленими, детермінованими, прозорими і певною мірою незмінними, вони можуть бути менш привабливими у деяких ситуаціях.
Фактично, вся критика спирається на те що, що смарт-контракти не є правильним рішенням для безлічі реальних проблем. Насправді, деяким організаціям краще використовувати звичайні серверні альтернативи.
У порівнянні зі смарт-контрактами, централізовані сервери простіші і дешевші в обслуговуванні, і вони, як правило, мають вищу ефективність з точки зору швидкості та міжмережевої взаємодії (функціональної сумісності).
Заключні думки
Немає сумнівів у тому, що смарт-контракти вплинули на світ криптовалют і, безумовно, зробили революцію в блокчейн-просторі. Хоча кінцеві користувачі можуть не взаємодіяти напряму зі смарт-контрактами, у майбутньому вони, ймовірно, будуть використовуватися для широкого спектру програм, від фінансових послуг до управління ланцюгами поставок.
Водночас смарт-контракти та блокчейн можуть повністю змінити майже всі сфери нашого суспільства. Але тільки час покаже, чи зможуть ці новаторські технології подолати безліч бар'єрів на шляху до широкомасштабного прийняття.