ru
Назад к списку

3 типичных заблуждения о смарт-контрактах

17 Декабрь 2018 18:15, UTC
Оливье Риккен

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

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

«Смарт-контракты — это просто код, а не контракты»

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

Если мы рассмотрим обычные контракты, то поймем, что их семантика состоит из 2 основных элементов, а именно:

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

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

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

Учитывая этот момент, а также операционную семантику контракта (как описано в пункте 1), если смарт-контракт является результатом соглашения между двумя и более сторонами и «подписан» всеми участниками (путем активной транзакции в смарт-контракте), то его можно рассматривать так, словно он следует операционной семантике традиционного контракта, хоть и создан на нестандартном языке (например, Solidity).

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

«Смарт-контракты могут действовать полностью автономно»

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

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

Дополнительно, информация, доступная смарт-контракту во время исполнения, весьма ограничена. Как говорится в документации Ethereum: «Исполнение должно быть полностью детерминированным, его единственным контекстом является положение блока в блокчейне и все доступные данные» и «Он не только в “песочнице”, но фактически полностью изолирован, что означает, что код внутри EVM не имеет доступа к сети, файловой системе или другим процессам. Смарт-контракты также имеют ограниченный доступ к другим смарт-контрактам».

“Доступные данные” — это данные, отправленные в контракт транзакцией или сообщением, а также данные в хранилище и памяти смарт-контракта. Хотя смарт-контракт может обращаться к другим смарт-контрактам (например, считывать их баланс), повторное обращение не рекомендуется экспертами и, как они утверждают, должно использоваться только в качестве крайней меры. Кроме того, умные контракты могут выполнять только базовые вычисления, такие как +, -, *, / и %. Он не способен, к примеру, выполнять “биг-дата” аналитику .

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

«Действительно УМНЫЙ контракт»?

Нет такого понятия, как умный контракт в общем и целом. Люди часто ошибаются, говоря о блокчейне в общем его понимании, вместо того, чтобы ссылаться на конкретный блокчейн (например, Bitcoin, Ethereum, Hyperledger и т. д.) Та же ошибка допускается в отношении смарт-контрактов. Большинство блокчейнов вообще не имеют возможности для создания смарт-контрактов, либо в очень ограниченном виде или с помощью  сторонних решений.

Функции, которые может иметь смарт-контракт, также зависят от блокчейна. Поэтому, когда речь заходит о разработке решений, требующих смарт-контрактов, опять-таки не существует универсального понятия «умного контракта». Чтобы создать смарт-контракт, удовлетворяющий ваши потребности — в первую очередь четко определите, какой блокчейн использовать. Изучите возможности токенов (которые имеют экономическую ценность или нет), полноту по Тьюрингу, конфиденциальность, предпочтительную механику консенсуса и т. д.

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

Оливье Риккен — консультант и эксперт по блокчейну и смарт-контрактам из Амстердама. Уже несколько лет он активно занимается обучением, консультированием и внедрением решений в области блокчейна.