Expand description
§Ethexe Blob Loader
Fetches Gear program code blobs posted to Ethereum as EIP-4844 blob transactions,
decoding them from the beacon chain into raw WASM bytes. Emits unverified bytes only;
code validation and instrumentation happen later in ethexe-processor.
§Role in the Stack
ethexe-service constructs a BlobLoader at startup, stores it as
Box<dyn BlobLoaderService>, and drives it inside the main event loop, calling
BlobLoaderService::load_codes whenever the compute service emits RequestLoadCodes.
The loader reads code locations from the local database (via the Database bound)
and fetches blob data from the execution-layer JSON-RPC and beacon node.
§Public API
BlobLoaderService— Trait stored byethexe-service; a fused stream of fetched code blobs driven viaload_codesBlobLoader— Concrete implementation; constructed withBlobLoader::new(db, cfg).awaitConsensusLayerConfig— RPC endpoints (ethereum_rpc,ethereum_beacon_rpc),beacon_block_time, retryattemptsBlobLoaderEvent— Output event; the only variant isBlobLoaded(CodeAndIdUnchecked)BlobLoaderError— Public error:TransportorCodeBlobInfoNotFound(CodeId)Database— Blanket-implemented marker bound:CodesStorageRO + OnChainStorageRO + Unpin + Send + Clone + 'static
§Invariants
- Calling
BlobLoaderService::load_codeswith an already-pendingCodeIdis a no-op. - The stream never terminates; a failed fetch is logged and silently dropped (no error item).