register
Call v101 → current #6Registers a neuron using proof-of-work solution.
View calls on chainCall Workflow
Click items to navigate. Pan and zoom to explore.
The Big Picture
POW registration is the original, capital-free way to join a subnet. Instead of burning TAO, you solve a cryptographic puzzle. The difficulty adjusts based on demand - popular subnets require more computation. This democratizes access: anyone with compute power can participate, regardless of TAO holdings.
Why This Matters
Burn registration favors those with TAO. POW registration favors those with compute. This balance ensures the network isn't purely pay-to-play. Small operators can grind their way in through computation.
Example Scenario
You want to join subnet 1 but the burn cost is 2 TAO - more than you have. You run the POW solver: `btcli s register --netuid 1 --pow_register`. After 30 minutes of GPU work, you find a valid solution. Submit with register(netuid=1, work=solution). You're registered without spending any TAO.
Common Questions
- How long does POW registration take?
- It varies wildly - minutes to hours depending on subnet difficulty, your hardware, and luck. Check RegistrationDifficulty to estimate. GPU acceleration helps significantly.
- Is my POW solution single-use?
- Yes. Each solution is unique to your hotkey and the current block range. Solutions expire - you can't compute one today and use it next week.
- When is POW better than burn?
- When burn cost > value of your compute time, or when you're capital-constrained but have idle GPU capacity. Many miners run POW overnight to avoid burn costs.
Use Cases
- Register on a subnet without spending TAO
- Join competitive subnets where burn cost is high
- Prove commitment through computational work
- Bootstrap mining operations with limited capital
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | netuid | u16 | Subnet/network identifier (0-65535) |
| 1 | block_number | u64 | block_number (u64) (RAO -> TAO (/ 10^9)) |
| 2 | nonce | u64 | nonce (u64) |
| 3 | work | Vec<u8> Vec | work (Vec<u8>) |
| 4 | hotkey | AccountId | Hot wallet address (active operations) (hex -> SS58) |
| 5 | coldkey | AccountId | Cold wallet address (offline storage) (hex -> SS58) |
Permissions
Requirements
- Subnet exists and accepts registrations
- Hotkey not already registered on this subnet
- Valid POW solution provided
- POW difficulty met
Effects
Events Emitted
Storage Modified
Postconditions
- Neuron registered with assigned UID
- Hotkey-coldkey association recorded
- Subnet's neuron count increased
Side Effects
- May prune lowest-performing neuron if subnet is full
Possible Errors
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 });
// Build register call
const netuid = 1;
const block_number = 0;
const nonce = 0;
const work = 0;
const hotkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const coldkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const call = api.tx[stringCamelCase("SubtensorModule")][stringCamelCase("register")](
netuid,
block_number,
nonce,
work,
hotkey,
coldkey
);On-Chain Activity
Significant regular use
#23 most used call
Under 5% succeed — vast majority fail due to competition
As of block 7,429,232
Runtime Info
View Source- Pallet Index
- 7
- Call Index
- 6
- First Version
- v101
- Current Version
- v393