Witness Server Configuration

Attention

The XRPL EVM compatible sidechain implementation is a proof of concept extension to the XRP Ledger protocol and is for development purposes only. There is no official amendment currently and it is not available on the production Mainnet. The EVM compatible sidechain bridge is connected to the XRP Ledger Devnet. Do not send transactions in Mainnet.

Before running a witness server, you must create a YAML configuration file. Some fields can be configured through environment variables; in the case of conficts, the environment variable is used instead of the YAML key.

KeyDescriptionExampleENV Key
serverAll the server generic configuration.
server.queue_periodThe amount of seconds to wait before fetching for new events.5SERVER_QUEUE_PERIOD
server.logging_levelThe log level of the server. Can be: debug, info, warn, or error.infoSERVER_LOGGING_LEVEL
server.log_file_pathThe file path to store the server logs../logs/log.txtSERVER_LOG_FILE_PATH
server.validate_bridgeIf the server must run a config validation before starting.trueSERVER_VALIDATE_BRIDGE
xrpXRPL side related configuration.
xrp.nodeXRPL node to connect with."wss://sidechain-net1.devnet.rippletest.net"XRP_NODE
xrp.bridge_addressThe address of the bridge on the XRPL side."rs99jCuSAjrXzdebKm1AgpErz9M2FwHQCE"XRP_BRIDGE_ADDRESS
xrp.starting_blockThe block that the server will start listening for attestations. If not declared, server will start listening on the latest block.1XRP_STARTING_BLOCK
xrp.signer_list_secondsThe amount that pass before checking if the witness server is in the signer list.300XRP_SIGNER_LIST_SECONDS
xrp.signerXRPL signer related configuration.
evmEVM related configuration.
evm.nodeEVM node to connect with."https://rpc-evm-sidechain.xrpl.org"EVM_NODE
evm.bridge_addressThe address of the bridge on the EVM side."0x4C5033DB823538d398e84Bf65fAdEbA0b4d71599"EVM_BRIDGE_ADDRESS
evm.starting_blockThe block that the server will start listening for attestations. If not declared, server will start listening on the latest block.1EVM_STARTING_BLOCK
evm.signer_list_secondsThe amount that pass before checking if the witness server is in the signer list.300EVM_SIGNER_LIST_SECONDS
evm.signerEVM signer related configuration.

Signer Types

In order to give the node operator flexibility, there are two types of signers that can be configured. Each one has different configuration options.

Local Signer

This is the most simple signer. The witness operator holds the private key and configures the signer using these parameters:

KeyDescriptionExampleENV Key
xrp.signer.type
evm.signer.type
To configure a local signer , this value must be local."local"XRP_SIGNER_TYPE
EVM_SIGNER_TYPE
xrp.signer.spec
evm.signer.spec
Local signer related configuration.
xrp.signer.spec.private_key
evm.signer.spec.private_key
The private key of the local signer. If the local signer is on an XRPL chain, the private key must be in hexadecimal format."****"XRP_SIGNER_PRIVATE_KEY
EVM_SIGNER_PRIVATE_KEY

AWS Signer

This signer type uses the AWS KMS systems to store its private key. The private key is under AWS custody and never leaves their system, making the signing process more secure. You can configure the witness server for AWS, using these parameters:

KeyDescriptionExampleENV Key
xrp.signer.type
evm.signer.type
To configure an AWS signer, this value must be aws."aws"
xrp.signer.type
evm.signer.type
AWS signer related configuration.
xrp.signer.spec.region
evm.signer.spec.region
The AWS region where the KMS key is stored."eu-west-1"XRP_SIGNER_AWS_REGION
EVM_SIGNER_AWS_REGION
xrp.signer.spec.access_key
evm.signer.spec.access_key
An AWS access key with read access to the KMS key."fake-access-key"AWS_ACCESS_KEY
xrp.signer.spec.secret_key
evm.signer.spec.secret_key
An AWS secret key with read access to the KMS key."fake-secret-key"AWS_SECRET_KEY
xrp.signer.spec.key_id
evm.signer.spec.key_id
The AWS KMS key id."fake-key-id"XRP_SIGNER_KMS_KEY_ID
EVM_SIGNER_KMS_KEY_ID

Example Configuration File

server:
  queue_period: 5
  logging_level: info
  log_file_path: ./logs/log.txt
  validate_bridge: true
xrp:
  node: "wss://sidechain-net1.devnet.rippletest.net"
  bridge_address: "rs99jCuSAjrXzdebKm1AgpErz9M2FwHQCE"
  starting_block: 1
  signer_list_seconds: 300
  signer:
    type: "aws"
    spec:
      region: "eu-west-1"
      access_key: "fake-access-key"
      secret_key: "fake-secret-key"
      key_id: "fake-key-id"
      
evm:
  node: "https://rpc-evm-sidechain.xrpl.org"
  bridge_address: "0x4C5033DB823538d398e84Bf65fAdEbA0b4d71599"
  starting_block: 1
  signer_list_seconds: 300
  signer:
    type: "local"
    spec:
      private_key: "****"