Refactor FlatOverlay

This commit is contained in:
danielsanchezq 2023-05-25 13:01:01 +02:00
parent 34617dc911
commit 9ae2f99b5c

View File

@ -1,25 +1,34 @@
import random import random
from abc import abstractmethod from abc import abstractmethod
from typing import Set, Optional, List from typing import Set, Optional, List, Self
from carnot import Overlay, Id, Committee, View from carnot import Overlay, Id, Committee, View
class EntropyOverlay(Overlay): class EntropyOverlay(Overlay):
@abstractmethod @abstractmethod
def set_entropy(self, entropy: bytes): def advance(self, entropy: bytes) -> Self:
pass pass
class FlatOverlay(EntropyOverlay): 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 self.entropy = entropy
def is_leader(self, _id: Id): def is_leader(self, _id: Id):
return _id == self.leader() return _id == self.leader()
def leader(self) -> Id: def leader(self) -> Id:
random.seed(a=self.entropy, version=2) return self.current_leader
return random.choice(self.nodes)
def is_member_of_leaf_committee(self, _id: Id) -> bool: def is_member_of_leaf_committee(self, _id: Id) -> bool:
return True return True
@ -48,9 +57,5 @@ class FlatOverlay(EntropyOverlay):
def super_majority_threshold(self, _id: Id) -> int: def super_majority_threshold(self, _id: Id) -> int:
return 0 return 0
def __init__(self, nodes: List[Id]):
self.nodes = nodes
self.entropy = None