Skip to main content
An offline-verifiable agent payment receipt is one that a third party can check without contacting the issuer, the sender, or any online service. AlgoVoi authored the canonicalisation discipline that makes this hold: pin RFC 8785 (JCS) as the preimage form, hash with SHA-256, and every receipt recomputes from its raw fields on any machine, fully offline.

Offline means no service call

A receipt carries its own fields. A verifier canonicalises those fields under JCS, hashes the bytes with SHA-256, and compares the result to the receipt’s content_hash. If they match, the receipt is intact and authentic to its preimage. If a single field changed, the hash diverges and the tamper is detected. Nothing in that loop touches the network. The verifier needs a JSON parser, a JCS implementation, and a SHA-256 function, all of which ship in standard libraries. There is no issuer endpoint to call, no registry to resolve, and no AlgoVoi runtime in the trust path. Because the rule is pinned in-band as canon_version: jcs-rfc8785-v1, a receipt retained for a statutory period re-verifies under the exact rules it was issued under, with no dependence on an external rule registry that may have moved or changed.

Proven without AlgoVoi’s code

The published values are not an artefact of AlgoVoi’s canonicalizer. The conformance corpus ships a first-principles check that rebuilds the JCS bytes by hand and hashes them with stdlib SHA-256 only:
The same construction is directly executed across eight independent reference implementations (Python, TypeScript, Go, Rust, Java, PHP, .NET, Ruby) at 880/880 cumulative agreements, including the RFC 8785 author’s own Java implementation. Eight implementations that share no code agreeing on the same bytes makes the result a property of the standard.

Which receipts are offline-verifiable

Every receipt in the AlgoVoi lifecycle recomputes the same way, because they all anchor to one canonicalisation pin: A verifier walking the chain confirms admission, settlement, and refund under a single byte-deterministic discipline, offline. For chain settlement itself, AVM Proofpack extends the same offline discipline to the ledger: a portable bundle that re-verifies an Algorand or Voi transaction against the chain’s state proof commitments, in pure Python, with no node and no network.

Do it yourself

Each vector set also ships a runner_node.js alongside its runner_python.py, both checking the same expected hashes, so a pass in each language is byte-for-byte Python and TypeScript parity rather than two separate claims.

Specification and authorship

The discipline is AlgoVoi-authored and specified in IETF Internet-Draft draft-hopley-x402-canonicalisation-jcs-v1, identified by urn:x402:canonicalisation:jcs-rfc8785-v1. Reference implementations are Apache-2.0: algovoi-substrate and @algovoi/substrate.

See also