Lower limit on registration difficulty .
Current Value
10000000Relevant for: minersvalidatorssubnet ownersdevelopers
The Big Picture
Even when a subnet has low demand, difficulty won't drop below this floor. This prevents trivially easy registration that could lead to spam or Sybil attacks. The minimum ensures some computational cost always exists for POW registration, even on unpopular subnets.
Why This Matters
This is your best-case scenario for POW registration time. On quiet subnets with low demand, difficulty settles to this minimum.
Example
With MinDifficulty of 10,000, even an idle subnet requires ~10,000 hashes on average. On modern hardware, this takes milliseconds - essentially instant. The floor exists to prevent registration being completely free.
Common Questions
- Why have a minimum at all?
- Without it, an idle subnet could have difficulty of 1 - register in one hash. This enables spam attacks and Sybil attacks at near-zero cost.
- Is minimum difficulty the same as initial difficulty?
- No. Initial is where new subnets start; minimum is how low they can go. A new subnet might start at 10M and drop to 10K minimum if no one registers.
Use Cases
- POW registration
- Difficulty limits
Code Examples
import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";
const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });
// Query InitialMinDifficulty constant
const value = api.consts[stringCamelCase("SubtensorModule")][stringCamelCase("InitialMinDifficulty")];
console.log("InitialMinDifficulty:", value.toHuman());
// Convert RAO to TAO if this is a balance value
const taoValue = value.toBigInt() / BigInt(1e9);
console.log("TAO:", taoValue.toString());Type Information
- Type
- u64
- Byte Size
- 8 bytes
- Encoding
- fixed
- Raw Hex
- 0x8096980000000000
Runtime Info
- Pallet
- SubtensorModule
- First Version
- v101
- Latest Version
- v101
- Current Runtime
- v393