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

Delivery methods and sizing

Method and representation constants

MethodValueCitation
OPPORTUNISTIC0x01LXMessage.py:29
DIRECT0x02LXMessage.py:30
PROPAGATED0x03LXMessage.py:31
PAPER0x05LXMessage.py:32
RepresentationValueCitation
UNKNOWN0x00LXMessage.py:24
PACKET0x01LXMessage.py:25
RESOURCE0x02LXMessage.py:26

The representation records whether the message goes out as a single Reticulum Packet or as a Reticulum Resource (multi-packet transfer). PAPER uses neither.

Selection algorithm

pack() sets method and representation from desired_method and the content size (LXMessage.py:387-455). The normative rules:

  1. If no method is desired, default to DIRECT (LXMessage.py:389-390).
  2. OPPORTUNISTIC is valid only for SINGLE or PLAIN destinations. If the content size exceeds ENCRYPTED_PACKET_MAX_CONTENT (295) for a SINGLE destination, the reference falls back to DIRECT (LXMessage.py:394-398). Otherwise representation is PACKET (LXMessage.py:401-412). For PLAIN destinations the limit is PLAIN_PACKET_MAX_CONTENT (368).
  3. DIRECT: if content size <= LINK_PACKET_MAX_CONTENT (319), representation is PACKET; otherwise RESOURCE (LXMessage.py:414-421).
  4. PROPAGATED: the message is wrapped into the propagation envelope (see Propagation); if the envelope size <= LINK_PACKET_MAX_CONTENT it is a PACKET, otherwise a RESOURCE (LXMessage.py:423-441).
  5. PAPER: if the encrypted paper form <= PAPER_MDU (2210) the representation is paper; otherwise pack() raises (LXMessage.py:443-455).

content_size is the serialized-payload measure from Identifiers and sizes (LXMessage.py:385).

An implementation MUST apply the same thresholds so that a message a Python peer would send as a single packet is not sent as a resource (and vice versa), since the on-air framing differs.

On-air forms

MethodRepresentationOn-air bytesCitation
OPPORTUNISTICPACKETpacked[16:] (destination hash omitted)LXMessage.py:631
DIRECTPACKETfull packed over a LinkLXMessage.py:633
DIRECTRESOURCEfull packed as a Resource over a LinkLXMessage.py:650-651
PROPAGATEDPACKET/RESOURCEpropagation_packed to a propagation nodeLXMessage.py:634-635,652-653
PAPER(paper)lxm:// URI or QRLXMessage.py:687-702

The opportunistic packet omits the leading 16-byte destination hash because the Reticulum packet header already addresses the destination; the receiver reconstructs the full message by prepending the known destination hash. This is proven by [VEC-DLV-OPP] (on_air_hex == packed[16:]) and the direct full-bytes form by [VEC-DLV-DIRECT].