From 6f0e8a95c04cc9667da4435b30ad6a96a3770d73 Mon Sep 17 00:00:00 2001 From: Giacomo Pasini <21265557+zeegomo@users.noreply.github.com> Date: Thu, 2 Nov 2023 10:40:30 +0100 Subject: [PATCH] Add clarifying comment to forward_vote (#38) --- carnot/carnot.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/carnot/carnot.py b/carnot/carnot.py index 5c19eab..40749b0 100644 --- a/carnot/carnot.py +++ b/carnot/carnot.py @@ -392,6 +392,12 @@ class Carnot: return Send(to=self.overlay.parent_committee(self.id), payload=vote) def forward_vote(self, vote: Vote) -> Optional[Event]: + """ + Recall that for the leader to propose a block it's necessary to have a threshold of the top three committees + votes. In case part of the root committee is malicious and does not vote, the leader might not reach this threshold + even though more than 2/3 of the total nodes voted in favor if nodes stop sending votes after the threshold. + By forwarding votes from children (only the root committee does this), we can improve liveness in this case. + """ assert vote.block in self.safe_blocks assert self.overlay.is_member_of_child_committee(self.id, vote.voter) # we only forward votes after we've voted ourselves