vault backup: 2025-03-31 08:40:43

This commit is contained in:
Marco Realacci 2025-03-31 08:40:43 +02:00
parent d525a87d5f
commit 163e33eb7e

View file

@ -21,3 +21,19 @@ This object is a **consensus object**: a *one-shot object* (every process can ac
- **Integrity:** every process decides at most once - **Integrity:** every process decides at most once
- **Agreement:** the decided value is the same for all processes - **Agreement:** the decided value is the same for all processes
- **Wait-freedom:** every invocation of propose by a correct process terminates - **Wait-freedom:** every invocation of propose by a correct process terminates
Conceptually, we can implement a consensus object by a register X, initialized at ⊥, for which the propose operation is atomically defined as:
```
propose(v) :=
if X = ⊥ then
X <- v
return X
```
Universality of consensus holds as folows:
- given an object O of type Z
- each participant runs a local copy of O, all initialized at the same value
- create a total order on the operations O, by using consensus objects
- force all processes to follow this order to locally simulate O
- all local copies are consistent