November 10, 2021

Descreet Log Contracts

Ликург, советующийся с Пифией (1835/1845), Eugène Delacroix

Буквальный перевод термина DLC означает "Контракты дискретного логарифма" (далее Контракт) и оставляет первое впечатление чрезмерно громоздкого и не правильного перевода. Однако, если читатель знаком с так называемой задачей дискретного логарифмирования, то такое впечатление может не возникнуть вовсе. Это формирует определённый разрыв в понимании технологии среди широкой аудитории и тех, кто знаком с криптографией. В основе научной дисциплины лежит как раз эта задача, она формирует такую преграду в теории передачи информации, которую пока невозможно преодолеть. Поэтому можно иногда услышать термин "стойкого шифрования", т.е. такого алгоритма, который может быть доказуемо сведён к задаче дискретного логарифмирования.

DLC является одной из интересных разработок "криптозимы" 2018-2019 и результатом работы Тадеуса Драйжи, одного из изобретателей Lightning Network. Они позволяют создавать платежи с условиями исполнения. Две стороны создают Контракт, который должен перераспределить биткоины на основании предустановленых условий, без раглашения деталей этих условий в блокчейне. Появление Контракта в блокчейне не будет отличаться от обычной транзакции с мультиподписью, поэтому контракт является дискретным в смысле того что не существует внешнего наблюдателя, который мог бы определить существование такого контракта и его детали из его "следов" в блокчейне Биткоина. Напомним, эти следы имеют шансы существовать десятилетиями или даже веками.

Эти контракты также помогают предотвратить формирование MEV — Miner Extractable Value — ценности, получаемую в результате эксплуатации смарт-контрактов, содержащих много информации о будущем состоянии рынка, которую могут использовать майнеры для своей выгоды. Это уже имеет место в Ethereum, поэтому тема MEV обсуждается в сообществе гораздо интенсивнее. С применением DLC, сложная логика распределится по нескольким более мелким транзакциям, и лишь небольшая часть которых когда-либо появляется на цепочке. В Ethereum "смарт-контракт" как правило исполняется в одной транзакции и это даёт майнерам существенные преимущества.

Оракулы в Биткоине. Пример

Контракт DLC состоит из трех основных этапов. Мы рассмотрим каждый из этих этапов, отслеживая пари на 1 биткоин между Алисой и Бобом. На схеме ниже показаны все этапы исполнения контракта, включая альтернативные варианты. Эта схема работает таким образом, что единственным способом коммуникации для участников является блокчейн Биткоина. Участники могут быть не знакомы друг с другом и могут находиться, теоретически, на разных планетах и это является гарантией приватности всех участников схемы.

Общий цикл изни DLC контракта

Шаг 1. Финансирование контракта пари

Алиса и Боб делают ставки по 1 BTC. Победитель получит как свой первоначальный 1 BTC, так и 1 BTC проигравшего.

Для финансирования пари Алиса и Боб координированно создают транзакции, которые депонируют в сумме 2 BTC на новом адресе. Это называется транзакцией финансирования и новый адрес является хэшем особого скрипта: этот скрипт содержит ветвления, позволяющие реализовать разные сценарии. Рассмотрим их подробнее.

Bet Address в диаграмме Fund транзакции разработанной Atomic.finance как раз обозначает трату на общий адрес хэшированного скрипта пари. Далее, в соответствии со схемой, мы имеем две транзакции CET.

Транзакция создания DLC контракта

CET означает Contract Execution Transaction или по-русски Транзакция Исполнения Контракта. Более подробная схема также есть, но нужно отметить, что она приведена для конкретного исхода DLC-контракта, при котором только Алиса может востребовать выход CET, т.е. она является победителем (Only Alice can broadcast, красный вариант на схеме DLC).

Транзакция Исполнения Контракта

Согласно самой первой схеме, фиксировалось 4 исхода:

  1. победа Алисы, она получает 2 BTC
  2. победа Боба, он получает 2 BTC
  3. ничья, каждый получает 1 BTC, этот вариант отмечен Refund Transaction
  4. ещё один вариант, который мог бы предусматривать любой исход, о котором вче участники могут согласиться, Collaborative Close Transaction

На этом этапе появляются две проблемы CET или исполнения всего DLC в целом.

Мошенничество. Поскольку Алиса и Боб подписывают CET перед заключением пари, что мешает каждому из них приготовить транзакцию заранее таким образом, чтобы претендовать на 2 BTC?

Истинность исхода. Как Алиса и Боб гарантируют, что результат пари приведет к правильной выплате?

Эти две проблемы решаются с помощью оракула. Оракул может заранее определить возможные исходы пари, такие как "Алиса побеждает", "Боб побеждает" и "ничья", подписать их своим приватным ключом и зашифровать соответствующими секретами. Имея такие подписи Алиса и Боб уже могут включить их в условие CET, и это условие может быть проверено как перед депозитом денег на адрес контракта, так и быть валидировано после публикации исхода оракулом, но только при наличии исходного секрета оракула. Таким образом DLC оракул имеет единственную цель своего существования: корректное вещание исхода события (ончейн или оффчейн).

Полезно закрепить основные важные тезисы DLC (в соответствии со схемой цикла жизни контракта):

  • Боб (или Алиса, если выиграл Боб) может не сотрудничать после истечения пари. Он уже подписал CET, причем достоверно.
  • После определения исхода, альтернативные CET остаются недействительными и никогда не появляются в блокчейне. Это ограничивает "отпечаток" DLC в блоках, особенно в более сложных контрактах с тысячами возможных исходов.
  • Блокчейн Биткойна обеспечивает пользователям, таким как Алиса и Боб, полную прозрачность - и душевное спокойствие - относительно местонахождения их монет. Вся необходимая работа выполняется программным обеспечением каждого участника схемы.
  • DLC обеспечивают пользователям высокую степень конфиденциальности от тех, кто следит за активностью в блокчейне. Ончейн, DLC выглядит так же, как и любая другая транзакция мультиподписи 2-из-2. Майнеры и программы анализа не видят ничего из логики контракта, кроме выплат. Поэтому манипуляция исполнением контракта (задержка/ускорение попадания в блок), которая позволяет использовать MEV в Ethereum, невозможна в Биткоине с DLC.
  • DLC позволяют пользователям хранить свои приватные ключи без привлечения кастодианов.

Однако, DLC-оракулы не являются панацеей. Из приведённых фактов и особенностей работы должно быть понятно, что существуют варианты, когда Алиса или Боб могут быть каким-либо образом координируемы вместе с оракулом и противоположная сторона может не подозревать об этом. Важно принимать в расчёт то, что оракулы могут брать комиссию за предоставление услуги арбитра и таким образом они все могут быть участниками самоорганизующегося рынка оракулов, фуркционирующий на универсальной спецификации. На приведённой странице есть ссылки на альтернативные клиенты, это сообщает DLC перспективу развития, аналогичную Lightning Network: протоколированные форматы скриптов и стандарты взаимодействия могут привести к неограниченному росту "сети" оракулов.

Программное обеспечение

Для того, чтобы начать пользоваться DLC существует некоторый набор инструментов, упомянутый в спецификации, и библиотеки Go, NodeJS и .NET Core. Они находятся в разной степени готовности, для некоторых может быть доступна работа только в командной строке.

Любой желающий может осуществлять "вещание" событий с помощью DLC. Они могли бы быть полезны например для децентрализованных букмекеров или децентрализованных бирж. Пока таких проектов в Биткоине не много, и децентрализованные биржи больше ориентируются на собственные механизмы работы. Sovryn использует Rootstock, RSK и Bisq реализует собственные клиенты и свой токен, работающий по схеме "цветных токенов", когда эмиссия и транзакции используют OP_RETURN опкод Биткоина в основном блокчейне.

Здесь мы бы хотели обратить внимание на оракул Suredbits который называется Crystal Bull. Он имеет графический интерфейс, поэтому он выглядит проще, чем аналоги. Это простое локальное приложение, которое выполняет базовые функции чтения-подписи, и использует обозреватель блоков для получения информации об адресе DLC контракта, на который может приходить комиссия.

Crystall Bull поддерживает два вида шаблонов "событий", которые может подтвердить оракул. Первый шаблон связан с опциональным дискретным результатом события.

И второй представляет непрерывную величину. Такое представление фундаментально связано с двумя известными формами некоего события из Теории вероятности.

Приложение DLC оракула Suredbits имеет достаточно простой и понятный интерфейс для тех, кто уже знаком с основными способами создания кошельков, но ему не хватает например такой простой функции как вывод с адреса оракула, на который перечисляется комиссия. Помимо этого существует ряд недочётов в терминологии: например существует двойственность в понимании термина Event, поскольку в общей таблице на самом деле подписываются и сохраняются вероятные исходы события. Это вносит путаницу при работе с приложением, хотя в числе достоинств можно также упомянуть наличие тестового окружения. Ниже приведена картинка подписи исхода созданного дискретного события. Для примера было создано событие достижения или не достижения цены в 100К USD Биткоином, до 31 декабря 2021.

https://test.oracle.suredbits.com/announcement/ec21b1fa2e34509b1c1056b7f572dbda0d2e84ea4678de8828b457cfe25cafc7

После того как создан и подписан оракулом "анонс" исхода DLC контракта, каждый из сторон пари или контракта-дериватива должен создать и затем принять предложение. Кошелёк DLC Bitcoin-S работает через Tor и создаёт секретный сервис для обмена транзакциями DLC контракта.

Процедура ончейн сделки/ставки более сложная, но bitcoin-s простой, содержит встроенные инструкции и работает быстрее, чем Bisq, поэтому если у пользователя есть реальный стимул разобраться в механизме работы, то это возможно. Здесь например приведён скриншот считанных данных предполагаемого оракула Deribit (или связанного с этой биржей) и анонса цены на Биткоин 10 ноября 2021. Hex-строка была считана и декодирована кошельком.

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

Наиболее активно биткоинеры пользовались DLC в связи с выборами Трампа. Сейчас таких громких медиа событий нет, поэтому тема пари на DLC потеряла актуальность. Тем не менее HCN решил создать Features контракт, в котором читатели канала могут "подать заявку" на создание оракула и события (1000 сат) и таким образом воспользоваться оракулом HCN. Поэтому все, кому интересна эта тема, начиная от ставок и заканчивая деривативами (например форвардный контракт с выплатой разницы цены на определённую дату, на несколько миллионов сатоши), могут обращаться на эту страницу:

https://features.etleneum.com/dlc

В более простых или дешёвых случаях конечно же можно использовать Etleneum Predictions.

Оффчейн DLC

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

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

1) Алиса и Боб создают все транзакции и обмениваются подписями в соответствии с обычным DLC-протоколом, для DLC контракта 1

2) Боб депонирует средства,

3) После истечения срока действия контракта они создают новый набор CET и новую транзакцию возврата, которые в совкупности отражают новый DLC контракт 2,

4) Алиса отправляет Бобу свои подписи для новых CETs и транзакции возврата средств,

5) Боб отправляет Алисе свои подписи для новых транзакций,

6) Алиса отправляет Бобу свой ключ отзыва, отзывая предыдущие CETs и транзакцию возврата средств контракта 1,

7) Боб отправляет Алисе свой ключ отзыва для предыдущих транзакций DLC контракта 1.

Затем всё может повториться с пункта 3. Авторы работы указывают на недостатки подобного "наивного" подхода и предлагают ввести новый тип сообщений для для оффчейн протокола. Мы не будем подробно рассказывать об этом в данной статье, добавим только, что подход Cryptogarage требует 2 дополнительных транзакций и в статье обсуждается возможность переиспользования инфраструктуры Lightning Network для формирования своеобразной сети DLC контрактов.

Грядущее обновление Taproot может улучшить схему функционирования DLC в основном благодаря версионированию скриптов, уменьшению размера транзакций, сходстве ончейн "отпечатка" мультиподписи и обычных кошельков (большая приватность в долгосрочной перспективе), и встраивания "веток" скриптов траты в общий порядок работы Taproot. Пока приложения DLC остаются ограниченными, но, если сравнивать с любым проектом Ethereum, они также пользуются меньшим вниманием публики.

Полезные ссылки:

https://adiabat.github.io/dlc.pdf

https://medium.com/@gertjaap/discreet-log-contracts-invisible-smart-contracts-on-the-bitcoin-blockchain-cc8afbdbf0db

https://suredbits.com/category/discreet-log-contracts/

https://github.com/discreetlogcontracts/dlcspecs/issues/3

https://hackmd.io/@lpQxZaCeTG6OJZI3awxQPQ/LN-DLC

Поддержите проект(ы) на цепочке

HCN имеет две активные краудфандинговые компании на TallyCoin, которые собирают средства ончейн:

https://tallycoin.app/@hypecoinnews/

Или LN платежом

LNURL1DP68GURN8GHJ7AMPD3KX2AR0VEEKZAR0WD5XJTNRDAKJ7TNHV4KXCTTTDEHHWM30D3H82UNVWQHKXETWW3EXZMRKD9HKCCF4XYK4YTL3

Или [email protected]

Например из @LightningTipBot в Телеграме

/send 100 [email protected]

Или начните пользоваться LN кошельком типа Valet.