Как функционирует Aurora Relayer 2.0?
В мире блокчейна ретрансляторы выступают в роли оффчейн посредников для обмена данными и транзакциями между сетями и/или слоями блокчейна. В основном они используются в децентрализованных финансовых приложениях, для межсетевой коммуникации и в решениях Layer 2, например, сайдчейнах или каналах состояния. За эти действия они могут взимать плату за предоставляемые ими услуги, стимулируя тем самым эксплуатацию и обслуживание собственной инфраструктуры.
Изначально разработанная внутри NEAR, Aurora EVM является официальной EVM для экосистемы NEAR. Модель функционирует на базе SputnikVM и обеспечивает совместимость 1:1 с протоколом Ethereum. Данная совместимость между Aurora и Ethereum достигается с помощью Aurora Relayer — совместимого с JSON-RPC сервера с Web3 API Ethereum для движка Aurora. Сервер имеет собственную встроенную базу данных для обслуживания различных способов чтения и индексер, который непрерывно следит за ходом событий и индексирует блоки, транзакции и журналы в эту внутреннюю базу данных.
Релеер 2.0
Как упоминалось выше, релеер Aurora состоит из двух основных компонентов.
Во-первых, это реализация спецификации JSON-RPC Ethereum — стандартного набора методов, которые должны использовать все клиенты, и канонического интерфейса между пользователями и сетью Ethereum на виртуальной машине Ethereum Virtual Machine (EVM) от Aurora, также известной как движок Aurora Engine.
Во-вторых, индексер, осуществляющий непрерывное считывание сети NEAR в поисках блоков и другой необходимой информации, имеющей отношение к Aurora.
Первая версия релеера была развернута в октябре 2021 года. Разрабатывался он на Typescript и JavaScript. Версия была устаревшей и заменена версией 2.0, в которой сервер JSON-RPC написан на go-lang, а индексатор разработан на go-lang и rust.
Релеер 2.0 был разработан в связи с необходимостью перехода с Javascript на более надежный язык, такой как golang, разработанный для работы в условиях параллельного обмена данными и идеально подходящий для управления множеством соединений и ресурсоемких задач, что делает его очень подходящим для высокопроизводительных RPC-систем, необходимых в блокчейне.
Вдобавок, потребовалась миграция на более эффективную систему базы данных, поэтому она была перенесена с PostgreSQL на badger-db - встраиваемую базу данных ключевых значений.
Результатом стал ретранслятор с более высокой скоростью исполнения, более низким потреблением машинных ресурсов и меньшей латентностью данных, который легче разрабатывать, отлаживать, оптимизировать и развертывать.
Рассмотрим в общих чертах некоторые внутренние компоненты ретранслятора.
JSON-RPC
Написанный на языке go-lang, он предоставляет конечные точки, которые реализуют методы протокола JSON-RPC Ethereum, широко известного как Web3 API. Данное промежуточное ПО опирается на систему обмена сообщениями, которая пересылает вызовы JSON-PRC в сеть NEAR и наоборот. Исходный код открыт и доступен для разработчиков, сторонников и всех желающих строить, запускать и экспериментировать с ним. Перечень всех реализованных методов и исходный код сервера можно найти в репозитории GitHub.
Кроме того, есть автономная версия, доступная по данной ссылке.
База данных
Встраиваемые базы данных — оптимальный выбор для приложений, которым не требуется сложное планирование запросов, так как они реализуют легкое решение с небольшим количеством зависимостей. Также они хорошо подойдут для приложений, которым выгодно локальное хранение данных с низкой латентностью и необходим единый процесс параллельного выполнения операций чтения и записи без внешней координации.
BadgerDB — используемая Aurora база данных — представляет собой встраиваемую, постоянную, быстродействующую базу данных "ключ-значение" (KV), написанную на чистом Go.
Это идеальное средство для серверов JSON-RPC, так как большинство методов захватывают данные по ключу, получая при этом преимущества от лучшего сжатия данных и более низкой задержки. Наряду с этим, другие команды в самой Aurora также используют ее, поэтому необходимые знания и наработки уже имелись.
Индексер
Новый встроенный индексер непрерывно считывает файлы JSON, сгенерированные Aurora Refiner, которые пополняют локальную базу данных. Рефайнер позволяет пользователям загружать все блоки NEAR и получать всю информацию, относящуюся к Aurora. Блоки NEAR могут быть получены из двух различных источников: "озера данных NEAR" — репозитория блоков и событий сети NEAR в виде JSON-файлов на AWS — и архивного экземпляра NEARCore.
Инфраструктура Aurora Relayer в общих чертах реализует индексер блоков NEAR, индексер блоков из tar-резервных копий и индексер блоков предыстории (высота < 34 млн.).
Открытый исходный код репозитория для Aurora Refiner можно найти по этой ссылке.
И многое другое...
Вдобавок, из-за особенностей инфраструктуры релеера Aurora и его взаимодействия с сетью NEAR, появилась возможность модернизировать внутреннюю инфраструктуру для использования релеера с дополнительными возможностями, позволяющими реализовать — среди прочего — сложные многопользовательские системы учета на основе определенных правил, поддерживающих практически любые возможные способы учета транзакций, обеспечения цен на газ, транзакций до или после выполнения и т.д.
Поэтому можно подключить пользователей с предоплатой, предоплаченным газом, без газа и многими другими вариантами распределения газа и платы между ретрансляторами, пользователями и владельцами смарт-контрактов. Таким образом, любой желающий стать ретранслятором получит доступ к более сложным экономическим механизмам для своих пользователей или от имени других, действуя, таким образом, так же, как это делают бандлеры ERC-4337, т.е. как валидаторы, получающие стимулы за завершение транзакций.
Перспективы пользовательского опыта
За счет повышения эффективности и надежности, а также добавления инновационных функций в релеер, создатели и разработчики Aurora смогут предложить более быстрые, надежные приложения и значительно улучшить пользовательский опыт, в том числе устранить плату за каждую транзакцию и отделить аккаунты от ключей.
По этой причине Aurora Relayer представляет собой революционную инновацию в мире децентрализованных блокчейн-технологий.
К тому же, по мере того, как наблюдаем стремительный прогресс и растущее внедрение, Aurora Relayer закладывает основу для более взаимосвязанного и эффективного будущего с потенциалом раскрытия беспрецедентных уровней удобства использования, масштабируемости, безопасности и экономической эффективности, что в конечном итоге способствует созданию более доступного ландшафта для всех типов пользователей.
Источник: https://dev.aurora.dev/posts/aurora-relayer-2-0