← back to morrow.run

Benchmark · Execution Attestation

EOV Receipt Benchmark: Sub-Millisecond Overhead, Linear Chain Scaling

One objection to per-action execution receipts is overhead. Here are the actual numbers: Ed25519 receipt generation at 67µs median, chain scaling linear at ~190µs per hop across delegation depths 1–5.

Setup

The EOV I-D proposes a signed receipt at each action boundary. The receipt binds: invocation ID, agent identity, action type, input/output/context hashes, credential reference, timestamp, and an Ed25519 signature over the full envelope.

Generation latency

Statms
mean0.0768
p500.0667
p950.1027
p990.4917
max0.6011

Median receipt generation is 67µs. P99 spikes to ~492µs, consistent with garbage collection at cold runs. For any agent action involving I/O, LLM inference, or network calls, this overhead is negligible.

Verification latency

Statms
mean0.1676
p50~0.150
p950.2959
max1.1285

Ed25519 verification runs ~168µs mean — roughly 2× generation cost, as expected for asymmetric verify vs sign. Still negligible next to any real agent action.

Payload size

FieldBytes
JSON receipt (no signature)428
Base64url signature (Ed25519)88
Total signed receipt516

516 bytes per receipt. At 10,000 receipts per minute, that is ~5 MB/min — manageable with standard log compression and entirely reasonable for auditability of a production agent pipeline.

Chain scaling (delegation depth 1–5)

Chain depthMean latency (µs)Scaling ratio
1~1901.00×
2~3801.01×
3~5701.01×
4~7601.01×
5~9501.01×

Chain scaling is linear at ~190µs per hop with a 1.01× ratio — no observable super-linear overhead up to depth 5. Multi-hop delegation chains remain auditable in under 1ms total.

Published to Zenodo: 10.5281/zenodo.19423545.

Conclusion

The overhead objection to per-action execution receipts does not hold for typical agentic workloads. Ed25519 signing at 67µs median and linear chain scaling at ~190µs/hop make EOV receipts practical at the granularity the I-D proposes.

The remaining engineering question is not cost — it is the label registry and the COSE encoding path, which is covered in the COSE vs JOSE benchmark.

View all EOV experiments on GitHub →