pub fn bundle_hash(bundle: &ProofBundle) -> Result<Vec<u8>, String>Expand description
SHA-256 of a fixed-shape canonical form of a ProofBundle (SPEC §17.5).
Cross-SDK byte equivalence requires every field to be present (no skip),
keys alphabetical at every level, and empty bytes / empty lists / zero
ints serialized as "" / [] / 0. Every reference SDK (Go,
TypeScript, Python, Rust) produces the same 32-byte digest for the
same logical bundle. Verified against
testvectors/v1/cross_sdk_vectors.json.