What a lattice gives you
audience: integrators
A lattice is one end-to-end block-building deployment for one
EVM chain. As an external developer you bind into a lattice by
pinning its LatticeConfig and opening typed handles on the
organism(s) you need. One Arc<Network> serves every organism and
every lattice you care about.
This page is the index: what lattices can do for you, which organisms you touch for which use case, and where to go next for code.
Why you might want this
The lattice gives you four things at once, each from a different organism:
- Anonymous submission — a sealed, ordered broadcast channel
where nothing in the pipeline can link your transaction to you
up to the trust bound of
zipnetplusunseal. See Submitting transactions anonymously. - Sealed-bid auctions — bid on a slot’s unsealed order flow without other searchers learning your bid until the auction commits. See Placing bundle bids.
- Verifiable candidate blocks — read blocks committed by a TDX-attested co-builder committee and verify the committee’s collective signature over them. See Reading built blocks.
- Auditable refund accounting — public
tallyattestations prove which order flow contributed to which winning block and how the refund is allocated. See Receiving refunds and attributions.
You do not have to use all four. A wallet that only wants
anonymous submission can bind to zipnet alone. A searcher that
only wants to bid on existing pools can bind to offer alone. A
rollup operator that consumes the full pipeline binds to all
six.
Who this audience page is for
External Rust developers running their own mosaik agent. You:
- Own your own
Arc<Network>and its lifecycle. - Have read the mosaik book.
- If you care about submission-layer anonymity, have also read the zipnet book.
- Do not operate a lattice; that is a different team whose runbook is For operators.
If you are the team running the lattice, you want Lattice overview instead.
Use case to organism matrix
Pick the row that matches your application; bind the organisms listed.
| Use case | Organisms you bind |
|---|---|
| Wallet / dapp submitting sealed tx | zipnet |
| Wallet / dapp tracking its refunds | zipnet, tally |
| Searcher bidding on a lattice’s order flow | offer, tally (for outcome verification) |
| Cross-chain searcher spanning N lattices | offer on each lattice, one Arc<Network> |
| Proposer / sequencer consuming candidate blocks | atelier, relay |
| Analytics consumer reading block attribution | tally |
| Audit / compliance agent | every organism, read-side only |
Each bound organism is one Organism::<D>::verb(&network, &Config)
call; you pay for one mosaik endpoint regardless.
What you never touch
- Any organism’s internal consensus — committee Raft, unseal share gossip, atelier’s TDX bundle simulation. Those are operator-managed internals. Your read-side handles give you committed facts; you never need to reason about quorum, apply order, or replica membership.
- Raw mosaik
StreamId,StoreId,GroupIdvalues. TheOrganism::<D>::verbconstructors derive everything from theConfigfingerprint you compile in. - The
LatticeConfiginternals. You receive aLatticeConfigfrom the operator (either as a literal Rustconstin a published crate, or as a hex fingerprint youConfig::from_hex); you do not construct one yourself.
What the operator owes you
Three items, same handshake pattern zipnet uses:
- Universe
NetworkId. Almost always the baked-inbuilder::UNIVERSEconstant. - Lattice
Config. A fullLatticeConfigstruct (or its serialised hex fingerprint) covering the six organism configs. This is what defines the lattice identity. - MR_TDs for every TDX-gated organism in the lattice
(
unseal,atelier, optionallyrelay).
Everything else — peer bootstraps, retry policy — you manage locally the same way you manage any mosaik agent. See What you need from the operator.
What happens when a lattice misbehaves
Zero-trust integrations are not currently feasible — the lattice is a permissioned block-building pipeline and integrators accept the operator’s trust model by binding. What the lattice does guarantee:
- Public commit logs. Every organism’s commits are mosaik-replicated and signed by committee members. You can replay them and detect divergence from on-chain reality.
- On-chain settlement enforcement.
tallyattestations are meant for on-chain verification. A lattice that commits dishonest attestations finds them rejected by the settlement contract. - Graceful degradation. A lattice whose upstream organism is down still produces valid downstream commits where possible; see the failure table in Composition.
When those are not enough for your use case — e.g. if you need Byzantine liveness guarantees not provided by mosaik’s Raft variant — you either switch to a different lattice or wait for the BFT roadmap item.
Ready to code
Start at Quickstart — submit, bid, read.