public

Разбирая протокол RGB

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

Время чтения 8 мин

Этот перевод статьи Федерико Тенга подготовлен пабликом Hype Coin News, перевод таблиц – Тони ⚡️

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

В последнее время наблюдается растущий интерес к токенам поверх Биткоина и Lightning Network. Идея создания токенов, представляющих активы, которые можно передавать и хранить с той же безопасностью и удобством, которые предлагает Биткоин, не нова, она была впервые выдвинута еще в 2013 году такими протоколами, как Counterparty и OmniLayer (бывший Mastercoin), а затем реализована Ethereum и другими альткоинами, где сегодня также происходит большая часть активности по выпуску токенов. Однако использование альткоинов для защиты финансовых активов не является идеальным, поскольку они не могут предложить такой же уровень безопасности и децентрализации, как Биткоин. По этой причине за прошедшие годы появилось несколько проектов, пытающихся модернизировать протоколы токенов на Биткоине и сделать их совместимыми с Lightning Network, в частности RGB, OmniBolt и, совсем недавно, Taro. В этой статье мы сосредоточимся на RGB с целью дать исчерпывающий обзор того, как он работает и каково его ценностное предложение.

Также смотрите пост HCN “Протокол Таро от Lightning Labs”.

Традиционные способы выпуска токенов в Биткоине

Первые протоколы эмиссии токенов в Биткоине, такие как Counterparty и OmniLayer, работали путем размещения метаданных внутри транзакции, чтобы "окрасить" (отсюда “окрашенные монеты” или colored coins) ее и сигнализировать, что ее следует рассматривать как передачу токенов. Такая сигнализация обычно происходит в выводе OP_RETURN, который, конечно, игнорируется обычными узлами Bitcoin, но может быть интерпретирован узлами, знающими протокол токенов, которые будут применять свои правила проверки транзакций с токенами.

Хотя эта конструкция эффективна, она также имеет несколько недостатков:

1. Количество информации, связанной с переводом токенов, ограничено байтами, допустимыми в выводе OP_RETURN, который по стандартным правилам составляет 80 байт, что достаточно для кодирования данных основных транзакций, но недостаточно для более сложных вариантов использования токенов.

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

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

Выходя из блокчейна

С целью улучшения дизайна, проект RGB предлагает более масштабируемое, более конфиденциальное и более перспективное решение, основанное на концепции *клиентской валидации* и “одноразовых печатей”, первоначально предложенных Питером Тоддом в 2017 году.

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

Как все это работает? В RGB токены всегда должны быть привязаны к биткоин UTXO, непотраченному выходу транзакции (либо уже существующему, либо созданному ad hoc), а для перемещения токенов необходимо потратить такой UTXO. При расходовании UTXO Биткоин-транзакция должна включать криптографическое подтверждение сообщения, которое содержит платежную информацию RGB. Оно определяет вход(ы), Биткоин-UTXO, адрес, на который будут отправлены токены, идентификатор актива, сумму, условия расходования и другие дополнительные данные, которые вы можете приложить.

Если у вас есть токены, назначенные на выход 1 Биткоин-транзакции A, для их перемещения вам нужно создать транзакцию RGB и транзакцию Биткоин-расходов с TX A: выход 1, фиксирующую транзакцию RGB. Как вы видите, транзакция RGB перемещает токены с Bitcoin TX A: выход 1 на Bitcoin TX C: выход 2 (который не показан на этой диаграмме), а не на какой-либо выход Bitcoin TX B. В большинстве случаев мы можем ожидать, что выходы TX B просто изменят адреса, чтобы отправить сатоши, принадлежащие расходуемому UTXO, обратно владельцу за вычетом комиссии, одновременно зафиксировав транзакцию RGB, чтобы избежать возможности двойной траты.

Таким образом, для перемещения токенов RGB, которые были назначены на Биткоин-UTXO, всегда необходима Биткоин-транзакция. Однако выход RGB-перевода не обязательно должен совпадать с выходом Биткоин-транзакции! Как видно из примера выше, транзакция RGB может иметь в качестве выхода UTXO, который совершенно не связан с Биткоин-транзакцией, совершающей его. Это означает, что токены RGB могут "телепортироваться" с одного UTXO на другой, не оставляя никаких следов в графе транзакций Биткоина. Это очень полезно для конфиденциальности!

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

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

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

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

Ослепление

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

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

Совместимость с Lightning Network

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

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

Графическое представление возможной сети Lightning Network с цветными каналами RGB. Серые круги представляют обычные узлы LN, а цветные круги - узлы, поддерживающие определенный актив RGB. При передаче актива по пути Lightning будут некоторые узлы, имеющие как цветные, так и обычные каналы биткоина, которые будут действовать как обменные пункты, позволяя платежу дойти до места назначения, используя ликвидность биткоина.

Расширенные смарт-контракты

Используя транзакции Bitcoin, RGB автоматически наследует все возможности смарт-контрактов Bitcoin, но не ограничивается ими! Когда вы передаете токены контрагенту, в платеже можно определить дополнительные условия расходования, которые он должен будет выполнять в будущем. Такие дополнительные условия расходования средств будут обеспечиваться не глобальным консенсусом блокчейна, а валидацией узлов RGB. Это означает, что если будет предпринята попытка потратить токены без соблюдения специальных правил условий расходования RGB, узел получателя не пройдет проверку и будет считать платеж неокончательным, что будет особенно плохо для отправителя. Действительно, в то время как платеж RGB не прошел, Биткоин-транзакция, потратившая UTXO, к которым были приписаны токены, могла быть подтверждена в блокчейне, а это означает, что эти токены больше не приписаны ни к какому UTXO, и их можно считать сгоревшими. Этот вариант развития событий необходимо учитывать при написании смарт-контракта RGB.

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

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

Сравнение RGB с альтернативами

Любой, кто заинтересован в распространении RGB, задастся вопросом о том, каков он в сравнении с альтернативными протоколами токенов. Давайте проанализируем несколько примеров:

Токены на основе альткоинов

Большинство протоколов токенов на основе альткоинов (например, ERC-20) предлагают смарт-контракты с глобальным состоянием, что позволяет легко развертывать DEX-ы (децентрализованные биржи) и другие финансовые приложения, но они трудно масштабируются, не имеют конфиденциальности и наследуют все недостатки этих альткоинов. Например, высокая стоимость запуска узла, низкая децентрализация и меньшая устойчивость к атакам цензуры.

Активы Liquid

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

OmniBolt

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

Taro

Объявленный во время конференции Bitcoin 2022 Miami, Taro – это проект, поддерживаемый Lightning Labs, целью которого является создание активов поверх Lightning Network. Согласно опубликованным спецификациям, дизайн очень похож на RGB, имеет практически те же функции и компромиссы. На момент написания статьи основное различие между RGB и Taro заключается в том, что RGB уже выпустила код, доступный для рецензирования, а Taro – только спецификации, но, с другой стороны, можно утверждать, что Taro поддерживается одной из лучших команд в экосистеме Lightning, что создает хорошие ожидания для будущей реализации. Учитывая сходство этих двух проектов, было бы неплохо, если бы Taro и RGB оказались совместимыми, но только время покажет, появятся ли правильные стимулы для этого.

Выводы

Если вы заинтересованы в токенах Биткоина, то RGB – это проект, на который стоит обратить внимание. Чтобы узнать больше и присоединиться к соавторам и компаниям, работающим над развитием RGB, вот несколько ссылок, которые вы можете изучить:

Telegram-группа сообщества RGB: https://t.me/rgbtelegram

Образовательные ресурсы RGB: https://blueprint.rgb.network/

Репозиторий узла RGB: https://github.com/RGB-WG/rgb-node

Учебник по узлу RGB: https://grunch.dev/blog/rgbnode-tutorial

Tony Lightninng

Опубликовано 4 месяца назад