-
Notifications
You must be signed in to change notification settings - Fork 266
Description
Calculations
total_issuance = subnet_alpha_out + subnet_alpha_in + subnet_alpha_in_provided
burn = subnet_alpha_out - SUM(total_hotkey_alpha) (taking only the total hotkey alpha entries where netuid matches the subnet).
Problem
Burning happens on chain in 2 ways:
- The burn extrinsic: reducing a coldkey's stake without reducing
subnet_alpha_out. - Incentive distribution: increasing
subnet_alpha_outas normal inrun_coinbase.rsbut not giving the alpha to the keys owned by the subnet.
There was a 3rd way, in the chain's subsidy mechanism, but that was a small amount and was implemented by accident as it should have been recycling instead, so should probably be ignored.
In both scenarios a diff is increased between the accounting storage of owned alpha on a subnet (subnet_alpha_out), and stake owned by accounts (the sum of total_hotkey_alpha where the netuid matches the subnet). This diff is issued but inaccessible alpha, known as burned alpha.
subnet_alpha_out has been updated incorrectly since dtao launch, leading to the chain not knowing what the correct issuance is on subnets, and not being able to derive the correct burn amount on a subnet.
Evidence
Query the storage on block 6874108 (any block will give similar results, this is just one I picked). 6 subnets have greater total_hotkey_alpha than subnet_alpha_out. 6 subnets have a negative burn, and root accounting is off by ~562k TAO.
{
"netuid": 0,
"diff": "-561931452490774"
},
{
"netuid": 17,
"diff": "-5409469998121"
},
{
"netuid": 32,
"diff": "-3529669489799"
},
{
"netuid": 55,
"diff": "-2585186709697"
},
{
"netuid": 53,
"diff": "-312311125448"
},
{
"netuid": 20,
"diff": "-216796023194"
},
{
"netuid": 2,
"diff": "-180977417688"
},If you query block 4929350, which is roughly a day after dtao launch, the diff is negative for every single subnet.
Impact
- In the distant future, the alpha halvenings will happen at the wrong time.
- In the even further distant future the max supply of 21m tokens will not be respected.
- Right now nobody knows the correct amount of alpha burned without manually indexing the chain through the various burning mechanisms that have been implemented.
I believe we have the correct burn totals at Taostats, but it's a very complex indexer so there could be errors I haven't spotted.
Taking subnet 17 as an example, taostats (~67k) & taomarketcap (~71k) have a similar burn amounts (less than 5% difference), tao.app shows 0, the chain shows -5409 alpha burned.