Skip to main content

Lecture 10: Single-decree Paxos — Whiteboard Descriptions

These are text descriptions of the whiteboard PDF from the lecture on April 20, 2026. See also the whiteboard PDF and the notes.

These materials were drafted by AI based on the live whiteboard PDF and audio transcript from the corresponding lecture and then reviewed and edited by course staff. They may contain errors. Please let us know if you spot any.

Diagram: A client-primary-backup sketch. Three boxes labeled C (client), P (primary), and B (backup) from left to right. An arrow from C to P and a return arrow from P to C. A pair of arrows between P and B in both directions.


Log based SMR

  • MultiPaxos
    • log
    • decides values for each slot
  • slot = index into a log

Diagram: Three replica log drawings arranged around the page. Each replica is a rectangular box containing a row of log slots drawn as small vertical cells (like a strip of film), with some slots filled in. The three replicas all hold copies of the same log; the idea is that they decide on a value for each slot.

Single Decree Paxos

  • Consensus problem
    • agree on a value — choose
    • nodes propose values
  • Requirements
    • chosen value was proposed
    • at most 1 chosen value
    • nobody thinks a value is chosen unless it was

Roles

Roles (≈ nodes, but not exactly):

  • proposer — proposes values
  • acceptor — votes on proposals
  • learner — learns results

An execution has a fixed number of each role.

Ballots (Rounds)

  • ballot number (monotonically increasing)
  • proposed value
  • allocate ballot numbers to proposers
    • even/odd numbers for two proposers

Protocol Overview

Diagram: A message-sequence chart with five vertical lines for participants, labeled left-to-right: P (proposer), A_1, A_2, A_3 (three acceptors), and L (learner). Time flows downward. Annotations on the right split the chart into two phases, marked with arrows: phase 1 (upper portion) and phase 2 (lower portion), separated by a horizontal dashed line.

  • Phase 1: Arrows labeled 1a(r) go from P rightward to each of A_1, A_2, A_3. Each acceptor replies with an arrow labeled 1b(r, summary) back to P.
  • Phase 2: Arrows labeled 2a(r, v) go from P to each acceptor. Each acceptor replies with an arrow labeled 2b(r, v) going further right to the learner L.

Phase 1

  • proposer picks a round number r
  • send 1a(r) to all acceptors
  • acceptors respond with 1b(r, summary)
    • summary:
      • "I have never voted in round < r"
      • TODO: if you voted (non-null summary case, to be filled in)

Phase 2

  • proposer waits for a majority of 1b
  • look at all 1b msgs
    • if all have summary = null, then propose any value
    • TODO: non-null summary case
  • send 2a(r, v) to all acceptors
  • acceptors send 2b(r, v) to learner if they can

Learner

  • waits for a majority of 2b msgs (all in the same round)

Chosen

  • chosen(r, v) = there is a majority of acceptors who have sent 2b(r, v) msgs
  • chosen(v) = there is a round r such that chosen(r, v)