Security on day one
Every chain inherits the network's full proof of work from block zero. No validator set to bootstrap, no cold-start attack window.
Your chain, your rules
Launch a sovereign chain with its own policy in one command, no permission needed.
Mine once, earn everywhere
Full hashpower on every chain you subscribe to instead of a slice on each, earning on every block it clears.
Quickstart
The full node serves RPC, gossip, trustless sync, mempool, and child-chain deploy. Mining is external — the node serves block templates and runs no mining loop, so you bring up a node first and then point a miner at it.
git clone https://github.com/adalinxx/lattice-node
cd lattice-node
swift build -c release
# Join the network. Built-in seeds and the default --min-peer-key-bits (16) let a bare
# node discover peers and sync on its own — no --peer or key-bits flag to set.
.build/release/LatticeNode --autosize --rpc-port 8080
# In another shell, confirm it's up and syncing:
curl http://localhost:8080/api/chain/info
With a node running, attach a miner. Mining lives in a separate process: the node hands out templates; a worker — driven by the coordinator via --worker-executable — searches the easiest target across the chains you subscribe to, and each solution is accepted by whichever chains it clears. The bundled lattice-miner is a CPU worker; lattice-miner-gpu is a GPU worker that auto-detects CUDA (NVIDIA), Metal (Apple), or OpenCL (AMD/Intel). Any miner that implements the worker protocol plugs in.
# Point the coordinator at a running node; it spawns CPU miner workers.
lattice-mining-coordinator \
--node http://127.0.0.1:8080/api \
--rpc-cookie-file ~/.lattice/.cookie \
--worker-executable "$(command -v lattice-miner)" \
--workers 2
Build a chain
Deploy a child chain under any parent and define its validity with a policy — opt-in, chain-defined rules enforced by every subscriber. Policies are deterministic validity, not permissionless contracts.
# Deploy a child chain under Nexus (privileged — uses the node's RPC cookie).
curl -X POST http://localhost:8080/api/chain/deploy \
-H "Authorization: Bearer $(cat ~/.lattice/.cookie)" \
-H "Content-Type: application/json" \
-d '{
"directory": "Payments",
"parentDirectory": "Nexus",
"targetBlockTime": 3600000,
"initialReward": 1048576,
"halvingInterval": 876600,
"maxTransactionsPerBlock": 5000,
"maxStateGrowth": 3000000,
"maxBlockSize": 10000000,
"retargetWindow": 100,
"wasmPolicies": []
}'
Deploy defines the chain and returns its genesis — but the child runs as its own process that subscribes to the parent for blocks, not inside this node. Spawn it with the returned genesisHex (--genesis-hex --chain-directory --subscribe-p2p --peer), register its RPC, then point a miner at it with --child-node to merge-mine parent and child in one search — see the per-process child-chain runbook. It becomes discoverable to every node once a genesis-action transaction for it lands in the parent chain — an ordinary mempool transaction any miner can include, so it isn't tied to your node winning a block and survives your node going offline. The parent records only the opaque {directory, genesis-CID} anchor; it never judges the child's contents.
Spec & security
Consensus is Hierarchical GHOST — the heaviest descendant subtree, rooted upward toward an absolute proof-of-work root. Security rests on independent per-chain validation and voluntary subscription, not on trusting any one chain or operator.
Network
Live height and peers read directly from each node's public read surface, refreshed every 15 seconds. Every node serves the bounded read routes itself (--public-read-port); the operator and write surface never leaves loopback. Browse Nexus blocks and transactions in the block explorer.
| Chain | Region | Height | Peers | Status |
|---|