Overview
AtomOne is a constitutionally governed, minimalist L1 blockchain and neutral interchain hub. It’s built as a secure base layer rather than a feature-heavy app chain, focusing on routing value and security between many blockchains via IBC and shared security.
Core pieces:
AtomOne Hub – the main chain that provides security, IBC connectivity and Interchain Security to connected consumer chains, while letting them stay sovereign and specialize (DeFi, infra, etc.).
-
ATONE – the staking and governance token, used to secure the network and vote on proposals, including constitutional changes.
-
PHOTON – the dedicated fee and payment token for the hub and its connected environment, created only by burning ATONE and capped in total supply.
-
Constitution & DAOs – an on-chain constitution plus a set of DAOs (steering, oversight, treasury, etc.) that define and enforce how the protocol, economics and governance can evolve.
By separating security (ATONE) from everyday usage and fees (PHOTON), and by grounding upgrades in a formal constitution, AtomOne aims to be a long-term, predictable hub for an interchain ecosystem rather than just another experimental application chain.
Public Endpoints
Guide
This guide provides a complete and reliable setup for running an AtomOne mainnet node and validator. Here you’ll find everything you need - 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 AtomOne 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 https://github.com/atomone-hub/atomone atomone cd atomone git checkout v3.0.3 make install atomoned version --long | grep -e version -e commit # version: v3.0.3 # commit: a948052ffbe9b594070abe601b39f91ac1a8498c
Initialization
Initialize the node (replace VALIDATOR_NAME with your own)
atomoned init VALIDATOR_NAME --chain-id atomone-1 && \ atomoned config chain-id atomone-1 && \ atomoned config keyring-backend os
Genesis
Download genesis
wget https://storage.crouton.digital/mainnet/atomone/files/genesis.json -O $HOME/.atomone/config/genesis.json
Addrbook
Download addrbook
wget https://storage.crouton.digital/mainnet/atomone/files/addrbook.json -O $HOME/.atomone/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/.atomone/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/.atomone/config/app.toml echo "export NODE=http://localhost:$(($NODE_NUMBER + 266))57" >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ atomoned config node $NODE
Create a service file
sudo tee /etc/systemd/system/atomoned.service > /dev/null <<EOF [Unit] Description=atomone_node After=network.target [Service] User=$USER Type=simple ExecStart=$(which atomoned) start --home $HOME/.atomone Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
Start the node
sudo systemctl daemon-reload && \ sudo systemctl enable atomoned && \ sudo systemctl restart atomoned && \ sudo journalctl -u atomoned -f -o cat
Restore node from snapshot
sudo apt install lz4 -y && \ sudo systemctl stop atomoned && \ cp $HOME/.atomone/data/priv_validator_state.json $HOME/.atomone/priv_validator_state.json.backup && \ rm -rf $HOME/.atomone/data && \ curl https://storage.crouton.digital/mainnet/atomone/snapshots/atomone_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.atomone && \ mv $HOME/.atomone/priv_validator_state.json.backup $HOME/.atomone/data/priv_validator_state.json && \ sudo systemctl restart atomoned && \ sudo journalctl -u atomoned -f
State Sync
Restore node from state sync
SNAP_RPC="https://atomone-mainnet-rpc.crouton.digital:443" && \ sudo systemctl stop atomoned && \ cp $HOME/.atomone/data/priv_validator_state.json $HOME/.atomone/priv_validator_state.json.backup && \ atomoned tendermint unsafe-reset-all --home $HOME/.atomone --keep-addr-book && \ peers="6ec1488c456256ad56946ccd4c5adb8c5c433f63@5.9.95.101:30656" && \ sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.atomone/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/.atomone/config/config.toml && \ mv $HOME/.atomone/priv_validator_state.json.backup $HOME/.atomone/data/priv_validator_state.json && \ sudo systemctl restart atomoned && \ sudo journalctl -u atomoned -f
Upgrade Node
VER="vv3.0.3" git clone https://github.com/atomone-hub/atomone atomone && \ cd $HOME && \ rm -rf atomone && \ git clone https://github.com/atomone-hub/atomone atomone && \ cd atomone && \ git checkout tags/$VER -b $VER && \ make install && \ sudo systemctl restart atomoned && \ sudo journalctl -u atomoned -f
Delete Node
sudo systemctl stop atomoned && \ sudo systemctl disable atomoned && \ sudo rm -rf /etc/systemd/system/atomoned.service && \ sudo rm "$(which atomoned)" && \ sudo rm -rf "$HOME/.atomone"
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" atomoned keys add wallet
Validator management
atomoned tx staking create-validator \ --amount 1000000uatone \ --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 atomone-1 \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 0.002uatone \ -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" atomoned q staking validator $(atomoned 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" atomoned tx distribution withdraw-all-rewards --from wallet --chain-id atomone-1 --gas-adjustment=1.15 --gas auto --gas-prices 0.002uatone -y


