mirror of
https://github.com/logos-blockchain/logos-blockchain-specs.git
synced 2026-02-02 12:23:27 +00:00
update high_qc
This commit is contained in:
parent
99fcf2989a
commit
0ce5f2dc40
@ -263,3 +263,23 @@ class Carnot:
|
||||
else:
|
||||
return False
|
||||
|
||||
def update_high_qc(self, qc: Qc):
|
||||
match (self.local_high_qc, qc):
|
||||
case (None, new_qc) if isinstance(new_qc, StandardQc):
|
||||
# Set local high QC to the new StandardQc
|
||||
self.local_high_qc = new_qc
|
||||
case (None, new_qc) if isinstance(new_qc, AggregateQc):
|
||||
# Set local high QC to the high QC from the new AggregateQc
|
||||
self.local_high_qc = new_qc.high_qc()
|
||||
case (old_qc, new_qc) if isinstance(old_qc, StandardQc) and isinstance(new_qc,
|
||||
StandardQc) and new_qc.view > old_qc.view:
|
||||
# Update local high QC if the new StandardQc has a higher view
|
||||
self.local_high_qc = new_qc
|
||||
case (old_qc, new_qc) if isinstance(old_qc, AggregateQc) and isinstance(new_qc,
|
||||
AggregateQc) and new_qc.high_qc().view != old_qc.view:
|
||||
# Update local high QC if the view of the high QC in the new AggregateQc is different
|
||||
self.local_high_qc = new_qc.high_qc()
|
||||
|
||||
# If my view is not updated, I update it when I see a QC for that view
|
||||
if qc.view == self.current_view:
|
||||
self.current_view += 1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user