Stride 激励性测试网运行Go relayer教程(任务8)

Stride是Cosmos 生态的多链流动质押协议,其近期宣布完成了由投资者North Island VC、Distributed Global 和Pantera Capital 共同牵头的670 万美元种子轮融资。

目前Stride有一个激励性测试网正在进行。该激励性测试网包含面向开发者,验证人和用户的任务。以下为任务列表。

其中任务8为relay using the new v2 go relayer

使用Go relayer运行中继节点

前提条件:服务器上已经安装好stride节点,并同步到最新区块。可参考

接下来,我们需要运行gaia节点。

运行gaia节点

下载源代码并编译

cd
rm -rf gaia
git clone https://github.com/Stride-Labs/gaia.git
cd gaia
git checkout 5b47714dd5607993a1a91f2b06a6d92cbb504721
make install

安装完成后可以运行 gaiad version检查是否安装成功。

显示应为HEAD-5b47714dd5607993a1a91f2b06a6d92cbb504721

运行节点

初始化节点

moniker=<你的节点名>
gaiad init $moniker --chain-id=GAIA

下载Genesis 文件

wget -O $HOME/.gaia/config/genesis.json "https://raw.githubusercontent.com/Stride-Labs/testnet/main/poolparty/gaia/gaia_genesis.json"

设置peer和seed和address book

SEEDS=""; \
PEERS="5b1bd3fb081c79b7bdc5c1fd0a3d90928437266a@78.107.234.44:36656,2ee845a5818be951f9139b81ff19db63e741c353@20.29.16.128:23656,da87076fe563a8319270c4aef77be81126967a69@188.166.21.73:23656,245d766d00e6f7d1afdefc6e09d7be4314e8cc71@65.108.206.56:23656,31dfc7a5acf96f338bd3a39ff51a4f23220d3a05@95.214.55.4:26666,fdadcd891370fce4049a73f821939ce36ffc0539@78.47.131.222:23656,2b79dae3d3289a35d54973a4db35e2e0ade87bb7@65.108.238.183:23656,1a5adae36c507e2f9354fcd2a44a483d3638ddf0@135.181.91.177:23656,60f0d2f62ee9c7b953c3a9cdf5eab42de310e89e@149.102.142.102:23656,3eecd0978c428c31675a35af8da059e4943c0055@34.135.227.50:23656,ce2e3cc68afee1e6ce98d8e24ac142593137fbe2@38.242.215.136:23656,872e7d984253af34b9f7b7a3d1c729cdae7cbf53@161.97.143.31:23656,7a5b90ed09a1f6e4ac755b86351bcf90f274ffaa@159.223.70.48:23656,edb2864997e5b68194c72f2e25c0c83566f5f186@162.55.180.238:26656,e20dfff35e0c89cc06ff6df9b63fd75de7665277@194.163.146.64:23656,36548633554e391db8609f48225bd4282b3221a7@194.163.146.8:23656,015254cc413cd447266554162bf35b1881703cfe@194.233.67.89:23656,60201ea184c71542183592c6b9d1a69c8025192f@188.166.58.241:23656,d39a8df130cb471f5e850a7df1083b3f03a67244@185.252.235.89:23656,e737ea2060ffa77840f88a324efd1a29d37d0fc1@164.92.76.24:23656,ea62913113f16de1bf58bb244d44401f42f85b6b@135.181.131.116:36656,45d9c593f8e44989f3b0705f464c2212a53ba3fc@38.242.133.84:23656,3ece04931935dbef068543fe3130494fa5db9b0c@188.166.72.156:23656,b1577e9bdb4964ee3f875cbc5eae555bf04c68aa@45.10.154.148:23656,f70f96f1601c11f575895fb4cb836a377ee40a54@195.201.41.223:23656,9db59d9a6dd10ea2d5247432e0a371bbb97811ba@65.108.80.183:23656,30b08a908c00852b279b984016354d91f001b169@62.171.159.163:23656,e28444d2b661e23f95e6bedb7fd0a2cd533856ac@65.109.15.186:36656,da24e06a43dd60707b31217a770be115731bb557@165.227.165.197:23656,782cb61f5f416cf637ef71d0d80d5cbda7846a94@135.181.151.107:26656,7df15bad855e3ef9e95fab3602872533be6b26ee@5.161.78.112:26656,4b5884ccf4ab395a8031fabc3db74b1de3300195@194.180.176.180:23656,428e2f8759cfecc7736ea72e87639299644f4c16@75.119.146.181:23656,80d97c99bc02b84676b233d96f07bbba5924dd68@185.144.99.67:26656,23bcc603002fc8c920a7dcfa94e9541cb4e7742a@185.144.99.99:26656,3b44ce349148ff19f9d293d0e51235f64cab0ba3@159.223.217.100:23656,82a2143823ab70c7500bf08d84149b7327cb963e@34.171.149.140:23656,4dd0b3b158913aadb6ce856ec5b26337e3855a18@135.181.248.69:36656,abc7bd2333917a09c46561f06bc2698653a2484b@159.69.149.203:23656,6edc1c3c488d2f5a247f02af690588d3b247cc8f@164.92.157.65:23656,5b04d13bd3f11048cf2afecce88a1f258b3ab945@20.100.172.91:23656,13cef349f7b4fd8c98bf515371537417e352c596@65.21.144.88:23656,d63ba5bb061cd530204f0d87a7fd8bf739b05883@142.93.105.5:23656,859bfe5ba5858dafaa66b11d5ed430039f1931f2@5.199.133.114:23656,357458b9de21f2352060498ba1409a9f047f7f74@137.184.111.176:23656,f363b5401a9891421a86caf1d248782868b2a05a@64.227.67.65:23656,76a9c7a56981d0737accafdf7c1f2bf9dd2b91b8@20.84.76.87:23656,0c7556ab80727b4f209ac42af388e7c74d74921f@45.67.216.77:23656,8fe9168a1fdaee7744f5b8c1f10a1caa9900358f@164.92.174.23:23656,fb75fd49045c2b22c1db23ae853d8702aee388bf@209.126.9.103:23656,90a1c3eda41010393729af7cb068baa254a0f8f9@198.199.82.157:23656,0053f851eaa20843b245fd21a3bc1f02578f6281@35.203.123.75:23656,a2fc44b2825182422fba60931a9e91925a293ded@209.97.134.97:23656,44133808f0aa279ac48873f218db6f624667646f@157.90.179.182:26616"; \
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.gaia/config/config.toml
wget -O $HOME/.gaia/config/addrbook.json "https://raw.githubusercontent.com/StakeTake/guidecosmos/main/stride/GAIA/addrbook.json"

修改端口

sed -i 's/:6060/:23060/g' $HOME/.gaia/config/config.toml 
sed -i 's/:26657/:23657/g' $HOME/.gaia/config/config.toml 
sed -i 's/:26656/:23656/g' $HOME/.gaia/config/config.toml 
sed -i 's/:9090/:23090/g' $HOME/.gaia/config/app.toml
sed -i 's/:9091/:23091/g' $HOME/.gaia/config/app.toml
sed -i 's/:1317/:23317/g' $HOME/.gaia/config/app.toml
gaiad config node tcp://localhost:23657

Pruning设置

pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"

sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.gaia/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.gaia/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.gaia/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.gaia/config/app.toml

启动节点

sudo tee <<EOF >/dev/null /etc/systemd/system/gaiad.service
[Unit]
Description=gaiad daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which gaiad) start
Restart=on-failure
RestartSec=3
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && \
sudo systemctl enable gaiad && \
sudo systemctl start gaiad

查看日志

sudo journalctl -u gaiad -f

(可选)State-sync快速同步

sudo systemctl stop gaiad
gaiad tendermint unsafe-reset-all --home $HOME/.gaia
SNAP_RPC="http://stride.stake-take.com:46657"
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.gaia/config/config.toml
sudo systemctl restart gaiad && journalctl -u gaiad -f -o cat

检查同步状态

curl -s localhost:23657/status | jq .result | jq .sync_info

其中显示 "catching_up":显示为false即已经同步上。如果一直没有开始同步一般是因为peer不够,可以考虑添加Peer或者使用别人的addrbook。同步成功后,我们可以开始运行relayer。

运行go relayer

设置变量(根据你自己的情况)

RELAYER_ID='silent666#8303'            # 这里填你的discord ID
STRIDE_RPC_ADDR='127.0.0.1:26657'    # 填你的Stride RPC
GAIA_RPC_ADDR='127.0.0.1:23657'      # 填你的Gaia RPC

安装go relayer V2

cd 
git clone https://github.com/cosmos/relayer.git
cd relayer && git checkout v2.0.0-rc4
make install
rly config init --memo $RELAYER_ID
mkdir -p $HOME/.relayer/config

设置Go relayer的配置文件

sudo tee $HOME/.relayer/config/config.yaml > /dev/null <<EOF
global:
    api-listen-addr: :5183
    timeout: 10s
    memo: relayed by ${RELAYER_ID}
    light-cache-size: 20
chains:
    gaia:
        type: cosmos
        value:
            key: wallet
            chain-id: GAIA
            rpc-addr: http://${GAIA_RPC_ADDR}
            account-prefix: cosmos
            keyring-backend: test
            gas-adjustment: 1.2
            gas-prices: 0uatom
            debug: true
            timeout: 20s
            output-format: json
            sign-mode: direct
    stride:
        type: cosmos
        value:
            key: wallet
            chain-id: STRIDE-TESTNET-4
            rpc-addr: http://${STRIDE_RPC_ADDR}
            account-prefix: stride
            keyring-backend: test
            gas-adjustment: 1.2
            gas-prices: 0ustrd
            debug: true
            timeout: 20s
            output-format: json
            sign-mode: direct
paths:
    stride-gaia:
        src:
            chain-id: STRIDE-TESTNET-4
            client-id: 07-tendermint-0
            connection-id: connection-0
        dst:
            chain-id: GAIA
            client-id: 07-tendermint-0
            connection-id: connection-0
        src-channel-filter:
            rule: "allowlist"
            channel-list: [channel-0,channel-1, channel-2, channel-3, channel-4]
EOF

导入钱包

注意,两个钱包可以使用同一个助记词。但stride地址和gaia地址都应该有一定余额。如果没有余额,可以去官方discord #💧┃token-faucet 频道领取。

rly keys restore stride wallet "<你stride钱包的助记词>"
rly keys restore gaia wallet "<你gaia钱包的助记词>"

检查钱包的余额。

rly q balance stride
rly q balance gaia

检查配置是否正确

运行

rly paths list

如果配置正确,将输出如下。

0: stride-gaia -> chns(✔) clnts(✔) conn(✔) (STRIDE-TESTNET-4<>GAIA)

接下来,我们可以运行relayer了。

建立服务文件

sudo tee /etc/systemd/system/relayerd.service > /dev/null <<EOF
[Unit]
Description=GO Relayer v2 Service
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$(which rly) start stride-gaia -p events
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

如果你之前在运行Hermes relayer,请关闭它

sudo systemctl stop hermesd
sudo systemctl disable hermesd

开启服务

sudo systemctl daemon-reload
sudo systemctl enable relayerd
sudo systemctl start relayerd

检查日志

journalctl -u relayerd -f -o cat

提交任务

运行一段时间后,你将在日志中看到一些MsgRecvPacket和MsgUpdateClient的tx,保存好tx。

接下来fork go relayer的github仓库

image

选择2.0.x branch

在你fork的仓库里新建以下文件。

relayer/configs/stride/chains/gaia.json
relayer/configs/stride/chains/stride.json
relayer/configs/stride/paths/stride-gaia.json

如图

stride.json

{
  "type": "cosmos",
  "value": {
    "key": "wallet",
    "chain-id": "STRIDE-TESTNET-4",
    "rpc-addr": "http://127.0.0.1:26657",
    "account-prefix": "stride",
    "keyring-backend": "test",
    "gas-adjustment": 1.2,
    "gas-prices": "0.000ustrd",
    "gas": 200000,
    "timeout": "20s",
    "trusting-period": "8h",
    "output-format": "json",
    "sign-mode": "direct"
  }
}

gaia.json

{
  "type": "cosmos",
  "value": {
    "key": "wallet",
    "chain-id": "GAIA",
    "rpc-addr": "http://127.0.0.1:23657",
    "account-prefix": "cosmos",
    "keyring-backend": "test",
    "gas-adjustment": 1.2,
    "gas-prices": "0.000uatom",
    "gas": 200000,
    "timeout": "20s",
    "trusting-period": "8h",
    "output-format": "json",
    "sign-mode": "direct"
  }

stride-gaia.json

{
  "src": {
    "chain-id": "STRIDE-TESTNET-4",
    "client-id": "07-tendermint-0",
    "connection-id": "connection-0"
  },
  "dst": {
    "chain-id": "GAIA",
    "client-id": "07-tendermint-0",
    "connection-id": "connection-0"
  },
  "src-channel-filter": {
    "rule": "allowlist",
    "channel-list": ["channel-0", "channel-1", "channel-2", "channel-3", "channel-4"]
  }
}

之后填写 任务提交表

Include your evidence of completing the task. See the task table for instructions on what evidence to submit. 处填写你relay的tx的浏览器链接和你刚刚fork的你的github仓库链接。

我还会继续更新该测试网的其他任务教程,欢迎关注 https://silentvalidator.com

Subscribe to Silent ⚛| validator
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.