Вся правда о смарт-контрактах

Источник: Coin Post

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

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

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

1. автоматическое, не требующее доверия и беспристрастное исполнение договоров;

2. устранение посредников при заключении и исполнении договоров;

3. (подразумеваемое по смыслу) исключение из процесса юристов.

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

Но что же такое смарт-контракт? Разве это не вотчина Эфириума и не явление из будущего? Почему кто-то вообще может встать на пути прогресса?

Что такое смарт-контракт?

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

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

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

Так, если Элис согласится через 3 месяца заплатить Бобу 500 долларов за доставленный диван (назовем это диванным фьючерсом), то программный код определит, соответствуют ли условия заданным параметрам, и исполнит договор, обеспечив доставку дивана, который до этого момента находился на хранении у третьего лица.

При этом ни одна из сторон не сможет пойти на попятный.

Ключевая особенность смарт-контрактов заключается в бездоверительном характере их исполнения.

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

На самом деле «умные» контракты довольно глупы

Использование слова «смарт» подразумевает, что вышеупомянутые контракты обладают неким собственным интеллектом, но это не так.

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

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

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

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

Иными словами, он действовал бы как первоклассный судья.

В реальности же, с этой точки зрения, «умный контракт» оказывается совершенно не умным: он основывается на заданных условиях и неукоснительно следует им, не учитывая вторичные обстоятельства или «дух» закона.

Бездоверительный характер контракта не предусматривает ни малейшей двойственности, и это порождает следующую проблему:

Смарт-контракты очень сложны

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

Это не так: с самого момента появления Биткойна в 2009 году существует созданный на его базе язык смарт-контрактов Script, а сами по себе «умные» контракты появились еще раньше, в 1995 году.

Отличие между языками написания смарт-контрактов Биткойна и Эфириума заключается в «Тьюринг-полном» характере последнего.

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

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

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

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

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

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

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

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

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

Смарт-контракты – на самом деле не совсем контракты (по крайней мере в Ethereum)

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

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

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

Краудфандинговая платформа DAO, или «Децентрализованная автономная организация», была создана для того, чтобы продемонстрировать все возможности Ethereum.

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

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

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

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

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

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

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

Иными словами, составители смарт-контрактов и инвесторы сглупили, а разработчики Ethereum решили их выручить.

Последствия этого инцидента широко известны и хорошо задокументированы.

Одним из них стало создание Ethereum Classic, унаследовавшего платформу DAO в ее первоначальном виде и закрепившего принцип «код – это закон».

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

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

Смарт-контракты работают только в связке с цифровыми инструментами на предъявителя

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

В конце концов, кому нравится ходить по судам, чтобы доказать свое право собственности на тот или иной актив?

Не проще ли использовать для этого смарт-контракты?

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

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

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

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

Чтобы сделать их по-настоящему бездоверительными, нужна децентрализованная платформа.

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

Если цифровая версия дома обретает нового владельца, то это должно отразиться и на физической версии.

Необходимо сделать так, чтобы цифровой мир «узнал» о физическом, и здесь возникает так называемая проблема оракула.

Когда Элис передает дом Бобу, смарт-контракт должен знать, что недвижимость действительно перешла в руки нового собственника.

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

Например, дом может быть представлен как уникальный токен Ethereum.

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

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

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

Значит ли это, что реальная недвижимость теперь также принадлежит вору? Возможно ли будет перевыпустить токен в случае его утери, или же дом отныне невозможно будет продать? Кто будет отвечать за перевыпуск токенов?

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

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

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

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

Вышеупомянутая проблема касается даже таких цифровых активов, как электронные книги, медицинские карты или фильмы: «права» на владение ими определяет некий орган власти, и мы вынуждены доверять этому оракулу.

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

Проще говоря, пытаясь сделать контракт «умным», вы значительно его усложнили, и при этом по-прежнему должны кому-то доверять.

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

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

Заключение

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

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

Кроме того, использование Тьюринг-полноты – прямая дорога к ошибкам и неожиданным последствиям самого разного толка. На самом деле нам стоило бы называть платформы для смарт-контрактов Тьюринг-уязвимыми.

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

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

Единственный случай, в котором они обеспечить бездоверительность, – это цифровые инструменты на предъявителя на децентрализованных платформах вроде Биткойна.



Самые актуальные новости - в Telegram-канале

Читайте также

Добавить комментарий

Вверх