A permissionless consensus algorithm that guarantees deterministic agreement and termination under a crash-stop system model.
Sandglass proceeds in virtual rounds. Every round, nodes propose a value by broadcasting it. Values come with an associated priority.
- In the first round, each node proposes its initial value with priority initialized to 0.
- In subsequent rounds, nodes propose a value chosen among those received in the previous round.
- The priority of depends on the number of consecutive rounds during which was the only value received by the node proposing .
- Whenever a node receives a value other than v, it resets ’s priority back to 0. When proposing a value in a given round, node selects the highest priority value received in the previous round; if multiple values have the same priority, then it selects randomly among them.
- A node can safely decide a value after ‘s priority is sufficiently high. Termination follows from the non-zero probability that the necessary sequence of unanimous, consecutive rounds will actually eventually occur.