You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* FIP-0086 Propagate some implementation decisions back to the spec.
* Removed weak quorum
* Review responses.
* Update valid(m) function
* Update fip-0086.md
Remove redundant clause
* First round of changes from Guy's first Audit
* Update GossiPBFT Pseudocode (TODO still update line numbering and other pseudocodes)
* Update references to line numbers
* Fix typos (code statements, indenting)
* Fix valid(m) and validEvidence(m)
* Fix DECIDE format
* Update fip-0086.md
* Changes from 2nd audit by Guy
* Make C a globally scoped variable and update line numbering
* Small fix
* Fix couple comments
* Typos and indentation fixes
* Update to use greatest ticket and adjust by power
* Specify no need to store equivocating messages.
---------
Co-authored-by: Alex North <[email protected]>
Copy file name to clipboardExpand all lines: FIPS/fip-0086.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -294,7 +294,7 @@ The receiver of a message only considers messages with valid signatures and disc
294
294
295
295
Two (or more) messages $m1$ and $m2$ are called _equivocating messages_ if $m1.Sender=m2.Sender \land m1.Instance=m2.Instance \land m1.Value ≠ m2.Value \land m1.MsgType=m2.MsgType \land \texttt(if applicable)\ m1.Round=m2.Round$. We call $m1.Sender$ an _equivocating sender_.
296
296
297
-
A set of messages $M$ that does not contain equivocating messages is called _clean_. Participants discard all equivocating messages when forming clean sets.
297
+
A set of messages $M$ that does not contain equivocating messages is called _clean_. Participants discard all equivocating messages when forming clean sets. In fact, in the proposed version of GossiPBFT in this document, only one of the equivocating messages needs to be stored (thanks to evidences explicitly validating a message).
298
298
299
299
300
300
#### Predicates and functions used in the protocol
@@ -323,10 +323,10 @@ A set of messages $M$ that does not contain equivocating messages is called _cle
323
323
```
324
324
* `StrongQuorumValue(M)`
325
325
* Returns $v$ if $\texttt{HasStrongQuorumValue}(M)$ holds, $nil$ otherwise.
326
-
* `LowestTicketProposal(M)`
326
+
* `GreatestTicketProposal(M)`
327
327
* Let $M$ be a clean set of CONVERGE messages for the same round.
328
328
* If $M = ∅$, the predicate returns $baseChain$.
329
-
* If $M \ne ∅$, the predicate returns $m.value$ and $m.evidence$, such that $m$ is the message in $M$ with the lowest ticket ($m.ticket$). M will never be empty as the participant must at least deliver its own CONVERGE message.
329
+
* If $M \ne ∅$, the predicate returns $m.value$ and $m.evidence$, such that $m$ is the message in $M$ with the greatest ticket after adjusting for the power of the sender ($m.ticket*m.sender.power$). M will never be empty as the participant must at least deliver its own CONVERGE message.
330
330
331
331
* `Aggregate(M)`
332
332
* Where $M$ is a clean set of messages of the same type $T$, round $r$, and instance $i$, with $v=\texttt{StrongQuorumValue}(M)≠nil$.
23: if (evidence is a strong quorum of PREPAREs AND mightHaveBeenDecided(value, r-1)):
374
374
24: C ← C ∪ {value}
375
375
25: if (value ∈ C)
@@ -713,7 +713,7 @@ Because of changes to the EC fork choice rule, this FIP requires a network upgra
713
713
- EB: the common input is decided in the first round.
714
714
- \>⅔ QAP send QUALITY messages for some chain $c$, while the rest for some chain $c'$ ($c$ and $c'$ only share $baseChain$ as common prefix). After sending QUALITY messages, participants that sent $c$ and that hold <⅓ QAP crash.
715
715
- EB: $c$ is decided (participants that sent $c'$ swayed to $c$) in the first round.
716
-
- Same setup as the test with [three different partitions](#three-partitions), but participants holding less than ⅓ QAP in Q crash after sending QUALITY. One more participant (still in total <⅓ QAP), holding the lowest ticket, crashes in the second round right after sending its CONVERGE.
716
+
- Same setup as the test with [three different partitions](#three-partitions), but participants holding less than ⅓ QAP in Q crash after sending QUALITY. One more participant (still in total <⅓ QAP), holding the greatest ticket, crashes in the second round right after sending its CONVERGE.
717
717
- EB: the chain voted by the crashed participant (i.e., $c'$) is decided.
718
718
* Crash-recovery:
719
719
- Repeat tests and their EB when, at a given moment, all participants crash and recover (can be done on smaller scales)
@@ -722,7 +722,7 @@ Because of changes to the EC fork choice rule, this FIP requires a network upgra
722
722
- Three partitions, $F$ holding <⅓ QAP, $P$ and $Q$ holding the rest of QAP (with $P$ holding more QAP than $Q$). Participants in $P$ do not receive messages from $Q$ timely, and vice versa, in the first round. Participants in $F$ send QUALITY for $c$ to $P$ and QUALITY for $c'$ to _P'_. They do the same with PREPARE, PROPOSE, COMMIT. Synchrony is restored in round 2.
723
723
- EB: in the first round, participants in $P$ decide $c$. Participants in $Q$ go to round 2, where they also decide $c$. Participants in $F$ are detected as equivocating by $p$ and $Q$ eventually.
724
724
- Same setup as the test with [three different partitions](#three-partitions), but participants holding just less than ⅓ QAP in $Q$ equivocate after sending QUALITY by sending PREPARE and PROPOSE for $c$ to $P$ and for $c'$ to honest participants in $Q$ and $T$.
725
-
- EB: honest participants in $Q$ and $T$ decide $c'$ in the first round. Once synchrony is restored in the second round, participants in $P$ decide $c'$ too (perhaps subject to the lower ticket being held by non-Byzantine).
725
+
- EB: honest participants in $Q$ and $T$ decide $c'$ in the first round. Once synchrony is restored in the second round, participants in $P$ decide $c'$ too (perhaps subject to the greatest ticket being held by non-Byzantine).
726
726
- Flooding messages for future instances/rounds
727
727
- Participants holding <⅓ QAP keep sending QUALITY and PREPARE messages for future rounds/instances (as they do not require evidence), intending to flood memory.
728
728
- EB: the system can handle buffering a large load of future messages.
0 commit comments