Вперше дана технологія була описана на початку дев'яностих Ніком Сабо. Він був першим, хто придумав з метою формалізації і більшої захищеності комп'ютерних мереж об'єднати програмні протоколи і призначений для користувача інтерфейс. Для цього і потрібні були смарт-контракти - найбільш простий інструмент, що забезпечує довірчу взаємодію. Однак в число потенційних способів використання цього методу, пряма робота з різними фінансами ще не входила - йшлося про різні відносини ділового характеру, типу кредитування, авторського права і обробки різних платежів.
Однак незабаром з'явилися фахівці, які адаптували смарт-контракти під потреби криптовалюти. Тепер вони стали чимось на зразок цифрових угод, підкріплених набором певних правил. Які визначаються особливостями комп'ютерного коду мережі і є обов'язковими до виконання всіма учасниками (вузлами).
Якщо ж говорити про конкретно блокчейн, то смарт-контракти дозволяють створювати довірчі протоколи. Тобто окремі учасники можуть взаємодіяти один з одним, нічого один про одного не знаючи і не довіряючи. Але якщо якийсь елемент контракту буде порушений, то він автоматично анулюється. Це дозволяє також працювати без посередників і значно зменшити операційні витрати.
Незважаючи на те, що протокол системи Біткоїн використовує дану технологію вже достатньо довгий час, популяризована вона була іншою криптовалютою - Ethereum. Відмінність полягає в тому, що кожен окремий блокчейн може встановлювати свої способи реалізації смарт-контрактів.
Як взагалі працюють смарт-контракти?
Якщо спрощувати, то смарт-контракт - детермінована програма, яка працює на найпростішому принципі « if ... then ...». Тобто - строго певні реакції на чітко задані умови. Так що назва технології не сильно відповідає її змісту, оскільки дана система взаємодії не є ні «розумною», ні, якщо говорити юридичною мовою, контрактом.
У мережі Ethereum смарт-контракти регулюють виконання будь-яких взаємодій і операцій між окремими учасниками - адресами. А якщо якась адреса не використовує цей спосіб взаємодії, то вона називається особистим обліковим записом (EOA) і управляється не програмою, а конкретним користувачем.
В рамках системи Ethereum , смарт-контракти складаються з коду контракту , який і визначає умови виконання , і двох публічних ключів. Перший надається творцем контракту, другий - унікальний цифровий ідентифікатор для адреси.
Виконання будь-якого подібного контракту автоматичне при кожній блокчейн-транзакції, але запускаються вони виключно з особистого облікового запису, тобто не автоматично, а з подачі людини.
Характеристики
Смарт-контракти, які використовуються в мережі Ethereum, відповідають наступним характеристикам:
- Розподіленість. Тобто - поширеність по всіх вузлах мережі, на відміну від тих систем, де програмний код і протоколи зберігаються на центральних серверах.
- Детермінованість. Для кожної умови «if» - є чітко визначений наслідок «then». Це гарантує ідентичність результатів, незалежно від того, хто задає умови.
- Автономність. По суті це - програма, яка сама себе виконує. Як тільки виконується умова «if» - тут же виконується наслідок «then». І тільки в такому порядку . Наявність ручної ініціації особливої ролі при цьому не грає. Якщо ж протокол не ініційований, то він буде перебувати в бездіяльності, що б не трапилося.
- Незмінність. Коли алгоритм створений і активований, його вже не можна змінити. Якщо, звичайно, ця можливість не передбачена при початковій розробці.
- Настроюванність. Даний спосіб взаємодії можна розробляти різними способами, так що ця технологія може використовуватися для дуже багатьох типів децентралізованих мереж і додатків - DAPPs. Крім того, саме ця характеристика відповідає за те, що блокчейн Ethereum може називатися завершеною по Тьюрингу мережею.
- Конфіденційність. Сторони можуть взаємодіяти, нічого одна про одну не знаючи. Крім того, всі ці взаємодії враховуються і фіксуються.
- Прозорість. Вихідний код цієї програми доступний кожному бажаючому.
Чи можна видаляти або змінювати смарт-контракти?
Якщо при створенні програми в неї була вкладена функція SELFDESTRUCT, то так, можна. Вона дозволяє видаляти смарт-контракт і замінювати його новим. В іншому випадку, виправити або видалити нічого не вийде.
Але вважається, що системи, оснащені цією функцією - більш надійні і функціональні. Як приклад, можна розглянути систему, в якій великий смарт-контракт ділиться на кілька невеликих, частина з яких оснащена функцією SELFDESTRUCT. Це означає, що розробник зможе видаляти і змінювати деякі фрагменти коду, не заважаючи функціонуванню всієї системи.
Переваги та можливості
Смарт-контракти гарантують підвищену прозорість всієї системи і знижують експлуатаційні витрати. А в ряді ситуацій - ще й знижують бюрократичні витрати. Особливо це актуально в ситуаціях, коли мова йде про обміни різноманітних фінансів між двома незнайомими між собою сторонами.
Дана технологія використовується при створенні токенізованних активів, при розробці систем голосування, для підвищення надійності криптовалютних гаманців, для більш ефективної роботи бірж, що працюють на децентралізованому принципі, і аналогічних мобільних додатків. Крім того, смарт-контракти можна адаптувати для роботи в сферах охорони здоров'я, благодійності, бюрократичного апарату, децентралізовані фінанси і багато чого ще.
Недоліки
Кожен смарт-контракт - це код, написаний людиною. Тому в ньому завжди є можливість для помилок і вразливостей. Цього можна уникнути, використовуючи кваліфікованих фахівців і неодноразові перевірки. Саме так і поступають, коли мова йде про особливо важливу інформацію і великі суми.
Смарт-контракти переважно працюють в розподілених однорангових мережах, що автоматично позбавляє систему ряду функцій і регуляційних можливостей. Крім того, внесення змін в подібний працює алгоритм або неможливо, або технічно дуже складно і витратно.
Незмінність, про яку ми вже говорили, це добре, але тільки поки система працює стабільно. Коли в 2016 році хакери зламали децентралізовану організацію DAO, вони змогли без особливих проблем вкрасти криптовалюту ефір на суму в мільйони доларів. І це тривало деякий час, оскільки розробники нічого не могли вдіяти з цією ситуацією. В результаті рішення було знайдено - хардфорк. Тобто - поділ Ethereum на два ланцюжки. Одна частина - поточний блокчейн, скасувала блоки зі зломом, повернувши втрачений ефір власникам. Інша зберегла ситуацію незмінною - Ethereum Classic. Що важливо - вразливість була не в роботі самого блокчейна Ethereum, а в неправильній роботі смарт-контракту.
Також недоліком можна вважати юридичну невизначеність смарт-контрактів. У переважній більшості країн вони знаходяться в «сірій зоні», оскільки не вписуються в існуючу нормативно-правову базу. Наприклад, в рамках даної системи можуть здійснювати транзакції і неповнолітні, в чому неможливо переконатися, оскільки посередників немає і працює принцип псевдоанонімності. Тому юридична легалізація - одна з найважливіших проблем, яка стоїть перед розподіленими мережами в цілому і смарт-контрактами зокрема.
Критика
З одного боку, смарт-контракти, на думку ентузіастів даної технології, можуть серйозно спростити і автоматизувати поточні комерційні і організаційні системи. З іншого - у даного методу взаємодії все ще занадто багато недоліків, щоб він став загальноприйнятим, причому - в реальному світі.
На жаль, для вирішення ряду проблем набагато краще підходять централізовані сервера. Вони простіші, дешевше в обслуговуванні, працюють більш ефективно, мають можливість внесення змін, і що найважливіше - набагато легше взаємодіють з іншими мережами. А у смарт-контрактів функціональна сумісність практично відсутня, оскільки спочатку використовуються різні коди і алгоритми.
Висновок
Смарт контракт - вкрай ефективна технологія, особливо коли мова заходить про системи блокчейн. Не виключено, що в найближчому майбутньому все більше і більше додатків, які здійснюють фінансові послуги та працюють з конфіденційною інформацією, будуть використовувати саме їх. Потенціал у них значний, але як людство їм розпорядиться і чи прийме його - це покаже тільки час.