Книга: Как заработать на криптовалютах и блокчейне. Объясняем на пальцах
Назад: Государство и рынок криптовалют
Дальше: Плюсы и минусы криптовалют

Smart-contracts, и заменят ли они юристов, бухгалтеров и нотариусов

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

Как работает смарт-контракт?

А хочет продать машину, Б хочет ее купить. Оба отправляют запрос в смарт-контракт, при этом А подтверждает, что у него есть право собственности на машину, а Б подтверждает, что у него есть деньги. Как только смарт-контракт получает подтверждение от обеих сторон, он отправляет деньги А и записывает в реестр автовладельцев, что собственником данного автомобиля теперь является Б. Вся операция не требует посредников и занимает считанные минуты с момента отправки подтверждений. Рассказывая о возможностях блокчейна, мы приводили пример с расчетом выплат по страховому случаю. Фактически этот пример – это тоже смарт-контракт: проверяются данные, делаются расчеты, выплачивается страховая премия, меняются страховые коэффициенты для водителей. Все быстро, просто, эффективно, без нотариусов, юристов, банков, составления договоров, постановки на учет, походов в ГАИ.

Классно, но, к сожалению, пока невозможно.

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

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

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

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

Идея так называемых умных контрактов была описана в 1996 году юристом и криптографом Ником Сабо. Он предложил «автоматизировать выполнение условий сделок с минимальными расходами на их сопровождение и без привлечения третьихлиц, которым необходимо доверять». Одной из причин появления этой концепции стал сложный юридический язык, которым пишут договоры. Это делает договор непонятным для неюристов и допускает двоякие условия при толковании его смысла. В языках программирования двоякости прочтения не бывает, программа всегда будет работать так, как записано в алгоритмах. Но вопрос с непонятностью договора при использовании смарт-контрактов остается актуальным, только теперь договор не могут понять все, кто не является программистами.

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

В 2013 году гениальный программист Виталик Бутерин предложил концепцию универсальной децентрализованной блокчейн-платформы, в которой любой желающий может программно реализовать разные системы хранения и обработки информации. Главное условие – действия должны быть описаны как математические правила. В результате эта идея получила воплощение в виртуальной машине Ethereum. Подробнее об устройстве Ethereum рассказывается в видео по ссылке . Осторожно! Много технических терминов и подробностей. Смарт-контракт – это электронный алгоритм или условие, при выполнении которого стороны могут обмениваться деньгами, недвижимостью, акциями и другими активами. Для реализации умного контракта нужно иметь децентрализованную сеть, где все участники имеют равные права. В качестве финансового инструмента используется криптовалюта.

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

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

Смарт-контракт – это запрограммированные условия договора.

Умный договор оперирует теми же понятиями, что и обычный договор:

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

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

Условия – это алгоритм и правила сделки. Они должны быть очень точно и однозначно описаны. В смарт-контракте нельзя написать: «При успешном прохождении проверки права собственности деньги переводятся продавцу». Нужно обязательно указать все условия, которые скрываются за «успешным прохождением проверки права собственности». Эта фраза для смарт-контракта должна превратиться примерно в такой в чек-лист:

⇔ Версия реестра автовладельцев актуальна и обновлена не более 30 секунд назад.

⇔ В этой версии реестра есть предмет договора – автомобиль с таким-то VIN-номером.

⇔ Этот автомобиль принадлежит А.

⇔ На автомобиль не наложено запретов на продажу.

⇔ На автомобиль не наложено арестов имущества.

⇔ Автомобиль не находится в залоге.

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

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

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



Рис. 6





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

Потом фиксируем этапы выполнения договора: проверяем машину, вносим предоплату, регистрируем сделку, вносим постоплату.

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

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

Вместо «терминов и определений» будут «глобальные переменные»:

✓ кошелек (публичный адрес) продавца;

✓ кошелек (публичный адрес) покупателя;

VIN-номер машины (указывает продавец);

✓ цена машины (указывает продавец).

Вместо «этапов работ» – «состояния смарт-контракта»:

✓ размещение объявления о продаже;

✓ поиск покупателя;

✓ торг между покупателем и продавцом;

✓ купля/продажа;

✓ регистрация сделки;

✓ передача права собственности покупателю (изменение владельца в реестре) и перевод денег продавцу.

Вместо «результатов» – «возвращаемые значения»:

• ссылка на запись в реестре автовладельцев, подтверждающую права покупателя;

• начисление криптовалюты покупателю.

Вместо «особых условий» – «условия и ограничения»:

✓ покупатель вноситтокены на счет смарт-контракта, где они замораживаются до завершения сделки;

✓ продавец и покупатель могут отказаться от сделки до этапа купли/продажи;

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

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

Смарт-контракты предназначены для автоматизации выполнения условий сделок и различных некоммерческих договоренностей. Например, можно разработать контракт для работы страховой компании, для проведения выборов и голосований. В Интернете очень много примеров смарт-контрактов для пари и азартных игр (ставки, рулетки, викторины). Конечно же, смарт-контракты подходят для заключения торговых сделок и сделок на оказание услуг.

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

Что нужно, чтобы начать массовое использование такой замечательной, эффективной, справедливой и недорогой системы?

Популяризация и развитие технологии

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

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

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

Другой пример – заказ такси или доставка пиццы. При совершении заказа и оплате мы можем совсем не контактировать с людьми, все процессы уже автоматизированы. Люди появляются только на самом последнем этапе: когда приезжает машина или когда привозят пиццу.

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





Правовой статус для использования в сделках между двумя участниками

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

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

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

Внесение таких изменений в закон потребует еще целого ряда доработок, например, появления еще одного вида ЭЦП (электронной цифровой подписи), которая будет использоваться для работы со смарт-контрактами. Поэтому, на мой взгляд, это будет более долгий путь, чем автоматизация сделок-оферт.

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

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

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

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





Надежные доверенные оракулы

Как смарт-контракт узнает о том, что мы вызвали такси? Как узнает, что машина приехала на место? Или, например, что пицца готова и пора ставить задачу на ее доставку?

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

Оракулы – это события, которые происходят во внешнем мире, но могут повлиять на смарт-контракт.

Сам смарт-контракт может взаимодействовать только с тем, что находится в его родном блокчейне: другими смарт-контрактами и реестрами данных. Но в любой сделке есть еще какие-то внешние условия и данные, которые необходимы для работы смарт-контракта. Для сделки по продаже автомобиля это будет решение ГАИ о постановке на учет или снятии с него. Для разбора страхового случая – данные видеокамер с места аварии. Без получения этой информации смарт-контракт не сможет выполнить свою задачу, поэтому оракулы очень важны.

Но, к сожалению, информация, которая приходит из внешнего мира, может оказаться недостоверной. Например, мы запрограммировали смарт-контракт, который считывает курс валюты с сайта ЦБ РФ, и на основе этого курса делает расчеты и выплаты. Предположим, что в одно не очень прекрасное утро на сайте Центробанка происходит сбой и посмотреть курс валюты становится невозможно. Операции по смарт-контракту могут быть заблокированы, либо расчеты и выплаты будут производиться по вчерашнему курсу. В любом случае это приведет к сбою в работе смарт-контракта.

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

Конечно, раз есть спрос, то уже появились и ответные предложения – онлайн-сервисы, готовые предоставлять смарт-контрактам нужную информацию в нужном формате на платной основе. Пример такого сервиса – oraclize.it. Через него смарт-контракт может получить доступ к биржевой информации или к данным с различных веб-сайтов. Стоимость одного запроса данных с веб-сайта – 10 центов.

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





Накопление практики и повышение профессионализма разработчиков

Весь блокчейн в целом и смарт-контракты в частности – это очень новая технология. Ethereum был придуман и реализован в 2013–2014 году. Для создания программы такого уровня сложности и такой широкой области применения это очень маленький срок. Говоря это, не стоит ни в коей степени умалять заслуги разработчиков Ethereum. Они сделали очень крутую и полезную программу, и можно с уверенностью утверждать, что она очень сильно повлияет на нашу жизнь.

Но любая новая технология периодически оказывается в ситуации: «Жизнь меня к такому не готовила». Как пример, программисты смарт-контрактов на Ethereum несколько лет пользовались для своих разработок общей библиотекой программ и были совершенно не готовы к тому, что кто-то может удалить из этой библиотеки популярную программу. Как результат – те самые замороженные в Ethereum 280 миллионов долларов.

В смарт-контрактах очень высока цена ошибки. Потерянные 50 миллионов и замороженные 280 миллионов долларов – это результаты ошибок в коде контрактов.

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

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

В каких блокчейнах работают смарт-контракты?

Ethereum был первым блокчейном, который поддерживает смарт-контракты, поэтому большинство смарт-контрактов сейчас работает в нем. В Ethereum можно программировать смарт-контракты любой сложности. Все они фактически превращаются в вычислительные задачи, которые должны быть выполнены на нодах у майнеров, поэтому единственные ограничения, которые есть у разработчиков, – это вычислительные мощности компьютеров майнеров. Конечно, внутри Ethereum есть свои ограничения и рекомендации, как нужно писать смарт-контракты, но в целом вся виртуальная машина Ethereum устроена таким образом, чтобы накладывать минимум технический ограничений и заменять их экономическими. Дело в том, что Ethereum, прямо как настоящая машина, работает на топливе, его обычно называют газ (gas). Существует что-то вроде тарифа на выполнение разных операций, например, сохранить данные в блокчейн стоит 20 000 единиц газа, а прочитать – 5000.Тот, кто вызывает функцию смарт-контракта, должен оплатить необходимое для ее выполнения количество газа. Оплата производится в криптовалюте ether, которую, как правило, разработчики и их клиенты покупают за фиатные деньги.

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

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

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

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

Как научиться программировать смарт-контракты?

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

Одно время разрабатывался еще один язык для смарт-контрактов Ethereum – Serpent Этот язык основан на языке Python. Однако в нем было обнаружено слишком много ошибок и уязвимостей, поэтому на данный момент разработка этого языка прекращена.





На рис. 7 показан код очень простого контракта.





Рис. 7





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

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

Назад: Государство и рынок криптовалют
Дальше: Плюсы и минусы криптовалют