🪐 Погружение в Cosmos (ATOM): как работает интернет блокчейнов
🪐 Погружение в Cosmos (ATOM): как работает интернет блокчейнов
Экосистема Cosmos позиционирует себя как интернет блокчейнов, иногда ее ещё называют блокчейном 3.0. Cosmos постоянно расширяется. Это сеть-эксперимент, в которой пользователи сами решают, как будет выглядеть экосистема в будущем. Экосистема Cosmos — это 50+ блокчейнов с приложениями, множество программируемых модулей и набор инструментов для разработчиков. Миссия проекта — создать механизм для взаимодействия большого числа блокчейнов.
Вместе с экспертом Денисом Фадеевым, создателем инструментов для построения блокчейнов Ignite и разработчиком экосистемы Cosmos, разбираем как работает и развивается один из лидирующих гигантов DeFi.
· Что такое Cosmos: введение и краткая история
· Базовые принципы работы Cosmos
· IBC (Inter-Blockchain Communication) Protocol
· Токеномика, валидация и гавернанс: зачем нужен ATOM
· Риски Cosmos: централизация, атаки
· Что такое Interchain Security
· Инструменты для разработчиков: Cosmos SDK, Ignite, CosmWasm, EVM
· Полезные ссылки
Что такое Cosmos: введение и краткая история
Cosmos — это децентрализованная экосистема независимых блокчейнов, которые могут масштабироваться и взаимодействовать друг с другом.
Существует несколько видов блокчейнов и стандартов протоколов — правил, по которым исполняется алгоритм и проходят транзакции. По аналогии с поездами, есть разные спецификации железных дорог, колеи отличаются шириной, есть поезда на воздушных подушках и т.д. Поезда ездят изолированно и не могут так просто перестроиться и поехать по другой дороге, для этого нужно их видоизменять. То же самое происходит с блокчейнами, которые существуют изолированно в рамках своих стандартов и правил. И Cosmos создан для того, чтобы соединить как можно большее число блокчейнов в одну сеть без необходимости применять дополнительные видоизменения, использовать кроссчейн-мосты, обернутые токены, атомарные свопы или другие способы связи разных сетей.
В основе Cosmos лежит протокол Tendermint Core, который применяет механизм устойчивого к византийским падениям консенсуса (Byzantine Fault Tolerant /BFT). Механизм консенсуса в Cosmos — Proof-of-Stake. Экосистема Cosmos все еще формируется и постоянно меняется, благодаря гибкости и модульности контрибьюторы могут легко разрабатывать и подключать новые модули. Основные модули: Cosmos Hub, IBC, SDK, Ignite, CosmWasm etc.
Проект начался с создания алгоритма Tendermint (whitepaper) Джэ Квоном, разработчиком из Кремниевой долины, в 2014 году. На применение PoS-системы его вдохновила работа 1988 года «Консенсус в присутствии частичной синхронии». Вместе с Итаном Бухманом (канадским дэвом) в 2015 году он основал Interchain Foundation и собрал средства ($17+ млн в ICO) для создания Cosmos Network, центральным элементом которой стал Cosmos Hub. Вначале были запущены Ethermint на Tendermint (реализация EVM — виртуальной машины Ethereum, — созданной с использованием Cosmos SDK), а также Basecoin, фреймворк для создания криптовалют на языке программирования Go (Golang). Фреймворк позволяет подключать различные программируемые плагины и модули, задавая множество гибких параметров настройки. Cosmos IBC запустили в 2021 году в рамках обновления Stargate.
Чтобы узнать больше об истории протоколов консенсуса и BFT, вы можете послушать подкаст соучредителя Tendermint Итана Бухмана.
Денис Фадеев: Я присоединился к экосистеме Cosmos примерно три года назад, начал разрабатывать продукты в Tendermint, написал первую версию и поддерживаю проект Ignite. Cosmos отличается от других экосистем — все блокчейны связаны, и каждое приложение может находиться на самостоятельном блокчейне со своим набором валидаторов, также могут быть блокчейны, на которых работают смарт-контракты. Топология Cosmos развивается самостоятельно, ее не было в дизайне — пользователи и разработчики, валидаторы со временем находят правильную форму, эта сеть развивается так, как хотят того ее участники.
В Polkadot, например, есть блокчейн в центре и парачейны вокруг. В отличие от Polkadot, Cosmos — это граф, где ноды соединены со всеми в виде колеса с узлом соединения в центре. В Polkadot один центральный узел соединён со всеми остальными, взаимодействие с парачейнами происходит через рилей-чейн, тогда как в Cosmos взаимодействие производит через хаб или напрямую. Если зайти на сайт Map of zones, там можно графически увидеть Cosmos — каждый блокчейн — это кружок, и он может быть соединен с любым количеством других кружков линиями, и эти линии, это и есть как раз — IBC-соединение. Другие блокчейны, как Ethereum или Near, имеют основной блокчейн и разные механизмы масштабирования. Я не буду сравнивать: что лучше, что хуже — есть разные юзкейсы. Если есть цель создать деньги для всех жителей планеты — это одна задача. Если есть задача, чтобы как можно больше независимых приложений были перенесены на блокчейн, то Cosmos подходит для многих юзкейсов. У каждого блокчейна есть свои преимущества и недостатки. Блокчейн, в любом случае, содержит в основе базу данных и поэтому бесконечно масштабировать его невозможно, точно так же невозможно, чтобы все сайты интернета хранились в одной базе данных. Ethereum масштабируется рекурсивно.
Базовые принципы работы Cosmos
Блокчейны в Cosmos можно условно разделить на хабы и зоны. Первые включают блокчейны с быстрой финализируемостью транзакций и подключают к себе большое количество сетей. Зоны — сети, которые соединяют хабы между собой. Они различаются стратегическим планированием соединений блокчейнов, что делает этот процесс гибким. Блокчейны на PoW, вроде Bitcoin или Ethereum, несовместимы с IBC напрямую, но подключаются через прокси-сети Peg Zones, в основе которого лежит протокол Peggy.
С точки зрения архитектуры блокчейны можно разделить на три концептуальных уровня:
- приложение: отвечает за обновление состояния с учетом набора транзакций, т.е. за обработку транзакций.
- Сеть: отвечает за распространение транзакций и сообщений, связанных с консенсусом.
- Консенсус: позволяет узлам согласовывать текущее состояние системы.
Денис Фадеев: Есть центральные блокчейны — люди пользуются ими больше, они со временем сами становятся хабами, потому что через них проходит большая часть трафика. Одно из преимуществ космоса — можно создать систему и посмотреть, к чему она приведет. Возникают хабы, но не обязательно ими пользоваться — так как когда блокчейнов не так много, они могут соединяться между собой без хабов. Системы, созданные вокруг одного блокчейна, который делится своей безопасностью с другими, и это единственный механизм масштабирования — ограничены 200 или 300 блокчейнами, иначе система начнет работать медленнее с увеличением количества блокчейнов. IBC не ограничивает количество блокчейнов. Сейчас есть около 50 самых активных блокчейнов, почти все соединены между собой и интересно, что будет в случае с 50К блокчейнами.
Приложений в Cosmos много. Есть такие, которые направлены на конечного пользователя — вроде NFT-проекта Stargaze, есть проекты более инфраструктурные. Akash — система для получения вычислительных ресурсов за токены и позволяет запускать свои ноды или приложения. В основном сейчас все проекты связаны с DEX или интероперабельностью блокчейнов. Токены — кровеносная система блокчейнов, поэтому сейчас в первую очередь развивают способы передачи и обеспечения ликвидности токенов. Появляется много кошельков. Без DEX пользователям было бы сложно ориентироваться в сети. Есть инструменты для разработчиков, системы для логистики, механизмы для клубов лояльности, лицензирования музыки и так далее. Проще всего зайти на карту блокчейнов. Много, чего еще не реализовано — очень много свободных ниш для разработчиков.
PoS наделяет сеть Cosmos частичной синхронностью, в отличие от блокчейна Биткоина, например, который полностью синхронный и имеет предел времени создания блока — 10 минут, что ставит ограничение на всех участников сети. Tendermint не требует фиксации времени, что делает реальную скорость сети выше без искусственной задержки протоколом. Также есть отличия поведения в ситуации опасности: PoW разделяется на две сети и реорганизуется, отдавая предпочтение валидации более длинной цепи и игнорируя транзакции второй ветки. Tendermint тоже разделяет сеть, но в критической ситуации останавливает валидацию блоков, пока 2/3+1 валидаторов не придут к консенсусу. Tendermint гарантирует финализацию блоков и необратимость транзакций, а также защищает от атак 51%.
Tendermint BFT — это решение, объединяющее сетевой и согласованный уровни блокчейна в общий движок, что позволяет разработчикам сосредоточиться на разработке приложений, а не на сложном базовом протоколе. В результате это экономит сотни часов времени разработки. Движок Tendermint BFT подключается к приложению с помощью протокола сокетов, называемого интерфейсом блокчейна приложений (ABCI). Этот протокол может быть реализован на любом языке программирования, что позволяет девелоперам выбирать язык, соответствующий их потребностям.
Денис Фадеев: Если команда решает создать свое приложение, она будет использовать три основных уровня стека. На самом низком уровне — это Tendermint core, который отвечает за нетворкинг, за хранение данных. IBC — это протокол по которому блокчейны соединяются в Cosmos. Tendermint написан на языке GO, это достаточно низкоуровневая система. Если проводить параллели с традиционными приложениями, то Tendermint core — это сервер. Если у вас есть идея NFT-маркетплейса, например, то вы пишете свой блокчейн, берете Tendermint core, но не изменяете его, а используете как готовую систему и пользуетесь Cosmos SDK, чтобы написать свой блокчейн. То есть логика блокчейна и все инструменты для передачи и хранения NFT будут написаны на языке GO через SDK.
Тот факт, что Tendermint core и Cosmos SDK — разделены позволяет писать, в теории, приложение на любом языке. Их можно использовать не только для блокчейн-приложений. Есть много примеров, когда компании использовали SDK или Tendermint core. Например, Polygon использует Tendermint, но вместо SDK у них есть своя разработка. Также Tendermint можно использовать для масштабирования Ethereum, и L2 решения тоже могут быть построены на нем, но никакого отношения к Cosmos не будут иметь. Блокчейн, который был написан на SDK, по умолчанию имеет свой набор валидаторов, произвольное количество. Затем когда он запущен, то может общаться с другими блокчейнами по IBC.
IBC (Inter-Blockchain Communication) Protocol
Протокол интероперабельности IBC — главный по связи в экосистеме Cosmos. Он отвечает за криптографическое подтверждение того, что сообщение было отправлено из одного блокчейна в другой. IBC может передавать любые данные, не только токены, что позволяет построить не только блокчейны, биржи, но и маркетплейсы и dApps в различных сферах: логистики, ритейла, финансов, экологии т.д.
Cosmos нацелен на горизонтальное масштабирование с помощью асинхронной гетерогенной сетевой модели, где блокчейны для конкретных приложений имеют различные модули и при необходимости могут взаимодействовать с другими цепочками.
IBC работает наподобие кроссчейн-мостов: лочит токены в блокчейне А, потом направляет в блокчейн Б подтверждение на валидацию и выпускает в блокчейне Б новые токены. Когда нужно отправить токены обратно: в блокчейне Б сжигается нужное количество, а в блокчейне А — токены размораживаются.
IBC соединяет разнородные суверенные блокчейны. Суверенный блокчейн — это блокчейн с собственным набором валидаторов. Во многих случаях важно, чтобы блокчейны были суверенными, поскольку валидаторы несут полную ответственность за изменение состояния. В Ethereum все приложения запускаются общим набором валидаторов. Из-за этого каждое приложение имеет только ограниченный суверенитет.
Денис Фадеев: IBC позволяет соединять блокчейны гораздо проще, если они написаны на Cosmos SDK. Но самое главное, что в его дизайне не нужно доверять никаким промежуточным участникам сети. Блокчейн общается напрямую с другим блокчейном. На самом деле грань очень размытая между IBC и мостами. И то, и другое — предназначено для передачи ценности. Какие бывают мосты: централизованные (сервер, который обрабатывает передачу данных в разных блокчейнах, это самый простой вариант. В каком-то смысле можно рассматривать биржи как такие сервера, они ведь тоже соединяют разные блокчейны), есть мультисиг-мосты, которые соединяют блокчейны напрямую, но когда ценность передается напрямую через мультисиг-мосты, нужно доверять тому, что система мультисигов не будет сломана. В случае с IBC — никому доверять не нужно. Пакет данных передается через рилееры. Им доверять не нужно, они просто выполняют функции передачи байтов с одного блокчейна на другой. Рилееров может быть любое количество. Рилееры оперируются на волонтерской основе, но в ближайшее время будет добавлен механизм монетизации валидирования рилееров.
Токеномика, валидация и гавернанс: зачем нужен ATOM
В настоящее время экосистема Cosmos обеспечивает безопасность цифровых активов на сумму более $223,5 млрд, включая Crypto.com Coin, Juno, Osmosis и Cosmos Hub, что делает ее второй по величине экосистемой блокчейнов после Ethereum с точки зрения ценности.
Cosmos Hub — первый блокчейн в экосистеме Cosmos, его нативный токен — ATOM. Держатели токена могут делать вклад в безопасность и управление Cosmos Hub, делегировать ATOM одному или нескольким из 175 валидаторов в блокчейне Cosmos Hub, голосовать за изменения и вносить в стейкинг.
Чтобы запустить полную ноду основной сети Cosmos Hub, нужно сначала установить gaiad. Затем следовать инструкции.
Безопасность консенсуса относится к тому факту, что каждый честный узел должен видеть одно и то же состояние блокчейна в одно и то же время. Когда узлы получают блоки транзакций, они проверяют действительность, что означает, что каждая транзакция действительна и что сам блок был проверен более чем ⅔ валидаторами. Безопасность будет гарантирована до тех пор, пока менее трети валидаторов являются византийскими, то есть злонамеренными.
Cosmos имеет квадратичный обмен сообщениями между узлами, следовательно, ограниченное число участников (подтверждающих) и может завершать один блок за раз. Количество активных подтверждающих составляет 175 в Cosmos, 197 в IRIS, 135 в Osmosis. В настоящее время вам необходимо минимум 36,500 ATOM, чтобы быть активным подтверждающим в Cosmos Hub. Общая стоимость стейков — ~1,8B.
Денис Фадеев: Cosmos появился из блокчейна Cosmos Hub еще до того, IBC начал использоваться в продакшене. ATOM на тот момент не имел полезности, кроме того, что это был стейкинг-токен. После запуска IBC появилось много блокчейнов, которые соединяются с Cosmos Hub, у каждого есть свои токены: один (Juno) или несколько (Osmosis). В зависимости от того, какие модули стоят на блокчейне, это влияет на полезность токена. Сейчас есть только стандартные модули, которые реализуют PoS, передавать токены внутри сети и между сетями, голосовать. Но со временем добавится больше ютилити для токена с добавлением функционала всему Cosmos Hub.
Пользователи принимают решения по управлению блокчейном. Можно внести предложение в свободной форме в форме текста или может быть пропозал по передаче токенов из комьюнити-пула на какие-то цели, также есть пропозалы, которые меняют параметры каждого модуля сети, такие параметры как ежегодная эмиссия, стоимость пропозалов, количество валидаторов в активном сете и т.д. Любые параметры можно изменять на лету путем голосований. Делегирование происходит не через гавернанс, а через транзакцию валидирования. Обычно у валидатора указано, на каком месте они находятся, какие сила голоса и комиссия. Пользователь также смотрит не на количественные показатели, а на качественные — что делает валидатор для сети.
Чтобы стать валидатором блокчейнов в Cosmos, нужно взять исходный код блокчейна, собрать ноду. Например, можно взять блокчейн Cosmos Hub — проект Gaia, собрать исходный код и сделать бинарный код, запустить локально, взять состояние блокчейна (когда он последний раз обновлялся) и список нод, с которыми нужно соединиться. Чтобы стать валидатором, нужно отправить транзакцию — валидировать себе токены, и чтобы войти в активный сет нужно, чтобы валидированных токенов больше, чем у последнего валидатора. То есть запустить локальную ноду, сделать транзакцию и привлечь достаточно токенов. И тогда ваш валидатор может быть выбран валидатором следующего блока.
Риски Cosmos: централизация, атаки
Первые десять валидаторов сети Cosmos держат почти 50% ценности сети, что создает риски централизации и возможность сговора крупных валидаторов.
Денис Фадеев: опасность централизации власти в руках небольшого количества валидаторов — это ситуация которую нужно разрешать путем продвижения валидаторов, которые находятся не в первой десятке. Важно, чтобы пользователи понимали пользу валидаторов, которые ответственно относятся к своей работе, держат ноды онлайн, не пропускают блоки, голосуют через гавернанс и делают вклад в развитие сети. Очень часто валидаторы, это не просто команды, которые поддерживают сервер, но и также разработчики, помогающие развивать Cosmos SDK, Tendermint и другие модули, пишут документацию, записывают видео и по-другому развивают проект. Есть еще другой способ. Можно переписать Cosmos SDK, чтобы он контролировал валидаторов, но сейчас решения в руках пользователей — какой блокчейн они хотят видеть. Ценность централизованного блокчейна значительно снижается, эта система будет очень хрупкая и уязвимая.
Уязвимости связаны с неравномерным распределением токенов. Сложности с координацией валидаторов. Если валидаторы, например, договорились сделать нулевую цену за газ, это с одной стороны очень удобно, но с другой стороны блокчейн могут легко заспамить. У Osmosisa в начале цена за газ была ноль, но со временем они это исправили. Риски могут быть связаны с процессом обновления — если добавляются модули, которые не были проверены. Поэтому по каждому модулю проходят голосования.
Каждый блокчейн на Cosmos SDK имеет свой функционал под конкретное приложение. Когда человек добавляет Crescent в свой кошелек Kepler, например, он знает, зачем ему нужен именно это блокчейн и что он делает. И тут начинаются проблемы, потому что не все пользователи понимают, с чем имеют дело. Еще одна проблема — доверие к разработчикам смарт-контрактов. Пользователь не может проверить исходный код. Большая часть уязвимостей связана с тем, что когда блокчейн создан под конкретное приложение — вероятность атаки гораздо меньше и время между обновлениями занимает несколько месяцев, люди успевают за это время почитать код, убедиться, что там нет ошибок и механизм не позволит одному пользователю отправить токены в обход системы. С аудитом смарт-контрактов сложнее, но преимущество в том, что любой человек может экспериментировать с любой идеей. Сообщество разработчиков все еще пытается выяснить оптимальный путь разработки. Один из вариантов — тестировать смарт-контракты как proof-of-concept на Juno, например, а потом можно запустить это в виде отдельного блокчейна.
Что такое Interchain Security
Разработчики Cosmos придумали функцию шеринга валидаторов и назвали сначала Shared Staking, а потом переименовали в Interchain Security. Вообще, Interchain Security упоминается многими различными терминами: Shared Security, Cross Chain Validation, Cross Chain Collateralization, Shared Staking, and Interchain Staking. Просто говоря, Interchain Security позволяет сети поставщиков (например, Cosmos Hub) отвечать за создание блоков для цепочки потребителей. Он делает это, разделяя набор валидаторов, отвечающих за создание блоков. Участвующие валидаторы будут запускать два узла, один для Cosmos Hub и один для потребительской сети, и получать комиссионные и вознаграждения в обеих цепочках.
Денис Фадеев: в одном из ближайших обновлений будет добавлен Interchain Staking — фактически позволит Cosmos Hub делиться своими валидаторами с другими блокчейнами, которые только запускаются. Это позволит командам, которые занимаются разработкой не искать валидаторов, а использовать сет валидаторов Cosmos Hub. У Cosmos HUB их 175. В первой версии Interchain Security можно перенять всех валидаторов. Будет новый тулкит для гавернанс-пропозалов, нужно будет проголосовать, чтобы Cosmos Hub валидировал другой блокчейн. Если пропозал пройдет, то этот блокчейн будет запускаться с генезис-файлом и уже включенными валидаторами Cosmos Hub. Информация о подписях будет передаваться через IBC.
Инструменты для разработчиков: Cosmos SDK, Ignite, CosmWasm, EVM
Экосистема Cosmos, как мы уже сказали, — это набор модулей и тулкит для разработчиков, который позволяет писать блокчейны и смарт-контракты. Можно создать свою виртуальную машину и сообщество валидаторов или проверить идею на жизнеспособность.
Денис Фадеев: есть три разных инструмента, чтобы писать собственные приложения в Cosmos. Изначально я занимался разработкой Ignite (Starport), это инструмент, который позволяет разработчикам быстро и просто создавать блокчейны и добавлять функционал, применять рилееры, чтобы соединять блокчейны.
Cosmos SDK это модульный фреймворк. Каждый функционал блокчейна работает в виде отдельных модулей, которые можно отключать, добавлять новые и тд. Если вы запустите блокчейн, то блокчейн по умолчанию может общаться с другими блокчейнами. Что значит общаться — в первую очередь передавать ценность, если проводить параллель с традиционными web3-приложениями, чтобы одно веб-приложение делало запросы к другому.
Но на Cosmos SDK были также разработаны модули, которые позволяют писать контракты на Rust. Один из таких модулей — CosmWasm. Он включает в себя виртуальную машину Web Assembly. У смарт-контрактов на CosmWasm есть преимущества и недостатки. С помощью Cosmos SDK и Ignite можно писать блокчейны. Приведем пример с браузером. Можно написать браузер, а смарт-контракты это как скриптинг. То есть по аналогии можно написать свой браузер и он будет работать по любым правилам. Не всем браузерам нужны скрипты. В некоторых блокчейнах нет поддержки смарт-контрактов и CosmWasm, просто потому что они там не нужны. Например, на Crescent нет CosmWasm. На Juno любой человек может создать смарт-контракт и отправить, на Osmosis permissionless смарт-контракты, — есть white list контрактов, которые будут загружены. Есть также модуль EVM на Evmos, он позволяет писать контракты на Solidity.
Есть несколько путей, стать разработчиком блокчейнов в Cosmos: если у вас есть dApp на Solidity, то самый короткий путь — мигрировать его на Evmos. Если вы хотите поэкспериментировать с идеей и вам не принципиален язык, то смарт-контракты на Rust — самый простой путь. В Cosmos — низкие комиссии, что позволяет экспериментировать и запустить свои dApps, протестировать на пользователях. Rust достаточно интересный, хоть и сложный язык. Информации очень много: на tutorials.cosmos.network есть очень большой курс, который описывает все этапы создания блокчейна на примере шахмат. Есть инструкции, как создать свой DEX и соединить блокчейны через IBC. На Cosmos можно получить то, что в других экосистемах получить довольно сложно — полностью независимый блокчейн или приложение с настраиваемыми параметрами.
Полезные ссылки:
Как разрабатывать приложения на SDK — уроки
Глубокий разбор безопасности Cosmos
*все изображения в материале взяты из ресурсов сети Cosmos в открытом доступе.