IBC 中继器 (IBC Relayers)
在 Namada 上进行中继 (Relaying on Namada)
本文档介绍了如何为 Namada 上的跨链通信(IBC)协议操作中继器。本文档涵盖了通过 IBC 创建连接以及为测试目的设置 Namada 本地实例的能力。
本文档涵盖了与 Namada 一起使用 IBC 的基本步骤:
设置 Hermes(Setup Hermes)
安装 Hermes(Install Hermes)
设置中继器(Setting up the relayer)
启动中继器(Start the relayer)
设置本地 Namada 实例(Set up local Namada instances)
以下内容适用于希望在两个 Namada 链之间中继 IBC 消息传输的人员。当然,也可以在任何两个 IBC 兼容链(如 Cosmos 链)之间执行此操作。在这种情况下,为了进行任何包传输,目标链和源链上都需要运行一个节点。下面,我们首先讨论如何通过 Hermes 在两个预先存在的链之间启用此连接,其次,为此目的设置两个 Namada 本地实例或加入两个预先存在的 Namada 实例。
设置 Hermes (Setup Hermes)
Hermes 是一个 IBC 中继器,用于在链(实例)之间中继 IBC 数据包。Namada 使用支持 Namada 实例的 Hermes 分支。在数据包中继之前,用户需要执行以下步骤来配置并启动 Hermes。
创建 Hermes 配置文件 (Make Hermes config file)
在实例之间创建 IBC 客户端/连接/通道 (Create IBC client/connection/channel between instances)
运行 Hermes (Run Hermes)
创建 Hermes 配置文件 (Make Hermes config file)
解决这个问题的一个重要部分是创建一个 config.toml 文件,描述将设置哪些连接,中继器将负责这些连接。
如果您不指定文件路径,则默认读取 ~/.hermes/config.toml
。
您可以在下面找到配置文件的示例。基本上,您只需更改配置文件中的链 ID、RPC 地址和密钥名称即可。如果您没有节点,请手动设置节点或通过我们的脚本设置。
例子:
将在变量 $HERMES_CONFIG
中保存的配置文件路径将在后面有用。
解析 toml (Interpreting the toml)
每个链配置都在 [[chains]]
对象下指定。这些是您想要密切关注的难题部分:
chains.id
是链的名称chains.rpc_address
指定通道通过的端口,并将成为与账本交互时 Namada 的ledger_address
的参数(稍后将更清晰)请确保将 IP 地址更改为运行此节点的本地机器的 IP 地址!
chains.key_name
指定签名交易的签名者的密钥。应在启动中继器之前生成密钥。event_source
指定链的 websocket 的 URL。为了使 Hermes 正常工作,它必须与rpc_address
相同。
在实例之间创建 IBC 客户端/连接/通道 (Create IBC client/connection/channel between instances)
Hermes CLI 有创建它们的命令。在创建之前,应在指定的 rpc 地址上运行每个实例的节点。如果您没有节点,请手动设置节点或通过我们的脚本设置。
导出环境变量 (Export environment variables)
中继用户将需要保存某些环境变量。它们是:
安装 Hermes (Install Hermes)
在进行任何 IBC 操作之前,必须下载 Heliax 的分支 Hermes 二进制文件或从源代码中构建。
从二进制文件安装 (From binaries)
可以通过选择适当的架构,从我们的发布页面下载最新的二进制发布版本。
例如:
对于某些系统,/usr/local/bin
是受保护的目录。在这种情况下,您可能需要使用 sudo
运行上述命令。即
这对于下面的命令 cp ./target/release/hermes /usr/local/bin/
也是如此(请参见注释)。
从源代码安装 (From source)
检查二进制文件:
现在建议将 hermes 添加到 $PATH 中,以便在没有任何前缀的情况下调用它。对于 ubuntu 用户,可以通过执行以下操作来实现:
设置中继器 (Setting up the relayer)
创建 namada_wallet 目录和链目录,以保存每个中继器的 wallet.toml。
为了使中继器正常工作,它需要有一个钱包目录来存储中继器的密钥。可以通过运行以下命令来实现:
此步骤仅适用于 namada 链。对于基于 cosmos 的链,建议将密钥直接添加到 hermes 中。
创建中继器账户 (Create the relayer account)
在每条链上,必须有一个relayer
账户。在 namada 链上,可以通过运行以下命令来实现:
这将为中继器账户生成一个密钥。密钥将存储在节点的基础目录中的 chain-id
文件夹内的 wallet.toml
中。例如,如果 chain-id
是 namada-test.0a4c6786dbda39f786
,则 wallet.toml
将位于 $HOME/.local/share/namada/namada-test.0a4c6786dbda39f786/wallet.toml
(在未正确设置 base-dir
的 ubuntu 机器上)。
现在重要的是将此钱包文件复制到上面创建的 namada_wallet
目录中,每个链都需要这样做。继续这个例子,可以通过运行以下命令复制第一个钱包:
现在可以设置客户端了。
创建 IBC 通道 (Create IBC channel)
下面的 "create channel" 命令不仅创建了 IBC 通道,还创建了必要的 IBC 客户端连接。
请注意,上述 CHAIN_IDs
将取决于您自己的设置,因此请自行检查!
当创建完成时,您可以看到通道 ID。例如,以下文本显示在 Chain A namada-test.0a4c6786dbda39f786
上已创建了 ID 为 7
的通道,并且在 Chain B namada-test.647287156defa8728c
上已创建了 ID 为 12
的通道。您将需要通道 ID 来通过 IBC 进行转移。这意味着您必须为从 Chain A 到 Chain B 的转移指定 channel-7
作为通道 ID(前缀 channel-
总是必需的)。同样,您必须为从 Chain B 到 Chain A 的转移指定 channel-12
作为通道 ID。
启动中继器 (Start the relayer)
一旦运行 Hermes,它将通过节点监视实例并根据监视到的事件中继数据包。
您可以在官方文档中查看更多有关 Hermes 的详细信息。
在同步完成后,您可以按照上述说明创建通道并启动 Hermes。
通过 IBC 转移资产 (Transferring assets over IBC)
现在可以在两条链之间转移资产了。
使用 hermes 脚本设置本地 Namada 实例 (Set up local Namada instances using the hermes script)
脚本 setup-namada
将设置两个实例,每个实例有一个验证节点,为 Hermes 复制必要的文件,并在每个账本上为 Hermes 创建一个账户。它还会在 hermes
目录中创建一个 Hermes 的配置文件 config_for_namada.toml
。
首先,您需要导出一些环境变量:
在这种情况下,用户不必等待同步。如果每个实例上的中继器账户有足够的余额,用户可以按照上述说明立即创建通道并启动 Hermes。用户可以在配置文件 config_for_namada.toml
中找到这些实例的链 ID。可以运行 grep "id" ${HERMES_CONFIG}
。
每个节点的数据和配置文件都位于 hermes/data/namada-*/.namada
。
为了关闭由脚本设置的任何账本,可以运行:
Last updated