Integrity

No quorum, no commit.

Why it matters

An RPC provider is a single party you decide to trust. Sieve has no such party. It pulls blocks from anonymous peers on the P2P network, any of which could lie, stall, or serve a body that does not match the header it claims.

So Sieve trusts none of them individually. Every block passes a fixed set of checks before a single row is written, and Sieve stops rather than write data it could not verify.

What happens before a commit

Multi-peer header quorum

The canonical hash of each segment has to be confirmed by an absolute number of distinct peers (3 by default). Empty replies and timeouts never count toward the quorum.

Canonical-chain validation

The full header chain up to the agreed tip is fetched and checked link by link, every parent hash, ending on the quorum hash.

Payload verification

Transaction, receipt, ommer, and chain-specific withdrawals roots are recomputed from the block body and matched against the header. A forged body is rejected and re-fetched from another peer.

Contiguous commits

Blocks are written in strict order and the checkpoint always equals the highest committed block, so a crash or a kill never leaves holes or half-written ranges.

Chain-bound database

A database is pinned to its chain on the first run. Reusing it for a different chain is refused.

Quorum-authorized reorgs

Reorgs of up to 64 blocks roll back only when a peer quorum agrees on the new canonical tip.

The verified frontier

Alongside the checkpoint, Sieve keeps a verified-frontier marker that advances atomically with the highest committed block. On startup it re-verifies that frontier against the network, which is how Sieve recovers from a reorg that happened while it was stopped.

This is also why databases created by 0.1.x are refused: they carry no frontier marker and no chain binding. Upgrading means a fresh database or sieve reset. From then on, changes to Sieve's own internal metadata schema migrate automatically. Your config-driven tables are created with CREATE TABLE IF NOT EXISTS, so adding or retyping a column on a table that already exists is still on you.

What gets stored

Unmatched log and payload data is discarded. You store the events you asked for, plus the block hashes and checkpoints Sieve needs to verify the chain and resume cleanly.

Next steps

Chains Ethereum and the four OP-Stack chains
Factory Contracts coverage tracking applies the same fail-closed rule