Initia是Binance Labs孵化的Cosmos生态模块化L1, 种子轮融资了750万美元。
近期,其开启了节点激励测试网。无门槛,完成任务有积分。
官方教程:https://docs.initia.xyz/run-initia-node/running-initia-node
最低配置
- 4核 CPU
- 16 GB RAM
1 TB SSD Storage(实际应该100-200g够了)
安装基础环境
安装go
sudo rm -rf /usr/local/go;
curl https://dl.google.com/go/go1.22.1.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf - ;
cat <<'EOF' >>$HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.profile
安装完成后运行以下命令查看版本
go version
安装其他必要的环境
sudo apt-get update -y && sudo apt-get upgrade -y;
sudo apt-get install curl build-essential make gcc jq git -y;
下载源代码并编译
cd
git clone https://github.com/initia-labs/initia.git
cd initia
git checkout v0.2.12
make install
安装完成后可以运行 initiad version
检查是否安装成功。
显示应为v0.2.12
运行节点
初始化节点
moniker=<你的节点名>
initiad init $moniker --chain-id=initiation-1
initiad config set client chain-id initiation-1
下载Genesis 文件
curl -s https://initia.s3.ap-southeast-1.amazonaws.com/initiation-1/genesis.json > ~/.initia/config/genesis.json
设置peer和seed
PEERS="0f90829787884cadb2f1ac02697bff3e952c0395@142.132.152.46:15656,8d23584a7e6318cad5e245b21f7ebf03426b2c1e@176.9.24.49:29656,a98484ac9cb8235bd6a65cdf7648107e3d14dab4@116.202.231.58:17956,de31968f3b35942b5a1123998ff0c4ebd3c3aae5@88.99.193.146:26656,5197077ceae18179cac780f77bdbcc9a86a52bd0@49.13.230.110:26656,70771b798b705a5fe8ae85c0b53d38208c8fa5f4@185.84.224.125:25756,e44e11c6f229a571f4239781f249a25e4257c179@185.84.224.160:25756,00bcac6e600b1af9c00b358e7da2426b60bb3c53@155.133.22.76:53456,f4a340724b89c27d3ef2c3a97757cd6b233283f9@158.220.124.178:53456,6c8798b73339b11c1f214c9ee1ee6aa999439ad0@161.97.141.179:53456,670d532665a0f93ccbba6d132109c207301d6353@194.163.170.113:17956,9802bfc8ed832cda885fb609991986d9ae482346@65.109.115.100:27363,150948b84e8b89d086dbb90dbfbf6bcb4664ce1f@109.199.111.61:26656,5c2a752c9b1952dbed075c56c600c3a79b58c395@195.3.221.9:26686,06b427be06da27bd553a9e904b527b4a714df307@158.220.124.181:53456,7fa1fa6fc532844af98e5173a891d2317c51fc2e@104.248.150.182:26656,767fdcfdb0998209834b929c59a2b57d474cc496@207.148.114.112:26656"
seeds="2eaa272622d1ba6796100ab39f58c75d458b9dbc@34.142.181.82:26656,c28827cb96c14c905b127b92065a3fb4cd77d7f6@testnet-seeds.whispernode.com:25756"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.initia/config/config.toml
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/" ~/.initia/config/config.toml
自定义端口(可选)
可以修改端口(避免和其他cosmos节点冲突)。
portrange=27
sed -i "s/:6060/:${portrange}060/g" ~/.initia/config/config.toml
sed -i "s/:26657/:${portrange}657/g" ~/.initia/config/config.toml
sed -i "s/:26656/:${portrange}656/g" ~/.initia/config/config.toml
sed -i "s/:26660/:${portrange}660/g" ~/.initia/config/config.toml
sed -i "s/:9090/:${portrange}090/g" ~/.initia/config/app.toml
sed -i "s/:9091/:${portrange}091/g" ~/.initia/config/app.toml
sed -i "s/:1317/:${portrange}317/g" ~/.initia/config/app.toml
sed -i "s/:8545/:${portrange}545/g" ~/.initia/config/app.toml
sed -i "s/:8546/:${portrange}546/g" ~/.initia/config/app.toml
这里我们把rpc端口设置成了27657,grpc端口设置成了27090(默认为9090)这2个端口后面有用
Pruning设置
pruning="custom" && \
pruning_keep_recent="100" && \
pruning_keep_every="0" && \
pruning_interval="10" && \
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.initia/config/app.toml && \
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.initia/config/app.toml && \
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.initia/config/app.toml && \
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.initia/config/app.toml
下载快照
cd
sudo apt install lz4 -y
wget -O initia_120971.tar.lz4 https://snapshots.polkachu.com/testnet-snapshots/initia/initia_120971.tar.lz4 --inet4-only
initiad tendermint unsafe-reset-all --home $HOME/.initia --keep-addr-book
lz4 -c -d initia_120971.tar.lz4 | tar -x -C $HOME/.initia
启动节点
sudo tee <<EOF >/dev/null /etc/systemd/system/initia.service
[Unit]
Description=initia daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which initiad) start
Restart=on-failure
RestartSec=3
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && \
sudo systemctl enable initia && \
sudo systemctl restart initia
查看日志
sudo journalctl -u initia -f
检查同步状态
curl -s localhost:27657/status | jq .result | jq .sync_info
这里的27657是根据你之前设置的rpc端口27657。
同步需要一段时间,其中显示 "catching_up":
显示为false
即已经同步上。如果一直没有开始同步一般是因为peer不够,可以考虑添加Peer或者使用别人的addrbook。
创建验证人
创建钱包
initiad keys add <钱包名>
注意请保存助记词。若不保存,之后将无法恢复。
查看钱包
initiad keys list
领取测试币
https://faucet.testnet.initia.xyz/
节点同步之后可以用
initiad query bank balances 你的initia地址
查询测试币余额。
修改client默认的rpc
这里的27657是你之前设置的rpc端口27657(如果没有修改过端口,默认是26657)
initiad config set client node tcp://127.0.0.1:27657
创建验证人
获取足够测试币,且节点完成同步后,可以创建验证人。
daemon=initiad
denom=uinit
moniker=验证人名
chainid=initiation-1
$daemon tx mstaking create-validator \
--amount=1000000$denom \
--pubkey=$($daemon tendermint show-validator) \
--moniker=$moniker \
--chain-id=$chainid \
--commission-rate=0.05 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.1 \
--from=钱包名 --gas 500000 --fees 300000$denom
之后可以去区块浏览器 https://scan.testnet.initia.xyz/initiation-1 查看验证者是否创建成功。如果能查到,你就完成了创建验证者任务。
(目前只有质押前30的节点才是活跃节点,活跃与否应该不影响任务)
创建完验证者建议备份~/.initia/config/priv_validator_key.json
其他验证者相关的命令
获取你的验证者地址
initiad debug addr 你的钱包地址
返回的Bech32 Val地址就是验证者地址
质押
initiad tx mstaking delegate 你要质押的验证人地址 数量uinit --from 你的钱包名 -y --fees 200000uinit --gas 500000
Unjail (如果被jail了才需要)
initiad tx slashing unjail --from 你的钱包名 --gas 500000 --fees 200000uinit
给验证者在浏览器添加图标
我们需要注册
得到一个16位id,并设置你的keybase profile头像。这个头像将在区块浏览器上显示
接下来运行命令
initiad tx mstaking edit-validator --from test --identity 你的keybase16位id -from 你的钱包名 --gas 500000 --fees 200000uinit
一段时间后,头像就会在浏览器显示
运行预言机(这是第二周的任务,暂时不用做)
cd
git clone https://github.com/skip-mev/slinky.git
cd slinky
# checkout proper version
git checkout v0.4.3
make build
创建预言机服务,注意下面的27090要和你之前设置的gprc端口一致(如果没有修改端口,默认是9090)
sudo tee /etc/systemd/system/slinky.service > /dev/null <<EOF
[Unit]
Description=slinky
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/slinky
ExecStart=$HOME/slinky/build/slinky --oracle-config-path ./config/core/oracle.json --market-map-endpoint 0.0.0.0:27090
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable slinky.service
sudo systemctl start slinky.service
修改initia节点的config,以启动预言机
sed -i -e 's/^enabled = "false"/enabled = "true"/' \
-e 's/^oracle_address = ""/oracle_address = "127.0.0.1:8080"/' \
-e 's/^client_timeout = "2s"/client_timeout = "500ms"/' \
-e 's/^metrics_enabled = "false"/metrics_enabled = "false"/' \
$HOME/.initia/config/app.toml
重启initia节点
sudo systemctl restart initia
sleep 20
查看节点日志
sudo journalctl -u initia -f
查看预言机日志
sudo journalctl -u slinky -f