builder
base-builder produces flashblocks every 200 milliseconds and assembles the sealed canonical blocks for Base. It orchestrates the build pipeline through FlashblocksServiceBuilder.
Package
Section titled “Package”- Crate name:
base-builder-bin - Binary name:
base-builder - Source:
bin/builder - Dockerfile:
etc/docker/Dockerfile.builder
Architecture
Section titled “Architecture”The builder binary bootstraps using FlashblocksServiceBuilder, which wires together:
- Block building — Assembles transactions from the pool into execution payloads
- Flashblock production — Produces 200ms sub-block preconfirmations streamed to subscribers
- Metering — Tracks gas usage and resource consumption via
MeteringStoreExtension - Transaction pool RPC — Exposes custom pool methods via
TxPoolRpcExtension
The builder uses jemalloc as its global allocator for improved memory allocation performance.
Key Extensions
Section titled “Key Extensions”| Extension | Purpose |
|---|---|
FlashblocksServiceBuilder | Orchestrates the full flashblocks pipeline |
MeteringStoreExtension | Resource metering data store |
TxPoolRpcExtension | Transaction pool RPC methods |
Key Dependencies
Section titled “Key Dependencies”base-cli-utils— CLI utilities (logging, metrics)base-builder-core— Core block building logicbase-builder-metering— Resource meteringbase-builder-publish— Block publishing and streamingreth-optimism-node— Reth node builderjemalloc— Memory allocator
# Build the builder binarycargo build --bin base-builder --releaseDocker
Section titled “Docker”# Build the imagedocker build -t base-builder -f etc/docker/Dockerfile.builder .
# Rundocker run -it --rm base-builder [OPTIONS]./target/release/base-builder [OPTIONS]