Skip to main content

Bittensor Staking

Stake, unstake and move TAO safely across subnets.

Bundled with Minerva and active by default — there is nothing to install.

Skill metadata​

Pathskills/bittensor/bittensor-staking
Version1.1.0
Authormoy-boy (@moy-boy), Minerva Agent
LicenseMIT
Platformslinux, macos, windows
TagsBittensor, TAO, Staking, Delegation, Alpha, Slippage, dTAO, btcli, Blockchain
Related skillsbittensor-validator, bittensor-analytics, bittensor-miner

Reference: full SKILL.md​

info

The following is the complete skill definition that Minerva loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.

Staking TAO

Fast path​

Start with the one-call tools; they join chain, dashboards, Discord and the curated knowledge for you:

  • bittensor_knowledge (question, optional netuid): terms, rules, subnet facts and playbooks.
  • bittensor_profile (any name or key): the person's coldkey, every hotkey on every subnet with rank, incentive and king status, linked names with sources, subnets they own.
  • bittensor_subnet_profile (netuid or name): owner by name, team on Discord, current king and dethronements, top miners by name, owner burn share, market data.
  • bittensor_changes (any name or key): rank and incentive changes over the last days.

They may appear with a prefix such as mcp_bittensor_research_. Lead with names; give keys as support.

For someone who holds TAO and wants it earning, not someone running a validator. If the user operates a validator or is choosing child hotkeys and takes, use bittensor-validator instead.

Every command here signs an extrinsic and moves real money. None of them are guesses: the syntax below comes from btcli stake --help on btcli 9.23.2. Re-read it before advising if the installed version differs — btcli --version.

Read before you write​

Answer with the read-only chain tools first. bittensor_subnets ranks subnets by price, emission and market cap; bittensor_subnet gives one subnet's pool and rate; bittensor_account shows what a coldkey already holds. None of them need a wallet or a key. Only reach for btcli once the user has decided what to do.

btcli stake list --wallet-name W is the read that matters before any change: it shows every position across all subnets, which is the thing users are usually wrong about.

The one hazard that loses money: slippage​

Staking into a dynamic subnet is not a deposit. It buys that subnet's alpha token through an AMM pool, so the rate you get depends on pool depth and on what else lands in the same block. A large stake into a thin pool can fill far off the quoted rate.

btcli defends against this and the defaults are already correct — say so rather than pasting flags the user does not need:

FlagDefaultWhat it does
--safe / --safe-stakingenabledAborts if the rate moves more than the tolerance
--tolerance0.05 (5%)Maximum rate change allowed
--partial / --allow-partial-stakedisabledFill what fits rather than aborting
--unsafe—No rate protection at all
btcli stake add --amount 100 --netuid 1 --safe --tolerance 0.1 --no-partial # abort if >10% move
btcli stake add --amount 300 --safe --partial --tolerance 0.1 # fill what fits

Never suggest --unsafe. If a stake keeps aborting, the pool is too thin for the size — the answer is a smaller amount or a different subnet, not removing the guard. Explain that rather than handing over the flag.

--mev-protection exists on stake add for the same family of problem. Leave it at its default unless the user asks.

Root versus dynamic subnets​

Netuid 0 is root. Staking there earns in TAO directly. Staking on any other netuid buys that subnet's alpha, and the value of your position moves with that subnet's price — you are taking a position on the subnet, not just earning yield. Make sure the user knows which one they are doing; this is the most common misunderstanding.

Root emissions have their own handling:

btcli stake set-claim # how root (subnet 0) emissions are handled for this coldkey
btcli stake process-claim # manually claim accumulated root emissions

The commands​

IntentCommandSigns
See every positionbtcli stake list --wallet-name Wno
Stakebtcli stake add --netuid N --amount X --wallet-name W --hotkey Hyes
Unstakebtcli stake remove --netuid N --amount X --wallet-name W --hotkey Hyes
Same coldkey, new hotkeybtcli stake moveyes
Same hotkey, new coldkeybtcli stake transferyes
Change subnetbtcli stake swapyes
Guided movementbtcli stake wizardyes
Auto-stake destinationbtcli stake auto / btcli stake set-autoset-auto yes

move, transfer and swap are three different operations and users conflate them. Say which axis changes: move keeps the coldkey and changes hotkey, transfer keeps the hotkey and changes coldkey, swap keeps the coldkey-hotkey pair and changes subnet. A swap crosses two AMM pools, so it carries slippage on both sides.

Running them​

Signing commands go through the terminal tool and are approval-gated — the user sees the exact command before it runs. Do not paste a wallet password, and do not offer to store one.

Before any signing command, state in one line: which netuid, how much, which wallet and hotkey, and whether it buys alpha or root TAO. If the user has not said the amount, ask; never infer it from a balance.

Completion​

The work is done when the user's stake has moved as intended and btcli stake list shows it. If a command aborted on tolerance, that is a successful outcome of the guard — report the rate move and offer a smaller amount, not --unsafe.