# Airchains 创建CosmWasm Zk Rollup中文教程

By [Silent ⚛| validator](https://paragraph.com/@exploring) · 2024-06-22

---

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

官方推特：

官方网站：

[

Making Confidentiality Accessible | Enabling zkFHE
--------------------------------------------------

Making Confidentiality Accessible | Enabling zkFHE

https://www.airchains.io

![](https://storage.googleapis.com/papyrus_images/e871c070717083587870b8631b0a1d7c76d7238ae8e9753d510f9e73d7c2febc.png)

](https://www.airchains.io/)

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

![](https://storage.googleapis.com/papyrus_images/65418d56f22ab92808c25c7750ab45c279afc7c1ec8b67040cabd61e31c470dc.png)

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

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

![](https://storage.googleapis.com/papyrus_images/d0b361bcbca041452949c4333d852f2502a273870e1d4bcf93ebaa47f380155f.png)

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

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

**_本教程仅供参考，请以官方文档为准_**

[https://docs.airchains.io/rollups/cosmwasm-zk-rollup/create-an-cosmwasm-rollup](https://docs.airchains.io/rollups/cosmwasm-zk-rollup/create-an-cosmwasm-rollup)

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

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

[https://medium.com/@TestnetCn/airchains-rollapp部署-3842a6cba873](https://medium.com/@TestnetCn/airchains-rollapp%E9%83%A8%E7%BD%B2-3842a6cba873)

配置要求
----

系统: Ubuntu 22.04

![](https://storage.googleapis.com/papyrus_images/b5fe77a603dc11c01f94fb79cd041bf07345bd432b3e4d7bfd6ae953580e1b0b.png)

安装依赖
----

    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
    

这里需要等待一段时间。

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

![等待一段时间后，你会看到类似这样的内容](https://storage.googleapis.com/papyrus_images/e13f9460d0a7d9961a775963c071ecf9b91f3cebcf253d8ddea4b6c7220d6283.png)

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

### 运行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后面有用](https://storage.googleapis.com/papyrus_images/6b19de7c722ce29a5c541601cbbafaf32b51da87c0b36e3aab5d0f316478f943.png)

这里的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水龙头没水了，可以试试这个

[

FAUCETME | AIRCHAINS
--------------------

Multichain faucet helps with fair and reliable token distribution in various networks Quick and safe way to get tokens

https://airchains.faucetme.pro

![](https://storage.googleapis.com/papyrus_images/afb7922072c741f326f5c09b8a54168ef99a658b0c068c16dc9956b6e4a51648.png)

](https://airchains.faucetme.pro/)

### 初始化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
    

正常会看到这样的日志

![正常的日志](https://storage.googleapis.com/papyrus_images/7a7ca2b4840fdec27766c7e7d6b347f0eae5819db35be81ea9b1a4e13fc27336.png)

正常的日志

如果有错误，可以在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

_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钱包](https://www.leapwallet.io/)中。

点击钱包上方的按钮

![](https://storage.googleapis.com/papyrus_images/adbd047dd3a0e5f3ea56a08216d4ac8636934cfa81bbf195e7b946abeefd9d0a.png)

点击导入助记词

![导入助记词](https://storage.googleapis.com/papyrus_images/c038877f6e7e5ced101a290837de84cec705cc97463b264eb1b8acb08fe77b39.png)

导入助记词

接下来打开

[

Station Points Program
----------------------

Station Rewards Program

https://points.airchains.io



](https://points.airchains.io/)

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

![](https://storage.googleapis.com/papyrus_images/c16b21734863ec73e88f5a16846a2235446a24f26cec104a70d116e9b5678199.png)

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

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

---

*Originally published on [Silent ⚛| validator](https://paragraph.com/@exploring/airchains-cosmwasm-zk-rollup)*
