How sidestr/spec works
sidestr is a reference implementation of user-activated sidechains: operators define a chain document, initialize its engine and keys, then produce or sync signed blocks while users enforce the chain rules. The runtime also covers parent-chain pegs, federation, optional asset/pool/market/EVM rules, and announcements. The graph follows documented CLI capabilities and sampled imports/calls; unsampled command handlers and announcement consumers are shown only where the README documents them.
Main entry points: engine.mjs Engine loader · index.mjs Rule selection · overlay.mjs Sidestr overlay · siding.mjs siding CLI
Components 25
Chain operations
- siding CLI
siding/bin/siding.mjs - Chain document
siding/chain.json - Engine loader
siding/lib/engine.mjs - Chain runtime
siding/lib/chain.mjs - Tip announcement
siding/lib/announce.mjs
Block validation
- Block encoding
siding/lib/block.mjs - Sidestr overlay
siding/lib/overlay.mjs
Parent chain
- Parent definitions
siding/lib/parents.mjs - Parent RPC / pegs
siding/lib/parent.mjs - Peg markers
siding/lib/marker.mjs - Pledge desk
siding/lib/pledge.mjs - Peg-out rounds
siding/lib/pegoutround.mjs
Chain rules
- Rule selection
siding/lib/overlays/index.mjs - Asset rules
siding/lib/overlays/assets.mjs - Pool rules
siding/lib/overlays/pool.mjs - Market rules
siding/lib/overlays/markets.mjs - EVM rules
siding/lib/overlays/evm.mjs - Rule records
siding/lib/records.mjs
Federation
- Federation signing
siding/lib/federation.mjs - Signer rounds
siding/lib/round.mjs
Other components
- Operator / user
- Parent node
- Schema kernel
- Explorer / wallet
- Chain directory
Connections 27
- Operator / user → siding CLI: runs commands
README.md - siding CLI → Chain document: reads chain config
siding/bin/siding.mjs - siding CLI → Engine loader: loads engine
siding/bin/siding.mjs - Engine loader → Sidestr overlay: installs overlay
siding/lib/engine.mjs - Engine loader → Rule selection: selects rules
siding/lib/engine.mjs - Engine loader → Parent definitions: resolves parent
siding/lib/engine.mjs - Engine loader → Schema kernel: loads kernel
siding/lib/engine.mjs - Chain runtime → Block encoding: uses block codec
siding/lib/chain.mjs - Chain runtime → Sidestr overlay: checks peg-outs
siding/lib/chain.mjs - Sidestr overlay → Block encoding: validates blocks
siding/lib/overlay.mjs - Sidestr overlay → Parent definitions: checks parent rules
siding/lib/overlay.mjs - Sidestr overlay → Federation signing: uses federation
siding/lib/overlay.mjs - Parent RPC / pegs → Peg markers: parses markers
siding/lib/parent.mjs - Parent RPC / pegs → Parent node: calls RPC
siding/lib/parent.mjs - Pledge desk → Peg markers: builds peg marker
siding/lib/pledge.mjs - Peg-out rounds → Parent RPC / pegs: uses parent interface
siding/lib/pegoutround.mjs - Rule selection → Asset rules: creates rule
siding/lib/overlays/index.mjs - Rule selection → Pool rules: creates rule
siding/lib/overlays/index.mjs - Rule selection → Market rules: creates rule
siding/lib/overlays/index.mjs - Rule selection → EVM rules: creates rule
siding/lib/overlays/index.mjs - Asset rules → Rule records: uses records
siding/lib/overlays/assets.mjs - Pool rules → Rule records: uses records
siding/lib/overlays/pool.mjs - Market rules → Rule records: uses records
siding/lib/overlays/markets.mjs - Signer rounds → Federation signing: uses signatures
siding/lib/round.mjs - siding CLI → Tip announcement: announces chain
README.md - Explorer / wallet → Tip announcement: finds chain by announcement
README.md - Chain directory → Tip announcement: lists announced chains
README.md