Хотите всегда оставаться в курсе событий? Подписывайтесь на @cryptochan и получайте новости в нашем Telegram канале.
×
Интерфейс Rosetta API от Coinbase интегрирован в Cosmos SDK
Rosetta API, разработанный Coinbase, представляет собой открытый стандарт, предназначенный для упрощения развертывания блокчейна и взаимодействия с ним. Спецификации Rosetta API предлагают общий интерфейс для взаимодействия с блокчейнами разных типов. Поскольку каждый блокчейн имеет свой собственный механизм для подписания транзакций, формирования запросов, запроса балансов и других операций, кошельки и биржи, такие как Coinbase, постоянно разрабатывают и поддерживают программное обеспечение, необходимое для взаимодействия с этими технологиями. Поддержка API Rosetta в Cosmos (ATOM) была реализована для того, чтобы разработчики блокчейнов могли придерживаться или создавать прокси, который соответствует спецификациям Coinbase. Как Rosetta облегает жизнь разработчика? Rosetta - единственная поддерживаемая спецификация для взаимодействия с приложениями блокчейна, а Coinbase - одна из крупнейших бирж криптовалют в мире. Интеграция кошелька и биржи с Coinbase становится стандартом инфраструктуры блокчейнов. Архитектура Cosmos SDK делает возможной интеграцию Rosetta API, добавляя только одну строку кода. Путем интеграции Rosetta API в ваше приложение блокчейна на Cosmos SDK биржи могут размещать вашу криптовалютную монету. Интеграция кошельков и других сервисов, которые полагаются на Rosetta API для взаимодействия с цепочкой, также выигрывают от ее интеграции. Если вы уже используете Rosetta API с любым другим блокчейном, вы найдете его особенно полезным и простым для интеграции с приложениями на основе Cosmos SDK. Сложности интеграции Интеграция Rosetta API в Cosmos SDK выявила интересные проблемы. В частности, спецификации Rosetta API ожидали, что реализация будет работать как блокчейн UTXO (неизрасходованный вывод транзакции). В блокчейнах на основе UTXO транзакции в каждом блоке содержат набор входов (полученных монет) и выходов (потраченных монет). В этом случае запрос учетной записи на заданной высоте X возвращает сумму входов и выходов ее адреса, которая вычисляется путем запроса входов и выходов транзакции этого адреса от блока 0 до блока X. Переходы между состояниями для блокчейнов, запущенных с помощью Cosmos SDK, происходят на уровне транзакции, а также на этапах начального и конечного блоков. Из-за этой разницы запросы транзакций и вычисление потраченных монет не давали полного представления о фактических изменениях баланса и предложения. Во вселенной Cosmos SDK вознаграждения зарабатываются путем стекинга, а такие действия, как делегирование, добавляют дополнительные параметры к способам запроса балансов и поставок. «Чтобы интегрировать Rosetta API в Cosmos SDK, мы изменили Cosmos SDK, чтобы генерировать события для каждого изменения поставки и баланса. Эти события генерируются независимо от того, где (какой обработчик какого модуля) и когда (DeliverTx, BeginBlock, EndBlock)», - пишут разработчики Cosmos. Вторая задача заключалась в том, чтобы позволить Rosetta API поддерживать все приложения блокчейна и поддерживаемые ими сообщения. «Поддержки только обычных действий, таких как отправка монет, делегирование и других, было недостаточно. Мы хотели, чтобы полный набор сообщений для всех приложений блокчейна Cosmos SDK можно было запрашивать и отправлять с помощью Rosetta API», - говорится в сообщении. Что дальше? Текущая реализация Rosetta API в Cosmos SDK поддерживает один блокчейн за раз и требует информации о времени компиляции (реестр интерфейса и кодек). Как всегда, в Cosmos SDK происходят постоянные разработки и усовершенствования функций. Планируется, что будущие реализации позволят отражать клиентов, которые способны создавать в реальном времени кодек и реестр интерфейсов. «Мы все с нетерпением ждем возможности использовать конечные точки Rosetta API для запроса и одновременной записи txs в несколько цепочек во время выполнения, без необходимости использования кодеков для конкретных цепочек», - пишут разработчики.