Stake with Nodeist

Bonusblock Testnet Services



  • BONUSBLOCK
    bonusblock.png



    BonusBlock is a simple, yet unique blockchain network that rewards users for on-chain activity across Web3 and provides an incentive to build healthier relationships, loyalty, and community engagement with project stakeholders.​

    Chain Explorer:

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

    Peering:

    addrbook:

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

    live-peers:
    Bash:
    peers="[email protected]:29656"
    sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$peers\"|" $HOME/.bonusblock/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
    git clone https://github.com/BBlockLabs/BonusBlock-chain
    cd BonusBlock-chain
    git checkout v0.1.39
    make install
    
    bonus-blockd config chain-id blocktopia-01
    bonus-blockd init "$NODE_MONIKER" --chain-id blocktopia-01
    
    curl -s https://ss.nodeist.net/t/bonusblock/genesis.json > $HOME/.bonusblock/config/genesis.json
    curl -s https://ss.nodeist.net/t/bonusblock/addrbook.json > $HOME/.bonusblock/config/addrbook.json
    
    SEEDS=""
    PEERS=""
    sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.bonusblock/config/config.toml
    
    sed -i 's|^pruning *=.*|pruning = "custom"|g' $HOME/.bonusblock/config/app.toml
    sed -i 's|^pruning-keep-recent  *=.*|pruning-keep-recent = "100"|g' $HOME/.bonusblock/config/app.toml
    sed -i 's|^pruning-interval *=.*|pruning-interval = "10"|g' $HOME/.bonusblock/config/app.toml
    sed -i 's|^snapshot-interval *=.*|snapshot-interval = 0|g' $HOME/.bonusblock/config/app.toml
    
    sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.025ubonus"|g' $HOME/.bonusblock/config/app.toml
    sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.bonusblock/config/config.toml
    
    sudo tee /etc/systemd/system/bonus-blockd.service > /dev/null << EOF
    [Unit]
    Description=Bonusblock Node
    After=network-online.target
    [Service]
    User=$USER
    ExecStart=$(which bonus-blockd) start
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=10000
    [Install]
    WantedBy=multi-user.target
    EOF
    
    bonus-blockd tendermint unsafe-reset-all --home $HOME/.bonusblock --keep-addr-book
    
    curl -L https://ss.nodeist.net/t/bonusblock/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.bonusblock --strip-components 2
    
    
    sudo systemctl daemon-reload
    sudo systemctl enable bonus-blockd
    sudo systemctl start bonus-blockd
    
    sudo journalctl -fu bonus-blockd -o cat



  • HEIGHT SIZE TIMESTAMP DOWNLOAD



    Instructions
    Stop the service and reset the data

    Bash:
    sudo systemctl stop bonus-blockd
    cp $HOME/.bonusblock/data/priv_validator_state.json $HOME/.bonusblock/priv_validator_state.json.backup
    rm -rf $HOME/.bonusblock/data

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

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



  • Instructions
    Stop the service and reset the data

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

    Get and configure the state sync information
    Bash:
    SNAP_RPC="https://rpc-bonusblock.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/.bonusblock/config/config.toml
    
    mv $HOME/.bonusblock/priv_validator_state.json.backup $HOME/.bonusblock/data/priv_validator_state.json

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


  • 🔑 Key management

    Add new key

    Bash:
    bonus-blockd keys add wallet

    Recover existing key
    Bash:
    bonus-blockd keys add wallet --recover

    List all keys
    Bash:
    bonus-blockd keys list

    Delete key
    Bash:
    bonus-blockd keys delete wallet

    Export key to the file
    Bash:
    bonus-blockd keys export wallet

    Import key from the file
    Bash:
    bonus-blockd keys import wallet wallet.backup

    Query wallet balance
    Bash:
    bonus-blockd q bank balances $(bonus-blockd 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:
    bonus-blockd tx staking create-validator \
    --amount 1000000ubonus \
    --pubkey $(bonus-blockd tendermint show-validator) \
    --moniker "YOUR_MONIKER_NAME" \
    --identity "YOUR_KEYBASE_ID" \
    --details "YOUR_DETAILS" \
    --website "YOUR_WEBSITE_URL" \
    --chain-id blocktopia-01 \
    --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.025ubonus \
    -y

    Edit existing validator
    Bash:
    bonus-blockd tx staking edit-validator \
    --new-moniker "YOUR_MONIKER_NAME" \
    --identity "YOUR_KEYBASE_ID" \
    --details "YOUR_DETAILS" \
    --website "YOUR_WEBSITE_URL" \
    --chain-id blocktopia-01 \
    --commission-rate 0.05 \
    --from wallet \
    --gas-adjustment 1.4 \
    --gas auto \
    --gas-prices 0.025ubonus \
    -y

    Unjail validator
    Bash:
    bonus-blockd tx slashing unjail --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

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

    List all active validators
    Bash:
    bonus-blockd 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:
    bonus-blockd 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:
    bonus-blockd q staking validator $(bonus-blockd keys show wallet --bech val -a)

    💲 Token management

    Withdraw rewards from all validators

    Bash:
    bonus-blockd tx distribution withdraw-all-rewards --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Withdraw commission and rewards from your validator
    Bash:
    bonus-blockd tx distribution withdraw-rewards $(bonus-blockd keys show wallet --bech val -a) --commission --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Delegate tokens to yourself
    Bash:
    bonus-blockd tx staking delegate $(bonus-blockd keys show wallet --bech val -a) 1000000ubonus --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Delegate tokens to validator
    Bash:
    bonus-blockd tx staking delegate <TO_VALOPER_ADDRESS> 1000000ubonus --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Redelegate tokens to another validator
    Bash:
    bonus-blockd tx staking redelegate $(bonus-blockd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ubonus --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Unbond tokens from your validator
    Bash:
    bonus-blockd tx staking unbond $(bonus-blockd keys show wallet --bech val -a) 1000000ubonus --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Send tokens to the wallet
    Bash:
    bonus-blockd tx bank send wallet <TO_WALLET_ADDRESS> 1000000ubonus --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    🗳 Governance

    List all proposals

    Bash:
    bonus-blockd query gov proposals

    View proposal by id
    Bash:
    bonus-blockd query gov proposal 1

    Vote 'Yes'
    Bash:
    bonus-blockd tx gov vote 1 yes --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Vote 'No'
    Bash:
    bonus-blockd tx gov vote 1 no --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Vote 'Abstain'
    Bash:
    bonus-blockd tx gov vote 1 abstain --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    Vote 'NoWithVeto'
    Bash:
    bonus-blockd tx gov vote 1 NoWithVeto --from wallet --chain-id blocktopia-01 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubonus -y

    ⚡️ Utility

    Update Indexer

    Bash:
    sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.bonusblock/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/.bonusblock/config/app.toml

    🚨 Maintenance

    Get validator info

    Bash:
    bonus-blockd status 2>&1 | jq .ValidatorInfo

    Get sync info
    Bash:
    bonus-blockd status 2>&1 | jq .SyncInfo

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

    Check if validator key is correct
    Bash:
    [[ $(bonus-blockd q staking validator $(bonus-blockd keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(bonus-blockd 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.025ubonus\"/" $HOME/.bonusblock/config/app.toml

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

    Reset chain data
    Bash:
    bonus-blockd tendermint unsafe-reset-all --home $HOME/.bonusblock --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 bonus-blockd
    sudo systemctl disable bonus-blockd
    sudo rm /etc/systemd/system/bonus-blockd.service
    sudo systemctl daemon-reload
    rm -f $(which bonus-blockd)
    rm -rf $HOME/.bonusblock
    rm -rf $HOME/BonusBlock-chain

    ⚙️ Service Management

    Reload service configuration

    Bash:
    sudo systemctl daemon-reload

    Enable service
    Bash:
    sudo systemctl enable bonus-blockd

    Disable service
    Bash:
    sudo systemctl disable bonus-blockd

    Start service
    Bash:
    sudo systemctl start bonus-blockd

    Stop service
    Bash:
    sudo systemctl stop bonus-blockd

    Restart service
    Bash:
    sudo systemctl restart bonus-blockd

    Check service status
    Bash:
    sudo systemctl status bonus-blockd

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

 
Last edited:
Up