Polkadot is a network with a relay chain which negotiates the passing of messages between many other parachains. It unites them all under a single consensus process; it also unites the hidden state of their message queues under this consensus process. You can build parachains by utilizing Substrate modules to implement a specific interface (in this way, a parachain is really just a WASM blob that implements a specific interface for message passing and block processing).

Polkadot separates the relay chain’s consensus into two parts:

  1. block production via BABE (Ouroboros-esque)
  2. finality via GRANDPA (GHOST for trees)

BABE prioritizes availability and partition-tolerance (AP), while GRANDPA prioritizes consistency and availability (CA).

This separation between block production and finality isn’t just designed to defy the CAP tradeoff – it’s necessary for the shared security model used in Polkadot. The gap between block production and finality is intended to stay around ~100 blocks. The gap exists to allot time for the validity game (section 2.2) played by fishermen.

CAP Review

Daniel Abadi discusses the abuse of CAP to justify oversimplified tradeoffs:

  1. Problems with CAP, and Yahoo’s little known NoSQL system
  2. The dangers of conditional consistency guarantees

Systems that sacrifice consistency like BABE “tend to do so all the time, not just when there is a network partition” (problems with CAP).

Separating block production from finality means that people won’t treat block production as a probabilistic measure of transaction inclusion. Exchanges and other actors will wait until finality for assurance of transaction inclusion. Finality is the new condition for recognized consistency.