Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Consensus – Makechain
Skip to content

Consensus

Engine

Makechain uses Simplex BFT via the commonware-consensus primitive. A single consensus chain orders all messages with parallel per-project execution within each block.

PropertyValue
Block time~200ms target
Finality~300ms (2-chain rule)
Fault toleranceByzantine fault tolerant up to 1/3 of validators

Validators are selected by a permissioned set initially, with a path to permissionless staking.

Block Lifecycle

  1. Propose — The round leader drains the mempool, executes messages in two phases (account pre-pass + parallel project execution), and produces a state root digest
  2. Verify — Other validators re-execute the messages and verify the state root matches
  3. Notarize — Validators vote to notarize the block (2/3 threshold)
  4. Finalize — When two consecutive blocks are notarized, the first is finalized (2-chain rule)
  5. Commit — State diffs are applied to the base store and committed messages are broadcast to subscribers

Networking

  • Transport: commonware-p2p::authenticated — encrypted connections between peers identified by Ed25519 public keys
  • Channels: Three Simplex network channels — votes, certificates, and resolver (catch-up)
  • Mempool: Messages submitted to any validator are propagated to the leader's mempool
  • Sync: New nodes download periodic snapshots, then sync blocks from the snapshot height

Configuration

Key consensus parameters (configurable via ConsensusConfig):

ParameterDefaultDescription
leader_timeout200msTime to wait for a leader proposal
notarization_timeout500msTime to wait for notarization
max_block_messages10,000Maximum messages per block
max_project_messages500Maximum messages per project per block
mempool_capacity100,000Maximum pending messages
max_timestamp_age_secs600Reject messages older than 10 minutes
max_timestamp_drift_secs30Reject messages more than 30s in the future