Ethereum: як працюють розумні контракти?

Смарт-контракти — головна функція, яка зробила Ethereum таким успішним. 

Що таке смарт-контракти і для чого вони потрібні

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

Навпаки, Ethereum, який народився через 6 років після біткойна, з самого початку був розроблений як мережа, здатна розміщення та виконання смарт-контрактів

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

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

Віталік написав: 

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

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

Насправді, сам Бутерін взяв термін «контракти» в лапки, тому що, а не реальні контракти між сторонами, вони комп'ютерні програми, що виконуються децентралізовано мережі. 

Таким чином, із загальної точки зору їх експлуатація не дуже складна. 

розумний контракт
Смарт-контракти виконуються після перевірки умов, що містяться в них

Розгортання смарт-контрактів на блокчейні Ethereum

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

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

Тому не тільки його видання, а й виконання інструкцій незворотне після публікації в блокчейні. 

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

Також варто пам’ятати, що ці інструкції, як правило, передбачають використання ресурсів, таких як дані або маркери, щоб вони фактично виконувались, повинні бути дотримані всі необхідні умови. 

Іноді ці дані надходять ззовні, завдяки так званим оракулам, а іноді вони просто надходять від транзакцій на блокчейні. 

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

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

Як взаємодіяти з кодом і взагалі з dApps

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

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

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

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


Джерело: https://en.cryptonomist.ch/2022/06/11/ethereum-smart-contracts-3/