在十一月初,Cosmos 在 Chain Reaction 会议中进行了一段代码演示,演示了如何使两条亮通过 IBC 建立链接,并完成资产跨链交易。这是首次发布的较为完整的跨链流程的演示,虽然 IBC 还并未完全实现仍处在开发阶段,在视频中也仅展示了一个 happy pass,但至少,它让我们看到我们离“万链互联”又更近了一步。
https://www.youtube.com/watch?v=DeMhlEck3E0
随后,笔者在 Gaia 项目中找到了相关的 IBC Demo 文档,并在本地成功地跑了起来,后文为对文档的翻译和注解,同时对部分命令稍微进行了一些优化,以适配本地开发环境。
这个演示分支是存在与 Gaia 项目中的,如果是第一次运行 Gaia,请确保本地 Go 开发环境是可工作的。
项目依赖
拉取代码和编译二进制文件:
git clone git@github.com:cosmos/gaia
cd gaia
git checkout cwgoes/ibc-demo-fixes
make install
gaiad version
gaiacli version
测试网环境设置
创建临时测试目录,创建测试链 ibc0 和 ibc1
cd ~ && mkdir ibc-testnets && cd ibc-testnets
gaiad testnet -o ibc0 --v 1 --chain-id ibc0 --node-dir-prefix n
gaiad testnet -o ibc1 --v 1 --chain-id ibc1 --node-dir-prefix n
修改默认的 gaiad 和 gaiacli 配置
gaiad和 gaiacli 是我们通过编译之后自动安装到 Go 可执行文件目录下的 Gaia 客户端,其中gaiad 是全节点客户端,gaiacli 是轻节点客户端。
通过运行如下命令,修改链的默认配置,使得两条链可以在本地同时跑起来:
# Configure the proper database backend for each node and different listening ports
sed -i "_back" 's/"leveldb"/"goleveldb"/g' ibc0/n0/gaiad/config/config.toml
sed -i "_back" 's/"leveldb"/"goleveldb"/g' ibc1/n0/gaiad/config/config.toml
sed -i "_back" 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:26556"#g' ibc1/n0/gaiad/config/config.toml
sed -i "_back" 's#"tcp://0.0.0.0:26657"#"tcp://0.0.0.0:26557"#g' ibc1/n0/gaiad/config/config.toml
sed -i "_back" 's#"localhost:6060"#"localhost:6061"#g' ibc1/n0/gaiad/config/config.toml
sed -i "_back" 's#"tcp://127.0.0.1:26658"#"tcp://127.0.0.1:26558"#g' ibc1/n0/gaiad/config/config.toml
gaiacli config --home ibc0/n0/gaiacli/ chain-id ibc0
gaiacli config --home ibc1/n0/gaiacli/ chain-id ibc1
gaiacli config --home ibc0/n0/gaiacli/ output json
gaiacli config --home ibc1/n0/gaiacli/ output json
gaiacli config --home ibc0/n0/gaiacli/ node <http://localhost:26657>
gaiacli config --home ibc1/n0/gaiacli/ node <http://localhost:26557>
配置两条链的私钥,使得n0 和n1 同时出现在两条链上。