Useful commands
π Key managementβ
Add new keyβ
exrpd keys add wallet
Recover existing keyβ
exrpd keys add wallet --recover
List all keysβ
exrpd keys list
Delete keyβ
exrpd keys delete wallet
Export key to the fileβ
exrpd keys export wallet
Import key from the fileβ
exrpd keys import wallet wallet.backup
Query wallet balanceβ
exrpd q bank balances $(exrpd keys show wallet -a)
π· Validator managementβ
info
Please make sure you have adjusted moniker, identity, details and website to match your values.
Create new validatorβ
Create validator.jsonβ
echo '{
"pubkey": '$(exrpd tendermint show-validator)',
"amount": "10000000000000000000axrp",
"moniker": "owlstake",
"identity": "6B73E2068E0C0C4C",
"website": "https://owlstake.com",
"security": "[email protected]",
"details": "We are a Professional Validator of PoS Cryptocurrencies who helps investors and token holders gain profits from their assets by consistently increasing their yields via non-custodial staking. Join us, stake, and earn",
"commission-rate": "0.05",
"commission-max-rate": "1",
"commission-max-change-rate": "1",
"min-self-delegation": "1"
}' > validator.json
Run command to create validatorβ
exrpd tx staking create-validator validator.json --from wallet --fees 40000000000000000axrp -y
Edit existing validatorβ
exrpd tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id xrplevm_1449000-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.025axrp \
-y
Unjail validatorβ
exrpd tx slashing unjail --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Jail reasonβ
exrpd query slashing signing-info $(exrpd tendermint show-validator)
List all active validatorsβ
exrpd 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β
exrpd 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β
exrpd q staking validator $(exrpd keys show wallet --bech val -a)
π² Token managementβ
Withdraw rewards from all validatorsβ
exrpd tx distribution withdraw-all-rewards --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Withdraw commission and rewards from your validatorβ
exrpd tx distribution withdraw-rewards $(exrpd keys show wallet --bech val -a) --commission --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Delegate tokens to yourselfβ
exrpd tx staking delegate $(exrpd keys show wallet --bech val -a) 1000000axrp --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Delegate tokens to validatorβ
exrpd tx staking delegate <TO_VALOPER_ADDRESS> 1000000axrp --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Redelegate tokens to another validatorβ
exrpd tx staking redelegate $(exrpd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000axrp --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Unbond tokens from your validatorβ
exrpd tx staking unbond $(exrpd keys show wallet --bech val -a) 1000000axrp --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Send tokens to the walletβ
exrpd tx bank send wallet <TO_WALLET_ADDRESS> 1000000axrp --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
π³ Governanceβ
List all proposalsβ
exrpd query gov proposals
View proposal by idβ
exrpd query gov proposal 1
Vote 'Yes'β
exrpd tx gov vote 1 yes --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Vote 'No'β
exrpd tx gov vote 1 no --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Vote 'Abstain'β
exrpd tx gov vote 1 abstain --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
Vote 'NoWithVeto'β
exrpd tx gov vote 1 NoWithVeto --from wallet --chain-id xrplevm_1449000-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.025axrp -y
β‘οΈ Utilityβ
Update portsβ
CUSTOM_PORT=13
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.exrpd/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.exrpd/config/app.toml
Update Indexerβ
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.exrpd/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.exrpd/config/config.toml
Update pruningβ
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/.exrpd/config/app.toml
π¨ Maintenanceβ
Get validator infoβ
exrpd status 2>&1 | jq .ValidatorInfo
Get sync infoβ
exrpd status 2>&1 | jq .SyncInfo
Get node peerβ
echo $(exrpd tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.exrpd/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check if validator key is correctβ
[[ $(exrpd q staking validator $(exrpd keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(exrpd 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β
curl -sS http://localhost:11757/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
Set minimum gas priceβ
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025axrp\"/" $HOME/.exrpd/config/app.toml
Enable prometheusβ
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.exrpd/config/config.toml
Reset chain dataβ
exrpd tendermint unsafe-reset-all --keep-addr-book --home $HOME/.exrpd --keep-addr-book
Remove nodeβ
danger
Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv_validator_key.json!
cd $HOME
sudo systemctl stop exrpd
sudo systemctl disable exrpd
sudo rm /etc/systemd/system/exrpd.service
sudo systemctl daemon-reload
rm -f $(which exrpd)
rm -rf $HOME/.exrpd
rm -rf $HOME/node
βοΈ Service Managementβ
Reload service configurationβ
sudo systemctl daemon-reload
Enable serviceβ
sudo systemctl enable exrpd
Disable serviceβ
sudo systemctl disable exrpd
Start serviceβ
sudo systemctl start exrpd
Stop serviceβ
sudo systemctl stop exrpd
Restart serviceβ
sudo systemctl restart exrpd
Check service statusβ
sudo systemctl status exrpd
Check service logsβ
sudo journalctl -u exrpd -f --no-hostname -o cat