Formally a consensus protocol must satisfy the following three properties:
- Eventually, every correct process decides some value.
- If all the correct processes proposed the same value "v", then any correct process must decide "v".
- Every correct process must agree on the same value.
"Termination" certifies the protocol is resilient to halting failures. "Agreement" deters any two correct processes from deciding on different values which would break consensus. But what about "Integrity", why is it required? If all correct processes propose "x" but then they all decide "y" (e.g.
f(x) = y), is that a violation of consensus?