Chain addressing
A chain’s public and internal identity is one absolute path from the single
Nexus root. Every chain path includes Nexus as its first component.
NexusNexus/PaymentsNexus/Payments/RollupsPayments and Payments/Rollups are invalid even when sent to a host that
serves Nexus. The Nexus component is never implicit. This keeps topology,
transaction replay protection, wire routing, storage scopes, metrics, and API
payloads on one representation.
Directory versus chain path
Section titled “Directory versus chain path”A directory is a single edge label chosen under an already known parent. It
is intentionally parent-relative:
parent path: Nexus/Gameschild directory: Paymentschild path: Nexus/Games/PaymentsThe same directory may exist under another parent, so Payments is never a
globally unique chain identity.
| Term | Meaning |
|---|---|
| Nexus | The single root and first component of every path |
| Chain path | Complete absolute route beginning with Nexus |
| Chain address | Validated internal representation of a chain path |
| Directory | One direct parent-to-child edge label |
Validation
Section titled “Validation”ChainAddress accepts a component array or slash-separated string only when:
- the first and exact root component is
Nexus; - its child depth fits Lattice’s child-proof bound;
- every component is 1–64 bytes of visible ASCII; and
- no component contains Lattice’s directory separator.
ChainAddress delegates this grammar to ChainRuntimeContext, so node setup,
transactions, state keys, and child proofs cannot drift. Process configuration
also requires the complete canonical handshake to fit its wire frame.
Consequently, these are invalid:
Payments/Nexus/PaymentsNexus/Nexus//Paymentsnexus/PaymentsWhere paths are load-bearing
Section titled “Where paths are load-bearing”lattice.json.hostedChainslists the child paths one process serves, parent first; Nexus is implicit as the root.TransactionBody.chainPathis signed replay protection and must name a path hosted by the receiving process.- The handshake pins Nexus and the protocol revision; routed sync frames carry their level’s full path on the one shared overlay.
- Mining reward routing uses full paths so each reward reaches one exact chain.
- Direct-child lookup uses the final directory only after the co-hosted parent relationship is established by the topology.
- Durable facts and cursors are keyed by full path, preventing leaf-name collisions inside the shared store.
Nexus root bootstrap
Section titled “Nexus root bootstrap”Nexus has no parent, so an empty store constructs the one pinned unsigned
genesis locally before configured root bootstrap. It is never accepted from a
peer. The path representation is not special-cased; Nexus is simply the valid
one-component absolute path ["Nexus"].
Source: lattice-node/docs/design/chain-addressing.md at 9abd15b1bb05