Найти тему
EasyHex Team

Гарантированность исполнения смарт-контрактов

Оглавление

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

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

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

Илююстрация представления смарт-контракта и пользователей.
Илююстрация представления смарт-контракта и пользователей.

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

Умные контракты чаще всего рассматриваются в контексте децентрализованных приложений или dApps. dApp может быть практически всем, от децентрализованной биржи до аукционной платформы или игр. На сайте «dApps Radar» вы можете найти обширный обзор того, что сегодня представлено на рынке.

Большинство крипто-токенов выпускаются на блокчейне «Ethereum» с использованием стандарта «Ethereum Request for Comment» (ERC-20). Токен выпускается в рамках смарт-контракта, который определяет общий объем предложения и условия передачи токенов, среди прочего. Стандарт токенов ERC-20 представляет собой шаблон смарт-контракта, который позволяет легко выпускать токены и объединять их с различными кошельками и биржами.

Другие варианты использования смарт-контрактов, о которых часто умалчивают, — это каналы платежей и состояния, а также HTLC («Hashed Timelock Contracts»), позволяющие осуществлять атомарный обмен. Говоря в общих чертах, они позволяют взаимодействию, происходящему вне цепи, быть столь же безопасным, как если бы оно происходило на цепи. Самой популярной сетью платежных каналов, вероятно, является сеть «Lightning Network»в Биткоине.

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

«Можно воспринимать экземпляр смарт-контракта как доверенную третью сторону, которой пользователи могут отправлять монеты, и которая может распределять монеты между сторонами в соответствии с условиями, записанными в ее статическом коде». - Дзиембовски, Фауст, Хостакова, General State Channel Networks

Обещания смарт-контрактов

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

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

Рассмотрим пример "Договоры аренды"

Арендодатель и арендатор могут использовать смарт-контракт для регулирования договора аренды. Интеллектуальный контракт может автоматически блокировать арендатора, если он не платит за квартиру. Утверждение if-then в этом случае может выглядеть следующим образом:

Если адрес контракта получает сумму X до 3 числа каждого месяца от адреса Y, то предоставляется доступ Y к квартире. Если оплата не производится в течение 2 месяцев подряд, то Y лишается права доступа в квартиру.

Кейс "Продажа билетов"

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

program Ticketing
while (number of tickets sold <= max. amount of tickets available for the event)
{
if only personalized tickets can be issued
{
ask buyer for personal details
safe personal details
link details to address and put address on a whitelist
}
if amount x is received from address Y
{
if there is a whitelist && Y is not on the whitelist
{
refund address Y
end program
}
send Y the correct amount of tickets as per the amount of money received
increment "number of tickets sold"
}
if address Y sends message "I want to sell"
{
refund address Y
invalidate ticket
decrement "number of tickets sold"
}
}

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

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

Децентрализованная торговая площадка

Еще одним потенциальным вариантом использования смарт-контрактов может стать децентрализованная платформа, подобная «eBay». Можно создать смарт-контракт с датой истечения срока действия, определяющей период аукциона, и начальной ставкой. Участник, сделавший самую высокую ставку, получит товар в конце периода аукциона в обмен на свои деньги. Проигравшим участникам аукциона умный контракт автоматически возвращает деньги.

Такая децентрализованная версия eBay будет считаться dApp, или децентрализованным приложением. Когда набор условий объединяется для создания приложения, этот набор смарт-контрактов называется dApp. Грань, разделяющая простые смарт-контракты и dApps, несколько размыта.

Децентрализованные приложения - dApps

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

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

Сравнение обычного приложения и dApp приложения. Сущености те же, имплементация - разная.
Сравнение обычного приложения и dApp приложения. Сущености те же, имплементация - разная.

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

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

Платформы для смарт-контрактов

Существует множество платформ смарт-контрактов, помимо «Ethereum», которая является самой популярной на сегодняшний день и вокруг которой наблюдается наибольшая активность разработчиков. Другие платформы включают «Lisk», «NEM» и «Hyperledger» - модифицированную версию Ethereum, предназначенную для корпоративного использования.

Мало кто знает, что блокчейн на базе биткоина также позволяет внедрять смарт-контракты. Биткоин имеет встроенный язык сценариев под названием «Script». Это рудиментарный язык по сравнению с «Solidity», который используется для написания смарт-контрактов на Ethereum. «Solidity» — это язык программирования, завершенный по Тьюрингу, который позволяет создавать более сложные контракты по сравнению со скриптовым языком Биткоина. За сложность приходится платить тем, что их сложнее писать, анализировать и защищать.

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

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

Цифровая экономика

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

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

Но может существовать важное отличие от сегодняшней централизованной сети: Пользователи могут владеть своими данными на базовой блокчейн-системе. Эффект блокировки уменьшается, и переход от одного dApp к другому может обойтись дешевле, чем сегодня. Тезис «Жирный протокол», предложенный Джоэлом Монегро в 2016 году, описывает этот эффект фиксации ценности на уровне протокола, а не на уровне приложений. Сегодня большинство людей выступают против этого тезиса, но он все еще имеет определенный вес и регулярно обсуждается.

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

Масштабирование с помощью смарт-контрактов

Умные контракты создают дополнительную нагрузку на ограниченную пропускную способность блокчейна. Он не только должен хранить транзакции и данные, хорошо видимые пользователю. Многие "скрытые" транзакции используются для связи между смарт-контрактами. Запуск «CryptoKitties» оказал большую нагрузку на блокчейн «Ethereum», что привело к резкому росту стоимости транзакций и длительному времени подтверждения.

В блокчейне существуют две различные системы баланса или учета - модель «UTXO» и модель на основе счетов (Account-Based Model). Следующая цитата помогает провести различие между ними.

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

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

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

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

«Взаимодействие сторон с экземпляром контракта всегда "локальное", т.е. стороны сами вычисляют новые состояния [...], а затем просто обмениваются подписями [на нем]». - Дзиембовски, Фауст, Хостакова

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

На сайдчейне может быть запущен dApp, возможно, даже с механизмом консенсуса (рассказывали в этой статье), отличным от основного. В зависимости от конкретной конструкции может потребоваться стимул для того, чтобы узлы запускали сайдчейн, в модели сайдчейна «PoS» или для майнеров, чтобы они выполняли объединенный майнинг в модели сайдчейна «PoW».

Пути ускорения блокчейна
Пути ускорения блокчейна

Существует множество подходов к созданию масштабируемых платформ для смарт-контрактов, зачастую сочетающих в себе различные методы. Однако помимо создания систем с достаточной пропускной способностью для масштабного внедрения смарт-контрактов и dApps, существует еще одна проблема, которую необходимо решить: проблема ораклизации «Oracle problem» (проблема доставки данных в сеть из реального мира).

Проблема ораклизации («The Oracle problem»)

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

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

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

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

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

Схематические представление использование контракта с Оракулом в качестве "надзорного"
Схематические представление использование контракта с Оракулом в качестве "надзорного"

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

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

Рынки прогнозов

Децентрализованный подход к решению проблемы оракула заключается в использовании рынков прогнозов. Рынок прогнозов обычно работает путем создания рынка для определенного события. Допустим, событие с двоичным исходом: выиграет ли команда X или команда Y Супер Кубок. Участник делает покупку за 1 доллар и получает два фьючерсных контракта, по одному на каждый исход. По фьючерсному контракту, чей исход материализовался, выплачивается 1 доллар, а другому - 0.

-5

При одинаковой вероятности исхода участник не будет знать, какой контракт оставить, а какой продать. Оба должны торговаться по цене около $0,50. Если у участника есть высокая уверенность в исходе, допустим, победит команда X, он продаст контракт, который платит в случае победы Y. Если многие люди думают одинаково, это создает растущий спрос на контракт X и растущее предложение на контракт Y. Фьючерсный контракт X растет в цене, а Y становится дешевле, например, $0,70 против $0,30. Цена фьючерсных контрактов может быть интерпретирована как вероятность наступления соответствующего события, в данном случае вероятность победы команды X составляет 70%.

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

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

Выводы

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

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

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

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