Самоисполняемые контракты и децентрализованные организации

в 18:42, , рубрики: bitcoin, Ethereum, smart contracts, биткойн, Исследования и прогнозы в IT, криптография

social-issues[1]
Многие концепции, предлагаемые проектом Ethereum, могут казаться совершенно фантастическими и даже иногда пугающими. Мы поговорим о так называемых «интеллектуальных контрактах», которые исполняются автоматически без необходимости или даже возможности вмешательства или участия человека. Люди формируют похожие на Скайнет «децентрализованные автономные организации», которые существуют полностью в облаке и управляют значительными финансовыми ресурсами. Они могут стимулировать создание децентрализованных «законов на основе математики» и даже реализовать на первый взгляд совершенно утопическую идею общества, в котором не требуется полагаться на авторитет центральных властей.

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

В первой части мы поговорим о так называемых «интеллектуальных контрактах». Идею интеллектуальных контрактов, которая обсуждается уже несколько десятилетий, предложил сообществу любителей криптографии Ник Сабо в 2005 году. Интеллектуальный контракт имеет очень простое определение: это контракт, который выполняется автоматически. Другими словами, если обычный контракт – это бумажный или электронный документ, описывающий обязательства сторон и условия их выполнения, то интеллектуальный контракт – это компьютерная программа, которая автоматически выполняет обязательства при наступлении соответствующих условий. Ник Сабо сравнил такие контракты с торговыми автоматами:

Примитивным предшественником интеллектуальных контрактов можно считать обычный торговый автомат. В пределах суммы, ограничивающей возможные потери (сумма денег в кассе должна быть меньше, чем стоимость ее взлома), автомат принимает монеты и с помощью простого механизма, создание которого может озадачить лишь начинающего программиста, выдает сдачу и товар в соответствии с указанной ценой. Торговый автомат – это контракт на предъявителя: купить товар может любой человек, у которого есть монеты. Денежный ящик и другие защитные механизмы защищают монеты и товары от взломщиков. Этой защиты достаточно, чтобы использование таких автоматов имело смысл.

Интеллектуальные контракты позволяют применять этот принцип во многих областях. Можно создавать финансовые контракты, которые автоматически перемещают деньги на основании определенных формул и условий. Например, такой контракт может автоматически продать доменное имя тому, кто первым заплатит за него $200. Возможны и интеллектуальные страховые контракты, которые контролируют банковские счета и осуществляют автоматические выплаты на основании данных о событиях в реальном мире, полученных из доверенного источника (или из нескольких источников).

Интеллектуальное оборудование

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

if button_pressed == "Coca Cola" and money_inserted >= 1.75:
release("Coca Cola")
return_change(money_inserted - 1.75)
else if button_pressed == "Aquafina Water" and money_inserted >= 1.25:
release("Aquafina Water")
return_change(money_inserted - 1.25)
else if ...

Этот контракт имеет четыре «привязки» к внешнему миру: входные переменные button_pressed и money_inserted и выходные команды release и return_change. Все они зависят от оборудования, но мы рассмотрим только последние три, поскольку обработку нажатия кнопки можно считать тривиальной задачей. Если бы этот контракт выполнялся на Android-смартфоне, он был бы бесполезен, так как смартфон не может получить информацию о том, сколько денег внес покупатель, и конечно же не может выдать Кока-Колу или сдачу. Кроме того, контракт в торговом автомате имеет обеспечение в виде запасов Кока-Колы и физической защиты, которая не позволяет взять товар, не выполнив условия контракта.

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

Интеллектуальные деньги и фактическое общество

Тем не менее, возможности физического оборудования весьма ограничены. Оборудование обладает ограниченной защитой, поэтому оно не подходит для продажи дорогих товаров. Кроме того, наиболее интересные контракты связаны с денежными переводами. Но как реализовать их на практике? В настоящий момент это невозможно. Теоретически, мы можем предоставить контрактам учетные данные для доступа к банковским счетам, чтобы они отправляли деньги при выполнении определенных условий, однако такие контракты не будут «самоисполняемыми». Одна из сторон контракта всегда может отключить его перед наступлением даты платежа или опустошить свой банковский счет или же просто изменить пароль для доступа к счету. Неважно, как контракт интегрирован в систему – у обеих сторон будет возможность его отключить.

Как же решить эту проблему? Ответ может показаться слишком радикальным для широких масс, но не для тех, кто знаком с биткойном: нам нужны деньги нового типа. До настоящего времени эволюция денег проходила в три этапа: товарные деньги, деньги, обеспеченные товаром, и фиатные деньги. Товарные деньги – это деньги, которые одновременно являются товаром, обладающим «внутренней потребительской стоимостью». Под это определение идеально подходят золото и серебро; в некоторых культурах в качестве денег также использовались чай, соль, ракушки и т. п. Затем появились деньги, обеспеченные товаром – банковские сертификаты, или банкноты, которые можно было свободно обменять на золото. И наконец, мы получили фиатные деньги. И хотя «фиат» звучит как библейское «fiat lux» (да будет свет), эти деньги придумал не бог, а правительства. Стоимость фиатных денег происходит исключительно из того, что их поддерживает государство, которое принимает только фиатные деньги в качестве налогов и сборов, а также предоставляет им другие преимущества (вплоть до прямого запрета использовать для торговли на данной территории любые деньги, кроме национальных).

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

Фактические деньги очень хорошо сочетаются с интеллектуальными контрактами. Основная проблема интеллектуальных контрактов – гарантия исполнения: если в контракте сказано, что Олегу нужно отправить $200, если произошло событие X, и событие X происходит, то как гарантировать, что $200 действительно будут отправлены Олегу? Фактические деньги позволяют применить очень элегантное решение: определение денег или, более точно, определение текущего баланса, как результата выполнения всех контрактов. Таким образом, если событие X происходит, то все соглашаются, что у Олега стало на $200 больше, а если событие X не происходит, то все соглашаются, что баланс Олега не изменился.

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

Насколько интеллектуальны интеллектуальные контракты?

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

Однако существуют области, в которых интеллектуальные контракты не так хороши. Например, рассмотрим трудовой контракт: A соглашается сделать определенную работу для B в обмен на X единиц валюты C. Платежную часть нетрудно включить в интеллектуальный контракт. Однако есть и другая часть, и она не так проста: это проверка фактического выполнения работы. Если работа выполняется в физическом мире, то проверить ее скорее всего будет невозможно, так как у цепочки блоков нет путей доступа к физическому миру. Даже если речь идет о разработке веб-сайта, остается вопрос оценки качества. Хотя компьютерные программы могут использовать алгоритмы машинного осмысления и довольно эффективно оценивать такие характеристики в некоторых случаях, эту функциональность очень трудно включить в контракт так, чтобы у исполнителя не осталось лазеек. Конечно, в таких случаях можно использовать схему сделки с двойным залогом, но и она не всегда применима. Иногда одних алгоритмов недостаточно для управления обществом.

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

if says(B,"A did the job") or says(J,"A did the job"):
send(200, A)
else if says(A,"A did not do the job") or says(J,"A did not do the job"):
send(200, B)

says – это алгоритм проверки подписи; функция says(P,T) проверяет, не отправил ли кто-то сообщение с текстом T и цифровой подписью, подтверждающей использование открытого ключа P. Как работает этот контракт? Сначала наниматель должен отправить 200 денежных единиц в контракт, где они будут находиться в качестве эскроу. В большинстве случаев наниматель и исполнитель не будут нарушать договор, поэтому либо A бросит работу и вернет деньги B, отправив сообщение «A не выполнил работу», либо A выполнит работу, B подтвердит, что A выполнил работу, и контракт отправит деньги A. Однако если A выполнил работу, а B с этим не согласен, то решение будет принимать арбитр J.

Обратите внимание, что полномочия арбитра определены очень четко: он может лишь сказать, выполнил ли работу A. В более сложном контракте арбитру можно предоставить право оценивать результат по определенной шкале. Арбитр не может сказать, что A нужно заплатить 600 денежных единиц или что весь контракт незаконный и 200 единиц нужно заплатить самому арбитру, или что-либо еще вне четко определенных границ. Полномочия арбитра реализуются по факту – контракт содержит его открытый ключ, и поэтому деньги автоматически отправляются A или B на основании граничных условий. Контракт может требовать сообщений от 2 из 3 арбитров или предусматривать отдельных арбитров для оценки разных аспектов работы и автоматически определять показатель качества на основе этих оценок. Арбитров можно включить в любой контракт. Они могут определять истинность или ложность конкретных фактов, давать оценку по шкале или участвовать в урегулировании спорных ситуаций.

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

Вот и все, о чем я хотел рассказать.

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

Автор: Arvicco

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js