Glossary
Key terms used throughout the Cocoon documentation
RollupDriver
The pluggable interface that allows a rollup type (optimistic, ZK, based, native, consensus) to run as an embedded service alongside the Erigon L1 node. Generalizes the pattern proven by Caplin and Polygon/Bor.
StorageSink
Interface at the SharedDomains.Flush() boundary that decouples block execution from persistent storage. Implementations: LocalSink (MDBX), RemoteSink (gRPC), SnapshotSink, TeedSink (multi-target).
TypeHandler
Interface that encapsulates the full pipeline behavior of a transaction type — parsing, validation, pool policy, execution, and serialization. Part of the Modular TX Pipeline registry.
TracerFactory
Map-side interface in the Map-Reduce Framework. Each worker calls the factory to create its own tracer instance. Factories register via init() + components.cfg.
Consumer
Reduce-side interface in the Map-Reduce Framework. Receives TxResult in txNum order and builds an index, streams output, or triggers an action.
BlockBatch
The serializable unit of work crossing the executor → storage boundary in Erigon Archive. Contains block metadata (MemoryDiff), domain state diffs, and inverted index updates for one or more blocks.
QMTree
Append-only binary Merkle tree indexed by txNum. Each leaf commits to a transaction's pre-state, state changes, EVM execution trace, and the previous leaf — forming a chain of proof-of-execution commitments.
txNum
Erigon's global transaction counter. Monotonically increasing across all blocks. Used as the time axis for temporal domain storage and as the QMTree leaf index.
twig
A 2048-leaf subtree in QMTree. The unit of storage and proof aggregation. Complete twigs are frozen to snapshot files.
L1DataSource
Interface abstracting L1 block data access for L2 derivation. DirectL1DataSource reads from the L1 in-process database in combined mode (zero serialization); RPCL1DataSource reads from an external L1 via JSON-RPC in L2-only mode.
Direct adapter
Erigon's pattern for in-process service communication. A "direct client" calls server methods directly without gRPC serialization. Used by Caplin, TxPool, Sentry — and extended to DirectL1DataSource in combined mode. See node/direct/.
ComponentDomain
Hierarchical namespace and worker pool manager in the component framework (erigon-lib/app/). Manages component activation order, dependency resolution, and lifecycle coordination.
Component[P]
Generic component type carrying a typed provider P. The provider holds live service state. Other components declare dependencies on provider types; the framework injects them.
XLP
Cross-chain Liquidity Provider. In the EIL protocol, XLPs stake funds and participate in fee auctions to fulfill cross-chain operations on behalf of users. Registered on the L1CrossChainStakeManager contract.
EIL
Ethereum Interop Layer. The cross-L2 interoperability protocol underpinning the Interop Bridge. Specifies voucher mechanics, XLP staking, reverse Dutch auctions, and the dispute/slashing model.
ProverBackend
Pluggable interface for external proof systems in the Proof Integration component. Implementations: Zilkworm, SGX (Raiko-compatible), RISC0, SP1, ZisK.
VerifierBackend
Pluggable interface for proof verification, integrated with the Consensus component (L1 Beam Chain) or RollupDriver (L2 settlement).
frame transaction
EIP-8141 transaction type (0x06) containing an explicit ordered sequence of VERIFY, SENDER, and DEFAULT execution frames. Protocol-native account abstraction.
APPROVE opcode
New EVM opcode introduced by EIP-8141. Only valid inside VERIFY frames. Signals that the custom signature validation logic has approved the transaction.
debug_getWitness
Existing Erigon RPC method that produces an execution witness (state accessed during block execution). The simplest first input source for the Proof Integration's Prover component.
components.cfg
Build-time configuration file listing which components to compile into an Erigon binary. Read by a code generator that produces blank imports, triggering init() registration for each component.
MemoryDiff
Serializable changeset produced by MemoryMutation.Diff(). Represents the block metadata changes (headers, bodies, canonical hashes, TD) accumulated in the blockOverlay during execution.
SharedDomains
Erigon's in-memory overlay for domain state during block execution. Accumulates DomainPut/DomainDel operations and flushes them to persistent storage (or a StorageSink) at block boundaries.
Last updated