IBC Relayers
Работа ретранслятора на Namada
В этом документе описывается работа ретранслятора для протокола межблокчейн-коммуникаций (IBC) с Namada. В этой документации рассматривается возможность создания соединений по протоколу IBC, а также настройка локальных экземпляров Namada для целей тестирования.
В этом документе описаны основные шаги по использованию IBC с Namada:
Описанное ниже предназначено для тех, кто хочет организовать ретрансляцию IBC-сообщений между двумя цепочками Namada. Разумеется, это можно сделать между любыми двумя IBC-совместимыми цепочками (например, цепочкой Cosmos). В этом случае для осуществления передачи пакетов необходимо, чтобы узел работал как на цепочке назначения, так и на цепочке источника. Ниже мы рассмотрим, во-первых, как включить такое соединение между двумя уже существующими цепочками с помощью Hermes, а во-вторых, как настроить два локальных экземпляра Namada или объединить два уже существующих экземпляра Namada для этой цели.
Настройка Hermes
Hermes - это ретранслятор IBC, предназначенный для передачи IBC-пакетов между цепочками (инстансами). В Namada используется форк Hermes, поддерживающий инстансы Namada. Перед началом ретрансляции пакетов пользователю необходимо выполнить следующие действия по настройке и запуску Hermes.
Создать файл конфигурации Hermes
Создать IBC-клиент/соединение/канал между инстансами
Запустить Hermes
Создать файл конфигурации Hermes
Одним из важнейших элементов головоломки является создание файла config.tom
l, описывающего, какие будут установлены соединения, за которые будет отвечать ретранслятор.
Если путь к файлу не указан, то по умолчанию считается ~/.hermes/config.toml
.
Пример конфигурационного файла приведен ниже. По сути, в конфигурационном файле для Namada вы меняете только идентификаторы цепочек, адреса RPC и имена ключей. Если у вас нет узлов, настройте их вручную или с помощью наших скриптов.
Путь к файлу конфигурации, который сохраняется в переменной $HERMES_CONFIG
, пригодится в дальнейшем.
Интерпретация toml
Каждая конфигурация цепочки задается в объекте [[chains]]
. Это те кусочки головоломки, которые вы хотите сохранить:
chains.id
- имя цепочки
chains.rpc_address
- порт, через который осуществляется связь с каналом, и который будет являться аргументом для ledger_address в Namada при взаимодействии (это станет ясно позже).
Обязательно измените IP-адрес на IP-адрес вашей локальной машины, на которой запущен этот узел!
chains.key_name
задает ключ подписывающего, который подписывает транзакцию от ретранслятора. Ключ должен быть сгенерирован перед запуском ретранслятора.
event_source
задает URL веб-сокета цепочки. Для корректной работы Hermes он должен совпадать с адресом rpc_address.
Создание IBC-клиента/соединения/канала между экземплярами
В Hermes CLI имеются команды для их создания. Перед созданием узел каждого экземпляра должен быть запущен по указанным rpc-адресам. Если у вас нет узлов, установите их вручную или с помощью наших скриптов.
Экспорт переменных окружения
Пользователю, осуществляющему ретрансляцию, необходимо сохранить некоторые переменные окружения. К ним относятся:
Установка Hermes
Перед проведением любых операций с IBC необходимо загрузить бинарный файл форка Hermes компании Heliax или собрать его из исходных файлов.
Из бинарных файлов
Вы можете загрузить последний бинарный релиз с нашей страницы релизов, выбрав соответствующую архитектуру.
Например.
В некоторых системах каталог /usr/local/bin является защищенным. В этом случае может потребоваться выполнить приведенную выше команду с правами sudo. Т.е.
Это справедливо и для команды cp ./target/release/hermes /usr/local/bin/, приведенной ниже (см. комментарий).
Из источника
Проверьте двоичный код:
Теперь рекомендуется добавить hermes в $PATH, чтобы он вызывался без каких-либо префиксов. Для пользователей ubuntu это можно сделать следующим образом
Настройка ретранслятора
Создайте каталог namada_wallet
и цепочку каталогов для хранения каждого кошелька ретранслятора wallet.toml
namada_wallet
и цепочку каталогов для хранения каждого кошелька ретранслятора wallet.tomlДля работы ретранслятора необходимо иметь каталог кошелька для хранения ключей ретранслятора. Это можно сделать, выполнив команду:
This step is only needed for namada chains. For cosmos based chains, it is advised to add the key directly to hermes.
Создание учетной записи ретранслятора
В каждой цепочке должна существовать учетная запись ретранслятора. На цепочке namada это можно сделать, выполнив команду:
В результате будет сгенерирован ключ для учетной записи ретранслятора. Ключ будет храниться в файле wallet.toml
, который находится в базовом каталоге узла, в папке chain-id
. Например, если chain-id - namada-test.0a4c6786dbda39f786
, то wallet.toml
будет находиться в каталоге $HOME/.local/share/namada/namada-test.0a4c6786dbda39f786/wallet.toml
(на машине ubuntu, где base-dir
не был настроен должным образом).
Теперь необходимо скопировать этот файл кошелька в каталог namada_wallet
, который был создан выше, для каждой цепочки. Продолжая этот пример, первый кошелек можно скопировать, выполнив команду:
Теперь можно приступить к настройке клиента.
Создание канала IBC
Команда "создать канал" (см. ниже) создает не только канал IBC, но и необходимое клиентское соединение IBC.
Обратите внимание, что указанные выше CHAIN_ID будут зависеть от вашей собственной установки, поэтому проверьте это сами!
После завершения создания можно увидеть идентификаторы каналов. Например, в следующем тексте показано, что в цепи A namada-test.0a4c6786dbda39f786
создан канал с идентификатором 7
, а в цепи B namada-test.647287156defa8728c
создан канал с идентификатором 12
. Идентификаторы каналов понадобятся для передачи данных по IBC. Это означает, что для передачи данных из цепочки A в цепочку B необходимо указать в качестве идентификатора канала канал-7 (префикс channel-
всегда обязателен), а для передачи данных из цепочки B в цепочку A - канал-12.
Запуск ретранслятора
После запуска Hermes осуществляет мониторинг экземпляров через узлы и ретранслирует пакеты в соответствии с отслеживаемыми событиями.
Более подробную информацию о Hermes можно найти в официальном документе.
После синхронизации вы можете создать канал и запустить Hermes, как описано выше.
Перевод активов через IBC
Появилась возможность перевода активов между двумя цепочками.
Настройка локальных экземпляров Namada с помощью скрипта hermes
Скрипт setup-namada
создаст два экземпляра с одним узлом валидатора, скопирует необходимые файлы для Hermes и создаст счет для Hermes на каждом ledger. Кроме того, в каталоге hermes будет создан файл конфигурации Hermes config_for_namada.toml
.
Для начала необходимо экспортировать некоторые переменные окружения:
В этом случае пользователю не нужно ждать синхронизации. Если на счету ретранслятора на каждом экземпляре имеется достаточный баланс, пользователь может создать канал и сразу же запустить Hermes, как было описано выше. Идентификаторы цепочек инстансов пользователь находит в конфигурационном файле config_for_namada.toml
. Можно выполнить команду grep "id" ${HERMES_CONFIG}
.
Файлы данных и конфигурации каждого узла находятся в папке hermes/data/namada-*/.namada.
Для того чтобы закрыть все ledger, настроенные скриптом, можно выполнить команду:
Last updated