logo

Airchains

AMPH
  • Network:

    Testnet

  • Chain ID:

    junction

  • Current Node Version:

    0.3.2

Overview

Airchains is a blockchain solution and modular zk-rollup SDK focused on simplifying the development and deployment of decentralized applications while making on-chain confidentiality accessible. Its framework combines zero-knowledge proofs (zk), fully homomorphic encryption (FHE), and multiparty computation (MPC) to enable secure, private, and verifiable on-chain computations without exposing sensitive information.

Key Components:

  • Confidential Computation Framework: A stack that brings together zk, FHE, and MPC to support trustless, collaborative processing of encrypted data, balancing confidentiality with on-chain transparency.

  • zkFHE-Based Architecture: By enabling zkFHE within its framework, Airchains is positioned around “making confidentiality accessible” and redefining how privacy and transparency can coexist on-chain.

  • Modular zk-Rollup SDK (Airchains zk Stack): A modular zk-rollup SDK and tool suite that offers multiple execution environments (including EVM-, Cosmos-, and Solana-compatible chains) and integrated tooling to rapidly deploy rollups for developers, enterprises, and institutions.

  • Developer Platform & Documentation: Official documentation describes Airchains as a blockchain solution focused on simplifying the development and deployment of dApps, providing guides and resources to help teams set up projects and work with the Airchains ecosystem.

  • Switchyard Testnet: Switchyard is presented in the docs as the first public testnet of Airchains, built on its modular architecture to allow developers to create and deploy zk-rollups.

This overview is a condensed restatement of how Airchains describes itself in its official site, docs, and associated listings.

Public Endpoints

TypeEndpointLink
RPChttps://airchains-testnet-rpc.crouton.digital arrow right icon
APIhttps://airchains-testnet-api.crouton.digital arrow right icon
gRPCairchains-testnet-grpc.crouton.digital:28190
peer301a14ccbcf3fc15f9f90619e39743a8bf9eeafd@65.109.93.124:30856

Guide

INFOINFO

This guide provides a complete and reliable setup for running an Airchains testnet node and validator. It covers everything from downloading binaries and configuration files to initializing the node, managing keys, applying snapshots, and maintaining a stable validator environment. Follow the steps carefully to ensure a smooth and secure deployment on the Airchains network.

Prepare

Update and install packages

sudo apt update && sudo apt upgrade -y && \ sudo apt install curl tar wget clang pkg-config libssl-dev libleveldb-dev jq build-essential bsdmainutils git make ncdu htop screen unzip bc fail2ban htop -y

Installing Go

VER="1.22.0" cd $HOME && \ 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

Binary

git clone unknow airchains cd airchains git checkout 0.3.2 make install junctiond version --long | grep -e version -e commit # version: 0.3.2 # commit: e897160cebbb7ca4991353dcb6b42a571dfe793d

Initialization

Initialize the node (replace VALIDATOR_NAME with your own)

junctiond init VALIDATOR_NAME --chain-id junction && \ junctiond config chain-id junction && \ junctiond config keyring-backend os

Genesis

Download genesis

wget https://storage.crouton.digital/testnet/airchains/files/genesis.json -O $HOME/.junction/config/genesis.json

Addrbook

Download addrbook

wget https://storage.crouton.digital/testnet/airchains/files/addrbook.json -O $HOME/.junction/config/addrbook.json

Configuration

EXTERNAL_IP=$(wget -qO- eth0.me) NODE_NUMBER="1" sed -i.bak \ -e "s/\(proxy_app = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))58\"/" \ -e "s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))57\"/" \ -e "s/\(pprof_laddr = \"\)\([^:]*\):\([0-9]*\).*/\1localhost:$(($NODE_NUMBER + 60))60\"/" \ -e "/\[p2p\]/,/^\[/{s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))56\"/}" \ -e "/\[p2p\]/,/^\[/{s/\(external_address = \"\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/; t; s/\(external_address = \"\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/}" \ -e "s/\(prometheus_listen_addr = \":\)\([0-9]*\).*/\1$(($NODE_NUMBER + 266))60\"/" $HOME/.junction/config/config.toml sed -i.bak \ -e "/\[api\]/,/^\[/{s/\(address = \"tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 13))17\4/}" \ -e "/\[grpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))90\4/}" \ -e "/\[grpc-web\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))91\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))45\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(ws-address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))46\4/}" $HOME/.junction/config/app.toml echo "export NODE=http://localhost:$(($NODE_NUMBER + 266))57" >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ junctiond config node $NODE

Create a service file

sudo tee /etc/systemd/system/junctiond.service > /dev/null <<EOF [Unit] Description=airchains_node After=network.target [Service] User=$USER Type=simple ExecStart=$(which junctiond) start --home $HOME/.junction Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF

Start the node

sudo systemctl daemon-reload && \ sudo systemctl enable junctiond && \ sudo systemctl restart junctiond && \ sudo journalctl -u junctiond -f -o cat

Snapshot

Block HeightSizeIndexerLast SnapshotDownload
13202092.3Tnull2024-08-11T18:01:09.20366825Z arrow right icon

Restore node from snapshot

sudo apt install lz4 -y && \ sudo systemctl stop junctiond && \ cp $HOME/.junction/data/priv_validator_state.json $HOME/.junction/priv_validator_state.json.backup && \ rm -rf $HOME/.junction/data && \ curl https://storage.crouton.digital/testnet/airchains/snapshots/airchains_latest.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

State Sync

Restore node from state sync

SNAP_RPC="https://airchains-testnet-rpc.crouton.digital:443" && \ sudo systemctl stop junctiond && \ cp $HOME/.junction/data/priv_validator_state.json $HOME/.junction/priv_validator_state.json.backup && \ junctiond tendermint unsafe-reset-all --home $HOME/.junction --keep-addr-book && \ peers="301a14ccbcf3fc15f9f90619e39743a8bf9eeafd@65.109.93.124:30856" && \ sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.junction/config/config.toml && \ LATEST_HEIGHT=$(curl -s "$SNAP_RPC/block" | jq -r .result.block.header.height) && \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)) && \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) && \ echo "$LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH" && sleep 2 && \ 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/.junction/config/config.toml && \ mv $HOME/.junction/priv_validator_state.json.backup $HOME/.junction/data/priv_validator_state.json && \ sudo systemctl restart junctiond && \ sudo journalctl -u junctiond -f

Upgrade Node

VER="v0.3.2" git clone unknow airchains && \ cd $HOME && \ rm -rf airchains && \ git clone unknow airchains && \ cd airchains && \ git checkout tags/$VER -b $VER && \ make install && \ sudo systemctl restart junctiond && \ sudo journalctl -u junctiond -f

Delete Node

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

Key management

# This command generates a new wallet with a unique keypair. # Use this to create a secure, brand-new wallet for transactions. # Your wallet name = "wallet" junctiond keys add wallet

Validator management

junctiond tx staking create-validator \ --amount 1000000amf \ --moniker "VALIDATOR_NAME" \ --identity "" \ --website "" \ --details "" \ --from wallet \ --commission-rate 0.1 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.01 \ --min-self-delegation 1 \ --pubkey $(celestia-appd tendermint show-validator) \ --chain-id junction \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 0.002amf \ -y

Validator commands

# Retrieves comprehensive information regarding the validator. # This command is utilized to fetch details about the current validator, including its address, public key, and associated data. # Your wallet name = "wallet" junctiond q staking validator $(junctiond keys show wallet --bech val -a)

Onchain

# Withdraw all accumulated rewards from your account. # This command retrieves and withdraws all rewards earned from staking. # Your wallet name = "wallet" junctiond tx distribution withdraw-all-rewards --from wallet --chain-id junction --gas-adjustment=1.15 --gas auto --gas-prices 0.002amf -y

Chat With Us

Connect directly with our team by filling out the contact form. Whether you’re looking to optimize staking yields, deploy validator nodes, integrate RPC services, or find a reliable validator partner for your blockchain or project — we’re here to help.

We can explore Web3 and blockchain infrastructure solutions together and tailor our support to your long-term goals. Schedule a meeting, and let’s discuss your long-term goals.

Crouton Digital respects your privacy. By submitting this form, you are acknowledging that you have read and agree to our Privacy Policy, which details how we collect and use your information.