Proof format
The canonical full-proof response is ProofBundle from
GET /v1/bundle/{hash}:
ProofBundle {
signed_attestation: SignedAttestation,
batch_inclusion: BatchInclusion | null,
cross_anchors: CrossAnchor[],
external_anchors: ExternalAnchorProof[]
}
signed_attestation is required. batch_inclusion is null until the
attestation is batched. The arrays default to empty.
Nested fields
BatchInclusion has batch and merkle_proof. AttestationBatch has id,
network_id, merkle_root, period_start, period_end, and
attestation_count. MerkleProof has leaf, siblings, leaf_index,
tree_size, and root.
CrossAnchor has batch, witnessing_network, witness_attestation, and
timestamp. The peer's signed attestation commits to the batch Merkle root.
ExternalAnchorProof has provider, timestamp, provider-specific JSON
proof, and optional anchored_data. Provider values are
internet_archive, trillian, dns_txt, and blockchain.
Signed-attestation union
Ed25519 multi-signatures use:
{"signatures":[{"witness_id":"w1","signature":"<hex>"}]}
BLS aggregation uses:
{"signature":"<hex>","signers":["w1","w2"]}
The union is discriminated by key presence. Do not send both shapes or only
one of signature and signers. The shape must match the network scheme.
Fixed byte arrays and signatures are lowercase hex strings in the documented
wire format. See OpenAPI for required properties and the
complete schemas.
An external-anchor record's presence is not provider verification. The
verify-proof path verifies the home signature, optional batch linkage, and
available cross-anchors, but only counts external-anchor records.