Documentation / Understanding Taostats / Extrinsics
Extrinsics: proxy
Proxies are wallets that are authorized by other wallets to perform tasks. Each Bittensor proxy type permits a fixed set of calls.
Last reviewed 2026-11-05
Proxies are wallets that are authorized by other wallets to perform tasks. When you add a proxy, you choose a proxy type, and the type fixes which calls the proxy can make on your behalf. A call that the type does not list is rejected.
Bittensor has 23 proxy types. Four of them are deprecated and permit nothing.
ProxyType permission table
| ProxyType | Transfer TAO / alpha | Manage stake | Lock stake | Register | Subnet admin | Weights & serving | Child keys | Swap hotkey | Claim root | Basket trading | Gamma | Coldkey swap |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Any | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| NonCritical | ✅ | ✅ | ✅ | ✅ (PoW only) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ (not spend) | ❌ |
| NonTransfer | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ (close only) | ❌ |
| NonFungible | ❌ | ❌ | ❌ | ✅ (PoW only) | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Owner | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SubnetLeaseBeneficiary | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ (service only) | ❌ |
| Transfer | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SmallTransfer | ✅ (< 0.5 TAO / 0.5 alpha) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Staking | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Lock | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Registration | ❌ | ❌ | ❌ | ✅ (PoW + burned) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Validate | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ (no identity or take) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Weights | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ (weights only) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ChildKeys | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SwapHotkey | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| RootClaim | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| BasketTrading | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| GammaSpend | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ (spend only) | ❌ |
| SudoUncheckedSetCode | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Triumvirate (deprecated) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Senate (deprecated) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Governance (deprecated) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| RootWeights (deprecated) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
What the columns mean
- Transfer TAO / alpha:
transfer_keep_alive,transfer_allow_death,transfer_all,transfer_stakeandtransfer_stake_and_hotkey. These move value to a different coldkey. Funding an EVM address (EVM.deposit) counts as a transfer. - Manage stake:
add_stake,remove_stake,unstake_all,unstake_all_alpha,move_stake,swap_stake(and their_limitvariants),stake_into_basket,add_collateralandset_min_collateral. Stake stays on your own coldkey, but these calls can unstake it to free TAO. - Lock stake:
lock_stake,move_lockandset_perpetual_lock, the conviction-lock lifecycle. - Register:
pow_register(proof of work), the burn registrationsburned_register,registerandregister_limit(despite their names,registerandregister_limitburn TAO), androot_register. - Subnet admin: the subnet-owner hyperparameter calls (
sudo_set_*in AdminUtils, including emission weights and switching gamma on for the subnet),set_tempo,set_subnet_identityandupdate_symbol. SubnetLeaseBeneficiary also hasstart_call. - Weights & serving:
set_weights,commit_weightsandreveal_weights(with their mechanism, batch and timelocked variants),serve_axon,serve_prometheus,set_identity,associate_evm_key, and validator take changes. - Child keys:
set_childrenandset_childkey_take. - Swap hotkey:
swap_hotkeyandswap_hotkey_v2. - Claim root:
claim_rootandclaim_root_with_hotkey. - Basket trading:
swap_basketandswap_basket_many, used by a root validator to rebalance its basket. - Gamma: the gamma calls:
mint_gamma,mint_gamma_with_stake,move_gamma,set_gamma_deposit_spender,set_gamma_deposit_daily_spend_cap,close_gamma_deposit,spend_gammaand publishing a service withset_service. - Coldkey swap: announcing, executing, disputing or clearing a coldkey swap. Only
Anycan do this.
Notes
- NonTransfer is not value-safe. It cannot transfer to another coldkey, but it can unstake, lock and burn stake, and register networks. Do not use it to protect an account's value. It cannot mint, move or spend gamma, change a gamma deposit's spender or cap, or publish a service, so it can't give itself spending power over gamma.
- NonFungible is the type that touches no value. It cannot move, stake, lock or burn TAO or alpha, cannot use gamma, and cannot swap keys. It can still set weights and child keys, which redirect emissions, so treat it as an operations key, not a harmless one.
- NonCritical covers day-to-day work, including transfers, contract calls, gamma minting and publishing a service. It excludes sudo, burned and root registration, coldkey swaps, basket trading, spending gamma and EVM execution (
EVM.call,create,withdraw), which needsAnybecause precompiles can rebuild an unrestricted origin. - Basket trading and gamma spending need an explicit grant. Only
AnyandBasketTradingcan callswap_basket; onlyAnyandGammaSpendcan callspend_gamma. - Staking includes claiming root dividends. It covers
claim_rootandclaim_root_with_hotkeyas well as stake management.RootClaimremains the narrowest grant for a service that only claims. - Lock controls the whole conviction-lock lifecycle and nothing else. It can lock up to the account's stake on a subnet, which reduces what can be unstaked, and can move a lock to any hotkey; moving it to a hotkey owned by a different coldkey forfeits accrued conviction. It cannot add, remove or transfer stake.
- GammaSpend can only spend the gamma deposits that name the real account as spender. A subnet service uses it as a billing key.
- Validate runs a validator hotkey from an operations key: all weight calls,
serve_axon,serve_axon_tls,serve_prometheus,associate_evm_keyandset_commitment. It cannot stake, transfer, swap keys, set child keys, change take, set identity or publish a gamma service, and it cannot wrap calls in Utility, Proxy or Multisig, so it never moves or locks TAO or alpha. - Weights is the narrowest grant for a third-party weight setter:
set_weights,commit_weights,reveal_weightsandcommit_timelocked_weights, with their mechanism and batch variants, and nothing else. Unlike Validate, it cannot re-point the axon or EVM key, so it cannot change where the subnet reaches or pays the neuron. - Batching. Every non-deprecated type except
ValidateandWeightscan callUtility.batch_all. Each call inside the batch is still checked against the proxy type, and the batch rolls back if one is rejected. - SmallTransfer allows balance transfers below 0.5 TAO and stake transfers below 0.5 alpha per call.
- SudoUncheckedSetCode permits one call:
sudo_unchecked_weightwrappingSystem.set_code, used for runtime upgrades by the sudo key. - Only
Anycan call sudo, wrap calls in a multisig, submit MEV-shield encrypted calls, approve a limit order for later execution (authorize_order), register a quantum-resistant hashed account, or create a protected pure proxy or derivative. These either re-dispatch the inner call without the proxy filter or commit the account's funds. - A proxy cannot add another proxy with a broader type than its own.
- The broad types (
Any,NonCritical,NonTransfer,NonFungible) can also call Utility, Proxy, Scheduler, Commitments, Swap (liquidity positions), limit-order and other infrastructure pallets, including the safe pure-proxy and derivative calls (create_safe_pure,kill_safe_pure,as_safe_derivative). Multisig calls, safe or legacy, remainAnyonly.Proxy.announceis alsoAnyonly, so a delayed proxy call can only be announced by the account itself or itsAnyproxy.