Bittensor runs multiple self-contained economic markets incentivizing access to different forms of machine intelligence, for instance; subnetwork 1 produces completions from text prompts and subnetwork 2 incentivizes the production of informationally dense embeddings from text. These economic domains are called "subnetworks".
You can uses btcli list_subnets
to show all currently running subnetworks on bittensor.
1$ btcli list_subnets 2NETUID NEURONS MAX_N DIFFICULTY TEMPO CON_REQ EMISSION BURN(τ) 31 691 1.02 K 198.08 T 99 None 28.44% τ4.75710 43 4096 4.10 K 320.81 T 99 None 71.56% τ1.00000 52 5120 6 7 Description: 8 NEURONS: Current UID count. 9 MAX_N: Max UID count. 10 DIFFICULTY: Proof of work registration difficulty. 11 TEMPO: Blocks between network emission distribution. 12 CON_REQ: Network requirement 13 EMISSION: Percentage of global emission emitted into this network each block. 14 BURN: TAO recycle cost per registration.
To extract more fine grained information about each subnetwork use bt.metagraph
.
1import bittensor as bt 2subnet = bt.metagraph( netuid = 1 ) # Get the current state. 3assert subnet.netuid == 1 4subnet.sync( block = 101010 ) # Sync the state with a particular block. 5assert subnet.block == 101010
Subnetwork are composed of a discrete number of "uids" under which validators and miners position themselves and over which Yuma Consensus is run.
1import bittensor as bt 2subnet = bt.metagraph( netuid = 1 ) 3assert subnet.uids.tolist() == [ 0, 1, 2, ... 1022, 1023 ]
Each uid in the network belongs to a unique hotkey
which in turn is connected to a unique coldkey
which a miner has used to register with.
1import bittensor as bt 2subnet = bt.metagraph( netuid = 1 ) 3uid = 123 4print ('uid', uid, ' owned by hotkey:', subnet.hotkeys[ uid ], 'assoicated with coldkey': subnet.coldkey[ uid ] )
Through registration hotkeys cycle in and out of each subnetwork depending on their performance according to subnetworks validators. Stake metagraph.S
across subnetwork is universal. This validation method is performed by validators setting a set of weights metagraph.W
on the chain based on their subjective valuations of the miners across the network.
1import bittensor as bt 2subnet = bt.metagraph( netuid = 1, lite = False) 3print ('subnet 1 validator stake', subnet.S ) 4print ('subnet 1 validator weights', subnet.W )
Correctly assessing the value of the miners on the network is incentivized by the chain which distributes bonds metagraph.B
, which pick up part of the inflation from those miners as dividends metagraph.D
.
1import bittensor as bt 2subnet = bt.metagraph( netuid = 1 ) 3print ('subnet 1 validator bonds', subnet.B ) 4print ('subnet 1 validator dividends', subnet.D )