Airchains 创建CosmWasm Zk Rollup中文教程

Airchains 是一个模块化的 zk-Rollup 框架平台,其独特设计旨在帮助开发人员构建具有无与伦比的速度和隐私性的综合应用程序,在选择执行和数据可用性层方面提供了灵活性。

官方推特:

官方网站:

Airchains能与celestia, Avail, EigenDa等DA层集成,在执行层方面,支持EVM,Cosmwasm和SVM。

近期Airchains启动了Station奖励计划,旨在激励和支持像开发人员在 Airchains 网络上构建出色的项目。

通过在 Airchains 网络上创建Station,您可以开始赚取积分并解锁令人难以置信的奖励!您建造的Station越多,您为生态系统带来的价值越多,您的奖励就越高。

本教程将教你如何创建Airchains的Cosmwasm Zk Rollup Station并赚取积分。

由于avail经常没水,我们选择eigenda作为da。

本教程仅供参考,请以官方文档为准

Cosmwasm Zk Rollup 可能遇到一些奇怪的无法解决的错误,建议创建EVM + Eigenda的station

EVM + Eigenda教程可以参考TESTCN老哥的

配置要求

系统: Ubuntu 22.04

安装依赖

sudo apt-get update && apt-get install jq build-essential -y

安装go

curl https://dl.google.com/go/go1.22.1.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf - ;
cat <<'EOF' >>$HOME/.bashrc
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/.bashrc

这里我们选择创建Cosmwasm Zk Rollup

下载GitHub 库

cd
git clone https://github.com/airchains-network/wasm-station.git
git clone https://github.com/airchains-network/tracks.git

设置Wasm Station

cd wasm-station
go mod tidy
/bin/bash ./scripts/local-setup.sh

这里需要等待一段时间。

成功后你会看到这样的内容

等待一段时间后,你会看到类似这样的内容
等待一段时间后,你会看到类似这样的内容

运行wasmstation

sudo tee <<EOF >/dev/null /etc/systemd/system/wasmstationd.service
[Unit]
Description=wasmstationd
After=network.target
[Service]
User=$USER
ExecStart=$HOME/wasm-station/build/wasmstationd start --api.enable
Restart=always
RestartSec=3
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload && \
sudo systemctl enable wasmstationd && \
sudo systemctl start wasmstationd

查看日志

sudo journalctl -u wasmstationd -f

设置DA

下载eigenlayer cli

cd
wget https://github.com/airchains-network/tracks/releases/download/v0.0.2/eigenlayer
sudo chmod +x eigenlayer
sudo mv eigenlayer /usr/local/bin/eigenlayer

创建key

eigenlayer operator keys create  -i=true --key-type ecdsa 你的钱包名 

保存好出现的私钥,输入:q 退出

记录好出现的Public Key hex,后面要用

这里的Public Key hex后面有用
这里的Public Key hex后面有用

设置Tracks

删除所有旧数据

sudo rm -rf ~/.tracks

下载依赖

cd $HOME/tracks
go mod tidy

初始化sequencer

go run cmd/main.go init --daRpc "disperser-holesky.eigenda.xyz" --daKey "上面的Public Key hex" --daType "eigen" --moniker "节点名" --stationRpc "http://127.0.0.1:26657" --stationAPI "http://127.0.0.1:1317" --stationType "wasm"

成功后,能看到如下

[2024-06-11 09:50:08] » Track initialization successful

创建airchains 地址

go run cmd/main.go keys junction --accountName airchains地址名 --accountPath $HOME/.tracks/junction-accounts/keys

注意保存这里显示的助记词,否则之后无法恢复。这里也会显示air开头的地址,后面有用

领水

在discord的Switchyard-faucet频道发送

$faucet air开头的地址领水

如果discord水龙头没水了,可以试试这个

初始化prover

go run cmd/main.go prover v1WASM

获取bootstrapNode值

nodeid=$(grep "node_id" ~/.tracks/config/sequencer.toml | awk -F '"' '{print $2}')
ip=$(curl -s4 ifconfig.me/ip)
bootstrapNode=/ip4/$ip/tcp/2300/p2p/$nodeid
echo $bootstrapNode

最后显示的的应该类似

/ip4/<你服务器的ip>/tcp/2300/p2p/你的nodeid

这就是你的bootstrapNode值

创建station

go run cmd/main.go create-station --accountName airchains地址名 --accountPath $HOME/.tracks/junction-accounts/keys --jsonRPC "https://junction-testnet-rpc.synergynodes.com/" --info "WASM Track" --tracks 刚刚air开头的地址 --bootstrapNode "刚刚显示的bootstrapNode"

等待一段时间后,会显示如下

[2024-06-11 10:16:32] » tracks address: air1mwe3cpx52vmr2nl75yppl0xw2w5htgtyq93env
[2024-06-11 10:16:32] » Currently user have 2.000000AMF
[2024-06-11 10:16:44] » txHash: 3D7688A44BCDBED043380C5367B0B1320187B34E46B6C52E82BD16843D145FE3
[2024-06-11 10:16:44] » /root/.tracks/config/genesis.json created
[2024-06-11 10:16:44] » vrfPrivKey ID: 124014616c36ba23183504643d101a875c99531732bb83f6366e8be2c776bc03
[2024-06-11 10:16:44] » vrfPubKey ID: 13223019114f6a1d4d2068bf2dd58982d63d5c914412976a5291372a51deb542
[2024-06-11 10:16:44] » Successfully Created VRF public and private Keys
[2024-06-11 10:16:44] » Successfully created station

修改代码默认的gas price

sed -i 's/gasFees := fmt.Sprintf("%damf", gas)/gasFees := fmt.Sprintf("%damf", 2*gas)/' "$HOME/tracks/junction/verifyPod.go"
sed -i 's/gasFees := fmt.Sprintf("%damf", gas)/gasFees := fmt.Sprintf("%damf", 2*gas)/' "$HOME/tracks/junction/validateVRF.go"
sed -i 's/gasFees := fmt.Sprintf("%damf", gas)/gasFees := fmt.Sprintf("%damf", 3*gas)/' "$HOME/tracks/junction/submitPod.go"

启动station

sudo tee /etc/systemd/system/stationd.service > /dev/null << EOF
[Unit]
Description=station track service
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/tracks/
ExecStart=$(which go) run cmd/main.go start
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable stationd
sudo systemctl restart stationd

查看station日志

sudo journalctl -u stationd -f -o cat

Ctrl +c 退出查看日志

刷TX

创建脚本

cd
addr=$($HOME/wasm-station/build/wasmstationd keys show node --keyring-backend test -a)
sudo tee spam.sh > /dev/null << EOF
#!/bin/bash

while true; do
  $HOME/wasm-station/build/wasmstationd tx bank send node ${addr} 1stake --from node --chain-id station-1 --keyring-backend test -y 
  sleep 6  # Add a sleep to avoid overwhelming the system or network
done
EOF

后台运行刷tx脚本

nohup bash spam.sh &

看日志,正常是这样。成功之后,你会在rollup中每6秒发一笔交易。

cat nohup.out

code: 0
codespace: ""
data: ""
events: []
gas_used: "0"
gas_wanted: "0"
height: "0"
info: ""
logs: []
raw_log: ""
timestamp: ""
tx: null
txhash: F2F9C6911D3D48C98CAC47773E0B7B4C8E9AD23BFD10692177BA5C8C69980A3B
code: 0
codespace: ""
data: ""
events: []
gas_used: "0"
gas_wanted: "0"
height: "0"
info: ""
logs: []
raw_log: ""
timestamp: ""
tx: null
txhash: ACB167A5B5E806B59497EA49B825106E1AB4C8FA7808AA89A726F4109E4E00FB

再次查看station日志

sudo journalctl -u stationd -f -o cat

正常会看到这样的日志

正常的日志
正常的日志

如果有错误,可以在airchains discord频道问问。

更新stationd到

sudo systemctl stop stationd 
cd ~/tracks && git reset --hard HEAD && git pull && git checkout v0.0.5
sudo systemctl start stationd

常见问题

a. stationd日志一直是

New Block Found

没有其他日志,并且不加分。

解决方法

重启stationd

sudo systemctl restart stationd

b. station日志中有各种奇怪的报错。

解决方法

回滚并重启stationd

sudo systemctl stop stationd
cd $HOME/tracks
go run cmd/main.go rollback
go run cmd/main.go rollback
go run cmd/main.go rollback
sudo systemctl restart stationd

如果回滚无效。考虑换一个rpc试试。还是不行的话去discord英文频道和项目方反馈。

可以在discord中文频道找群友分享的定时重启的脚本。

查看积分

接下来我们需要将airchains钱包(air开头的)钱包导入到leap钱包中。

点击钱包上方的按钮

点击导入助记词

导入助记词
导入助记词

接下来打开

连接钱包,接下来你应该能看到积分,如图

如果你的节点日志正常,却没有积分。可以在discord里面问问,也许是积分的网站没有同步到最新状态。

本教程还会持续更新,欢迎关注

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.