move_stake
Call v233 → current #85Moves stake from one hotkey /subnet to another.
View calls on chainCall Workflow
Click items to navigate. Pan and zoom to explore.
The Big Picture
Move stake is the smart way to rebalance. Unlike unstake+restake (which converts to TAO and back), moving preserves your stake amount. No price slippage, no double conversion fees. Essential for portfolio management.
Why This Matters
When you want to switch validators or rebalance across subnets, move_stake avoids the price risk of unstaking. Your 100 TAO equivalent stays 100 TAO equivalent - it just moves to a new home.
Example Scenario
You have 100 TAO staked to Validator A on subnet 1. Validator B on subnet 3 has better performance. Call move_stake(from_hotkey=A, to_hotkey=B, netuid=3, amount=100). Your stake moves directly without touching liquid TAO.
Common Questions
- Is there any cost to moving stake?
- Just the transaction fee. No conversion slippage like you'd get from unstake+restake.
- Can I move partial stake?
- Yes, specify the amount. Move as much or as little as you want.
Use Cases
- Rebalance stake between validators without conversion slippage
- Move stake to a better-performing subnet
- Consolidate stake across positions
From Chain Metadata
- The implementation for the extrinsic move_stake: Moves specified amount of stake from a hotkey to another across subnets.
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | origin_hotkey | AccountId | origin_hotkey (AccountId) (hex -> SS58) |
| 1 | destination_hotkey | AccountId | destination_hotkey (AccountId) (hex -> SS58) |
| 2 | origin_netuid | u16 | origin_netuid (u16) |
| 3 | destination_netuid | u16 | destination_netuid (u16) |
| 4 | alpha_amount | u64 | alpha_amount (u64) (RAO -> TAO (/ 10^9)) |
Permissions
- Coldkey must be associated with both source and destination hotkeys
Requirements
- Coldkey has stake on origin hotkey/subnet
- Destination hotkey is registered
- Move is not rate limited
Effects
Events Emitted
Storage Modified
Postconditions
- Stake decreased on origin
- Stake increased on destination
- Total stake unchanged
Side Effects
- Alpha redistributed between subnets
- May affect validator rankings on both subnets
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 move_stake call
const origin_hotkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const destination_hotkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const origin_netuid = 1;
const destination_netuid = 1;
const alpha_amount = 1_000_000_000n;
const call = api.tx[stringCamelCase("SubtensorModule")][stringCamelCase("move_stake")](
origin_hotkey,
destination_hotkey,
origin_netuid,
destination_netuid,
alpha_amount
);On-Chain Activity
Primary protocol calls
#20 most used call
80–95% of submissions succeed
As of block 7,429,232
Runtime Info
View Source- Pallet Index
- 7
- Call Index
- 85
- First Version
- v233
- Current Version
- v393