--- Paxos Proposer --- 1 proposer(v): 2 while not decided: 3 choose n, unique and higher than any n seen so far 4 send prepare(n) to all servers including self 5 if prepare_ok(n, na, va) from majority: 6 v' = va with highest na; choose own v otherwise 7 send accept(n, v') to all 8 if accept_ok(n) from majority: 9 send decided(v') to all --- Paxos Acceptor --- 10 acceptor state on each node (persistent): 11 np --- highest prepare seen 12 na, va --- highest accept seen 13 acceptor's prepare(n) handler: 14 if n > np 15 np = n 16 reply prepare_ok(n, na, va) 17 else 18 reply prepare_reject 19 acceptor's accept(n, v) handler: 20 if n >= np 21 na = n 22 va = v 23 reply accept_ok(n) 24 else 25 reply accept_reject