Changes to proof_of_stake.py

This commit is contained in:
DIVYASREE S 2024-10-10 21:32:04 +05:30 committed by GitHub
parent d770fa5bf5
commit 82064e3a23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,17 +1,7 @@
import random import random
from typing import List
class Validator: class Validator:
""" def __init__(self, name: str, stake: int) -> None:
Represents a validator in a Proof of Stake system.
Attributes:
name (str): The name of the validator.
stake (int): The amount of stake (coins) the validator holds.
"""
def __init__(self, name: str, stake: int):
""" """
Initializes a new validator with a given name and stake. Initializes a new validator with a given name and stake.
@ -22,15 +12,14 @@ class Validator:
self.name = name self.name = name
self.stake = stake self.stake = stake
def choose_validator(validators: list[Validator]) -> Validator:
def choose_validator(validators: List[Validator]) -> Validator:
""" """
Selects a validator to create the next block based on the weight of their stake. Selects a validator to create the next block based on the weight of their stake.
The higher the stake, the greater the chance to be selected. The higher the stake, the greater the chance to be selected.
Args: Args:
validators (List[Validator]): A list of Validator objects. validators (list[Validator]): A list of Validator objects.
Returns: Returns:
Validator: The selected validator based on weighted random selection. Validator: The selected validator based on weighted random selection.
@ -43,7 +32,6 @@ def choose_validator(validators: List[Validator]) -> Validator:
""" """
total_stake = sum(v.stake for v in validators) 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( selected = random.choices([v[0] for v in weighted_validators],
[v[0] for v in weighted_validators], weights=[v[1] for v in weighted_validators] weights=[v[1] for v in weighted_validators])
)
return selected[0] return selected[0]