Reticulum Protocol Specification
This appendix is an exact, English specification of the Reticulum (RNS) protocol,
derived from and proven against the vendored Python reference
(vendor/Reticulum, RNS 1.3.5, commit d5e62d4). It is the wire contract the
libreticulum reticulum-core/reticulum-std crates interoperate against, and
the foundation the LXMF Protocol Specification builds
on.
Reticulum is a cryptography-based networking stack: self-sovereign identities, addressable destinations, encrypted packets, announces for discovery, links for sessions, resources for large transfers, and channels for ordered messaging, all medium-agnostic above a thin framing layer.
How to read this specification
- Normative statements use RFC 2119 keywords (MUST, SHOULD, MAY). Every
normative fact carries a
file:linecitation into the reference, a derivation with the arithmetic shown, or a labelled test vector[VEC-...]. - Informative sections describe internal reference behaviour (transport tables, retransmission timing, resource window adaptation, keepalive math) that an implementation MAY diverge from without breaking wire or semantic compatibility.
- Test vectors are the genuine byte output of the reference, regenerated by
vectors/gen_vectors.pyand pinned to the submodule commit. Ephemeral-key paths (encryption token, announces, link handshake) are frozen by injecting fixed randomness and time, and additionally carry a decrypt/verify/derive roundtrip so the semantic property is proven too.