Proof bundle format¶
A proof bundle is one JSON file with the evidence that an ISCC-ID is in its hub's log. It is the authoritative way to check an ISCC-ID. A client verifies it on its own, without trusting the monitor.
Get it from GET /inclusion/<iscc_id>.bundle, or with the "Download proof bundle" button on a certificate.
Verify a proof bundle shows how to check one. Example:
MEIGKV5N6NTVF4AB.bundle.json.
Members¶
iscc_id- The ISCC-ID, in its canonical
ISCC:form. hub- The hub whose log has the record: its
domainand its did:web identifierdid. The hub publishes its key athttps://<domain>/.well-known/did.json. checkpoint- The latest checkpoint the monitor accepted for the hub, as the hub signed it. It is a signed note: the log's origin, size and base64 Merkle root, then a blank line and the signature line.
inclusion-
The inclusion proof of the record against
checkpoint, in the hub'sIsccLogInclusionProofshape:Member Content type"IsccLogInclusionProof"checkpointThe same signed checkpoint treeSizeThe checkpoint's size leafIndexThe record's position in the log, counted from 0 inclusionProofThe RFC 6962 sibling hashes, base64, from the leaf upward record- The record exactly as the hub logged it, base64-encoded. Its RFC 6962 leaf hash is the SHA-256 of a zero byte followed by these bytes.
key- The key that signed
checkpoint.idis its 4-byte signed-note key hash in hex.multibaseis the Ed25519 public key as the hub's did:web document lists it (publicKeyMultibase). anchor(optional)-
Present when a confirmed Bitcoin anchor covers the record. It has the evidence for the earliest such anchor.
Member Content checkpointThe hub-signed checkpoint at the anchored size inclusionThe record's inclusion proof against that checkpoint keyThe key that signed that checkpoint otsThe OpenTimestamps proof of that checkpoint's root, base64
How the parts fit¶
- Hash
recordto a leaf.inclusion.inclusionProofrebuilds the root of a tree oftreeSizefrom that leaf atleafIndex. - The rebuilt root must equal the root in
checkpoint. checkpointmust have a valid signature bykey.keymust be in the hub's did:web document. Check this yourself, because the bundle's copy comes from the monitor.- For
anchor, repeat steps 1 to 4 with itscheckpoint,inclusionandkey. Thenots verify -d <root in hex>checks itsotsproof against Bitcoin.
No bundle¶
If the monitor cannot certify an ISCC-ID, the route returns 200 with:
The monitor offers a bundle only after it has verified the inclusion proof against its accepted root. It never returns a partial bundle.