Обычно блокчейн биткоина не считают подходящим для самовыполняющихся условных платежей, известных как смарт-контракты или умные контракты. Хотя он даёт базовые возможности программирования, позволяющие устанавливать ограничения по времени и схемы, включающие мультиподписи, есть мнение, что Ethereum, Ethereum Classic или Qtum лучше поддерживают более продвинутые приложения.
Однако новая волна исследований заставляет пересмотреть такой подход. Например, Scriptless Scripts, проект, разрабатываемый по инициативе математика из Blockstream Эндрю Поэлстры, с помощью магии криптографии уводит умные контракты из чейна. Благодаря этому сохраняется надёжность биткоина и не требуется масштабной поддержки умных контрактов на уровне его протокола.
С помощью Discreet Log Contracts (DLC), концептуально схожих с Scriptless Scripts, можно разместить на биткоине другой класс смарт-контрактов. Этот проект разрабатывает один из авторов white paper первоначальной Lightning Network Тадж Драйя. Недавно DLC были представлены на конференции Scaling Bitcoin в Стэнфорде. Они могут использоваться в работе страховых компаний на основе блокчейна, в фьючерсных контрактах, в привязанных к доллару коинах и т.д.
Bitcoin Magazine поясняет, как это работает, предлагаем вам адаптированный перевод статьи.
Пари
Многие умные контракты различных типов в конечном счёте сводятся к своего рода пари.
Например, человек, запланировавший путешествие, желает оградить себя от риска остаться дома из-за возможной забастовки пилотов. Он может заключить пари, поставив на то, что забастовка случится. Если забастовка не состоялась, то ставка теряется, подобно страховому взносу. Если же забастовка происходит, то человек выигрывает пари, получая причитающуюся сумму, словно страховую выплату.
Более интересным примером может послужить ситуация, в которой участники делают ставку на цену биткоина по отношению к доллару (фьючерсный рынок). Если кто-то ставит на то, что цена биткоина пойдёт вниз, и это действительно происходит, то человек «выигрывает» дополнительные биткоины, а если цена растёт, то он «теряет» биткоины. Любопытно, что процесс можно структурировать таким образом, что человеку, заключающему все эти пари, практически гарантировано получение одного и того же количества американских долларов в биткоинах независимо от поворота событий.
Подобное явление можно использовать для создания на блокчейне биткоина «стейблкойна» (от англ. stable — «стабильный», «устойчивый») с фиксированной стоимостью в долларах. (Следует заметить, что в чрезвычайных обстоятельствах подобный проект не может быть реализован — скажем, если биткоин рухнет и его стоимость в долларах окажется равна нулю, но в большинстве случаев схема представляется рабочей.)
Подобные умные контракты, хотя и представляют интерес, не могут быть осуществлены только на базе блокчейна. Блокчейн не в состоянии сообщить ни о забастовке пилотов, ни об обменном курсе доллара и биткоина. Требуется получать данные из-за пределов блокчейна, и здесь на сцену выходят так называемые оракулы.
Оракулы
По сути, оракулы — это доверенные источники информации. Они обеспечивают пользователя данными, которые сам блокчейн не может прочитать. Такие данные можно встроить в умный контракт, после чего он будет выполняться с их помощью.
Поскольку вышеописанные умные контракты в любом случае зависят от внешних источников данных, есть смысл доверять оракулам и таким образом упростить умный контракт. Вместо того чтобы прибегать к более изощрённым решениям, можно, например подключать оракулов к сравнительно простой схеме мультиподписей.
Приведём простой пример. Элис и Боб хотят поспорить на биткоин перед решающим матчем между Аргентиной и Бразилией на чемпионате мира по футболу. Элис делает ставку на Аргентину, Боб уверен в победе Бразилии. Чтобы заключить пари на базе блокчейна, Элис и Боб посылают по биткоину на адрес с мультиподписью, где трата монет требует наличия двух или трёх подписей. Один из трёх ключей хранит Элис, другой — Боб, а третий — оракул.
Если выиграет Аргентина, Элис и Боб должны будут подписать транзакцию, которая перешлёт оба биткоина Элис. Поскольку для этого необходимы лишь две подписи, то подписей Элис и Боба достаточно и оракул так и не вступает в игру. (Естественно, в случае выигрыша Бразилии дело обстоит противоположным образом: Элис и Боб подписывают транзакцию, отсылающую оба биткоина Бобу.)
Проблема возникает в том случае, если в случае победы Аргентины проигравшая сторона — Боб — отказывается подписывать транзакцию. Именно в таком сценарии оракул воспользуется третьим ключом, чтобы помочь Элис получить два биткоина. Важно, что благодаря присутствию такой опции у Боба нет соблазна не подписывать транзакцию. (Это ещё более справедливо в том случае, если Элис и Боб предоставляют какой-либо залог с тем, чтобы Боб смог получить часть своего биткоина обратно после подписания транзакции).
В идеале подпись оракула вообще не должна понадобиться; Элис и Боб способны завершить пари самостоятельно.
Тем не менее простое решение в виде мультиподписи и оракула имеет слабые стороны. Например, оракул, скорее всего, понадобится на стадии заключения пари, по крайней мере он должен быть доступен в качестве своего рода судьи всякий раз, когда в этом возникает необходимость. В теории оракула можно подкупить: скажем, Боб предложит ему часть добычи, если они сговорятся похитить обе монеты. Кроме того, оракул в курсе всех действий Элис и Боба: ему точно известно, на что они ставят и сколько. При этом и все остальные смогут узнать, что Элис и Боб использовали для пари оракула (и, соответственно, что это было пари).
Все эти проблемы можно решить с помощью Discreet Log Contracts. Их использование позволяет сохранить все преимущества решения в виде мультиподписи и оракула, но избежать большинства уязвимых мест этой схемы.
Платёжные каналы
Уже упоминалось, что Драйя, который сейчас работает над проектом Массачусетского технологического института Digital Currency Initiative, — один из авторов white paper протокола Lightning Network. В основе DLC лежит аналогичная концепция.
Ключевая идея Lightning Network заключается в том, что два человека могут открыть платёжный канал, позволяющий им взаимодействовать друг с другом. Канал использует базовые возможности программирования биткоина (такие как адреса с мультиподписями и ограничения по времени) в сочетании со схемами, позволяющими осуществлять транзакции на основе других транзакций, и всё это — не оповещая о действиях в сети до тех пор, пока в этом не возникнет нужды.
По мере того как люди взаимодействуют друг с другом в рамках канала, платёжный канал обновляется, приобретая новый баланс, или так называемое состояние канала. Любая из сторон может в любое время «сбросить» текущее состояние канала на блокчейн и по желанию запросить свою часть баланса. Что немаловажно (здесь реализуются базовые возможности программирования биткоина), обе стороны могут безопасно опубликовать лишь текущее состояние канала. Если они попытаются обмануть, предоставив данные о более раннем состоянии, то вторая сторона сможет вывести все монеты до единой.
DLC работают аналогичным образом. Но там, где платёжный канал Lightning Network позволяет сторонам-участницам передавать лишь последние состояния канала, DLC ограничивает передачу состоянием канала, отражающим истинные результаты пари.
Здесь на сцену выходит оракул, но на этот раз в сочетании с определёнными изящными математическими хитростями.
Подпись оракула
В противоположность схемам, в которых используются две мультиподписи из трёх и оракулы выступают в роли судей, оракулы в DLC больше напоминают вещателей. В случае нашего футбольного пари целесообразно, чтобы в роли оракула выступал, например, спортивный букмекерский сервис (это также может быть сайт новостей футбола, ФИФА или другая организация, которая называет победителя и заслуживает доверия).
Допустим, в роли оракула выступает букмекерская служба, регулярно публикующая на своём сайте сведения о счёте и победителе финального матча чемпионата мира. Чтобы обеспечить работу DLC, сервис должен сделать лишь маленький дополнительный шажок.
По существу, этот «оракул-вещатель» имеет публичный ключ и приватный ключ. (Приватный ключ представляет собой случайно сгенерированное число, тогда как публичный ключ — это на первый взгляд случайное число, заимствованное из приватного ключа.) Публичный ключ выкладывается в общий доступ на каком-то ресурсе — самым приемлемым вариантом может быть сайт букмекерского сервиса. Приватный ключ, конечно, остаётся закрытым: оракул может пометить им сообщение. (Такая подпись, опять же, представляет собой на первый взгляд случайное число, но выводится из приватного ключа в комбинации с сообщением.)
Возможные результаты пари также известны: победителем в финале чемпионата мира по футболу станет либо Аргентина, либо Бразилия. Соответственно, сервис объявляет, что передаст одно из двух очень конкретных сообщений: «победила Аргентина» или «победила Бразилия».
Криптография публичного ключа интересна тем, что публичный ключ букмекерского сервиса можно использовать для того, чтобы выяснить, как подпись сообщения — «победила Аргентина» или «победила Бразилия» — будет «выглядеть» математически. (В данном случае «выглядеть» не означает, что Элис и Боб сумеют сами генерировать подпись, но они сумеют рассчитать, какими математическими свойствами подпись будет обладать.)
Поскольку Элис и Боб способны рассчитать, каким будет «вид» потенциальных подписей оракула, они смогут использовать их в своих DLC.
Discreet Log Contract
До начала финального матча чемпионата мира Элис и Боб вложили по биткоину в «транзакцию финансового обеспечения». На базе этой транзакции выстраивается несколько потенциальных транзакций, однако о них ещё не сообщается в сети. На данном этапе криптография становится довольно изощрённой.
«Вид» подписи букмекерского сервиса встраивается в несколько потенциальных транзакций, где каждая потенциальная подпись позволяет осуществлять отдельную транзакцию. (Это специфический и довольно нестандартный ход, но «вид» подписи используется в качестве публичного ключа в парах ключей для разных транзакций.)
Иными словами, зная, каким будет «вид» потенциальных подписей оракула, Элис и Боб могут выстроить свои платёжные каналы таким образом, что две разные потенциальные подписи можно будет использовать для активации двух разных состояний канала: того, где два биткоина получает Элис, и того, где их получает Боб.
Далее настоящая подпись оракула, которая публикуется после того, как финальный матч чемпионата мира состоялся, используется в качестве приватного ключа для активации победившей транзакции — и исключительно для этого. Если букмекерский сервис передаёт подпись для «Аргентина победила», то Элис может использовать её в качестве приватного ключа (в сочетании с собственным приватным ключом) и потребовать у канала два биткоина. Если оракул подписывает сообщение для «победила Бразилия», то же самое может сделать Боб. При этом, если любая из сторон попытается заявить права на биткоины без подписи оракула, попытка останется безуспешной и противная сторона сможет претендовать на обе монеты.
Далее, как и в случае платёжных каналов Lightning Network, результат пари — два биткоина для Элис в случае победы Аргентины, также может быть передан Элис и Бобом в качестве обычной мультиподписной транзакции на базе финансирующей транзакции. И именно потому, что Элис может в любом случае получить свой выигрыш посредством подписи оракула, у Боба нет причин мошенничать.
Таким образом, пари в полной мере осуществляется посредством блокчейна через подпись букмекерского сервиса, в то время как самому сервису не нужно совершать какие-либо действия применительно к этому пари; ему даже не нужно знать, что оно вообще имело место.
Мы привели в пример довольно простое пари (побеждает либо Аргентина, либо Бразилия), но в реальности DLC позволяют осуществлять гораздо более сложные сценарии. Именно потому, что в конце передаётся лишь обычная мультиподписная транзакция, число потенциальных результатов пари может быть любым: два, 200 или 200 000.
Хотите больше новостей? Facebook. Быстрее всех? Telegram и Twitter. Подписывайтесь!