Source code for bittensor.core.chain_data.subnet_state

"""
This module defines the `SubnetState` data class and associated methods for handling and decoding
subnetwork states in the Bittensor network.
"""

from dataclasses import dataclass

from bittensor.core.chain_data.info_base import InfoBase
from bittensor.core.chain_data.utils import decode_account_id
from bittensor.utils import u16_normalized_float
from bittensor.utils.balance import Balance


[docs] @dataclass class SubnetState(InfoBase): netuid: int hotkeys: list[str] coldkeys: list[str] active: list[bool] validator_permit: list[bool] pruning_score: list[float] last_update: list[int] emission: list["Balance"] dividends: list[float] incentives: list[float] consensus: list[float] trust: list[float] rank: list[float] block_at_registration: list[int] alpha_stake: list["Balance"] tao_stake: list["Balance"] total_stake: list["Balance"] emission_history: list[list[int]] @classmethod def _from_dict(cls, decoded: dict) -> "SubnetState": """Returns a SubnetState object from decoded chain data.""" netuid = decoded["netuid"] return SubnetState( netuid=netuid, hotkeys=[decode_account_id(hk) for hk in decoded.get("hotkeys", [])], coldkeys=[decode_account_id(ck) for ck in decoded.get("coldkeys", [])], active=decoded["active"], validator_permit=decoded["validator_permit"], pruning_score=[ u16_normalized_float(val) for val in decoded["pruning_score"] ], last_update=decoded["last_update"], emission=[ Balance.from_rao(val).set_unit(netuid) for val in decoded["emission"] ], dividends=[u16_normalized_float(val) for val in decoded["dividends"]], incentives=[u16_normalized_float(val) for val in decoded["incentives"]], consensus=[u16_normalized_float(val) for val in decoded["consensus"]], trust=[u16_normalized_float(val) for val in decoded["trust"]], rank=[u16_normalized_float(val) for val in decoded["rank"]], block_at_registration=decoded["block_at_registration"], alpha_stake=[ Balance.from_rao(val).set_unit(netuid) for val in decoded["alpha_stake"] ], tao_stake=[ Balance.from_rao(val).set_unit(0) for val in decoded["tao_stake"] ], total_stake=[ Balance.from_rao(val).set_unit(netuid) for val in decoded["total_stake"] ], emission_history=decoded["emission_history"], )