This is an indexer for the XRP blockchain. It is using the Verifier Indexer
Framework (https://github.com/flare-foundation/verifier-indexer-framework). It
collects Blocks and Transactions from the XRP blockchain. The indexer is
configured via a configuration file - see config.example.toml for an example
configuration.
To install the indexer, you need to have Go installed to the latest version - currently 1.25.
Now you may install the indexer by running the following command:
go install github.com/flare-foundation/verifier-xrp-indexer/cmd/indexer@latestThis will install the indexer command globally.
To run the indexer a PostgreSQL database needs to be deployed. An example database is
provided as docker image in tests directory which can be used with
docker compose up postgresdbfrom the tests repository.
Provide a .toml config file with the following fields (mostly self explanatory)
[db]
username = "username" # can be specified with env DB_USERNAME
password = "password" # can be specified with env DB_PASSWORD
db_name = "flare_xrp_indexer"
port = 5432
drop_table_at_start = false
history_drop = 3600 # delete all historic data in database older than this value, in seconds
history_drop_frequency = 600 # frequency of history drops, in seconds
[indexer]
confirmations = 1 # number of confirmed blocks before the data is included in the DB
max_block_range = 100 # size of a batch to be repeatedly queried and saved in a dataset
max_concurrency = 10 # number of concurrent processes querying data from the RPC node
start_block_number = 780000
[blockchain]
url = "https://s.altnet.rippletest.net:51234"
[timeout]
request_timeout_millis = 3000 # timeout requests to the chain and the dataset
backoff_max_elapsed_time_seconds = 300 # maximum time between retries
[logger]
level = "DEBUG"
file = "logs/xrp_indexer.log"
console = trueAssuming that the indexer was installed globally you can use indexer command to
run it. Alternatively you can use go run ./cmd/indexer to build and run the binary.
By default the indexer will look for a configuration file named config.toml
in the current working directory. You can specify a different configuration
file by passing --config <filepath> when running the indexer. For example:
go run cmd/indexer/main.go --config tests/config_test.toml
### Running the tests
The indexer tests depend on a local rippled instance running in standalone mode.
The easiest way to create this is to use the `docker-compose.yaml` file provided:docker compose up -d
go test ./...
docker compose down