benchmark45,017,796 payments a second.
45,017,796 payments a second.
Every one verified.
100 hubs, 600 seconds, 27,010,677,426 payments — each one's Ed25519 signature checked, applied to the ledger and written to disk before it counted. Measured 2026-10-08, hub-ingress tier.
45Mpayments/s, fully verified100 hubs, 1,600 vCPU, 600 s, durable
27Bpaymentsmade durable in the 600 s window
450kpayments/s per hubfleet rate ÷ 100; one 16-vCPU box each
28.1kpayments/s per vCPUfleet rate ÷ 1,600 hub vCPU
1,098epoch rootsposted on chain, each attested by 3 of 3 verifiers (threshold 2)
every hub
Hubs share nothing. The fleet is their sum.
Durable payments/s per hub over the 600 s window, all 100 hubs, sorted. Add a hub, add ≈450k a second.
method
What was measured.
- run
- h41m · 2026-10-08
- tier
- hub-ingress — one driver per hub streams Ed25519-signed v3 payment items to the hub over gRPC; no facilitator, no HTTP
- mode
- fully verified — one Ed25519 signature verified per payment, ledger applied, journaled; only durable records count
- window
- 600 s, measured as the hubs' durable-payment delta between two quiesce receipts; every driver's acked total equals its hub's durable delta
- steady state
- 5 s samples: min 44,430,942 · median 44,942,833 · max 45,387,665 payments/s
- hubs
- 100 × Hetzner CPX62 (16 shared vCPU, AMD EPYC Genoa) — 1,600 hub vCPU; per hub 282k–518k/s
- drivers
- 100 × Hetzner CPX62, one per hub (signing happens here, not on the hubs)
- corpus
- 512 payer session keys per hub, 51,200 fleet-wide; cumulative items, variable amounts
- settlement
- 1,098 epoch roots posted to the hub contracts, every one co-signed by 3 verifiers that re-checked the evidence
- acks
- async — the hub acks before fsync; production guidance is fsync
A hub-ingress number: drivers speak the hub's gRPC ingress directly. It is reported on its own and is not comparable with facilitator or end-to-end HTTP numbers.
try it
Measure the live devnet yourself.
The figures above are a fleet run on our own hubs. The public devnet is open: give an agent STRESS-TESTING.md, have it build its own load generator from the public protocol, and watch it land on the explorer.