Cosmos IBC
Как блокчейны соединяются между собой?
Вспомним что Cosmos это децентрализованная сеть независимых параллельных блокчейнов (интернет блокчейнов). Блокчейны в Cosmos можно условно разделить на хабы и зоны.
- Хабы: это специальные блокчейны, которые не хранят никакой ценности, а только служат для установки соединений между другими сетями. Хабы являются центральными узлами в сети Cosmos, которые обеспечивают передачу сообщений между различными зонами.
- Зоны: это независимые блокчейны, выполняют определенные функции в сети Cosmos. Зоны могут быть подключены к одному или нескольким хабам с помощью Cosmos IBC. Зоны могут обмениваться информацией друг с другом через хабы.
Блокчейны на PoW, вроде Bitcoin или Ethereum (до перехода на PoS), несовместимые с IBC напрямую, могут подключиться с помощью Peg Zones, в основе которого лежит протокол Peggy.
Cosmos IBC
Cosmos IBC - это протокол с открытым исходным кодом, предназначенный для облегчения передачи информации между отдельными распределенными реестрами и разработанный для соединения независимых блокчейнов. Протокол Inter-Blockchain Communication (IBC) облегчает обмен данными и коммуникацию между различными хабами и зонами. Это цифровая связь между несколькими блокчейн-сетями, позволяющая безопасно взаимодействовать и обмениваться информацией или активами.
IBC работает наподобие кроссчейн-мостов: лочит токены в блокчейне А, потом направляет в блокчейн Б подтверждение на валидацию и выпускает в блокчейне Б новые токены. Когда нужно отправить токены обратно: в блокчейне Б сжигается нужное количество, а в блокчейне А — токены размораживаются.
Ограничения Cosmos IBC
Хотя Cosmos горизонтально масштабируется с помощью IBC, существуют некоторые ограничения.
Во-первых, токены, отправленные через IBC, являются так называемыми "зависимыми от пути". Это означает, что один и тот же актив, отправленный по другому пути, не является взаимозаменяемым. Давайте рассмотрим небольшой пример: Пользователь A направляет USDC из сети A → B → C → D. Пользователь B из сети A → C → B → D. Оба этих пользователя теперь имеют свои USDC из сети A в сети D, но они не являются взаимозаменяемыми, так как шли разными путями. Когда сеть получает актив от другой сети, она выпускает токен "расписку", но чем больше вы перемещаете эти расписки через другие сети, тем больше расписок вы выпускаете поверх других расписок. Пока это не является большой проблемой, но в будущем, по мере увеличения количества соединений.
Во-вторых, эта модель имеет некоторые последствия для безопасности токенов. Допустим, у нас есть 3 сети: A, B и C. A и B доверяют друг другу и открыли каналы между собой. B также открыл канал с C, считая, что связь с ними имеет ценность. A, с другой стороны, не доверяет сети C и поэтому не открывает с ней связь. Поскольку у B есть соединение с C, токены от A все равно могут оказаться на C и будут принимать защиту сети C в течение всего времени, пока они там находятся/привязаны. Если валидаторы сети C вступят в сговор, они могут затребовать все привязанные токены сети A, которые оказались в сети C, себе (украсть привязанные активы на C → передать обратно в B → передать обратно в A и затребовать). Это означает, что зоны в экосистеме могут контролировать безопасность своих токенов, так как значение имеют не только их связи, но и соседи по этим соединениям (и так далее). В идеале, A и B будут коллективно решать, достоин ли C подключения.