очевидным отличием будет возможность смарт-контракта контролировать
лишь математически доказуемые условия сделки, в то время как в обычном
контракте изложенные в нем условия могут носить и нечеткий, то есть
описательный характер. В конечном итоге Ник Сабо ограничился лишь
теоретическим представлением своей модели, а непосредственная
реализация данного концепта увидела свет только спустя два десятка лет в
проекте Ethereum.
В целом процесс формирования смарт-контракта похож на обычную
транзакцию, которая содержит ряд дополнительных элементов, придающих ей
уникальные свойства. В первую очередь речь идет о программном коде, который подлежит децентрализованному исполнению при помощи так
называемой виртуальной машины Ethereum (EVM) непосредственно на узлах
сети, создающих блоки. В коде смарт-контракта описана алгоритмическая
логика обработки сделок между пользователями сети и владельцем смарт-
контракта, поместившим его в блокчейн, введя его, таким образом, в действие.
С этого момента смарт-контракт присутствует в одном из блоков цепочки, и
любой желающий участник сети может активировать его работу путем отправки
транзакции на адрес контракта в системе. То есть смарт-контракт является
полноправным субъектом сети, который может принимать и формировать
транзакции. Но делает он это не самостоятельно, а только когда код контракта
запускается на исполнение виртуальной машиной Ethereum на узле майнера
при создании нового блока. Как происходит этот процесс?
Для простоты смарт-контракт можно сравнить с торговым автоматом, который
продает, например, напитки. Покупатель помещает в автомат определенную
денежную сумму наличными или при помощи банковской карты, а аппарат
выдает выбранный товар сообразно внесенным средствам. Если данную
ситуацию спроецировать на блокчейн-сеть, то активация смарт-контракта
происходит в момент, когда в блок помещается транзакция, отправляющая в
адрес контракта какие-то криптовалютные активы. Обрабатывая подобную
транзакцию, майнер находит блок, где содержится смарт-контракт, и при
помощи виртуальной машины запускает его код на обработку, подавая ему «на
вход» данные транзакции. Результат действия смарт-контракта может быть
разным, что обусловлено логикой алгоритма, заложенной в сам код контракта.
Это может быть просто внесение изменений в состояние системы либо
формирование контрактом ответных транзакций — одной или даже нескольких.
Не следует также забывать, что смарт-контракты запускаются не только
майнерами, но и обычными узлами. Это происходит в моменты, когда они
обрабатывают транзакции, связанные со смарт-контрактами, в том числе и при
проверке получаемых от майнеров блоков на валидность. Подобный протокол
предполагает, с одной стороны, некоторую вычислительную избыточность, а с
другой — обеспечивает дополнительную гарантию стабильности работы
системы в целом.
В отличие от скрипт-языка Биткоин, код смарт-контрактов пишется на языках
программирования, удовлетворяющих критериям полноты по Тьюрингу.
Наиболее распространенным языком смарт-контрактов Ethereum является
объектно-ориентированный язык Solidity, семантически схожий с популярным
языком программирования JavaScript. Однако непосредственно в тело смарт-
контракта помещают не исходный текст, написанный, например, на том же
Solidity, а прошедший через процедуру компиляции — так называемый «байт-
код». Данный код представляет собой компактный набор команд низкого
уровня, предназначенный для исполнения виртуальной машиной Ethereum.
В силу того, что любая блокчейн-система является децентрализованной
средой, где каждый блок и каждая транзакция доступны для изучения любым
участником сети, то и смарт-контракты Ethereum не являются исключением. Но
поскольку контракт хранится в блокчейн-базе в формате байт-кода, для того, чтобы разобраться с принципом его действия, используются специальные
декомпиляторы. Это программы, приводящие код в относительно «читаемый»
вид, хотя и далекий от исходного — того, в котором он был изначально создан
программистом смарт-контракта. Декомпилятор не может восстановить
исходные названия переменных, а также все комментарии, сделанные
программистом к своему коду. Таким образом, воспроизведение изначальной
логики алгоритма после процесса декомпиляции кода смарт-контракта
Читать дальше
Конец ознакомительного отрывка
Купить книгу