November 17, 2020

Сайдчейны

Sidechains или "боковые цепочки" в буквальном переводе являются относительно давней концепцией масштабирования Биткоина. Не смотря на то, что идея появилась раньше чем идея платёжных каналов, на которых построена Lightning сеть, её первая относительно успешная реализация в виде Liquid начала внедряться примерно в одно и то же время с Lightning.

Основное понятие, "связанные сайдчейны" (pegged sidechains) как раз было адресовано множеству активов, существующих в блокчейне, которое может быть доступно через связь разных "блокчейнов" между собой. Центральный актив, Биткоин, является основным для связи потенциальных нескольких независимых протоколов, и обеспечивает нейтральность к рынку в нативной валюте основного блокчейна, безотносительно к курсам других активов между собой.

Схема из работы Адама Бэка и других. SPV - simplified payment verification - доказательство события в основной цепочке блокчейна

Ключевые понятия работы 2014 года включали

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

После бума ICO все эти понятия звучат несколько архаично, но работа вышла в 2014 году, в какой-то мере абсолютно предвосхищая всё, что произошло в Ethereum. Понятие сайдчейна мы можем считать несколько эволюционировавшим, поскольку в данной статье мы также рассмотрим statechains, сайдчейны, которые оперируют непотраченными выходами транзакций Биткоина (UTXO) и в минимальной конфигурации вообще могут не поддерживать никаких "активов", а выполнять функцию масштабирования поверх основного протокола. В 2014 году авторы работы "Enabling Blockchain Innovations with Pegged Sidechains" уже ссылались на проблемы масштабирования Биткоина, в то время как запустившийся на два года позже Ethereum поставил своей целью возможности выпуска множества "активов" в основном блокчейне.

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

Смешанный майнинг

В своей свежей статье BitMex исследовал "смешанный", merged, майнинг, который можно проследить по блокам Биткоина. По оценке компании, в среднем две транзакции смешанного майнинга помещены в каждой coinbase транзакции Биткоина в последний год. Рост этого вида майнинга связывается с протоколами Rootstock RSK и Namecoin. Первый обеспечивает исполнение "смарт-контрактов" в том виде, в котором мы можем увидеть их в Ethereum, второй — это почти такой же старый, как и Биткоин, проект распределённой базы данных доменных имён. BitMex также обнаружил не идентифицируемые транзакции, которые свидетельствовали о смешанном-майнинге пока не публичных протоколов. Джимми Сонг предположил, что это могло бы быть вариантом заработка пулов, если эти протоколы имеют хотя бы минимальную рыночную ценность — участники пула могут майнить такие блоки для координатора пула без ущерба для себя, но с некоторой прибылью для него.

Другая сторона исследования BitMex в освещении инициатив "слепого смешанного майнинга", или "blind merged mining", которые имеют место из-за потенциальной цензуры майнера по отношению к протоколу, например "цветных монет", colored coins. Если некие транзакции таких токенов не представляют ценности для майнера, он может их не майнить по понятной рациональной причине. В этом случае пострадают те участники протокола, которые заинтересованы в транзакциях данных токенов.

Важным аспектом предложений "слепого" майнинга является то, что он может быть осуществлён любым участником протокола Биткоина, который просто уплачивает стоимость транзакции в Биткоине. Слепой смешанный майнинг рассматривается как более безопасная альтернатива по простой причине — он никак не связан с ПО майнинга основной цепочки и его "блок" является обычной транзакцией в Биткоине. Интересно упомянуть, что Rootstock однажды создал "бракованный" блок, который привёл к утрате всего вознаграждения Coinbase на значительную сумму.

Механизм SegWit "якорения" witness дерева Меркла в Coinbase транзакцию Биткоина схож с механизмами смешанного майнинга других протоколов
Пропорция блоков Биткоина с дополнительными якорями внешнего Proof-of-Work консенсуса. В этом графике скорее всего доминирует Namecoin

Слепой смешанный майнинг имеет большое значение для современных децентрализованных дизайнов сайдчейнов. Обычный смешанный майнинг занимает особое место и вероятно будет менее востребован в современных проектах из-за уроков Namecoin. Клиент протокола имел ошибки из-за которых майнеры до 2016 года сокращали количество смешанного майнинга, они вызывали ошибки и простой оборудования для майнинга баткоинов. Namecoin смог восстановить свои показатели только к 2017, когда, по предположению BitMex, биржевая ICO лихорадка подстегнула интерес к токенам и Namecoin выпустил свой Core-клиент, способствующий стабильности протокола. Выручка в токенах, чья цена начала расти оправдывала затраты на интеграцию.

Rootstock

Статистика Rootstock, т.е. RSK видна по данным BitMex. Кроме неё она присутствует на сайтах компании:

  • красивый обозреватель блоков explorer.rsk.co
  • красивая статистика протокола stats.rsk.co

RSK работает с базовым токеном R-BTC, имеющим двустороннюю связь с Биткоином 1 к 1, без необходимости договариваться о цене. BTC обменивается на R-BTC в одну транзакцию, биткоины "замораживаются" в основном протоколе и выпускаются на сайдчейне. RSK декларирует прямые и обратные операции с минимальным доверием и без необходимости обращения к третьим сервисам, в процессе выполнения Тьюринг-полных смарт-контрактов, но пока использует "полу-доверенные" сервисы для вализации SPV-пруфов, состоящие в федерации RSK. Большинство федератов может высвобождать биткоины в основной сети.

Параметры сайдчейна из Whitepaper

На январь 2019 федерация RSK состояла из 15 узлов. За поддержку протокола участники получают 1% комиссий сети для покрытия издержек. RSK только планирует в гипотетическом будущем переход на децентрилизованный протокол. Пока, в основных документах они не упоминают конкретные принципы организации своего протокола, но скорее всего он работает на каком-либо Byzantine Fault Tolerant распределённом протоколе (Raft, Paxos, Tendermint), в котором предусмотрены возможности изменения состава федерации. Если участники не могут договориться о новом составе в течение недели, RSK обещает вернуть ончейн биткоины на исходящие адреса. BFT протоколы это относительно молодая развивающаяся отрасль в архитектурах распределённых систем. Даже в реализациях протоколов без денежной составляющей эти протоколы имеют свои недостатки и ограничения масштабируемости.

Elements (Liquid)

Elements — это общее название проекта Blockstream, состоящего в адаптации кода Core к всем инновационным разработкам Blockstream для реализации в федеративном сайдчейне Liquid. Эти разработки включают

  • "Быстрые" блоки, с финализацией в 2 блока. За одну минуту транзакция становится "подтверждённой" против вероятностного характера подтверждения в Биткоине
  • "Конфиденциальные транзакции" — сумма транзакции полностью скрыта от внешних глаз, как и вид актива
  • Выпуск токенов
  • Единый стандарт для всех токенов
  • Интеграция с Lightning Network клиентами Clightning, т.е. открытие канала становится минутным делом. Сохраняется достоинство LN в виде почти мгновенных транзакций с минимальной стоимостью

Федеративный сайдчейн Liquid вызывает много критики, в основном со стороны тех, кто его не собирается использовать. Основная причина в характере работы: алгоритм консенсуса Liquid основывается на работе "федератов", т.е. серверов, обладающих правом производить новые блоки. Верифицировать блоки, производимые федератами может каждый, кто установит соответствующее программное обеспечение — форк Bitcoin Core. Вносить биткоины в сайдчейн также может каждый — но для вывода Биткоинов нужна подтверждающая операция со стороны нескольких "федератов", которые могут тратить средства в протоколе Биткоин. Федераты Liquid скорее всего полностью эквивалентны федератам RSK в смысле децентрализации протокола.

Блокстрим называет "федератов" функционариями (Functionaries). Мы считаем, что термин "федераты" проще и удобнее. Он имеет корни в принципиальных дизайнах Byzantine Fault Tolerant протоколов, как и многие аналогичные протоколы, Liquid работоспособен, когда 2/3 участников протокола с правом подписи блоков согласны осносительно определённой версии истории сети. В этом смысле решение Блокстрим просто является определённой избранной стратегией, которая в некотором роде упростила создание координируемого протокола. Ниже в иерархии этого координируемого протокола находятся "сторожи" или watchmen, которые не предлагают и не подписывают блоки, но могут сжигать LBTC и выводить Биткоины в основной цепи.

"Федераты" = Функционарии, Participants = Watchmen

К настоящему времени Liquid ещё находится в процессе адаптации. Благодаря поддержке активов и LBTC в мобильном кошельке Green, у сайдчейна есть основательная аудитория даже в виде p2p трейдеров. Green является одним из лучших кошельков, которыми может воспользоваться биткоинер.

https://docs.blockstream.com/liquid/liquid-integrations.html

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

Одна из весьма интересных идей с использованием Liquid — это p2p кредитование без посредника.

Drivechains

Изначально, концепция слепого смешанного майнинга была предложена именно для драйвчейнов, её автором является Пол Шторц. Особенностью драйвчейнов в плане адаптации является требование софт-форка Биткоина, поскольку майнеры сайдчейна должны коммитить хэши непосредственно в coinbase транзакцию нового блока Биткоина. По сравнению с Liquid Такое функционирование накладывает серьёзное ограничение на запуск проекта в виде софт-форка (или двух). Liquid использует мультисиг и возможности периодического сохранения данных в блокчейн Биткоина с помощью поля OP_RETURN, это не требовало никаких изменений протокола.

Драйвчейн клиент это форк кодовой базы Core www.drivechain.info

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

  • драйвчейн с большими блоками
  • со смарт-контрактами на java script и виртуальной машиной
  • с приватными транзакциями или "кольцевыми подписями"

На самом деле вариантов значительно больше, поскольку само по себе предложение драйвчейнов формализует только вид входящих и исходящих транзакций и способ фиксации состояния в Биткоине. Разрабатываемый клиент должен быть связан с узлом Core для работы и помимо упомянутого слепого смешанного майнинга оперирует понятием "Hashrate Escrow". Этот тип эксроу уточняет определение SPV proof на первой схеме. В соответствии с BIP-300, структура "Hashrate Escrow". Деньги, которые закрыты в этом эскроу могут получить только майнеры и только на одном условии: они должны добыть блок сайдчейна. Эта транзакция помещается в Coinbase выходе транзакции, поэтому её могут совершать только майнеры, которые работают в режиме смешанного майнинга, она также "сжимает" историю сайдчейна, т.е. хэширует его блоки и привязывает к Proof-of-Work Биткоина, и работает как "база данных" сайдчейнов Биткоина. Для того, чтобы пользователи могли завести деньги в сайдчейн предусмотрены эскроу UTXO.

"Эскроу UTXO" используется для помещения биткоинов в сайдчейн и для вывода из него. Выше картинка из презентации Шторца. Эти эскроу-выходы могут создаваться в Биткоине повсеместно клиент DriveNet "видит" эти экскроу транзакции и помещает их в особую таблицу, или базу данных, которая также отражается в интерфейсе клиента и обслуживает RPC запросы, типа listsidechainunspentoutputs. Клиент "узнаёт", что конкретная транзакция — это "эскроу" транзакция по специальному полю данных OP Return.

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

Statechains

Автором концептуально нового варианта "сайдчейнов" является Рубен Сомсен. Доступны треды и статьи в блоге, которые поясняют идею Statechains.

Исходная техническая презентация Сомсена по Стейтчейнам

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

Такая идея стейтчейнов с доверием уже реализуется CommerceBlock в Mercury Swap. Система стейтченов Mercury должна позволить мгновенные некастодиальные офчейн транзакции в BTC без "заморозки" капитала и возможных проблем с ликвидностью в Lightning network. ComerceBlock использовал nLockTime функциональность Биткоин скрипт из-за отсутствия Eltoo (требует софт-форка) и 2-стороннюю подпись на эллиптических кривых для схемы раскрытия ключей, увеличив таким образом сложность исходной идеи.

Основным примитивом работы Statechains является выход транзакции Биткоина, контролируемый мультисигом 2-из-2. Т.е. для депонирования биткоинов в стейтчейн, создаётся кошелёк с мультиподписью между провайдером стейтчейна и пользователем, и пользователь переводит на свежий адрес свои биткоины. Когда пользователь хочет перевести деньги в рамках стейтчейна (он может перевести депозит только "целиком"), он просто раскрывает свой приватный ключ стейтчейна, который называется переходным ключом получателю биткоинов в стейтчейне. Независимый сервис стейтчейна, у которого есть один из ключей исходного мультисига 2-из-2, регистрирует переход внутри своей системы учёта (это может быть и блокчейн-протокол), согласно схеме ниже. И это всё!

https://github.com/RubenSomsen/rubensomsen.github.io/blob/master/img/statechains.pdf

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

Если посредник по какой-то причине отсутствует, задействуется механизм таймлоков в самом простом случае, и пользователь в конечном итоге получит свои средства ончейн. Более надёжные схемы могут быть осуществлены при наличии Taproot и Eltoo, поскольку первый допускает "политики" трат, второй допускает обновление выхода ончейн для учёта адреса вывода нового собственника токенов в сайдчене, что ликвидирует возможность его атаки, если предыдущий собственник и сервис намерены его атаковать. В более простом варианте реализации стейтчейнов, который возможен сейчас, новый собственник в Стейтчейне просто получает обновлёные транзакции вывода и сможет потратить средства на свой адрес опережающим образом, подобно тому, как это делается в Lightning Network.

Сомсен выделяет Стейтчейны отдельно от сайдчейнов.

Автор отмечает уникальные качества Стейтчейнов:

  • UTXO передаются полностью, т.е. 2 по 0.5BTC формируют 1BTC, который может быть передан в стейтчейне
  • coinjoin прямо эквивалентен обмену UTXO в стейтчейне, только может происходить в офчейн режиме
  • Lightning каналы могут быть открыты с помощью Statechain UTXO, чтобы обеспечить возможности меньших платежей
  • Протоколы оракулов (2-из-3 мультисиги, Discreet Log Contracts) поддерживаются более эффективно с помощью Стейтчейнов
  • Не-взаимозаменяемые токены на Bitcoin могут быть переданы офчейн через Statechain (например RGB протокол)
  • Верификация платежей в стейтчейне выполняется проще, чем в сайдчейнах, поскольку история транзакций линейна и пользователь верифицирует точно те монеты, которые ему нужны

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

MimbleWimble

В числе первоначальных разработчиков идеи MimbleWimble находится довольно известный в мире Биткоина Andrew Poelstra. Он является техническим директором Blockstream, известен своим вкладом в разработку и написанием трактатов об альткоинах и Proof-of-Stake. Протокол MimbleWimble имеет как минимум две известных нам отдельных реализации: более-менее децентрализованную и несчастную, Grin, и финансированную через венчурные механизмы Beam. MimbleWimble — это privacy-ориентированный протокол, реализующий конфиденциальные транзакции и доказательства с нулевым разглашением знаний, который должен масштабироваться лучше Монеро за счёт "интерактивности" транзакций.

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

  1. Отсуствие адресов;
  2. Остутствие количеств;
  3. 2 транзакции, которые следуют одна за другой могут быть превращены в одну в блоке, что ликвидирует любую промежуточную информацию.

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

MimbleWimble — это децентрализованный протокол, в котором транзакции совершаются интерактивно, отправляющей и принимающей стороной, и все активные непотраченные выходы (outputs) сохраняются в так называемом "ядре" (kernels), которое позволяет фактически обрезать историю транзакций актуальным множеством токенов. В результате протокол обладает высокой приватностью, а реализация подтверждений с нулевым знанием позволяет гарантировать анонимность. В помощь ключевым качествам протокола также разрабатываются более совершенные методы вещания транзакций.

Схема из презентации Эндрю Поэльстра

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

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

MimbleWimble не поддерживает написание скриптов. Но многие контракты, которые в Биткоине нуждаются в поддержке скриптов, могут быть осуществлены в Грине с помощью свойств Криптографии на эллиптических кривых. Так или иначе, разработчики Grin уже на заре разработки MimbleWimble, знали как осуществить:

1. Транзакции с мультиподписями;

2. Атомарные свопы

3. Транзакции и выходы с блокировкой по таймеру

4. Сети Lightning

Все эти операции делались с помощью так называемых Scriptless scripts — особых операциях с криптографическими примитивами, которые позволяют реализовывать небольшие алгоритмические связи.

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

Тестнет проекта на Лайткоине был запущен в сентябре 2020 года. У проекта есть свой чат в телеграме. MimbleWimble работает подобно SegWit и его блок расширяет блок Биткоина, т.е. это не совсем сайдчейн.

Заключение

Биткоин сообщество в целом не заметило запуск приватного протокола MimbleWimble в Litecoin поскольку он идёт в фоне обсуждений активации Taproot/Schnorr. Эти улучшения Биткоина уже имеют целый ряд идей, направленных на повышение приватности и добавление функциональных смарт-контрактов. Вероятно, по этой же причине RSK не является сверх-интересной прорывной технологией для Биткоина. Taproot сам по себе является технологией, допускающей многие эксперименты с блокчейном Биткоина без необходимости поддержания отдельного протокола и merged mining софт-форков Биткоина.

Путь, которым идёт Blockstream во внедрении Liquid выглядит последовательным и рациональным и полностью независимым от изменений в Биткоине. Возможно Liquid так и останется единственным популярным в узкой среде трейдеров сайдчейном. Но появляются новые идеи к которым мы причисляем Statechains. Уже по тому что через полтора года после публикации идеи появилась компания, реализующая стейтчейн, и она не Blockstream, является фактом в пользу вероятной жизнеспособности и доходности идеи. Именно наличие функционирующих протоколов подтолкнуло нас написать лонгрид на тему сайдчейнов.

Благодарность

Эта статья стала возможной благодаря @user140, который голосовал за нё на странице контракта Etleneum.

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

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

https://tallycoin.app/@hypecoinnews/

LN платежом

LNURL1DP68GURN8GHJ7AMPD3KX2AR0VEEKZAR0WD5XJTNRDAKJ7TNHV4KXCTTTDEHHWM30D3H82UNVWQHKXETWW3EXZMRKD9HKCCF4XYK4YTL3

Или [email protected]

Например из LNTXBOT

/send 100 [email protected]