Expand description
The signed transcript (SPEC §5.1 / §5.1a) — the domain-separated byte string the sender BLS-signs and the recipient verifies, binding EVERY security-relevant field so nothing is malleable.
The signed message is SIG_DOMAIN || transcript where SIG_DOMAIN = "DIGNET-MSG:dig-message/v1"
(SPEC §5.1a) — a fixed ASCII augmentation that keeps a dig-message signature un-confusable with a
Chia spend signature (AGG_SIG_ME / AGG_SIG_UNSAFE). The transcript itself is a fixed-width,
big-endian, byte-deterministic serialization so the Rust and wasm/JS targets agree byte-for-byte.
Field order + widths (NORMATIVE, SPEC §5.1):
version:u8 ‖ message_type:u32 ‖ flags:u8 ‖ correlation_id:32 ‖ sender:32 ‖ recipient:32 ‖ sender_epoch:u32 ‖ counter:u64 ‖ timestamp_ms:u64 ‖ expires_at:u64 ‖ stream_frame:u8 ‖ stream_seq:u64 ‖ kem_enc:48 ‖ compression:u8 ‖ uncompressed_len:u32 ‖ compressed_payload_hash:32
(all integers big-endian; stream_frame/stream_seq are 0 for a non-stream message;
compressed_payload_hash is the SHA-256 of the on-wire compressed payload bytes).
Structs§
- Transcript
Fields - Every field the sender signature binds (SPEC §5.1). Assembled by the seal (send) and reconstructed from the opened envelope + inner message (receive), so both sides compute the identical transcript.