Join the XRPL EVM

Now that you have successfully installed the exrpd binary, it’s time to take the next steps and fully connect to the XRPL EVM. This page provides separate instructions for Mainnet and Testnet. Pick the environment you want to join and follow the steps in that tab.

Prerequisites

Note: Make sure the exrpd is installed before proceeding.

Mainnet Setup

The following guide outlines the steps for any participant to launch or join the XRPL EVM.

1. Infrastructure Provision

Provision a new machine with stable connectivity and enough resources to run the node. Refer to the XRPL EVM documentation for minimum specifications.

2. Node Installation

Download and install the XRPL EVM node binary using the official instructions:
Installing the Node

3. Configure the Node

Set up the node configuration with the Mainnet chain ID:

exrpd config set client chain-id xrplevm_1440000-1

Choose a secure keyring backend:

exrpd config set client keyring-backend <keyring>

Adjust other recommended settings:

  • Pruning: Default
  • API Access: Disable all except Tendermint RPC (restrict to localhost)
  • Peer Exchange: Keep default unless specific network config is required

For more details, refer to the node configuration documentation as well as the node configuration reference.

4. Create a New Key

Generate a new validator key:

exrpd keys add <key_name> --key-type eth_secp256k1

Ensure that you back up the mnemonic securely. Effective key management is critical for the security and operation of validators in the XRPL EVM sidechain.

5. Initialize the Node

Initialize your node with a moniker (a unique name for your node/validator) and the Mainnet chain ID:

exrpd init <moniker> --chain-id xrplevm_1440000-1

Ensure that you back up the node keys securely. Read more.

~/.exrpd/config/node_key.json
~/.exrpd/config/priv_validator_key.json

6. Download the Genesis File

Fetch the Mainnet genesis file:

wget -O ~/.exrpd/config/genesis.json https://raw.githubusercontent.com/xrplevm/networks/refs/heads/main/mainnet/genesis.json

7. Add Seeds to the Node Configuration

Add seeds to the node configuration that will allow connecting to the rest of the node. Modify the file ~/.exrpd/config/config.toml to include the following seed node:

PEERS=`curl -sL https://raw.githubusercontent.com/xrplevm/networks/main/mainnet/peers.txt | sort -R | head -n 10 | awk '{print $1}' | paste -s -d, -`
sed -i.bak -e "s/^seeds *=.*/seeds = \"$PEERS\"/" ~/.exrpd/config/config.toml
cat ~/.exrpd/config/config.toml | grep seeds

Start the Node

Once your configuration is complete, start the node using your preferred process manager (e.g., systemd, Docker Compose, or another init system) as outlined in the Installing the Node guide. This ensures the node will run continuously and restart on failure:

# Example using systemd:
systemctl enable exrpd
systemctl start exrpd

# Or, using Docker Compose:
docker-compose up -d xrplevm-node

Monitor the logs to verify syncing:

journalctl -u exrpd -f      # systemd
# or
docker logs -f xrplevm-node # Docker

Once it connects to the majority of validators, blocks will start streaming in and your node will produce data.

Sync the Node

After your node is configured and started, you need to let it synchronize with the network. There are several methods to bring your node up to the current block height, each balancing speed, resource usage, and historical data retention. Common sync approaches include:

  • Sync from Genesis: Start from block 0 and replay all transactions (slowest, but fully trustless).
  • Snapshot: Download a pre-generated snapshot of the chain state for faster setup.
  • State Sync: Leverage CometBFT’s state sync feature to bootstrap the node from recent application state.

For detailed instructions and best practices on each approach, see the Sync Options page.

Validate the Setup

Next Steps

Once your node is fully synced, you can: