Paychannels
benchmark

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.

Durable payments per second on each of 100 hubs, sorted; fleet mean 450k per hub0100k200k300k400k500k600k518k/s516k/s514k/s513k/s513k/s513k/s512k/s511k/s511k/s506k/s506k/s505k/s505k/s504k/s503k/s500k/s494k/s494k/s494k/s491k/s487k/s483k/s479k/s476k/s475k/s475k/s474k/s472k/s469k/s469k/s468k/s467k/s466k/s463k/s463k/s462k/s461k/s460k/s460k/s458k/s457k/s457k/s457k/s456k/s455k/s455k/s455k/s455k/s454k/s453k/s452k/s452k/s451k/s451k/s451k/s450k/s450k/s449k/s448k/s447k/s446k/s442k/s442k/s442k/s441k/s439k/s438k/s436k/s435k/s433k/s433k/s430k/s429k/s428k/s428k/s427k/s427k/s425k/s425k/s424k/s424k/s423k/s421k/s421k/s420k/s419k/s418k/s416k/s416k/s415k/s411k/s411k/s405k/s385k/s385k/s383k/s365k/s282k/s282k/s282k/smean 450k/s per hub100 hubs, sorted by ratedurable payments/s
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.

Live explorer →