Stake with Nodeist

Composable Finance Mainnet Services


  • COMPOSABLE FINANCE
    composable.png







    The complete infrastructure for cross-chain smart contracts, applications, and modular functionality.


    Chain Explorer:

    Public Endpoints:
    Bash:
    # API ENDPOINT
    https://api-composable.nodeist.net
    
    # RPC ENDPOINT
    https://rpc-composable.nodeist.net
    
    # GRPC ENDPOINT
    https://grpc-composable.nodeist.net

    Peering:

    addrbook:

    Bash:
    curl -Ls https://ss.nodeist.net/composable/addrbook.json > $HOME/.banksy/config/addrbook.json

    live-peers:
    Bash:
    peers="[email protected]:25656,[email protected]:30656,[email protected]:3000,[email protected]:01656,[email protected]:2260,[email protected]:15956,[email protected]:22256,[email protected]:36656,[email protected]:26656,[email protected]:26656"
    sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$peers\"|" $HOME/.banksy/config/config.toml



  • Manual Installation
    This section contains a list of commands to install the node in manual mode.

    Server Preparation
    Bash:
    apt update && apt upgrade -y
    
    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 -y

    Install GO
    Bash:
    ver="1.20.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

    Node Installation
    Replace Nodeist_Guide in the first line with your moniker name.
    Bash:
    NODE_MONIKER="Nodeist_Guide"
    
    cd || return
    rm -rf composable-centauri
    git clone https://github.com/notional-labs/composable-centauri.git
    cd composable-centauri
    git checkout v3.2.2
    make install
    
    centaurid config chain-id centauri-1
    centaurid init "$NODE_MONIKER" --chain-id centauri-1
    
    curl -s https://ss.nodeist.net/composable/genesis.json > $HOME/.banksy/config/genesis.json
    curl -s https://ss.nodeist.net/composable/addrbook.json > $HOME/.banksy/config/addrbook.json
    
    SEEDS=""
    PEERS=""
    sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.banksy/config/config.toml
    
    sed -i 's|^pruning *=.*|pruning = "custom"|g' $HOME/.banksy/config/app.toml
    sed -i 's|^pruning-keep-recent  *=.*|pruning-keep-recent = "100"|g' $HOME/.banksy/config/app.toml
    sed -i 's|^pruning-interval *=.*|pruning-interval = "10"|g' $HOME/.banksy/config/app.toml
    sed -i 's|^snapshot-interval *=.*|snapshot-interval = 0|g' $HOME/.banksy/config/app.toml
    
    sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.025ppica"|g' $HOME/.banksy/config/app.toml
    sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.banksy/config/config.toml
    
    sudo tee /etc/systemd/system/centaurid.service > /dev/null << EOF
    [Unit]
    Description=Composable Node
    After=network-online.target
    [Service]
    User=$USER
    ExecStart=$(which centaurid) start
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=10000
    [Install]
    WantedBy=multi-user.target
    EOF
    
    centaurid tendermint unsafe-reset-all --home $HOME/.banksy --keep-addr-book
    
    curl -L https://ss.nodeist.net/composable/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.banksy --strip-components 2
    
    
    sudo systemctl daemon-reload
    sudo systemctl enable centaurid
    sudo systemctl start centaurid
    
    sudo journalctl -fu centaurid -o cat



  • HEIGHT SIZE TIMESTAMP DOWNLOAD


    Instructions
    Stop the service and reset the data

    Bash:
    sudo systemctl stop centaurid
    cp $HOME/.banksy/data/priv_validator_state.json $HOME/.banksy/priv_validator_state.json.backup
    rm -rf $HOME/.banksy/data

    Download latest snapshot
    Bash:
    curl -L https://ss.nodeist.net/composable/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.banksy --strip-components 2
    mv $HOME/.banksy/priv_validator_state.json.backup $HOME/.banksy/data/priv_validator_state.json

    Restart the service and check the log
    Bash:
    sudo systemctl restart centaurid && sudo journalctl -fu centaurid -o cat



  • Instructions
    Stop the service and reset the data

    Bash:
    sudo systemctl stop centaurid
    cp $HOME/.banksy/data/priv_validator_state.json $HOME/.banksy/priv_validator_state.json.backup
    centaurid tendermint unsafe-reset-all --home $HOME/.banksy

    Get and configure the state sync information
    Bash:
    SNAP_RPC="https://rpc-composable.nodeist.net:443"
    LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
    BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \
    TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
    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\"|" $HOME/.banksy/config/config.toml
    
    mv $HOME/.banksy/priv_validator_state.json.backup $HOME/.banksy/data/priv_validator_state.json

    Restart the service and check the log
    Bash:
    sudo systemctl restart centaurid && sudo journalctl -fu centaurid -o cat


  • 🔑 Key management

    Add new key

    Bash:
    centaurid keys add wallet

    Recover existing key
    Bash:
    centaurid keys add wallet --recover

    List all keys
    Bash:
    centaurid keys list

    Delete key
    Bash:
    centaurid keys delete wallet

    Export key to the file
    Bash:
    centaurid keys export wallet

    Import key from the file
    Bash:
    centaurid keys import wallet wallet.backup

    Query wallet balance
    Bash:
    centaurid q bank balances $(centaurid keys show wallet -a)

    👷 Validator management
    - Please make sure you have adjusted moniker, identity, details and website to match your values.

    Create new validator
    Bash:
    centaurid tx staking create-validator \
    --amount 1000000ppica \
    --pubkey $(centaurid tendermint show-validator) \
    --moniker "YOUR_MONIKER_NAME" \
    --identity "YOUR_KEYBASE_ID" \
    --details "YOUR_DETAILS" \
    --website "YOUR_WEBSITE_URL" \
    --chain-id centauri-1 \
    --commission-rate 0.05 \
    --commission-max-rate 0.20 \
    --commission-max-change-rate 0.01 \
    --min-self-delegation 1 \
    --from wallet \
    --gas-adjustment 1.4 \
    --gas auto \
    --gas-prices 0.025ppica \
    -y

    Edit existing validator
    Bash:
    centaurid tx staking edit-validator \
    --new-moniker "YOUR_MONIKER_NAME" \
    --identity "YOUR_KEYBASE_ID" \
    --details "YOUR_DETAILS" \
    --website "YOUR_WEBSITE_URL" \
    --chain-id centauri-1 \
    --commission-rate 0.05 \
    --from wallet \
    --gas-adjustment 1.4 \
    --gas auto \
    --gas-prices 0.025ppica \
    -y

    Unjail validator
    Bash:
    centaurid tx slashing unjail --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Jail reason
    Bash:
    centaurid query slashing signing-info $(centaurid tendermint show-validator)

    List all active validators
    Bash:
    centaurid q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl

    List all inactive validators
    Bash:
    centaurid q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl

    View validator details
    Bash:
    centaurid q staking validator $(centaurid keys show wallet --bech val -a)

    💲 Token management

    Withdraw rewards from all validators

    Bash:
    centaurid tx distribution withdraw-all-rewards --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Withdraw commission and rewards from your validator
    Bash:
    centaurid tx distribution withdraw-rewards $(centaurid keys show wallet --bech val -a) --commission --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Delegate tokens to yourself
    Bash:
    centaurid tx staking delegate $(centaurid keys show wallet --bech val -a) 1000000ppica --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Delegate tokens to validator
    Bash:
    centaurid tx staking delegate <TO_VALOPER_ADDRESS> 1000000ppica --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Redelegate tokens to another validator
    Bash:
    centaurid tx staking redelegate $(centaurid keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ppica --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Unbond tokens from your validator
    Bash:
    centaurid tx staking unbond $(centaurid keys show wallet --bech val -a) 1000000ppica --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Send tokens to the wallet
    Bash:
    centaurid tx bank send wallet <TO_WALLET_ADDRESS> 1000000ppica --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    🗳 Governance

    List all proposals

    Bash:
    centaurid query gov proposals

    View proposal by id
    Bash:
    centaurid query gov proposal 1

    Vote 'Yes'
    Bash:
    centaurid tx gov vote 1 yes --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Vote 'No'
    Bash:
    centaurid tx gov vote 1 no --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Vote 'Abstain'
    Bash:
    centaurid tx gov vote 1 abstain --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    Vote 'NoWithVeto'
    Bash:
    centaurid tx gov vote 1 NoWithVeto --from wallet --chain-id centauri-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ppica -y

    ⚡️ Utility

    Update Indexer

    Bash:
    sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.banksy/config/config.toml

    Update pruning
    Bash:
    sed -i \
      -e 's|^pruning *=.*|pruning = "custom"|' \
      -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
      -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
      -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
      $HOME/.banksy/config/app.toml

    🚨 Maintenance

    Get validator info

    Bash:
    centaurid status 2>&1 | jq .ValidatorInfo

    Get sync info
    Bash:
    centaurid status 2>&1 | jq .SyncInfo

    Get node peer
    Bash:
    echo $(centaurid tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.banksy/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')

    Check if validator key is correct
    Bash:
    [[ $(centaurid q staking validator $(centaurid keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(centaurid status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"

    Get live peers
    Bash:
    curl -sS http://localhost:27657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'

    Set minimum gas price
    Bash:
    sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025ppica\"/" $HOME/.banksy/config/app.toml

    Enable prometheus
    Bash:
    sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.banksy/config/config.toml

    Reset chain data
    Bash:
    centaurid tendermint unsafe-reset-all --home $HOME/.banksy --keep-addr-book

    Remove node
    - Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv_validator_key.json!


    Bash:
    cd $HOME
    sudo systemctl stop centaurid
    sudo systemctl disable centaurid
    sudo rm /etc/systemd/system/centaurid.service
    sudo systemctl daemon-reload
    rm -f $(which centaurid)
    rm -rf $HOME/.banksy
    rm -rf $HOME/composable-centauri

    ⚙️ Service Management

    Reload service configuration

    Bash:
    sudo systemctl daemon-reload

    Enable service
    Bash:
    sudo systemctl enable centaurid

    Disable service
    Bash:
    sudo systemctl disable centaurid

    Start service
    Bash:
    sudo systemctl start centaurid

    Stop service
    Bash:
    sudo systemctl stop centaurid

    Restart service
    Bash:
    sudo systemctl restart centaurid

    Check service status
    Bash:
    sudo systemctl status centaurid

    Check service logs
    Bash:
    sudo journalctl -u centaurid -f --no-hostname -o cat

 
Last edited:
Up