LayerZero: Trustless Omnichain Interoperability Protocol [RUS]
Original document: https://layerzero.network/pdf/LayerZero_Whitepaper_Release.pdf
Abstract
Распространение блокчейнов предоставило разработчикам множество платформ, на которых можно запускать свои смарт-контракты, в зависимости от характеристик приложений и требований к пропускной способности, безопасности и стоимости. Однако следствием этой свободы является сильная фрагментация; Каждая цепь изолирована, что вынуждает пользователей разделять их ликвидность и ограничивает варианты перемещения ликвидности и состояний между изолированными экосистемами.
Этот документ представляет LayerZero, первый trustless протокол взаимодействия омниканальных сетей, который обеспечивает мощный низкоуровневый (low level) коммуникационный примитив, на основе которого можно построить разнообразный набор межсетевых приложений. Используя этот новый примитив, разработчики могут внедрять бесшовные межсетевые приложения, такие как кросс-чейн DEX’ы или мульти-чейн yield агрегаторы, без необходимости полагаться на кастодиальные сервисы или промежуточные транзакции. Проще говоря, LayerZero — это первая система, позволяющая без доверия (trustlessly) осуществлять прямые транзакции во всех чейнах. Разрешение транзакциям свободно перемещаться между чейнами дает пользователям возможность консолидировать фрагментированную ликвидность, а также в полной мере использовать приложения в отдельных цепях. С помощью LayerZero мы предоставляем сетевую структуру, лежащую в основе полностью связанной омниканальной экосистемы будущего.
1 Introduction
В основе концепции блокчейна лежат три столпа: децентрализация, прозрачность и неизменность. Ни один объект не контролирует блокчейн, а действия в блокчейне проверяемы и необратимы. Эти столпы создают основу, на которой эта сущность может действовать, не доверяя какой-либо другой сущности. Эта гарантия доверия является одной из причин, почему, например, криптовалюты привлекательны по сравнению с фиатной валютой.
Если бы все пользователи и все приложения сосуществовали в одном едином блокчейне, то на этом статья бы закончилась. Однако полезность блокчейна привела к распространению разнообразных приложений с уникальными особенностями и требованиями. Спрос на разнообразный набор функций препятствовал росту специализированных чейнов. Каждый из этих чейнов способствовал огромному росту приложений в своей собственной экосистеме, но изоляция между этими экосистемами стала ключевым ограничением для внедрения. Пользователи и разработчики вынуждены распределять время, ресурсы и ликвидность между отдельными блокчейнами. Естественным следствием огромного количества так называемых блокчейнов уровня 1 (до 109 на момент написания [1]) является необходимость расширения вышеупомянутых трех столпов для одновременного охвата взаимодействий между несколькими цепями. Одним из примеров востребованного взаимодействия между цепями является передача токенов, которую мы обсудим позже в этом разделе.
На языке блокчейна единицей работы является транзакция, неизменная и безотзывная. Транзакции, объединенные в блоки, составляют основу безопасности в системе блокчейн. Однако транзакции всегда были single-chain концепцией; как описано ниже, для взаимодействия между цепями традиционно требовался сторонний механизм за пределами обычной криптосистемы блокчейна. Напротив, в этой статье описывается первый протокол обмена сообщениями, с помощью которого возможны нативные межсетевые транзакции: LayerZero.
Чтобы проиллюстрировать мощный коммуникационный примитив LayerZero, мы рассмотрим пример передачи токенов из одной цепочки в другую. В настоящее время для конвертации между токенами двух чейнов пользователь должен использовать либо централизованную биржу, либо кросс-чейн DEX (также известный как кросс-чейн мост), оба из которых требуют компромиссов. В случае централизованной биржи, например Binance.com [3] пользователь должен доверять бирже, которая отслеживает ввод и вывод средств. Эти доверительные отношения противоречат фундаментальному trustlessness свойству консенсуса блокчейна и не обеспечивают безопасность автоматизированных on-chain систем. Использование DEX, таких как AnySwap [2]или THORChain [23], облегчает проблему доверия, проводя трансфер on-chain, но существующие реализации DEX включают в себя преобразование пользовательского токена в специальный токен протокола, который проходит промежуточный уровень консенсуса чтобы достичь консенсуса по транзакциям. Этот промежуточный уровень консенсуса, хотя обычно реализуется безопасным образом, требует, чтобы пользователь доверял сайд чейну для облегчения передачи токена. Как будет сказано в этом документе, в этих дополнительных накладных расходах нет необходимости. Несмотря на высокий пользовательский спрос, не появилось решения, которое было бы одновременно эффективным и прямым, но при этом сохраняло бы основную причину использования блокчейнов: trustlessness. Сделав шаг назад, прямые кросс-чейн транзакции LayerZero дают разработчикам инструменты для создания именно этого.
Важно отметить, что LayerZero и описанные выше DEX работают на двух разных уровнях стека реализации. LayerZero — это коммуникационный примитив, который позволяет использовать различные омничейн приложения, тогда как DEX — это один из примеров приложения, которое выиграет от повторной реализации поверх LayerZero. В разделе 2 описывается ландшафт технологии блокчейна и более подробно исследуется пример обмена.
Чтобы должным образом объяснить возможности LayerZero и его роль в экосистеме блокчейна, мы сперва представляем формализацию фундаментального коммуникационного примитива, необходимого для обеспечения inter-chain транзакций, которые мы называем valid delivery(раздел 3). Затем мы опишем, как LayerZero предоставляет этот примитив без доверия (trustless), тем самым сохраняя обещание безопасности блокчейна. LayerZero — это первый не требующий доверия омничейн уровень функциональной совместимости (trustless omnichain interoperability layer), который поддерживает обмен сообщениями напрямую между цепочками уровня 1 и уровня 2 (рис.1).
Кросс-чейн транзакция между цепочками A и B состоит из транзакции tA на A, протокола связи между A и B и сообщения m. Valid delivery утверждает, что m доставлено тогда и только тогда, когда tA зафиксирован и действителен. Ключевая идея, лежащая в основе LayerZero, заключается в том, что если два независимых объекта подтверждают действительность транзакции (в данном случае tA), то цепочка B может быть уверена, что tA действителен. Рисунок 2 иллюстрирует это на высоком уровне. При наличии двух объектов, которые не вступают в сговор, если (1) один объект может создать заголовок блока для блока, содержащего tA в цепочке A, (2) другой объект может независимо предоставить доказательство для tA в этом блоке (доказательство транзакции) и (3) заголовок и подтверждение транзакции фактически совпадают, тогда протокол связи может доставить m клиенту по цепочке B с гарантией того, что tA стабильно фиксируется в цепочке A. Коммуникативный протокол LayerZero, описанный в разделе 4, гарантирует, что транзакция в цепочке получателя будет сопряжена с действительной, зафиксированной транзакцией в цепочке отправителя без участия каких-либо цепочек посредников. Мы достигаем этого путем объединения двух независимых объектов: Oracle, который предоставляет заголовок блока, и Relayer, который предоставляет доказательство, связанное с вышеупомянутой транзакцией.
Интерфейс LayerZero — это облегченный он-чейн клиент, который мы называем LayerZero Endpoint. Один LayerZero Endpoint существует в каждой (поддерживаемой) цепочке, и любая цепочка с LayerZero Endpoint может проводить кросс-чейн транзакции с участием любой другой цепочки с LayerZero Endpoint. По сути, это создает полносвязную сеть, в которой каждый узел имеет прямое соединение со всеми остальными узлами. С второстепенным шаблонным кодом поддерживается любой блокчейн. Раздел 5 демонстрирует этот процесс на примере реализации LayerZero в блокчейне Ethereum.
Возможность выполнять кросс-чейн транзакции напрямую с любой другой цепочкой в сети открывает возможности для класса крупномасштабных приложений, которые ранее были невозможны, таких как кросс-чейн децентрализованные биржи, мульти-чейн агрегаторы доходности и кросс-чейн кредитование. В разделе 6 подробно рассматриваются несколько таких приложений. C помощью LayerZero пользователи могут свободно перемещать ликвидность между чейнами, позволяя единому пулу ликвидности участвовать в нескольких приложениях DeFi в разных чейнах и экосистемах без необходимости проходить через сторонние системы или промежуточные токены.
2 Background
Чтобы заложить основу для LayerZero, мы проанализировали соответствующие существующие системы, чтобы проиллюстрировать, почему они не отвечают требованиям новых приложений. Обсуждение завершается подробным объяснением преимуществ построения кросс-чейн обмена поверх LayerZero.
2.1 Related work
Этот раздел дает представление о важных игроках в пространстве кросс-чейн взаимодействия, почему они не соответствуют идеалам trustless valid delivery и как LayerZero закрывает этот пробел.
Ethereum [8] — самая популярная платформа для децентрализованных финансовых приложений, построенных с использованием смарт-контрактов. Ethereum расширяет свой базовый блокчейн с помощью полного по Тьюрингу языка программирования, который позволяет библиотеке децентрализованных приложений использовать мощные свойства безопасности базовой цепочки с помощью удобной для разработчиков абстракции. Однако низкая скорость транзакций базового блокчейна, примерно 15–45 транзакций в секунду [9], оказалась серьезным узким местом масштабируемости, ограничивающим популярность приложений, созданных для работы непосредственно на блокчейне Ethereum. Из-за своей модели программирования и популярности многие методы inter-chain взаимодействия вращаются вокруг взаимодействия сторонних цепочек с Ethereum. LayerZero предоставляет возможность напрямую передавать состояние в Ethereum и обратно без посредника, позволяя пользователям и приложениям использовать стабильность и надежность цепочки Ethereum без затрат и узких мест присущих решениям, описаным ниже.
Ethereum 2.0 [22] представляет собой набор предлагаемых обновлений для устранения недостатков масштабируемости, безопасности и устойчивости в Ethereum. Ethereum 2.0 представляет shard chains, которые распределяют нагрузку, вместо того чтобы концентрировать все транзакции в перегруженной основной сети Ethereum. Переход от proof-of-work к proof-of-stake устраняет возможность атаки 51% и снижает затраты энергии на транзакцию. Эти достижения в значительной степени ортогональны LayerZero, за исключением того, что они обязательно повысят популярность Ethereum, создав еще больший спрос на удобную и дешевую inter-chain коммуникацию.
Polygon [17], ранее известный как Matic Network, представляет собой Layer 2 блокчейн, который решает проблемы пропускной способности и суверенитета Ethereum. Несмотря на то, что Ethereum является самой популярной платформой для разработки блокчейнов, он страдает от низкой пропускной способности, что делает его непригодным для некоторых приложений. Polygon предоставляет совместимые с Ethereum сайдчейны для конкретных приложений, которые сочетают в себе масштабируемость и независимость отдельных чейнов с сообществом и безопасностью Ethereum. Специализированные или требовательные к пропускной способности приложения работают на сайдчейнах и периодически объединяются обратно в основную цепочку Ethereum. Напротив, LayerZero — это платформа более низкого уровня, которая обеспечивает прямую связь между цепями и может использоваться для облегчения передачи обратно в цепочку Ethereum без сложностей протокола Polygon.
Polkadot — ранний пример потенциала открытой крос-счейн экосистемы. В Polkadot множество параллельных цепочек («парачейнов») соединяются через общий relay-chain, который позволяет передавать токены и данные между ними. Однако inter-chain связь всегда проходит через relay-chain, что влечет за собой дополнительные расходы. LayerZero предоставляет ту же low-level коммуникационную платформу, что и Polkadot, без дополнительных транзакций, необходимых для посредника в сети.
THORChain [23] — это DEX, использующий парные пулы ликвидности для передачи токенов между сторонними цепями. Каждый пул ликвидности привязывает определенную стороннюю валюту к собственному токену THORChain под названием RUNE, который выступает в качестве общего средства обмена. Без этой общей среды всем парам валют потребовался бы пул ликвидности, а это означает, что количество пулов будет масштабироваться пропорционально квадрату количества валют. К сожалению, несмотря на то, что RUNE решает эту проблему масштабируемости, в процессе транзакций возникают громоздкие накладные расходы, которые делают простую операцию довольно сложной. Это видно по сложности алгоритма транзакций THORChain. LayerZero обеспечивает прямое межсетевое взаимодействие без присущих THORChain узких мест масштабируемости, громоздкой промежуточной валюты или тяжеловесного протокола.
AnySwap [2] это DEX, ориентированный на простой парный обмен токенами, аналогичный THORChain. AnySwap использует промежуточный токен ANY, основанный на распределенном управлении правами управления Fusion [6]. Как и в случае с THORChain, использование промежуточного токена ANY приводит к нежелательным накладным расходам, задержкам и дополнительным комиссиям за перевод.
Cosmos [5] — это сетевая технология блокчейна, которая позволяет отправлять произвольные сообщения между поддерживаемыми цепочками. Cosmos включает протокол Inter-Blockchain Communication (IBC [14]), основанный на Tendermint BFT [21], для облегчения обмена сообщениями между цепочками, построенными на Cosmos Hub. Cosmos отличается от LayerZero двумя ключевыми моментами: (1) IBC запускает full on-chain light node и (2) IBC обеспечивает прямую связь только между цепочками fast finality. Эти ограничения IBC в сочетании с использованием промежуточной цепочки для обеспечения консенсуса делают его похожим на Anyswap, THORChain или Polkadot, а не на общий уровень связи, такой как LayerZero. Cosmos также предоставляет DEX со свойствами, аналогичными Anyswap или THORChain, который называется Gravity Bridge [12]. В отличие от Cosmos и IBC, LayerZero обеспечивает trustless омничейн обмен сообщениями и может быть использован для работы в любой цепочке, включая те, которые обеспечивают вероятностную завершенность (probabilistic-finality), такие как Ethereum и Биткойн.
Chainlink — это фреймворк для построения и подключения к децентрализованным сетям оракулов (DON). Несмотря на то, что смарт-контракты защищены от несанкционированного доступа, их сетевая природа препятствует базовому подключению, имеющему решающее значение для их более широкого внедрения: смарт-контракт не может извлекать данные вне сети, необходимые для выполнения контракта, такие как цены на акции, измерения устройств IoT и результаты безопасных вычислений вне сети. DON расширяет свойство защищенности смарт-контракта от несанкционированного доступа к источникам данных и внешним ресурсам, от которых зависит контракт, не доверяя какому-либо центральному объекту. В DON смарт-контракт пользователя делает он-чейн запрос к смарт-контракту интерфейса Chainlink, который отправляет событие на множество отдельных узлов оракула. Каждый узел оракула запрашивает информацию из нескольких источников данных, объединяет ее для фильтрации ошибочных или вредоносных источников и, при необходимости, выполняет trust-minimized вычисления к данным. Узлы оракула отвечают на контракт интерфейса Chainlink, который выполняет второй уровень агрегации для фильтрации ошибочных или злонамеренных данных от оракулов. Эта двухуровневая фильтрация гарантирует доверие к окончательным данным, не требуя доверия к какому-либо отдельному оракулу или источнику данных. В результате Chainlink обеспечивает надежную сеть поиска информации, а также безопасное решение для вычислений вне сети, которое стало широко использоваться в отрасли. Используя структуру Chainlink DON, протокол LayerZero получает возможность обеспечивать trustless доставку сообщений между разрозненными цепочками.
2.2 LayerZero in practice
Разработчики могут использовать LayerZero для создания сложных кросс-чейн приложений, не жертвуя отсутствием доверия (trustlessness)или вводя сложные промежуточные цепочки/смарт-контракты. Рисунок 3 иллюстрирует функциональность LayerZero в контексте построения обмена.
Централизованная биржа, показанная слева, требует, чтобы пользователи вносили свои токены в централизованный доверенный орган, который затем отслеживает этот депозит офф-чейн и предоставляет монеты в других чейнах по запросу пользователя. Доверие к этому органу с самого начала противоречит цели использования блокчейна, что привело к появлению распределенных бирж.
Центральная схема показывает на высоком уровне, как работает типичная децентрализованная биржа: используя протокол консенсуса, управляемый смарт-контрактом, для облегчения автоматического минта монет в цепочке B, DEX могут преодолеть необходимость в наличии централизованного посредника. Однако одно ключевое ограничение заключается в том, что DEX включают в себя промежуточный токен и промежуточную цепочку и чеканят только промежуточный или обернутый токен в цепочке B, а не фактический токен, который хочет пользователь. Затем пользователь должен обменять промежуточный токен (например, RUNE) или обернутый токен (например, ANY) на желаемый токен дополнительной транзакцией. Этот промежуточный/обернутый токен, вторая транзакция, а также промежуточная цепочка — все это ненужные накладные расходы по сравнению с тем, что в идеале должно быть одной бесшовной транзакцией. В правой части рисунка 3 показано, как будет выглядеть обмен, построенный на LayerZero, с цепочкой A, способной инициировать единственную транзакцию между цепочками, которая облегчает локальную транзакцию в цепочке A и уведомляет приложение в цепочке B, что они могут безопасно предоставить токен пользователю. В этом приложении LayerZero обеспечивает чистый и минимальный обмен одной транзакцией, который не включает никаких промежуточных токенов. Фактический протокол обмена обрабатывается смарт-контрактами по обе стороны кросс-чейн транзакции, а LayerZero доставляет сообщения между ними. Это обеспечивает большую гибкость и следует сквозному (end-to-end) принципу, при этом большая часть логики обмена высокого уровня обрабатывается смарт-контрактами в цепочках источника и назначения.
3 Valid Delivery
В этом разделе мы опишем основные свойства trustless inter-chain связи. Чтобы формально охарактеризовать проблему проверки транзакции в другой цепочке, мы определяем идею valid delivery. Valid delivery — это коммуникационный примитив, который позволяет передавать токены между цепочками, предоставляя следующие гарантии:
- Каждое сообщение m, отправленное по сети, связано с транзакцией t в цепочке на стороне отправителя.
- Сообщение m доставляется получателю тогда и только тогда, когда соответствующая транзакция t действительна и зафиксирована в цепочке на стороне отправителя.
Централизованные биржи гарантируют valid delivery, поскольку соглашение между клиентом и биржей заключается в том, что клиент передаст свой токен из блокчейна на биржу, а биржа после получения этого токена предоставит пользователю некоторый баланс (не в криптовалюте) . Затем этот некриптовалютный баланс можно вывести на любой доступный блокчейн, что стало возможным благодаря широким пулам ликвидности бирж в каждом из поддерживаемых блокчейнов. Биржа выступает в качестве посредника в этой транзакции, и пользователь должен доверять им, чтобы выполнить свою часть сделки. Однако злонамеренная или скомпрометированная биржа может забрать токены у клиента, предоставить баланс, а затем отказать в выводе этого баланса на другой блокчейн, фактически похитив токены у пользователя. Даже если пользователь готов доверять бирже, в последние годы было много успешных попыток взломать или скомпрометировать криптовалютные биржи, поэтому пользователям лучше подходит решение, которое не требует доверенного посредника. На более высоком уровне одним из основных преимуществ криптовалют является их независимость от централизованных организаций, таких как банки, поэтому опора на централизованный обмен противоречит их цели.
Альтернативой использованию централизованной биржи является децентрализованная биржа, например THORChain [23] или AnySwap [2]. Все существующие DEX используют промежуточный токен, такой как RUNE в случае THORChain или ANY в случае AnySwap, в качестве транзакции t. Поскольку эти промежуточные токены регулируются соответствующими протоколами каждой DEX, DEX может гарантировать valid delivery, поскольку злоумышленник не может подделать промежуточный токен. Существующие DEX решения не идеальны, поскольку они включают две промежуточные транзакции: одну для преобразования токена отправителя в промежуточный токен, а другую для преобразования промежуточного токена в желаемый «настоящий» токен в цепочке получателя. В дополнение к этому необходимо, чтобы пользователь полностью доверял промежуточному уровню консенсуса, который подтверждает транзакцию в исходной цепочке и передает намерение отчеканить токен в цепочке назначения. Хотя существующие биржи позволяют передавать токены между сетями, они делают это за счет ненужной сложности и затрат. Недостатки этого очевидны в том, что кроссчейн-приложения не получили широкого распространения. Идеальным решением проблемы кросс-чейн транзакций является использование одной oneswap транзакции между цепочками без участия какого-либо доверенного промежуточного объекта — другими словами, trustless valid delivery. В нашей работе мы реализуем общий протокол обмена сообщениями, который обеспечивает надежную доставку произвольных пользовательских данных, а не только токенов. Распределенные обмены или другие приложения DeFi будут реализованы с использованием нашего примитива обмена сообщениями для обеспечения транзакций между цепочками, а степень гибкости, обеспечиваемая протоколом обмена сообщениями низкого уровня, позволяет приложениям более высокого уровня реализовывать широкий спектр ранее невозможных функций.
4 Design
Ядром LayerZero является коммуникационный протокол, обеспечивающий trustless valid delivery. Наш протокол построен на ряде компонентов, представленных в разделе 4.1. Мы обсуждаем коммуникационный поток протокола передачи в Разделе 4.2, описываем, как LayerZero может обеспечить valid delivery без привлечения доверенных посреднических служб в Разделе 4.3, и представляем наш новый дизайн для недорогого, основанного на смарт контрактах, легкого клиентского endpoint’а в Разделе 4.4
4.1 LayerZero components
LayerZero Endpoints — это пользовательский интерфейс LayerZero. Каждая цепочка в сети LayerZero имеет один LayerZero Endpoint, реализованный в виде ончейн смарт-контрактов. Цель Endpoint’а — позволить пользователю отправить сообщение с использованием backend’а протокола LayerZero, гарантируя valid delivery.
LayerZero Endpoint разделена на четыре модуля: Communicator, Validator, Network, и Libraries. Модули Communicator, Validator и Network включают основные функции Endpoint’а (рис. 4), а каждая новая цепочка, поддерживаемая LayerZero, добавляется в качестве дополнительной Library. Этот дизайн позволяет нам добавить поддержку новых чейнов без изменения трех основных модулей. Мы объясняем функции каждого модуля в Разделе 4.4.
Oracle — это сторонняя служба, которая предоставляет механизм для независимого от других компонентов LayerZero чтения заголовка блока из одной цепочки и отправки его в другую цепочку. Теоретически этим Oracle может быть любой сторонний сервис, предоставляющий этот механизм, но на практике мы рассчитываем использовать Chainlink, который в настоящее время является лидером в отрасли децентрализованных оракулов.
Relayer — это off-chain сервис, который похож по функциям на Oracle, но вместо извлечения заголовков блоков он извлекает подтверждение для указанной транзакции.
Для обеспечения valid delivery единственным требованием является то, что для любого данного сообщения, отправленного с использованием протокола LayerZero, Oracle и Relayer должны быть независимы друг от друга. Сам протокол не требует какой-либо конкретной реализации Relayer’а, и теоретически пользователи LayerZero могут даже реализовать свой собственный Relayer сервис. Такой дизайн позволяет пользователям быть уверенными, что Relayer не может вступить в сговор с Oracle, и именно эта независимость позволяет нам реализовать trustless validated delivery, как показано в разделе 4.3. На практике LayerZero предоставляет Relayer сервис, в то время как Oracle обрабатывается децентрализованной сетью оракулов Chainlink и соответствующими механизмами консенсуса.
4.2 LayerZero protocol
На рис. 4 показаны этапы valid delivery одного сообщения LayerZero. Каждое число в кружке на рисунке представляет шаг протокола и соответствует абзацу в этом разделе. В этом разделе рассматривается пример пользовательского приложения в цепочке A, отправляющего одно сообщение пользовательскому приложению в цепочке B через LayerZero. В разделе 5 мы описываем, как реализуются различные компоненты и этапы протокола в случае отправки сообщений между двумя виртуальными Ethereum Virtual Machines.
Шаг 1. Пользовательское приложение в цепочке A (App A) выполняет ряд действий в рамках транзакции T. Мы однозначно идентифицируем транзакцию T по идентификатору транзакции t — формат этого идентификатора может различаться в зависимости от типа цепочки A. Шаг, включенный в транзакцию T, — это передача сообщения (valid delivery T) через LayerZero. В целях иллюстрации и без ограничения общности мы предполагаем, что в этом сценарии App A использует наш reference Relayer. App А отправляет запрос к LayerZero Communicator, содержащий следующую информацию:
- t: Уникальный идентификатор транзакции для T.
- dst: Глобальный идентификатор, указывающий на смарт-контракт в цепочке B.
- payload: Любые данные, которые App A хочет отправить в App B.
- relayer_args: Аргументы, описывающие платежную информацию в случае, если App A хочет использовать reference Relayer.
Шаг 2: Communicator создает пакет LayerZero, содержащий dst и payload, именуемый Packet(dst, payload), и отправляет его вместе с t и relayer_args на Validator.
Шаг 3: Validator отправляет t и dst в Network. Этот шаг уведомляет Network о том, что заголовок блока для текущего блока в цепочке A необходимо отправить в цепочку B.
Шаг 4: Validator пересылает Packet (dst, payload), t и relayer_args на Relayer, уведомляя Relayer о том, что подтверждение транзакции для T должно быть предварительно извлечено и в конечном итоге отправлено в цепочку B. Это происходит одновременно с Шагом 3.
Шаг 5: Сеть отправляет dst и block ID текущей транзакции (cur_blk_id) в Oracle. Это уведомляет Oracle о необходимости получить заголовок блока для текущего блока в цепочке A и отправить его в цепочку B. В случае, если в одном блоке произошло несколько транзакций LayerZero, Шаг 5 выполняется только один раз.
Шаг 6: Oracle считывает заголовок блока (blk_hdr) из цепочки A.
Шаг 7: Relayer считывает подтверждение транзакции, связанное с транзакцией T (proof(t)) из цепочки A, и сохраняет офф-чейн. Шаги 6 и 7 происходят асинхронно друг с другом
Шаг 8: Oracle подтверждает, что блок, соответствующий blk_hdr, стабильно фиксируется в цепочке A, а затем отправляет blk_hdr в сеть по цепочке B. Механизм определения того, когда это происходит, зависит от цепочки, но обычно включает ожидание некоторого количества block confirmations.
Шаг 9: Сеть отправляет хэш блока, указанный как blk_hdr_hash, в Validator.
Шаг 10: Валидатор отправляет хэш blk_hdr_hash на Relayer.
Шаг 11: После получения хэша blk_hdr_hash Relayer отправляет список любых Packet(dst, payload), t, proof(t), которые соответствуют текущему блоку. В случае, если несколько пользователей одновременно отправляют сообщения между одними и теми же конечными точками, в одном и том же блоке может быть несколько packets и связанных с ними подтверждений транзакций.
Шаг 12: Validator использует полученные подтверждения транзакций в сочетании с заголовками блоков, хранящимися в Network, чтобы проверить, является ли связанная транзакция T действительной и зафиксированной. Если заголовок блока и подтверждение транзакции не совпадают, то сообщение отбрасывается. Если они совпадают, то Packet(dst, payload) отправляется на Communicator.
Шаг 13: Communicator эмитирует Packet(dst, payload) в App B.
4.3 Achieving trustless valid delivery
Trustlessness: в основе дизайна LayerZero лежит идея о том, что пользователю не нужно доверять компонентам LayerZero. Вместо требования доверия, которое является сильным условием, нам требуется только более слабое условие независимости между Oracle и Relayer. Это требование независимости вместо доверия является одним из аспектов того, что позволяет LayerZero быть эффективным и легким. Пока нет злонамеренного сговора между Oracle и Relayer, LayerZero гарантирует valid delivery.
Valid delivery: по протоколу LayerZero, показанному в разделе 4.2, сообщение m доставляется с помощью Communicator пользовательскому приложению тогда и только тогда, когда подтверждение транзакции для транзакции t, связанной с m, может быть проверено на шаге 12. Этот шаг проверки завершится успешно. тогда и только тогда, когда заголовок блока и подтверждение транзакции совпадают, что произойдет только в следующих двух сценариях:
- Заголовок блока, предоставленный Oracle, и подтверждение транзакции, предоставленное Relayer, являются действительными.
- Заголовок блока, предоставленный Oracle, и подтверждение транзакции, предоставленное Relayer, недействительны, но все же совпадают.
Сценарий 2 может произойти только в случае сговора Oracle и Relayer, поскольку статистически невозможно отправить подтверждение транзакции, которое можно проверить по заголовку блока, не зная этого конкретного заголовка блока, и наоборот. Однако конструкция LayerZero исключает возможность сговора, как описано в разделе 1. Таким образом, если сообщение доставляется пользовательскому приложению на стороне получателя, оно гарантированно соответствует свойствам valid delivery.
Как указано в разделе 3, протокол связи, который может гарантировать trustless valid delivery, а именно valid delivery без доверия промежуточным объектам или токенам, является идеальным решением для обеспечения транзакций между цепочками. LayerZero — первая и единственная система, доказавшая это свойство. Этот факт будет способствовать принятию пользователями LayerZero в качестве предпочтительного метода кросс-чейн обмена сообщениями.
4.4 LayerZero Endpoint
LayerZero Endpoint в настоящее время реализована в виде серии смарт-контрактов в каждой цепочке, включенной в сеть LayerZero. Основные функциональные возможности LayerZero Endpoint инкапсулированы в три модуля: Communication, Validation, и Network. Эти модули действуют аналогично сетевому стеку: сообщения отправляются вниз по стеку на стороне отправителя — от Communicator к Validator и Network — затем вверх по стеку на стороне получателя.
Помимо основных модулей, LayerZero Endpoint может быть расширена с помощью Libraries, которые представляют собой вспомогательные смарт-контракты, определяющие, как следует обрабатывать связь для конкретной цепочки. Каждая цепочка в сети LayerZero имеет связанную с ней Library, и каждый Endpoint включает в себя копию каждой Library. Эта модульная конструкция позволяет быстро и легко расширять сеть LayerZero для включения новых цепочек по запросу. Кроме того, для связи между двумя цепями требуется только наличие соответствующих libraries на обоих концах, что делает LayerZero fully-connected сетью с возможностью управлять транзакциями между любой парой узлов.
4.5 LayerZero Endpoint cost scalability
Как, вероятно, укажут многие читатели, запуск смарт-контрактов в Layer 1 чейнах может быть непомерно дорогим, особенно при увеличении объема хранимых данных. Чтобы сделать LayerZero Endpoint практичным, нам необходимо было разработать максимально легкий клиент. Предыдущая работа по trustless кросс-чейн валидации с помощью crosschain state machine replication (SMR), по типу Golden Gate [11], могла стоить миллионы долларов в день для работы в популярных Layer 1 чейнах, таких как Ethereum.
Чтобы решить эту проблему, мы решили разработать максимально легкий клиент. Наше ключевое наблюдение заключается в том, что репликация и хранение заголовков блоков в клиенте не требуется. Вместо этого мы делегируем задачу получения необходимых заголовков кроссчейна и доказательств транзакций объектам вне сети: Oracle и Relayer. Это приводит к тому, что LayerZero Endpoint’ы становятся невероятно легкими, что делает их рентабельными даже в заведомо дорогих цепочках, таких как Ethereum.
5 Case Study: LayerZero on EVM
В этом разделе мы кратко опишем детали того, как мы реализовали поддержку запуска LayerZero на Ethereum Virtual Machines (EVM). Для краткости мы сосредоточимся на аспектах системы, реализация которых может различаться в зависимости от цепочки, и подчеркнем, как наша реализация справляется с конкретными требованиями Ethereum-chain. Как упоминалось в разделе 4.1, текущая версия LayerZero полагается на Chainlink для предоставления службы Oracle и ожидает, что пользователи будут использовать предоставляемый нами Relayer сервис.
LayerZero packet: формат LayerZero packet зависит от исходной цепи и цепи назначения. Мы иллюстрируем точную компоновку LayerZero packet для EVM endpoint [19] на рисунке 5. Каждое поле функционирует следующим образом:
Стабильность транзакций на стороне отправителя: Чтобы гарантировать стабильность транзакции сообщения в исходной цепочке, мы полагаемся на неотъемлемые свойства децентрализованных сетей оракулов — Oracle уведомляет цепь назначения о конкретном заголовке блока только после того, как увидит некоторое количество block confirmations, что в случае Ethereum равно 15. Точнее говоря, Шаг 8 протокола LayerZero (раздел 4.2) будет выполняться только после того, как Oracle услышит 15 подтверждений блоков в цепочке A.
LayerZero Endpoint: Мы реализуем LayerZero Endpoint как серию смарт-контрактов, состоящую из четырех основных модулей, описанных в разделе 4.4. Для большинства существующих блокчейнов, включая блокчейн Ethereum, мы можем реализовать Communicator, Validator, и Network как отдельные смарт-контракты. Однако этот дизайн не исключает реализации LayerZero Endpoint в (будущих) цепочках с другими требованиями.
Library компонент LayerZero Endpoint является ключом к обеспечению поддержки блокчейна Ethereum в этом тематическом исследовании. Мы реализуем Library для обработки построения EVM-specific LayerZero packet, показанного на рис. 5, и обработки кодирования и декодирования адресной информации смарт-контракта EVM.
Дополнительная ответственность Library заключается в обработке фактических вычислений, связанных с проверкой подтверждения транзакции. Наша EVM Library обрабатывает Merkle-Patricia Tree validation для транзакций в блоке EVM, которую мы основываем на реализации Golden Gate с открытым исходным кодом [11].
6 Applications on LayerZero
Cross-chain decentralized exchange: Как кратко описано в разделе 2.2, LayerZero обеспечивает кросс-чейн DEX (кросс-чейн мост), который работает исключительно с нативными активами. В отличие от существующих проектов DEX, которые выпускают обернутые токены или ведут через промежуточные сайдчейны, DEX, построенная с использованием LayerZero для отправки сообщений между цепочками, может быть построена таким образом, что пулы ликвидности существуют в обеих цепочках, и пользователи могут просто вносить свои нативные активы в один пул и забирать нативные активы из другого. Примитив обмена сообщениями LayerZero достаточно мощен, чтобы обеспечить прямые мосты (ценообразование 1:1), AMMs (ценообразование ab = k) и любые другие производные (например, аналогичные ценообразованию Curve DAO). Гарантия valid delivery, которую предоставляет LayerZero, позволяет использовать широкий спектр приложений децентрализованного обмена.
Multi-chain yield aggregator: Текущие агрегаторы доходности обычно работают в рамках экосистем с одной цепью, а такие проекты, как Yearn Finance [27], позволяют агрегировать доходность с использованием стратегий одной цепочки. Одним из ключевых недостатков этих сингл-чейн систем yield агрегации является то, что они не могут воспользоваться какими-либо возможностями за пределами своей текущей экосистемы, потенциально упуская многие возможности. Yield агрегатор, который использует LayerZero для кросс-чейн транзакций, позволит реализовывать стратегии, которые используют лучшие возможности во всех экосистемах, расширяя доступ к возможностям с высокой доходностью и позволяя пользователям воспользоваться неэффективностью рынка. Мульти-чейн yield агрегатор будет строго лучше, чем сингл-чейн yield агрегатор, поскольку в худшем случае стратегия сведётся к использованию преимуществ только одной цепочки, а в лучшем случае у нее будет экспоненциально больше возможностей для выбора.
Multi-chain lending: Сегодня у пользователей нет простого способа воспользоваться возможностями сетей, в которых они не владеют активами. Например, предположим, что пользователь с активами, консолидированными в ETH, хочет воспользоваться возможностью на Polygon [17]. Их выбор состоит в том, чтобы либо (1) переместить всю свою базу активов в другую цепочку и конвертировать ее в желаемую валюту, либо (2) одолжить (lend) свои активы в Ethereum, занять (borrow) желаемый актив, а затем подключить этот актив к цепочке назначения. LayerZero включает протокол кредитования (lending protocol), который позволит пользователю хранить всю свою базу активов на месте в Ethereum, выдавать ее взаймы (lend), а затем брать взаймы (borrow) непосредственно в MATIC на Polygon. Это устраняет посреднические расходы, такие как комиссии за бридж и свап. Эти три примера представляют собой лишь небольшую часть многих возможностей, которые предоставляет LayerZero. Используя LayerZero, разработчики смогут писать свои приложения, не беспокоясь о различной семантике между транзакциями внутри и между цепочками, а пользователи смогут свободно перемещать ликвидность между цепочками. Мы с нетерпением ждем новых творческих приложений, которые разработает сообщество, учитывая мощь trustless кросс-чейн транзакций.
7 Conclusion
В этом документе представлены дизайн и реализация LayerZero, первой trustless омничейн платформы функциональной совместимости, которая не включает никаких промежуточных транзакций. Мы показали, что, используя два независимых, untrusted офф-чейн объекта, Oracle и Relayer, LayerZero может обеспечить valid delivery, не требуя дорогостоящей кросс-чейн репликации state machine или промежуточных токенов. Наш протокол разработан таким образом, что не исключает использования произвольных Relayer сервисов, что гарантирует отсутствие сговора между Relayer и Oracle. Протокол LayerZero обеспечивает нативные транзакции между поддерживаемыми цепочками, а новый дизайн LayerZero Endpoint можно легко расширить для поддержки любой цепочки. В дополнение к этому, наш Endpoint дизайн достаточно легкий, чтобы работать в дорогих цепочках уровня 1, таких как Ethereum, без непомерно высоких затрат. Мы представили пример того, как реализовать поддержку EVM-цепей в LayerZero, используя эталонную реализацию Relayer в сочетании с децентрализованной сетью оракулов Chainlink, чтобы обеспечить кросс-чейн транзакции через LayerZero.
LayerZero — это основа, которая соединит различные разрозненные блокчейн-экосистемы и позволит беспрепятственно перемещать ликвидность, данные и идеи между цепочками и сообществами.