January 11, 2023

Peg-in и Peg-out: токенизация биткоинов в сайдчейнах и внешних протоколах

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

Liquid

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

Разработчики сделали доступной общую схему работы peg-in, из которой также становится видно, что средства в сайдчейне разблокируются только спустя 102 блока – для защиты сайдчейна от реорганизаций цепочек блоков в биткоин. Однако для более качественного сравнения способов связи ончейн биткоин и оффчейн монет (а они эффективно становятся оффчейн монетами, не смотря на вид и способ работы системы более верхнего уровня), требуется углубиться в детали процесса, от них будет зависеть степень доверия пользователя с наличными биткоинами на цепочке к сервису, или клиенту Elements, подключенному к сети Liquid.

В основе процесса депонирования монет в Liquid лежит биткоин-скрипт, на который пользователь должен перевести BTC, чтобы получить L-BTC в Liquid:

11 <ключи федерации> 15 CHECKMULTISIG NOTIF 4032 CSV <резервные ключи> CHECKMULTISIG ENDIF

Первая половина этого сценария, вплоть до первого CHECKMULTISIG, представляет собой условие присутствия в скрипте 11 подписей из 15 возможных для заданных публичных ключей. Вторая половина, между NOTIF и ENDIF, дает альтернативный путь расходования средств в случае, если если первый окажется непригодным. Этот альтернативный путь расходования доступен только в том случае, если монеты не перемещались в течение 28 дней ("4032 CSV" означает, что сценарий может быть выполнен только после 4032 блоков, т.е. 28 дней), и позволяет вместо этого переместить монеты с помощью альтернативного экстренного набора ключей для изъятия из неработающего обременительного условия. При нормальной работе федерация тратит свои монеты задолго до наступления аварийного тайм-аута, поскольку она обеспечивает постоянный ввод и вывод криптовалюты из сайдчейна.

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

1. Пользователь выбирает контролируемый адрес для L-BTC, который преобразуется в скрипт Liquid scriptPubKey dest.

2. Для каждого ключа P федерации в смарт-контракте, приведённом выше и который мы для простоты назовём spk, она вычисляет модифицированный открытый ключ P + H(P | | dest)G и подставляет его в spk. Здесь H - хэш-функция, в частности HMAC-SHA256.

3. Она посылает свои монеты в P2SH-P2WSH-версию модифицированного spk.

Для востребования монет в Liquid создаётся особая транзакция со входами типа peg-in. Такие входы отличаются от обычных Liquid-транзакций тем, что они ссылаются на выход в основной сети биткоин, а точнее именно на транзакции, в которых пользователь отправил монеты на особый скрипт с “подмешанным” адресом dest в ключи участников федерации. Полностью транзакция peg-in содержит следующие данные:

- публичный ключ (адрес) dest, который позволяет валидаторам проверить обязательство, созданное в конструкции pay-to-contract.

- witness данные для dest, т.е. подписанная приватным ключом dest транзакция Liquid, которая показывает, что заявитель действительно контролирует dest.

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

В обозревателе можно увидеть “операционный” адрес федерации Liquid, который был сгенерирован для описанного выше скрипта spk. Он показывает количество биткоин, которые были введены в сайдчейн игроками на рынке (предполагается, что сайдчейн будет полезен трейдерам). Описанный дизайн является следствием того, что клиент Elements был построен на базе Bitcoin Core, и цепочка Liquid наследует общим решениям, принятым в биткоин с некоторыми отличиями: поддержкой расширенного набора команд Bitcoin Script, конфиденциальными транзакциями, блоками с минутным интервалом и отказом от Proof-of-Work.

Stacks

Платформа “смарт-контрактов” Stacks ориентируется на строительство иного языка смарт-контрактов Clarity, отличного от Bitcoin Script, но при этом связывается с блокчейном биткоин через peg-in и peg-out механизмы, поскольку рассчитывает на сетевые и монетарные эффекты криптовалюты в основном слое. Токен BTC, выпущенный внутри Stacks носит название sBTC и позволяет смарт-контрактам использовать биткоин в качестве денежного актива, но с более быстрыми и дешевыми транзакциями, поскольку они происходят вне цепочки. sBTC - это децентрализованный актив BTC, управляемый сетью со свободным входом и выходом, т.е. динамическим набором участников с четким экономическим стимулом для правильного управления peg-in и peg-out механизмами. Хотя Liquid также перешёл к динамическим федерациям, sBTC декларирует менее фиксированный состав сети.

Существуют также другие отличия по сравнению с сайдчейном Liquid. Так Stacks автоматически форкается, вместе с биткоин, поэтому форки как таковые уже учтены в архитектуре Stacks. Другим существенным отличием является протокол многосторонних вычислений, т.е. биткоин “мультисиг”, который формируется в результате вычислительных криптографических операций, отличных от последовательного сравнения подписей и публичных ключей из схемы с Liquid.

Низкоуровневое описание peg-in в Stacks выглядит так:

1. Алиса конвертирует свои BTC в sBTC, запрашивая у контракта .pox открытые ключи биткоин Боба, Чарли, Данниэль и Эрики, которые они зарегистрировали при создании “моста”, а также их доли STX, которые они предоставляют для обеспечения операций. Из этих ключей (например, адреса Taproot) детерминистически выводится адрес биткоин, называемый адресом кошелька peg-in. Адрес обладает тем свойством, что до тех пор, как только любой набор подписавших, представляющих по меньшей мере 70 % STX токенов, положенных в обеспечение, подтвердили транзакцию, подписавшие могут тратить BTC с этого адреса.

2. Она отправляет 1 BTC на производный адрес, полученный на предыдущем шаге. Это создает UTXO в 1 BTC, который может быть потрачен некоторой комбинацией Боба, Чарли, Даниэль и Эрики.

3. Во всех последующих добытых блоках Stacks майнеры Stacks следят за тем, чтобы ее sBTC были материализованы. Акт обработки ее биткоин-транзакции - это акт майнинга для Алисы количества токенов sBTC, эквивалентного ее BTC (в данном случае 1 sBTC). Таким образом, Алиса получает 1 sBTC во всех возникающих в дальнейшем форках Stacks. Факт получения биткоин совокупностью операторов “моста” устанавливается просто, исходя из сформированного адреса в сети биткоин. Состояние токена sBTC хранится в контракте с адресом загрузки под названием .sbtc и выводится на биткоин Stacks через стандартный интерфейс SIP-010 fungible token. Только майнер блока может майнить sBTC или сжигать sBTC, а правила консенсуса для подтверждения блока предусматривают, что каждый майнинг или сжигание sBTC должны соответствовать ровно одной транзакции с привязкой или без привязки в цепи биткоин.

4. В конечном биткоин 1 sBTC появляется в кошельке Алисы

Из-за того, что балансы sBTC могут различаться в разных форках, запрос на вывод, т.е. peg-out может быть действителен не во всех форках Stacks. Чтобы преодолеть это, тактика, которую использует sBTC для реализации операции peg-out, заключается в том, что она выполняется как запрос, на который должны ответить стейкеры (т.е. отправить BTC). И запрос, и ответ материализуются в биткоин, а значит, и во всех форках Стакса в контракте .sbtc.

Чтобы сделать вывод, пользователь должен владеть sBTC на стандартном основном адресе. Это необходимо для того, чтобы связать запрос sBTC с адресом биткоин, на который можно отправить BTC. Запрос представляет собой транзакцию биткоин, в которой фиксируется следующая информация:

1. Количество sBTC для вывода в BTC

2. биткоин-адрес получателя для BTC

3. Подпись этих данных от стандартного принципала Stacks, которому принадлежат sBTC.

Когда майнер обрабатывает запрос на peg-out, он проверяет его, сначала удостоверившись, что адрес пользователя владеет по меньшей мере таким количеством sBTC, которое запрашивается для peg-out в данном форке. Если это так, то .sbtc запоминает, что запрос на peg-out удовлетворяется, и блокирует привязанные sBTC пользователя до тех пор, пока запрос на peg-out не будет выполнен. Если этого не происходит, майнер записывает в .sbtc, что запрос peg-out не может быть выполнен.

Если запрос peg-out действителен хотя бы в одном форке Stacks, то в конечном биткоин блок, который его подтвердил, может получить более 100 подтверждений. Поскольку ни один блок Stacks не может быть добыт поверх родительского блока, который был добыт более 100 блоков биткоин назад, система гарантирует, что как минимум один биткоин блок будет добыт и станет частью всех форков Stacks в дальнейшем. Если биткоин блок будет собран, то содержащийся в нем запрос на выход из привязки также будет считаться выполненным, и участники “моста” должны будут ответить на него, чтобы удовлетворить peg-out. Если биткоин блок не добывается, т.е. запрос на вывод остается неудовлетворенным во всех форках после 100 блоков биткоин, то sBTC пользователя разблокируются и снова появляются на его балансе.

Из описания работы sBTC становится понятно, что система делает простым ввод биткоин и “задерживает” их вывод, противоположно тому, что было сделано в Liquid. Таким образом на самом верхнем уровне схемы работы сайдчейнов очень похожи.

Rootstock – RSK

Whitepaper платформы, которая позволяет запускать Ethereum контракты поверх биткоин, указывает на механизм двустороннего peg для федерации, с перспективой привязки токенов к динамической или гибридной федерации по типу Drivechain-протокола (или самому протоколу Drivechain, см Сайдчейны).

Аналогично Liquid и sBTC, только большинство участников Федерации имеет возможность разблокировать средства BTC на цепочке. У каждого оператора “моста” есть ключ для защиты заблокированных BTC, и, получая команды от блокчейна RSK, он разблокирует BTC, которые должны быть переведены обратно в биткоин. Если пользователь переводит BTC в RBTC и обратно, он обычно не получает биткоин, которые непосредственно связаны с первоначально отправленными UTXO.

Блокировка и разблокировка средств осуществляется Федерацией без какого-либо человеческого вмешательства. Обязательным условием членства в Федерации является возможность аудита надлежащее поведение программного обеспечения, которое обеспечивает работу узла, особенно в отношении корректности компонента, который принимает решение о выпуске средств BTC в сайдчейне. RSK Labs разработала прошивку для аппаратного модуля безопасности (HSM), который могут использовать операторы “моста”, чтобы обеспечить максимальную безопасность своих закрытых ключей и, в будущем, иметь возможность применять протокол проверки транзакций для дальнейшего повышения безопасности.

Работа моста RSK по-видимому происходит “от сайдчейна” в том смысле, что пользователь должен получить конкретный адрес из смарт-контракта. Т.е. члены федерации будут отслеживать поступление средств в сайдчейн через мониторинг конкретного адреса. Об этом свидетельствуют материалы о работе моста. Также сайдчейн имеет странные концепции “белых списков” и ограничений на минимальный и максимальный размер депозита.

Wrapped BTC – wBtc

Самый простой случай эмиссии токенов из всех рассматриваемых: через кастодиана. В данном случае процесс тривиально прост и условно может быть осуществлён каждым. Тогда, некто, отличный от BitPay, может завести кошелёк и принимать на него биткоин. С другой стороны в Ethereum может быть запущен “смарт-контракт” который выпускает токены с тикером [a-b || 0-9]BTC, в соответствии с депозитами в этот кошелёк (или без соответствия). Это полностью доверенная схема для любого пользователя токенов, в данном примере в протоколе Ethereum.

tBTC

Токен Keep Network призван быть децентрализованным, свободно конвертируемым токеном BTC в протоколе Ethereum. Можно сказать, назло сторонникам Ethereum, что tBTC превращает Ethereum в сайдчейн биткоин. Однако, может быть справедливо и обратное.

Протокол предоставляет механизм для создания токена TBTC на не биткоин-цепочке (в версии tBTC v1 первой хост-цепочкой является Ethereum, уже вышла вторая версия протокола), который 1 к 1 обеспечен биткоин. Стороны, заинтересованные в майнинге TBTC, запрашивают у системы адрес биткоин-кошелька. Система выбирает набор подписывающих лиц, которым поручается сгенерировать пару закрытый/публичный ключ и предоставить ее системе. Затем заинтересованная сторона становится вкладчиком, отправляя биткоин на кошелек. Депозит требует уплаты комиссии, поскольку подписывающие их лица вносят залог ETH для гарантии “хорошего поведения”.

В протоколе Keep на каждый депозит выбирается случайная группа участников, которые используют собственный упрощённый протокол валидации (SPV) транзакций в Биткоине. Пользователь может получить количество биткоинов, равное 0.002 BTC, 0.01 BTC, 0.1 BTC, 0.2 BTC, 0.5 BTC, и 1 BTC – т.е. фиксированные “лоты”. Такое ограничение предусмотрено для ротации подписантов.

Подписанты (и эмитенты токенов со стороны Ethereum) работают на основе протокола многосторонних вычислений, для которого предусмотрена особая система, ответственная за управление безопасной генерацией случайных чисел, хранение приватных данных и необходимыми для обеспечения соответствующих свойств безопасности системы. В совокупности всё обеспечивает протокол Keep и Keep Random Beacon.

Среди рассмотренных протоколов не хватает только Drivechains, которые, строго говоря, ближе всех подходят к идеалу работы децентрализованных сайдчейнов. О них есть особый раздел в публикации об этом способе масштабирования Биткоина. Кастодиальный wBTC использует простейший метод выпуска токенов, в то время как Liquid, RSK, являясь простыми, предоставляют своим протоколам некоторую устойчивость к цензуре, как внешней, так и внутренней. Наиболее сложным является Keep Network. Увы, объём выпуска tBTC не является сколько-нибудь существенным, что может показывать ценности игроков в Ethereum.

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

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

https://tallycoin.app/@hypecoinnews/

LN платежом

LNURL1DP68GURN8GHJ7AMPD3KX2AR0VEEKZAR0WD5XJTNRDAKJ7TNHV4KXCTTTDEHHWM30D3H82UNVWQHKXETWW3EXZMRKD9HKCCF4XYK4YTL3

Или [email protected]

Например из LNTXBOT

/send 100 [email protected]