Skip to content

rpcpool/yellowstone-thorofare

Repository files navigation

Yellowstone Thorofare

Benchmarking tool for Solana Geyser gRPC endpoints. Compares two endpoints simultaneously to measure actual performance differences.

Build

cargo build --release

What it measures

  • All 6 slot stages: FirstShredReceived, CreatedBank, Completed, Processed, Confirmed, Finalized
  • Download time (FirstShredReceived > Completed)
  • Replay time (CreatedBank > Processed)
  • Account update propagation delays (optional)
  • Transaction propagation delays (optional)

Basic usage

thorofare --endpoint1 endpoint1.com:10000 --endpoint2 endpoint2.com:10000

Arguments

Required:

  • --endpoint1 - First endpoint (host:port)
  • --endpoint2 - Second endpoint (host:port)

Optional:

  • --x-token1 - Auth token for endpoint1
  • --x-token2 - Auth token for endpoint2
  • --slots - Number of slots to collect (default: 1000)
  • --with-accounts - Track account updates
  • --account-owner - Filter by program ID (requires --with-accounts)
  • --with-transactions - Track transaction updates (non-vote)
  • --endpoint1-richat - Use Richat interface for endpoint1
  • --endpoint2-richat - Use Richat interface for endpoint2
  • --config - Config file (default: config.toml)
  • --output - Output file (default: benchmark_results.json)
  • --log-level - Log level (default: info)

Examples

With auth tokens:

thorofare \
  --endpoint1 endpoint1.com:10000 \
  --endpoint2 endpoint2.com:10000 \
  --x-token1 YOUR_TOKEN_1 \
  --x-token2 YOUR_TOKEN_2

Track account updates by program owner:

thorofare \
  --endpoint1 endpoint1.com:10000 \
  --endpoint2 endpoint2.com:10000 \
  --with-accounts \
  --account-owner 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8

Track transaction propagation:

thorofare \
  --endpoint1 endpoint1.com:10000 \
  --endpoint2 endpoint2.com:10000 \
  --with-transactions

Full benchmark (slots + accounts + transactions):

thorofare \
  --endpoint1 endpoint1.com:10000 \
  --endpoint2 endpoint2.com:10000 \
  --with-accounts \
  --account-owner 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 \
  --with-transactions

Output

Generates JSON with:

  • Slot timing comparisons
  • P50/P90/P99 percentiles for all metrics
  • Account update delays with win/loss counts (if --with-accounts)
  • Transaction propagation delays with win/loss counts (if --with-transactions)
  • Ping latencies

Delay metrics use 0ms for wins (this endpoint was faster) so the percentiles reflect the full population. A p50 of 0.00 means that endpoint was faster more than half the time.

You can visualize here https://thorofare.triton.one/

Config

See config.toml for gRPC tuning options. Most important:

Contributing

PRs welcome. Keep it simple:

  1. Fork and create a branch
  2. Make your changes
  3. Test against at least 2 different endpoints
  4. Submit PR :D

Related

About

Benchmark tool for Solana Geyser gRPC endpoints. Measures slot propagation and account update delays between endpoints.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages