The Big Picture
Burn registration is the alternative to POW - pay TAO instead of compute. The burn amount adjusts based on registration demand, similar to difficulty. High demand = higher burn cost. It's an economic barrier that ensures registration slots go to those who value them enough to pay.
Why This Matters
How much TAO to register? Burn tells you. This is the price tag for network access on each subnet. Compare to your expected earnings to decide if registration is economically viable.
Example Scenario
Query Burn(netuid=1) returns 1000000000 (1 TAO in RAO). You must pay 1 TAO to register via burn registration on subnet 1. This TAO goes into the subnet's liquidity pool.
Common Questions
- How does burn adjust?
- Like difficulty, based on TargetRegistrationsPerInterval. More demand = higher burn. Less demand = burn decreases toward MinBurn.
- Is the TAO actually burned?
- Despite the name, TAO isn't destroyed. It's swapped into the subnet's liquidity pool (SubnetTAO), and the Alpha received is burned. The TAO stays in the ecosystem - it becomes available for others to swap out of the pool.
- Should I burn or POW?
- If you have idle compute, POW might be cheaper. If you value time and have TAO, burn is instant. Do the math: (electricity cost for POW) vs (burn TAO × TAO price).
- Are there limits on burn?
- Yes, check MinBurn and MaxBurn. Burn cost stays within these bounds regardless of demand.
Use Cases
- Check registration cost before registering
- Compare burn vs POW registration economics
- Build registration cost displays and estimators
- Track subnet demand through burn price
- Plan registration budget across multiple subnets
From Chain Metadata
MAP ( netuid ) --> Burn
Purpose & Usage
Purpose
Control registration TAO cost - how much TAO must be burned to register on a subnet.
Common Query Patterns
- Query by netuid before burn registration
- Monitor burn cost trends over time
- Compare burn costs across subnets
Migration Notes
key type changed from u16 to NetUid; value type changed from u64 to TaoBalance
Update decoders: SCALE encoding is positional, so any signature change (added, removed, or type-changed fields, or storage shape changes) shifts byte offsets and existing decoders will misparse this item. Re-derive types from the new metadata.
Query Keys
| # | Name | Type | Description |
|---|---|---|---|
| 1 | netuid | NetUid u16 | netuid (NetUid, hashed key component) |
Stored Value
Burn (TaoBalance)
Default Value
Absent keys read as this value — querying a key that has never been written returns this default, not an error or empty result.
Default changed
- v101 → 1000000000
- v290 → 100000000 Current
Relationships
Modified By
Related Events
Code Examples
import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443
const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);
// Query Burn storage
const netuid = 1;
const result = await api.query.SubtensorModule.Burn.getValue(netuid);
console.log("Burn:", result);Version History
- key :
u16→NetUid - value :
u64→TaoBalance
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v101
- Current Version
- v472