02 · say exactly what is proved
Typed claims make the statement explicit
A verifier needs to know exactly what a proof establishes. PixelVM starts with a typed claim: a registered object that identifies the operation, its public context, the program and schedule it uses, and the outputs it promises to establish.
Typed objects also use canonical bytes. That means one logical object has one accepted byte representation. Two machines cannot give the same claim different identities merely by changing field order, optional formatting, or another encoding choice.
Why the type matters
A blank receipt that says “correct” is nearly useless. A typed receipt says what was checked, which rules were used, and which public result belongs to that check. Canonical bytes make sure every participant is talking about the same receipt.
Registered meaning
The operation and its claim shape come from a fail-closed registry. It accepts known, well-formed claim types and rejects everything else.
Declared resources
The program carries a schedule and fuel boundary. Those declared limits keep the job's resource shape fixed while it runs.
Public boundary
The claim distinguishes verifier-visible context from declared private content. A proof can establish the public statement without making every input public.
A worked example: proving a Zcash deposit
In the bridge, crediting a deposit is a typed claim. Its registered meaning is "this shielded note pays the bridge's address, sits in Zcash's note-commitment tree at this anchor, and that anchor lies on a chain of valid headers with this much work at this confirmation depth." Its declared resources bound the header checks, the Merkle path, and the note decryption. Its public boundary names the imported Zcash root, the confirmation depth, the amount class, and the memo's commitment to an Astrea account; the note, the viewing key, and the account behind the commitment stay on the private side. Validators verify the receipt without learning whose deposit it was. The same shape proves an Ethereum finalized checkpoint and a contract slot beneath it.
CHL stands for Claim/Handoff Layer, and the name describes the job. The claim half fixes meaning, representation, and resource shape before proof work begins; the handoff half defines the exact typed package every later stage receives, so execution, proving, and verification all consume one unambiguous object instead of renegotiating what the operation means.