Ethereum: как работают смарт-контракты?

Смарт-контракты — главная особенность, которая сделала Ethereum таким успешным. 

Что такое смарт-контракты и для чего они нужны

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

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

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

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

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

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

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

Собственно, сам Бутерин взял термин «контракты» в кавычки, потому что это не реальные контракты между сторонами, а компьютерные программы, выполняемые децентрализованным сеть. 

Поэтому с общей точки зрения их работа не очень сложна. 

умный контракт
Смарт-контракты выполняются после проверки содержащихся в них условий.

Развертывание смарт-контрактов на блокчейне Ethereum

Прежде всего, один или несколько разработчиков, очевидно, должны создать смарт-контракт, написав соответствующие строки кода, а затем они должны отправить его в сеть Ethereum. 

С технической точки зрения, публикация его в блокчейне Ethereum означает, что все узлы в сети получают и выполняют его. После публикации все инструкции в нем всегда будут выполняться всеми узлами одинаково. 

Поэтому не только его издание, но и выполнение инструкций необратимо как только он будет опубликован в блокчейне. 

Поэтому действительно важны содержащиеся в нем инструкции, которые могут быть самыми разнообразными, и то, сколько людей им пользуются. Действительно, для того, чтобы инструкции смарт-контракта действительно выполнялись, должны быть одна или несколько транзакций, которые их вызывают

Также стоит помнить, что эти инструкции обычно включают использование ресурсов, таких как данные или токены, поэтому для их фактического выполнения требуется все необходимые условия должны быть соблюдены. 

Иногда эти данные поступают извне, благодаря так называемым оракулам, а иногда просто из транзакций в блокчейне. 

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

Технически смарт-контракты представляют собой тип учетной записи на Ethereum blockchain, «управляемый» сетью, а не центральным объектом. Они могут хранить ETH или токены, а также могут отправлять транзакции по сети автономно.

Как взаимодействовать с кодом и вообще с децентрализованными приложениями

Пользователи могут взаимодействовать со смарт-контрактами, отправляя транзакции, которые запускать одну из функций, определенных в их коде. 

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

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

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


Источник: https://en.cryptonomist.ch/2022/06/11/ethereum-smart-contracts-3/