ethexe-consensus 2.0.0

Validator consensus services for the ethexe execution layer
docs.rs failed to build ethexe-consensus-2.0.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

Ethexe Consensus

Turns finalized Malachite block (MB) state transitions into on-chain batch commitments posted to the Ethereum Router contract. Each Ethereum block one validator is elected coordinator: it aggregates outcomes into a batch, collects threshold signatures, and submits the batch; every other validator participates by re-deriving and signing it. Block production and execution are out of scope (driven by Malachite and ethexe-compute).

Role in the Stack

ethexe-service is the sole consumer: it constructs a [ValidatorService] and polls it as a [ConsensusService]. Inputs arrive from ethexe-observer (chain heads), ethexe-compute (prepared blocks), and ethexe-network (validation requests and replies). Commitments leave through the [BatchCommitter] trait into ethexe-ethereum. State is read via the Database handle. Connect (non-validator) nodes do not run this crate.

Public API

  • [ConsensusService] — The crate's entire input/output surface: a Stream<Item = Result<ConsensusEvent>> + FusedStream + Unpin + Send + 'static. Inputs arrive through its receive_* methods.
  • [ConsensusEvent] — Output stream items: PublishMessage, CommitmentSubmitted, and Warning.
  • [CommitmentSubmitted] — Informational payload for a batch that landed on-chain; consumed via Display.
  • [ValidatorService] — Concrete [ConsensusService] a validator node runs; built via ValidatorService::new.
  • [ValidatorConfig] — Per-node configuration (pub_key, signatures_threshold, router_address, batch and delay limits).
  • [BatchCommitter] — Trait abstracting submission of a signed batch to the Router; implemented by the ethexe-ethereum router wrapper.

Inputs ([ConsensusService] methods):

Invariants

  • Exactly one coordinator is elected per Ethereum block, deterministically from the block timestamp.
  • commitment_delay_limit is a per-node configuration value, not a protocol constant.