Airchains Airchains - Testnet
Chain ID: junction Block Height: Loading...
RPC Status:

Airchains

Airchains is distinct from RaaS providers because we built our own ZK circuit from the ground up, rather than relying on a third party. We also offer full EVM, SVM, and Cosmwasm support and interoperability, whereas RaaS providers are EVM-only.

https://rpc-airchains-t.sychonix.com

https://api-airchains-t.sychonix.com

https://explorer.sychonix.com/airchains-testnet

Installation

  • Install Dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev aria2 -y
  • Install Go
VER="1.21.6"
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go$VER.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version
- Install Binary
cd $HOME
wget https://github.com/airchains-network/junction/releases/download/v0.1.0/junctiond
chmod +x junctiond
sudo mv junctiond /usr/local/bin/
  • Initialize The Node
juntiond config node tcp://localhost:19657
junctiond config keyring-backend os
junctiond config chain-id junction
junctiond init "YourName" --chain-id junction
  • Download Genesis & Addrbook
curl -Ls https://snapshot.sychonix.com/testnet/airchains/genesis.json > $HOME/.junction/config/genesis.json
curl -Ls https://snapshot.sychonix.com/testnet/airchains/addrbook.json > $HOME/.junction/config/addrbook.json
  • Configure Seeds and Peers
sed -i -e 's|^seeds *=.*|seeds = "575e98598e9813a26576759c7ef70fd38d2516a4@junction-testnet-rpc.synergynodes.com:15656,04e2fdd6ec8f23729f24245171eaceae5219aa91@airchains-testnet-seed.itrocket.net:19656,aeaf101d54d47f6c99b4755983b64e8504f6132d@airchain-testnet-peer.dashnode.org:28656,bb26fc8cef05cee75d4cae3f25e17d74c7913967@airchains-t.seed.stavr.tech:4476,df949a46ae6529ae1e09b034b49716468d5cc7e9@testnet-seeds.stakerhouse.com:13756,48887cbb310bb854d7f9da8d5687cbfca02b9968@35.200.245.190:26656,60133849b4c83531eb2d835970035a0f08868658@65.109.93.124:28156,df2a56a208821492bd3d04dd2e91672657c79325@airchain-testnet-peer.cryptonode.id:27656,04e2fdd6ec8f23729f24245171eaceae5219aa91@airchains-testnet-seed.itrocket.net:19656,3dc2f101876e1a26730f99c06a5a2eb6e2cc2349@65.21.69.53:33656"|' $HOME/.junction/config/config.toml
  • Update Port Configuration
sed -i -e "s%:1317%:19617%; s%:8080%:19680%; s%:9090%:19690%; s%:9091%:19691%; s%:8545%:19645%; s%:8546%:19646%; s%:6065%:19665%" $HOME/.junction/config/app.toml
sed -i -e "s%:26658%:19658%; s%:26657%:19657%; s%:6060%:19660%; s%:26656%:19656%; s%:26660%:19661%" $HOME/.junction/config/config.toml
  • Customize Pruning
sed -i \
  -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "17"|' \
  $HOME/.junction/config/app.toml
  • Set Minimum Gas Price, Enable Prometheus, and Disable the Indexer
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.00025amf\"|" $HOME/.junction/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.junction/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.junction/config/config.toml
  • Create Service File
sudo tee /etc/systemd/system/junctiond.service > /dev/null <<EOF
[Unit]
Description=airchains testnet node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which junctiond) start
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
  • Download Current Snapshot
curl "https://snapshot.sychonix.com/testnet/airchains/airchains-snapshot.tar.lz4" | lz4 -dc - | tar -xf - -C "$HOME/.junction"
  • Enable the Service and Start the Node
sudo systemctl daemon-reload
sudo systemctl enable junctiond.service
sudo systemctl restart junctiond.service && sudo journalctl -u junctiond.service -f --no-hostname -o cat

Rollup DA

Install dependencies

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git jq lz4 build-essential cmake perl automake autoconf libtool wget libssl-dev

Install Go

ver="1.22.3" && \
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
sudo rm -rf /usr/local/go && \
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
rm "go$ver.linux-amd64.tar.gz" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version

Install Packages

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

Setting Up and Running the EVM Station

cd evm-station
go mod tidy

Running the Project and save privatekey

/bin/bash ./scripts/local-setup.sh

Create env file

nano ~/.rollup-env
MONIKER="localtestnet"
KEYRING="test"
KEYALGO="eth_secp256k1"
LOGLEVEL="info"
HOMEDIR="$HOME/.evmosd"
TRACE=""
BASEFEE=1000000000
CONFIG=$HOMEDIR/config/config.toml
APP_TOML=$HOMEDIR/config/app.toml
GENESIS=$HOMEDIR/config/genesis.json
TMP_GENESIS=$HOMEDIR/config/tmp_genesis.json
VAL_KEY="mykey"

Create a service file Evmos

sudo tee /etc/systemd/system/rolld.service > /dev/null << EOF
[Unit]
Description=ZK
After=network.target

[Service] User=$USER EnvironmentFile=/$HOME/.rollup-env ExecStart=/$HOME/evm-station/build/station-evm start —metrics "" —log_level info —json-rpc.api eth,txpool,personal,net,debug,web3 —chain-id “stationevm_1234-1” Restart=always RestartSec=3

[Install] WantedBy=multi-user.target EOF

Change the Port in app.toml to 0.0.0.0

nano $HOME/.evmosd/config/app.toml

Enable Service and Start Evmos

sudo systemctl daemon-reload
sudo systemctl enable rolld
sudo systemctl start rolld
sudo journalctl -u rolld -f --no-hostname -o cat

Get the Evmos Private Key and Keep it Safe

/bin/bash ./scripts/local-keys.sh

Install Eigen DA

cd $HOME
wget https://github.com/airchains-network/tracks/releases/download/v0.0.2/eigenlayer
mkdir -p $HOME/go/bin
chmod +x $HOME/eigenlayer
mv $HOME/eigenlayer $HOME/go/bin

Generate operator keys with ECDSA type

eigenlayer operator keys create --key-type ecdsa 

Setting Up and Running Tracks

cd tracks
go mod tidy

Initiate Sequencer

go run cmd/main.go init --daRpc "disperser-holesky.eigenda.xyz" --daKey "PUBLICHEX" --daType "eigen" --moniker "MONIKER" --stationRpc "http://127.0.0.1:8545" --stationAPI "http://127.0.0.1:8545" --stationType "evm"

Create Keys for Junction

go run cmd/main.go keys junction --accountName  --accountPath $HOME/.tracks/junction-accounts/keys

keep it in a safe place

Fund Keys for Junction Testnet Navigate to the Switchyard faucet in the Airchains Discord and follow the provided steps to obtain Switchyard tokens for funding the keys. Initiate Prover

go run cmd/main.go prover v1EVM

Create Station on Junction Locate the node ID in the ~/.track/config/sequencer.toml configuration file.

nano ~/.tracks/config/sequencer.toml
go run cmd/main.go create-station --accountName  --accountPath $HOME/.tracks/junction-accounts/keys --jsonRPC "https://junction-testnet-rpc.synergynodes.com/" --info "EVM Track" --tracks  --bootstrapNode "/ip4//tcp/2300/p2p/"

Create and run node with systemd

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=/usr/local/go/bin/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
sudo journalctl -u stationd -f --no-hostname -o cat

All done, now just tx using your RPC.

Upgrade

No chain upgrades scheduled yet.

API

https://api-airchains-t.sychonix.com

RPC

https://rpc-airchains-t.sychonix.com

Snapshot

  • Stop Service
sudo systemctl stop junctiond
  • Back up priv_validator_state.json
cp ~/.junction/data/priv_validator_state.json  ~/.junction/priv_validator_state.json
junctiond tendermint unsafe-reset-all --home $HOME/.junction --keep-addr-book
curl https://snapshot.sychonix.com/testnet/airchains/airchains-snapshot.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.junction
mv $HOME/.junction/priv_validator_state.json.backup $HOME/.junction/data/priv_validator_state.json
sudo systemctl restart junctiond && sudo journalctl -u junctiond -f -o cat

Addrbook

curl -Ls https://snapshot.sychonix.com/testnet/airchains/addrbook.json > $HOME/.junction/config/addrbook.json

Genesis

curl -Ls https://snapshot.sychonix.com/testnet/airchains/genesis.json > $HOME/.junction/config/genesis.json

CLI Cheatsheet

Wallet Management

junctiond keys add 

junctiond keys add  --recover

junctiond keys list 

junctiond keys delete 

junctiond keys export 

junctiond keys import .backup

junctiond q bank balances $(junctiond keys show  -a)

Validator Management

Moniker

Identity

Details

Website

Security Contact

Amount

junctiond tx staking create-validator \
--amount=1000000amf \
--pubkey=$(junctiond tendermint show-validator) \
--moniker="" \
--identity="" \
--details="" \
--website="" \
--security-contact= \
--chain-id=junction \
--commission-rate=0.05 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1 \
--gas-prices 0.00025amf \
--gas "auto" \
--gas-adjustment "1.5" \
--from wallet \
-y

junctiond tx staking edit-validator \
--new-moniker="" \
--identity="" \
--details="" \
--website="" \
--chain-id=junction \
--commission-rate=0.07 \
--from wallet \
--gas=auto \
--gas-prices 0.00025amf \
-y

junctiond tx slashing unjail --from wallet --chain-id junction --gas auto --gas-adjustment 1.5  

junctiond query slashing signing-info $(junctiond tendermint show-validator)

junctiond q staking validator $(junctiond keys show wallet --bech val -a)

junctiond q bank denom-metadata -oj | jq

junctiond status 2>&1 | jq -r '.SyncInfo.catching_up // .sync_info.catching_up'

junctiond status 2>&1 | jq -r '.SyncInfo.latest_block_height // .sync_info.latest_block_height'

Token Management

junctiond tx distribution withdraw-all-rewards --from wallet --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y 

junctiond tx distribution withdraw-rewards $(junctiond keys show wallet --bech val -a) --commission --from wallet --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y 

junctiond tx staking delegate $(junctiond keys show wallet --bech val -a) 1000000amf --from wallet --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y 

junctiond tx staking redelegate $(junctiond keys show wallet --bech val -a)  1000000amf --from wallet --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y

junctiond tx staking delegate  1000000amf --from  --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y 

junctiond tx staking unbond $(junctiond keys show wallet --bech val -a) 1000000amf --from wallet --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y

junctiond tx bank send wallet  1000000amf --from wallet --chain-id junction --gas auto --gas-adjustment 1.5 --gas-prices 0.00025amf -y

Service Management

sudo systemctl daemon-reload

sudo systemctl enable junctiond

sudo systemctl disable junctiond

sudo systemctl start junctiond

sudo systemctl stop junctiond

sudo systemctl restart junctiond

sudo systemctl status junctiond

sudo journalctl -u junctiond -f --no-hostname -o cat

CUSTOM_PORT=
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}660\"%" $HOME/.junction/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}317\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}091\"%" $HOME/.junction/config/app.toml

cd $HOME && sudo systemctl stop junctiond && sudo systemctl disable junctiond && sudo rm /etc/systemd/system/junctiond.service && sudo systemctl daemon-reload && sudo rm -rf $(which junctiond) && sudo rm -rf $HOME/.junction && sudo rm -rf $(which junctiond)