Reference
Performance and limits
How long things take, how big they are, and the hard limits of the current design. Every number here was measured on the code in this repository; where it was measured is stated.
#At a glance
Proof11.9 KB11,884–11,898 bytes
Reserves batch, 3 proofs35.7 KBreserves.pofb
WASM verifier4.6 MBloaded once, in a worker
Attestor memory33 MBRender, 0.1 CPU
#Verification
Time to verify (ms)
Show as a table
| Measure | ms | Notes |
|---|---|---|
| WASM, one proof | 93 | Node, after warm-up; testnet dormancy proof |
| Native CLI, one proof | 130 | whole process, including key loading; median of 3 |
| Native CLI, batch of 3 | 148 | batched Halo2 check; median of 3 |
| WASM, batch of 3 | 277 | members checked one by one in WASM |
| WASM warm-up | 330 | once per page: parameters and verifying keys; measured 24 Sep 2026 |
Natively, a batch of three costs barely more than one proof, because the openings of all members are checked in one multi-scalar multiplication. In WASM the members are checked one by one.
#The hosted attestor
Hosted attestor on Render’s free plan (0.1 CPU) (s)
Show as a table
| Measure | s | Notes |
|---|---|---|
| Verify a proof | 0.3 | |
| Rail certificate | 0.4 | verify under policy, record tags |
| Reserves batch + attestation | 2.0 | |
| Deposit match | 3.4 | includes the testnet lightwalletd round trip |
#Proving
Demo-ledger proof1.4 s12 cores, native
Same proof at 0.1 CPU~119 sRender free
Mainnet actions scanned565,704to block 3,493,000
A real-wallet proof adds trial decryption of every Ironwood action in the snapshot, which runs in parallel; the Halo2 proof itself is the same size of work whatever the wallet.
#Hard limits
| Limit | Value | Why | Workaround |
|---|---|---|---|
| Notes per proof | 5 | The delegation circuit has five slots | A reserves batch, or consolidate first |
| Value unit | 0.125 ZEC | The circuit counts ballots of 12,500,000 zatoshi | Round thresholds up |
| Claims | HoldsAtLeast | Payment and “received since” claims are designed, not built | — |
| Batch members | 64 | The .pofb count field | Several batches |
| Attestors per program | 8 | MAX_ATTESTORS | — |
| Request expiry | 1–365 days | Request validation | — |
| Unmoved-since block | a multiple of 1,000 | Snapshots keep a checkpoint every 1,000 blocks | Pick the checkpoint at or before H |
| Attestor request body | 64 KiB (2 MiB for batches) | Bounded memory per request | — |