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

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


Благодаря этим свойствам, у каждого участника хранятся одинаковые копии соглашения, несмотря на то, что оно постоянно меняется.

Аналогия выше описывает набор волшебных документов (блокчейн), для которого прописан один набор правил.

Для других наборов волшебных документов действуют иные правила относительно допустимых изменений.

Исходный набор волшебных документов называется Биткойном.

Правила для этого набора документов звучат так:

  1. в каждом волшебном документе содержится список всех счетов и остатков на них;
  2. счета принадлежат людям, которые могут отправлять биткойны со своего счёта на другие счета.

По сути, на основе этих правил создаются электронные деньги.

Ниже приведена иллюстрация одного из волшебных документов в сети Биткойна.

Число рядом с каждым счётом обозначает остаток биткойнов на нём.

Другой набор документов называется Эфириумом.

Правила для волшебных документов, из которых состоит Эфириум, очень похожи на правила для документов Биткойна:

  1. в каждом волшебном документе содержится список всех счетов и остатков на них;
  2. владельцы счетов могут отправлять средства со своего счёта на другие счета.


Внимательные читатели, вероятно, заметили небольшие различия в формулировках между вторыми правилами Эфириума и Биткойна.

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

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

Здесь счетами B, E и G управляют инструкции, а не люди:

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

Инструкции – это программный код, обычный алгоритм.

Получив средства с другого счёта, смарт-контракт может:

  • выполнить вычисления;
  • сохранить информацию;
  • отправить транзакции на другие счета.


Как упоминалось ранее, счета с кодом не управляются пользователями – они полностью автономны! Исходный код пишет человек, но как только код смарт-контракта загружается в блокчейн, действия счёта определяет только прописанная для него логика.
Многие люди критикуют название «смарт-контракт», потому что эти контракты сложно назвать умными.

Это всего лишь наборы инструкций, которые способен написать любой.

И люди вполне могут создавать совершенно нелепые смарт-контракты.
Это название вводит в заблуждение ещё и потому, что это не совсем контракт, по крайней мере, в том смысле, что он необязателен к выполнению.

За игнорирование условий традиционного контракта приходится нести юридические последствия в реальном мире.

Если контрагент контракта не выполняет свою часть соглашения, можно воспользоваться правовой системой, чтобы привлечь нарушителя к ответственности.

Условия смарт-контракта, напротив, никто не должен выполнять.

Это набор инструкций, которые исполняются самостоятельно.

Смарт-контакт не имеет особой юридической силы в реальном мире.

Он может только отправлять деньги на другие счета в блокчейне.

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

Самый очевидный из них – это понимание содержания контракта.

В контракте на языке юристов излагаются условия соглашения, которые вы обязуетесь выполнять.

Поэтому важно понимать этот язык и то, как содержание контракта интерпретируется правовой системой.

Вот почему вы всегда внимательно изучаете условия соглашения с Spotify/Facebook и т.д.

 Вы бы никогда не подписали соглашение, которое обязывает вас предоставить своего первенца в качестве оплаты за использование их услуг, как это  98 % людей.

Следующий фактор: условия, изложенные в контракте, ограничены огромным массивом действующего законодательства.

То есть, просто взглянув на содержание контракта, невозможно понять, каким образом он будет исполнен.

Существуют законы, которые запрещают использовать первенцев в качестве средства оплаты, даже если вы на это согласились.

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

Журналист  написал  о том, как компания JPMorgan получила огромный штраф, несмотря на выполнение условий, изложенных в контракте.

Упомянутый в ней контракт регулировал рынок электроэнергии, а представители JPMorgan нашли способ обойти его условия.

Они не нарушили правил, изложенных в контракте.

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

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

Риск заключения договора с человеком, который может не выполнить свою часть соглашения, называется риском контрагента.

Его также следует принимать во внимание.
Наконец, даже если вы понимаете содержание контракта и правовой контекст, вам всё равно приходится полагаться на верховенство закона.

Но иногда де-юре ? де-факто.

Именно поэтому вас могут терзать сомнения при заключении соглашения с сыном президента ОАО «Коррупция».

Такой контракт не будет стоить даже той бумаги, на которой он написан.

Но как эти факторы соотносятся со смарт-контрактами? Смарт-контракт в сущности состоит из двух элементов, которые вам нужно понимать и на которые следует полагаться:

  1. код и его интерпретация;
  2. неизменяемость блокчейна.


Как и в случае с обычными контрактами, имея дело со смарт-контрактом, важно понимать, что в нём написано.

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

Как же на самом деле выглядит код смарт-контракта? Ниже приведён фрагмент (не беспокойтесь, я не ожидаю, что он будет вам понятен):
function payOut(address _recipient, uint _amount) returns (bool) { if (msg.sender != owner || msg.value > 0 || (payOwnerOnly && _recipient != owner)) throw; if (_recipient.call.value(_amount)()) { PayOut(_recipient, _amount); return true; } else { return false; } }
Код – это те условия, которые вы принимаете при взаимодействии со смарт-контрактом.

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

Поэтому никакого нарушения договорённостей здесь быть не может.

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

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

Но, как и в случае со словами в предложении, это не имеет смысла.

Это никому не интересно.

Другое дело – способы организации логики.

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

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

Вот некоторые из таких сценариев:

  • цифровая идентификация личности (например, на сайтах);
  • нецифровые активы – например, золото, нефть и недвижимость;
  • валюта страны и другие, новые типы валют;
  • финансовые инструменты – например, акции, ипотечные кредиты и облигации;
  • доказуемо честные азартные игры и ставки;
  • правила для рынка хранения данных;
  • правила для рынка вычислительных ресурсов.


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

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

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

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

По сути, вы создаёте множество блокчейнов внутри одного.

Возьмём, к примеру, блокчейн, в котором прописываются права собственности на различные активы.

Этот волшебный документ – просто список, который указывает, что кому принадлежит.

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

Как и блокчейн, смарт-контракт будет представлять собой обычный список счетов и остатков на них, но с правилами, которые описывают допустимые условия и способы обновления этого списка.
Но кроме того, смарт-контракты позволяют создавать более мелкие нишевые соглашения, для которых никто бы не стал разрабатывать новый блокчейн.

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

Мы могли бы создать смарт-контракт, который блокирует наши средства на 10 дней, а затем случайным образом выплачивает сумму одному из нас.

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

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

Например, возьмём два смарт-контракта: один определяет и прописывает права собственности на доллары, а другой – права собственности на недвижимость.

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

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

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

Со временем, разные формы организации, придуманные людьми, например, государства и компании, смогли завладеть деньгами.

Теперь, впервые в истории, самостоятельно распоряжаться деньгами может машина (логика).
Последствия этого сложно представить, но можно справедливо утверждать, что впереди нас ждут интересные времена.