A proposer selects a unique proposal number n and sends Prepare(n) to a majority of acceptors.
An acceptor receiving Prepare(n) promises not to accept any proposal less than n. It replies with any previously accepted value.
If the proposer receives promises from a majority, it sends Accept(n, v) where v is the highest-numbered value from the promises, or its own value.
Acceptors accept if they have not promised a higher number. They notify all learners.
When a learner sees a majority of acceptors have accepted the same proposal, the value is chosen.