Testnet

XRPL EVM

Installation Guide
CLI Command
Public Endpoint
Statesync
Snapshot
Explorers
Node Maps
Installation Guide
Installation Guide
CLI Command
Public Endpoint
Statesync
Snapshot
Explorers
Node Maps

How To Install Full Node XRPL EVM Sidechain Testnet

Setting up vars

Your Nodename (validator) that will shows in explorer

NODENAME=<Your_Nodename_Moniker>

Save variables to system

echo "export NODENAME=$NODENAME" >> $HOME/.bash_profile
if [ ! $WALLET ]; then
    echo "export WALLET=wallet" >> $HOME/.bash_profile
fi
echo "export XRPL_CHAIN_ID=xrplevm_1449000-1" >> $HOME/.bash_profile
source $HOME/.bash_profile

Update packages

sudo apt update && sudo apt upgrade -y

Install dependencies

sudo apt install curl build-essential git wget jq make gcc tmux net-tools ccze -y

Install go

if ! [ -x "$(command -v go)" ]; then
  ver="1.21.3"
  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" >> ~/.bash_profile
  source ~/.bash_profile
fi

Download and build binaries

cd $HOME
rm -rf node
git clone https://github.com/xrplevm/node.git
cd node
git checkout v7.0.0
make install

Init app

exrpd init $NODENAME --chain-id $XRPL_CHAIN_ID

Download configuration

cd $HOME
wget -O $HOME/.exrpd/config/genesis.json https://snap1.konsortech.xyz/xrpl/genesis.json
wget -O $HOME/.exrpd/config/addrbook.json https://snap1.konsortech.xyz/xrpl/addrbook.json

Disable indexing

indexer="null"
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.exrpd/config/config.toml

Config pruning

sed -i 's|pruning = "default"|pruning = "custom"|g' $HOME/.exrpd/config/app.toml
sed -i 's|pruning-keep-recent = "0"|pruning-keep-recent = "100"|g' $HOME/.exrpd/config/app.toml
sed -i 's|pruning-interval = "0"|pruning-interval = "19"|g' $HOME/.exrpd/config/app.toml

Set minimum gas price

sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0axrp"|g' $HOME/.exrpd/config/app.toml

Create service

sudo tee /etc/systemd/system/exrpd.service > /dev/null << EOF
[Unit]
Description=XRPL EVM Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which exrpd) start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

Register and start service

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

Guide for Node CLI

Create wallet

To create new wallet you can use command below. Don’t forget to save the mnemonic

exrpd keys add $WALLET

To recover your wallet using seed phrase

exrpd keys add $WALLET --recover

Show your wallet list

exrpd keys list

Save wallet info

Add wallet and validator address into variables

XRPL_WALLET_ADDRESS=$(exrpd keys show $WALLET -a)
XRPL_VALOPER_ADDRESS=$(exrpd keys show $WALLET --bech val -a)
echo 'export XRPL_WALLET_ADDRESS='${XRPL_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export XRPL_VALOPER_ADDRESS='${XRPL_VALOPER_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile

Create validator

Follow this guid to join testnet validator:

https://docs.xrplevm.org/pages/operators/validators/join-the-proof-of-authority

Check your validator key

[[ $(exrpd q staking validator $XRPL_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(exrpd status | jq -r .validator_info.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"

Get list of 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

Usefull commands

Service management

Check logs

journalctl -fu exrpd -o cat

Start service

sudo systemctl start exrpd

Stop service

sudo systemctl stop exrpd

Restart service

sudo systemctl restart exrpd

Node info

Synchronization info

exrpd status 2>&1 | jq .sync_info

Validator info

exrpd status 2>&1 | jq .validator_info

Node info

exrpd status 2>&1 | jq .node_info

Show node id

exrpd tendermint show-node-id

Wallet operations

List of wallets

exrpd keys list

Recover wallet

exrpd keys add $WALLET --recover

Delete wallet

exrpd keys delete $WALLET

Get wallet balance

exrpd query bank balances $XRPL_WALLET_ADDRESS

Transfer funds

exrpd tx bank send $XRPL_WALLET_ADDRESS <TO_XRPL_WALLET_ADDRESS>

Voting

exrpd tx gov vote 1 yes --from $WALLET --chain-id=$XRPL_CHAIN_ID

Staking, Delegation and Rewards

Delegate stake

exrpd tx staking delegate $XRPL_VALOPER_ADDRESS --from=$WALLET --chain-id=$XRPL_CHAIN_ID --gas=auto

Redelegate stake from validator to another validator

exrpd tx staking redelegate <srcValidatorAddress> <destValidatorAddress> --from=$WALLET --chain-id=$XRPL_CHAIN_ID --gas=auto

Withdraw all rewards

exrpd tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$XRPL_CHAIN_ID --gas=auto

Withdraw rewards with commision

exrpd tx distribution withdraw-rewards $XRPL_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$XRPL_CHAIN_ID

Validator management

Edit validator

exrpd tx staking edit-validator \
  --moniker=$NODENAME \
  --identity=<your_keybase_id> \
  --website="<your_website>" \
  --details="<your_validator_description>" \
  --chain-id=$XRPL_CHAIN_ID \
  --from=$WALLET

Unjail validator

exrpd tx slashing unjail \
  --broadcast-mode=block \
  --from=$WALLET \
  --chain-id=$XRPL_CHAIN_ID \
  --gas=auto

Public Endpoint

RPC

https://testnet-xrpl-rpc.konsortech.xyz

EVM RPC

Network Name    : XRPL EVM Sidechain Testnet
RPC URL         : https://testnet-xrpl-evm.konsortech.xyz
Chain ID        : 1449000
Curreny Symbol  : XRP

API

https://testnet-xrpl-api.konsortech.xyz

gRPC

testnet-xrpl.konsortech.xyz:16090

Peers and Seeds

Peers

d09fbf1e3e6572a780bc50f21c21aede10f9fd5c@testnet-xrpl.konsortech.xyz:16656

Seeds

574dc3559318dd5b89ff53594e27ed68964c65fa@testnet-seed.konsortech.xyz:16165

Genesis & Address Book

Address Book

https://snap1.konsortech.xyz/xrpl/addrbook.json

Genesis

https://snap1.konsortech.xyz/xrpl/genesis.json

State Sync

sudo systemctl stop exrpd

cp $HOME/.exrpd/data/priv_validator_state.json $HOME/.exrpd/priv_validator_state.json.backup
exrpd tendermint unsafe-reset-all --home $HOME/.exrpd --keep-addr-book

SNAP_RPC="https://testnet-xrpl-rpc.konsortech.xyz:443"

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

peers="d09fbf1e3e6572a780bc50f21c21aede10f9fd5c@testnet-xrpl.konsortech.xyz:16656"
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.exrpd/config/config.toml

sed -i -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/.exrpd/config/config.toml

mv $HOME/.exrpd/priv_validator_state.json.backup $HOME/.exrpd/data/priv_validator_state.json

sudo systemctl restart exrpd
sudo journalctl -u exrpd -f --no-hostname -o cat

Snapshot

sudo systemctl stop exrpd
cp $HOME/.exrpd/data/priv_validator_state.json $HOME/.exrpd/priv_validator_state.json.backup
rm -rf $HOME/.exrpd/data

SNAP_NAME=$(curl -s https://snap1.konsortech.xyz/xrpl/ | egrep -o ">xrpl-snapshot.*\.tar.lz4" | tr -d ">")
curl https://snap1.konsortech.xyz/xrpl/${SNAP_NAME} | lz4 -dc - | tar -xf - -C $HOME/.exrpd
mv $HOME/.exrpd/priv_validator_state.json.backup $HOME/.exrpd/data/priv_validator_state.json

sudo systemctl restart exrpd && journalctl -u exrpd -f --no-hostname -o cat
Embed Iframe

XRPL EVM Testnet Decentralization Maps