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. |