diff --git a/blockchain/proof_of_stake.py b/blockchain/proof_of_stake.py index 568824921..b988bfe2f 100644 --- a/blockchain/proof_of_stake.py +++ b/blockchain/proof_of_stake.py @@ -1,5 +1,6 @@ import random + class Validator: def __init__(self, name: str, stake: int) -> None: """ @@ -12,6 +13,7 @@ class Validator: self.name = name self.stake = stake + def choose_validator(validators: list[Validator]) -> Validator: """ Selects a validator to create the next block based on the weight of their stake. @@ -31,11 +33,8 @@ def choose_validator(validators: list[Validator]) -> Validator: True """ total_stake = sum(v.stake for v in validators) - weighted_validators = [ - (v, v.stake / total_stake) for v in validators - ] + weighted_validators = [(v, v.stake / total_stake) for v in validators] selected = random.choices( - [v[0] for v in weighted_validators], - weights=[v[1] for v in weighted_validators] + [v[0] for v in weighted_validators], weights=[v[1] for v in weighted_validators] ) return selected[0]