From 9ae2f99b5ce4e667f151a4406c4e245ef83088c0 Mon Sep 17 00:00:00 2001 From: danielsanchezq Date: Thu, 25 May 2023 13:01:01 +0200 Subject: [PATCH] Refactor FlatOverlay --- carnot/overlay.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/carnot/overlay.py b/carnot/overlay.py index c68b3ea..209a7a4 100644 --- a/carnot/overlay.py +++ b/carnot/overlay.py @@ -1,25 +1,34 @@ import random from abc import abstractmethod -from typing import Set, Optional, List +from typing import Set, Optional, List, Self from carnot import Overlay, Id, Committee, View class EntropyOverlay(Overlay): @abstractmethod - def set_entropy(self, entropy: bytes): + def advance(self, entropy: bytes) -> Self: pass class FlatOverlay(EntropyOverlay): - def set_entropy(self, entropy: bytes): + + def __init__(self, current_leader: Id, nodes: List[Id], entropy: bytes): + self.current_leader = current_leader + self.nodes = nodes + self.entropy = entropy + + def next_leader(self) -> Id: + random.seed(a=self.entropy, version=2) + return random.choice(self.nodes) + + def advance(self, entropy: bytes): self.entropy = entropy def is_leader(self, _id: Id): return _id == self.leader() def leader(self) -> Id: - random.seed(a=self.entropy, version=2) - return random.choice(self.nodes) + return self.current_leader def is_member_of_leaf_committee(self, _id: Id) -> bool: return True @@ -48,9 +57,5 @@ class FlatOverlay(EntropyOverlay): def super_majority_threshold(self, _id: Id) -> int: return 0 - def __init__(self, nodes: List[Id]): - self.nodes = nodes - self.entropy = None -