move_stake

Call v233 → current #85

Moves stake from one hotkey /subnet to another.

View calls on chain

Click items to navigate. Pan and zoom to explore.

Used by: stakersdelegatorsanalyticswallets

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.

Part of: Stake Operations

Input Parameters

#NameTypeDescription
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

Origin
Signed
Required Role
Authorization Checks
  • 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

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

Usage Frequency
●●●●●○ Core 1M–10M extrinsics

Primary protocol calls

#20 most used call

Success Rate Reliable

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