Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions specifications/dag-consensus/Sailfish.tla
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,18 @@ l0: while (TRUE) {
else
with (delivered \in SUBSET {v \in vs : Round(v) = r-1}) {
await IsQuorum({Node(v) : v \in delivered}); \* ignored otherwise
if (Leader(r) = self)
await \/ LeaderVertex(r-1) \in delivered
\/ NoLeaderVoteQuorum(r, {v \in vs : Round(v) = r}, {self});
vs := vs \cup {newV};
es := es \cup {<<newV, pv>> : pv \in delivered}
}
}
}
}
}*)
\* BEGIN TRANSLATION (chksum(pcal) = "c16dfa43" /\ chksum(tla) = "9cdbd4f5")
\* Label l0 of process correctNode at line 42 col 9 changed to l0_
\* BEGIN TRANSLATION (chksum(pcal) = "1dcb31ed" /\ chksum(tla) = "afe5b430")
\* Label l0 of process correctNode at line 73 col 9 changed to l0_
VARIABLES vs, es

(* define statement *)
Expand Down Expand Up @@ -195,6 +198,10 @@ byzantineNode(self) == /\ \E r \in R:
/\ es' = (es \cup {<<newV, Genesis>>})
ELSE /\ \E delivered \in SUBSET {v \in vs : Round(v) = r-1}:
/\ IsQuorum({Node(v) : v \in delivered})
/\ IF Leader(r) = self
THEN /\ \/ LeaderVertex(r-1) \in delivered
\/ NoLeaderVoteQuorum(r, {v \in vs : Round(v) = r}, {self})
ELSE /\ TRUE
/\ vs' = (vs \cup {newV})
/\ es' = (es \cup {<<newV, pv>> : pv \in delivered})
/\ UNCHANGED << round, log >>
Expand Down
Loading