Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Identifiers and sizes

All sizes below are the genuine class attributes of the reference, captured in vectors.json constants.

Identifiers

IdentifierWidthDefinitionCitation
Destination hash16Reticulum SINGLE destination hash of lxmf/deliveryLXMessage.py:39
Source hash16sender’s lxmf/delivery destination hashLXMessage.py:380-381
Signature64Ed25519 over the signed partLXMessage.py:40
Message hash / message-id32`full_hash(dest
Transient-id32full_hash(lxmf_data) for propagationLXMessage.py:431
Stamp32proof-of-work nonceLXStamper.py:13
Ticket16shared secret for stamp shortcutLXMessage.py:41

The message hash and message-id are the same value (LXMessage.py:366); this document uses “message-id”. [VEC-MSG-1] shows message_id_hex == hash_hex.

Overhead and packet sizes

The fixed overhead and the three single-packet content limits are derived constants. The derivations (MUST evaluate to these values):

TIMESTAMP_SIZE   = 8                                  (LXMessage.py:60)
STRUCT_OVERHEAD  = 8                                  (LXMessage.py:61)
LXMF_OVERHEAD    = 2*16 + 64 + 8 + 8 = 112            (LXMessage.py:62)

ENCRYPTED_PACKET_MDU         = RNS.Packet.ENCRYPTED_MDU + 8 = 391   (LXMessage.py:67)
ENCRYPTED_PACKET_MAX_CONTENT = 391 - 112 + 16            = 295      (LXMessage.py:78)

LINK_PACKET_MDU              = RNS.Link.MDU              = 431       (LXMessage.py:83)
LINK_PACKET_MAX_CONTENT      = 431 - 112                = 319       (LXMessage.py:89)

PLAIN_PACKET_MDU             = RNS.Packet.PLAIN_MDU      = 464       (LXMessage.py:93)
PLAIN_PACKET_MAX_CONTENT     = 464 - 112 + 16           = 368       (LXMessage.py:94)

PAPER_MDU = ((2953 - (3 + 3)) * 6) // 8                 = 2210      (LXMessage.py:105)

QR_MAX_STORAGE = 2953 (LXMessage.py:104); the + 16 terms restore the destination hash that is excluded from LXMF_OVERHEAD accounting for the encrypted single-packet forms. These are the thresholds the delivery-method selector compares against; see Delivery methods and sizing.

Content size

The reference defines the content size of a packed message as

content_size = len(packed_payload) - TIMESTAMP_SIZE - STRUCT_OVERHEAD
             = len(packed_payload) - 16

(LXMessage.py:385). This is the value compared against the limits above. Note it is computed from the serialized payload length, not from the raw content bytes, so msgpack framing and the title and fields count toward it.