Skip to main content

Module transcript

Module transcript 

Source
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§

TranscriptFields
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.