ELI5: Что такое IBC?
Рождение Биткойна привело к кембрийскому взрыву блокчейнов с различными дизайнерскими решениями и вариантами использования. Хотя эти распределенные реестры служат разным целям, они существовали (и все еще существуют в определенной степени) как хранилища с ограниченным значимым взаимодействием.
Подобно Интернету, который позволяет различным типам компьютеров в разных частях мира общаться друг с другом, аналогичная технология, действующая как соединительная ткань между блокчейнами, необходима для накопления истинной стоимости. Протокол Inter-Blockchain Communication (IBC) призван служить этой цели.
IBC — это универсальный протокол взаимодействия, который позволяет двум разным блокчейнам взаимодействовать друг с другом. IBC гарантирует надежную , упорядоченную и аутентифицированную связь.
Возможно, одним из самых важных свойств IBC является минимизация доверия. В блокчейнах свойство минимизации доверия неотъемлемо связано с безопасностью. Ни одна распределенная система не является полностью «ненадежной». Таким образом, вопрос безопасности сводится к тому, кому или чему доверяют, и как это доверие может быть нарушено, т. е. что нужно, чтобы доверенный объект был поврежден?
В этом смысле, в отличие от большинства связующих решений, IBC не использует доверенных третьих лиц. Это означает, что если вы доверяете двум конкретным цепочкам использовать предоставляемые ими функции (и по умолчанию их механизмы консенсуса), то при использовании IBC для взаимодействия между указанными цепочками не требуется дополнительного предположения о доверии.
IBC — это больше, чем просто мост, облегчающий передачу токенов. Это протокол передачи сообщений общего назначения . Это означает, что любая форма данных может быть передана через IBC.
Как работает IBC?
Чтобы понять, как работает IBC, важно разделить два разных уровня IBC — 1) транспортный уровень и 2) прикладной уровень.
Транспортный уровень
Сообщения, передаваемые через IBC, передаются в пакетах данных . И транспортный уровень отвечает за транспортировку , аутентификацию и упорядочение этих пакетов данных.
Транспортный уровень ничего не определяет о том, какими должны быть данные в пакетах или как они должны интерпретироваться принимающей цепочкой. С точки зрения транспортного уровня информация в пакетах данных представляет собой просто случайные байты.
Ключевыми компонентами транспортного уровня являются легкие клиенты, ретрансляторы, соединения и каналы.
Легкий клиент — это облегченное представление блокчейна. В отличие от полной ноды , легкие клиенты не хранят всю историю всех сообщений, содержащихся в блокчейне. Они также не выполняют транзакции. Скорее легкие клиенты предназначены для подключения к полному узлу и проверки заголовков блоков (сводка данных, содержащихся в блоке). Это позволяет легким клиентам быть эффективными с точки зрения хранения и вычислений.
Два независимых блокчейна A и B , взаимодействующие через IBC, имеют легкие клиенты цепочки контрагентов. Это означает, что A имеет облегченный клиент в своем блокчейне, который действует как облегченное представление блокчейна B. Когда A хочет передать определенное сообщение «X» с B , он отправляет заголовок блока, в котором существует это сообщение, вместе с подтверждением передачи этого сообщения B. Доказательство фиксации используется для проверки наличия или отсутствия определенного сообщения на A . Используя заголовок блока и доказательство, B криптографически проверяет, чтоA действительно выполнил X . Именно это использование легких клиентов в IBC позволяет блокчейнам обмениваться сообщениями друг с другом без необходимости в доверенной третьей стороне.
Но A и B напрямую не отправляют эти сообщения/пакеты данных друг другу. Вместо этого, когда A хочет отправить сообщение B , он фиксирует или сохраняет хэш пакета данных, содержащего сообщение, в своей машине состояний . Ретрансляторы , которые являются процессами вне цепочки, постоянно наблюдают за такими сообщениями. Когда они видят, что A зафиксировал сообщение, предназначенное для B , в своей машине состояний, они просто берут это сообщение и передают его B. Обратите внимание, что ретрансляторы не имеют разрешений и поэтому могут быть запущены кем угодно.
Соединения отвечают за соединение легких клиентов в двух разных цепочках. А каналы — это каналы для передачи пакетов между модулями в этих разных цепочках. Следовательно, в то время как соединения зависят от цепочки, каналы зависят от модуля. Каждый конец канала имеет уникальный идентификатор канала (и идентификатор порта), который используется для точной маршрутизации пакетов между двумя модулями.
Прикладной уровень
Прикладной уровень — это то, с чем взаимодействуют конечные пользователи. Он состоит из различных приложений, которые используют транспортный уровень для построения поверх него. Транспортный уровень не определяет, как должны интерпретироваться пакеты данных. Эту роль выполняет прикладной уровень.
IBC поддерживает различные приложения, такие как взаимозаменяемые/невзаимозаменяемые передачи токенов, межсетевые каналы оракулов, межсетевые учетные записи , межцепочечные запросы, промежуточное ПО для оплаты (для стимулирования ретрансляторов) и т. д.
Например, приложение уровня IBC для передачи токенов, называемое Interchain Standard 20 (ICS 20), указывает, как должны быть структурированы пакеты данных и как они должны интерпретироваться принимающими цепочками. В случае передачи взаимозаменяемых токенов пакеты данных содержат информацию об отправителе, получателе, сумме и номинале (деномин IBC). Поле denom отслеживает путь, по которому прошел конкретный токен, чтобы достичь определенной цепочки. Логика относительно того, как должны действовать пакеты, также определяется ICS 20.
Простая аналогия, которая может быть полезна для понимания IBC, — это система доставки почты. Когда вы отправляете кому-то письмо, вы отправляете его через почтовую службу, которая забирает конверт с письмом от вас и кладет его в почтовый ящик получателя. Затем получатель открывает указанный конверт и читает ваше письмо. Транспортный уровень IBC можно рассматривать как почтовую службу. Почтовая служба не сообщает вам, каким должно быть содержание письма или как получатель должен интерпретировать ваше сообщение.
Не знают они и содержимого конверта. Он выполняет только действие по сбору конверта из точки A и отправке его в точку B. Сам конверт можно рассматривать как пакеты IBC, которые отправляются из одной цепочки в другую. И на этом конверте вы бы указали адрес получателя. Это похоже на то, как пакеты IBC содержат информацию о том, кто отправил пакет (указывается идентификатором канала) и кому он предназначен (указывается идентификатором канала контрагента). В конце концов, именно получатель (приложение) отвечает за открытие конверта (пакета данных) и интерпретацию содержимого письма.
Для чего можно использовать IBC?
Помимо передачи взаимозаменяемых токенов, два других приложения уровня IBC включают Interchain Accounts и Interchain Security .
Учетные записи Interchain облегчают взаимодействие цепочки к цепочке, оставаясь при этом в едином интерфейсе. Фактически это означает, что любые действия, такие как переводы, размещение ставок или голосование по предложениям по управлению, которые могут быть выполнены на B (называемом «хост-цепочкой»), могут выполняться на A (называемом «цепочкой контроллера»). Учетные записи Interchain значительно повышают компонуемость в Interchain за счет улучшения взаимодействия с пользователем.
Interchain Security — это версия общей безопасности Cosmos Ecosystem. Это позволяет блокчейну арендовать безопасность у другой цепочки полностью добровольно. Это особенно полезно для новых сетей, которые могут использовать безопасность, предлагаемую уже установленной сетью, такой как Cosmos Hub. Interchain Security устраняет необходимость для цепей запускать собственный набор валидаторов.
Объем приложений, которые могут выполняться с использованием IBC в качестве базового примитива, постоянно растет. Передача NFT между цепочками и запросы между цепочками (где одна цепочка может считывать состояние из другой цепочки) в настоящее время разрабатываются и скоро будут готовы к производству.
Какую проблему решает IBC?
Одним словом, IBC решает проблему разрозненных блокчейнов с ограниченным взаимодействием. Взаимодействие между блокчейнами необходимо для максимального накопления стоимости.
Каждый блокчейн предназначен для одного или нескольких специализированных вариантов использования. Если эти варианты использования нельзя использовать в нескольких блокчейнах, это серьезно снижает их полезность. Прорыв, который обеспечил Интернет, заключается в том, что информация может легко перемещаться по разным частям мира. Точно так же полезность различных блокчейнов должна быть свободно доступна на нескольких платформах.
Например, пользователи могут захотеть использовать стейблкоины из одной цепочки блоков для получения дохода через пул ликвидности (LP) на децентрализованной бирже (DEX), которая существует в другой цепочке блоков. Или они могут захотеть использовать свойства сохранения конфиденциальности, которые предоставляет другой блокчейн. Для реализации этих и других вариантов использования требуется функциональная совместимость между цепочками.
IBC не только решает проблему функциональной совместимости, но и делает это с минимальным доверием, безопасным, расширяемым и универсальным способом.
Как я, как разработчик приложений, могу использовать IBC?
Модульная природа Cosmos SDK избавляет разработчиков от необходимости заниматься некоторыми уровнями абстракций, такими как легкие клиенты, соединения, проверка доказательств и т. д. Для разработчиков наиболее важными требованиями и функциями, с которыми следует ознакомиться, являются каналы и порты . Для получения более подробной информации о IBC вы можете обратиться к нашему порталу для разработчиков .
Если вы строите свой блокчейн с помощью Cosmos SDK, здесь подробно описаны необходимые шаги для включения IBC для модуля SDK . Вы также можете подать заявку на участие в программе Interchain Builders Program, инициативе ICF, чтобы получить поддержку в Cosmos.
Об авторе: этот пост был написан Ади Рави Раджем , аналитиком протокола IBC в Interchain GmbH.

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































