Subnetworks

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".


Viewing Subnets

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.

Viewing Subnet State

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 ] )

Viewing Subnet Parameters

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 )