Crosschain Bridges
March 16, 2023

Обзор Rainbow Bridge 

В этом отчете представлен обзор на Rainbow Bridge. По-большей части, он основан на публичных выступлениях Алекса Шевченко. Я лишь сделал выжимку из его интервью; актуализировал информацию в связи с The Merge Ethereum и запуском новой версии моста; а также прогнал токены через бридж, составив пошаговый гайд.

Отчет сделан каналом @shitcoinresearch

Структура отчета:

1. Чем уникален Rainbow Bridge?

Rainbow Bridge - мост между Ethereum, NEAR и Aurora. Первая версия моста запущена в марте 2021 года и обеспечивала взаимодействие между Ethereum и NEAR. В дальнейшем, после добавления сети Aurora, была запущена новая версия моста - Rainbow Bridge 2.0.

NEAR - L1-блокчейн с поддержкой смарт-контрактов. Отличается высокой пропускной способностью (работает на технологии шардинга) и низкими комиссиями за транзакции. NEAR не является EVM-совместимым блокчейном.

Aurora - L2-решение, построенное поверх протокола NEAR. Aurora - EVM-совместимый блокчейн, позволяющий разработчикам работать с Ethereum на базе NEAR Protocol.

Rainbow Bridge работает на механизме lock and mint/burn and release: при отправке токенов из одной сети в другую - токены блокируются в исходной сети, а в сети назначения - выпускаются обернутые токены (wrapped tokens).

Rainbow Bridge имеет две ключевые особенности:

1. Это полностью децентрализованный мост.

Под полной децентрализацией подразумевается отсутствие любых доверенных третьих сторон. Архитектура большинства существующих мостов основана на так называемом Trusted подходе (он же Proof of Authority подход). Этот подход, подразумевает работу моста в доверенном режиме.

Например, посылать команды на mint/burn токенов (или высвобождение токенов из пула) может как один валидатор (человек или компания), так и группа валидаторов, подписывающих транзакции либо в формате MPC (Multi-Party Compilation), либо в формате Multisig. Валидаторы, подписывающие транзакции могут быть назначены изначально в момент запуска моста, либо могут быть выбраны через различные механизмы отбора. Однако все trusted-мосты основаны на доверии со стороны пользователей, потому что, потенциально, валидаторы моста могут вступить в сговор для того, чтобы украсть токены, находящиеся в смарт-контракте моста.

В свою очередь, Rainbow Bridge является децентрализованным (или trustless) мостом. Такой подход не требует доверия со стороны пользователей. Rainbow Bridge работает исключительно на смарт-контрактах, а все доверие к мосту сводится к доверию консенсусов сетей, между которыми происходит взаимодействие. При этом, Rainbow Bridge был первым мостом, предложившим полностью trustless-подход в кроссчейн-взаимодействиях.

2. Мост позволяет переносить между блокчейнами произвольные данные.

Rainbow Bridge позволяет создавать смарт-контракты, описывающие сообщения, которые должны быть переданы между блокчейнами. Это значит, что блокчейны могут передвать друг другу не только токены, но и другую информацию, такую как результаты голосования DAO, данные оракулов или команды, которые должны быть выполнены в другой сети.


2. Как работает Rainbow Bridge?

Рассмотрим принцип работы Rainbow Bridge на примере взаимодействия блокчейнов NEAR и Ethereum. Общая схема следующая:

Ключевым элементом архитектуры моста являются легкие клиенты (Light Clients).

Легкий клиент (синонимы: облегченная нода или SPV-Simplified Payment Verification) - узел блокчейна, способный проверять верность алгоритма консенсуса сети. Легкий клиент не хранит все данные блокчейна, а только лишь заголовки блоков для подтверждения валидности транзакций, которые они содержат. Большинство криптовалютных кошельков работают на облегченных нодах.

В Rainbow Bridge легкий клиент сети Ethereum реализован в виде смарт-контракта в сети NEAR, и наоборот - в NEAR находится смарт-контракт легкого клиента Ethereum. Взаимодействие между легкими клиентами осуществляются через рилееры (Relayers) - скрипты, считывающие информацию с одного блокчейна и передающие ее на другой блокчейн. Таким образом, блокчейны поддерживают актуальные состояния друг друга. Рилееры могут быть запущены любым человеком.

Состояние легкого клиента Ethereum на NEAR обновляется примерно каждые 12 секунд.

Блоки в NEAR генерируются каждую секунду, но это не означает, что состояние легкого клиента NEAR в сети Ethereum также обновляется раз в секунду, вместо этого блоки отправляются реже - 1 раз в 4 часа. В силу особенностей механизма консенсуса NEAR, такая периодичность позволяет гарантировать валидность состояния блокчейна.

При этом, NEAR работает на PoS. Подписи валидаторов гарантируются криптографией, реализованной на кривых Эдвардса (кривая Ed25519). Но так как в блокчейне Ethereum нет возможности вызвать проверку таких подписей, разработчики Rainbow Bridge реализовали криптографическую проверку подписей через смарт-контракт.

Добавить в SDK Ethereum проверку кривых Эдвардса, которая бы значительно упростила техническую реализацию моста, было предложено еще в 2018 году (EIP-665), однако предложение не принято до сих пор.

На текущий момент, NEAR имеет 213 валидаторов. Вместо проверки подписей всех валидаторов, легкий клиент NEAR работает в оптимистическом режиме. Это значит, что смарт-контракт проверяет все, кроме подписей, и исходит из того, что подписи являются верными. В случае же, если подпись неправильна, сервис под названием вочдог (Watchdog) заявляет о том, что подпись является некорректной.

Существуют экономический стимул для работы вочдогов: если выяснится, что заявленный блок - действительно неверный, то деньги, застейканные рилеерами в легком клиенте - переходят к вочдогу. Watchdog может запустить кто угодно.

Стоит отметить, что все издержки, связанные с отправками блоков, рилееры берут на себя. При этом, рилееры не получают никаких вознаграждений, т.к. мост не взимает комиссий с пользователей. Разработчики моста считают, что мотивация рилееров находится вне механизма работы Rainbow Bridge. Так, например, проекты, реализованные на NEAR, зарабатывая на своих протоколах, потенциально заинтересованы в поддержании экосистемы, а значит они могут себе позволить обслуживать рилееры.

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

Другими важными элементами технической архитектуры моста являются пруверы (Provers) и коннекторы (Connectors).

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

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

Коннекторы - смарт-контракты, которые говорят о структуре передаваемых сообщений. Например, пара “ETH Connectors” - отвечает за передачу ETH между двумя сетями, пара “ETH-20 Connectors” - отвечает за передачу токенов ERC-20 и т.д. При желании кто угодно может написать свой собственный коннектор - абсолютно любое сообщение может быть переслано.

Также следует отметить, что у Rainbow Bridge есть Governance. DAO необходимо на случай хард-форков сетей, в результате которых может измениться структура блоков, а значит и логика работы смарт-контрактов. Смарт-контракты моста должны быть обновляемы, именно этим и занимается DAO.

Объяснение как работает Rainbow Bridge "на пальцах":

1. Пользователь в сети Ethereum говорит о том, что хочет перевести 20 DAI на блокчейн NEAR;

2. Сеть Ethereum блокирует 20 DAI в хранилище (смарт-контракте);

3. Рилееры доставляют эту информацию легкому клиенту Ethereum в сети NEAR;

4. Вочдоги следят за тем, что рилееры передали верную информацию;

5. Пруверы получают криптографическое доказательство о том, что в Ethereum было совершено событие по блокировке 20 DAI;

6. Прувер обращается к легкому клиенту с просьбой подтвердить, что криптографическое доказательство корректно.

7. После получения подтверждения - происходит создание 20 новых DAI для использования на NEAR.


3. Время перевода и комиссии

Трансфер из Ethereum на NEAR Скорость перевода из Ethereum на NEAR зависит исключительно от скорости финализации транзакций в Ethereum. После слияния в сети Ethereum - это время составляет около 20 минут (96 слотов по примерно 12 секунд каждый). По истечении этого времени - можно считать, что транзакция является валидной.

Трансфер из NEAR на Ethereum

Блоки из NEAR в Ethereum отправляются 1 раз в 4 часа. Время, которое дается вочдогам на то, чтобы проверить валидности подписей составляет 4 часа. Таким образом, время трансфера из NEAR на Ethereum зависит от того, в какой блок попала транзакция пользователя.

В случае, если транзакция включается в блок, который сразу же отправится рилеерами на Ethereum - время перевода будет близко к 4-м часам (время проверки, которое дается вочдогам).

В случае, если блок уже был отправлен, и транзакция пользователя не успела попасть в этот блок, то она попадет в следующую отправку блоков (через 4 часа), также потребуется еще 4 часа - время, которое дается вочдогам на проверку транзакции.

Помимо этого, этот перевод нужно будет закончить на стороне Ethereum - а это еще 20 минут.

Таким образом, время отправки транзакции из NEAR в Ethereum варьируется от 4-х часов 20 минут до 8-ми часов 20 минут.

Комиссии за перевод

Rainbow Bridge не взимает комиссий за переводы. Комиссии за перевод состоят исключительно из комиссий сети. Проверка доказательства подписей - сложный процесс, поэтому стоимость транзакций - достаточно высока.

Переводы из NEAR в Ethereum - в несколько раз дороже переводов из Ethereum в NEAR.

Окончательная стоимость транзакций, естественно, зависит от цены на газ в момент перевода.

Переводы между NEAR и Aurora происходят мгновенно и стоят несколько центов.


4. Бриджим с Ethereum на Aurora

Трансферы между Ethereum и Aurora осуществляются мостом Aurora Bridge, который использует ту же технологию, что и Rainbow Bridge, но дополненную для обработки скрытого этапа переводов NEAR/Aurora.

Поэтапный процесс трансфера токенов из сети Ethereum в сеть Aurora:

На сайте Rainbow Bridge во вкладке Transfers есть такое окно:

Для начала, необходимо подключить кошелек, нажав на кнопку “Connect” напротив Ethereum.

После подключения кошелька, система автоматически распознает адрес владельца, и подставит его как в строку с Ethereum-адресом, так и в строку с Aurora-адресом (т.к. Aurora - EVM-совместимый блокчейн, эти адреса будут совпадать):

В случае, если необходимо перевести средства на адрес, отличный от текущего, нужно поставить галочку “I’,m transferring to an address other than my own” и указать адрес получателя.

После этого необходимо нажать на кнопку “Begin new transfer”. Система предлагает убедиться в том, что Aurora - совместима с текущим кошельком:

Т.к. трансфер делается через Metamask, и сеть Aurora успешно была добавлена в него ранее - нажимаю на кнопку “Skip”. Появляется следующее окно:

Система подгружает имеющиеся токены на кошельке, которые доступны для перевода. В сети Ethereum - у меня только ETH и USDT. Переводить буду USDT: указываю сумму для перевода и нажимаю кнопку “Continue”:

Система уведомляет о первой транзакции - Approve Transfer:

Соглашаемся. Для этого необходимо подписать транзакцию. Комиссия на approve составляет: 2,53$:

Approve происходит почти мгновенно. После этого, необходимо подтвердить перевод (Confirm Transfer), нажав на одноименную кнопку:

Также подписываем транзакцию. Комиссия на confirm составляет: 3,28$:

Система уведомляет о том, что перевод в процессе исполнения. Необходимо подождать около 20 минут, до момента, пока USDT разблокируются в сети Aurora:

Текущее состояние транзакции можно узнать, нажав на кнопку “Go to my transfers”:

После того, как транзакция подтверждена - в Метамаске видим полученные USDT в сети Aurora:

Как видно, осуществление перевода из сети Ethereum в сеть Aurora - интуитивно понятно и не вызвало каких-либо сложностей.

Тестовый перевод в 0,41 USDT проводился в демонстрационных целях. Общая комиссия сети (сумма комиссий двух транзакций) составила 5,81$.

Отчет сделан каналом @shitcoinresearch

Для более глубокого погружения в то, как работает Rainbow Bridge - можете прочитать официальную статью от разработчиков моста.