from dataclasses import dataclass
from jam.types.base.sequences.array import Array, decodable_array
from jam.types.base.sequences.bytes.byte_array import ByteArray128
from jam.utils.codec.codable import Codable
from jam.utils.codec.decorators.dataclasses import decodable_dataclass
from jam.types.protocol.crypto import BandersnatchPublic, Ed25519Public, BlsPublic
from jam.utils.constants import VALIDATOR_COUNT
from jam.utils.json.serde import JsonSerde
[docs]
@decodable_array(length=VALIDATOR_COUNT, element_type=BandersnatchPublic)
class ValidatorArray(Array[BandersnatchPublic]):
...
[docs]
@decodable_dataclass
@dataclass
class ValidatorData(Codable, JsonSerde):
"""Validator data structure."""
bandersnatch: BandersnatchPublic
ed25519: Ed25519Public
bls: BlsPublic
metadata: ValidatorMetadata
"""Fixed-size array of validator data with size VALIDATOR_COUNT."""
[docs]
@decodable_array(length=VALIDATOR_COUNT, element_type=ValidatorData)
class ValidatorsData(Array[ValidatorData]):
...