Stride是Cosmos 生态的多链流动质押协议,其近期宣布完成了由投资者North Island VC、Distributed Global 和Pantera Capital 共同牵头的670 万美元种子轮融资。
目前Stride有一个激励性测试网正在进行。该激励性测试网包含面向开发者,验证人和用户的任务。以下为任务列表。
其中任务8为relay using the new v2 go relayer
使用Go relayer运行中继节点
前提条件:服务器上已经安装好stride节点,并同步到最新区块。可参考
接下来,我们需要运行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
wget -O $HOME/.gaia/config/genesis.json "https://raw.githubusercontent.com/Stride-Labs/testnet/main/poolparty/gaia/gaia_genesis.json"
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="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
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。
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
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
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
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仓库。
选择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