transfer_stake
Call v233 → current #86Transfers stake from one coldkey to another on the same hotkey .
View calls on chainCall Workflow
Click items to navigate. Pan and zoom to explore.
The Big Picture
Normally, moving stake means unstaking to TAO, transferring TAO, then restaking. That's three transactions and exposes you to Alpha price risk. transfer_stake moves the stake directly between coldkeys without touching liquid TAO. Same hotkey, same position, different owner.
Why This Matters
When you need to change who owns stake (new wallet, security upgrade, transfer to someone else), doing it without unstaking preserves your position exactly. No conversion, no price risk, no timing issues.
Example Scenario
You're upgrading to a hardware wallet. Your old coldkey has 500 TAO staked to a validator. Call transfer_stake(origin=old_coldkey, dest=new_coldkey, hotkey=validator, amount=500). The stake position transfers to your new wallet - same validator, same subnet, no conversion.
Common Questions
- Can I transfer to anyone's coldkey?
- Yes, as long as you control the origin coldkey (you're signing the transaction). The destination coldkey gains ownership of the stake.
- What happens to my earnings from this stake?
- Once transferred, all future emissions go to the new coldkey. Any pending emissions up to the transfer belong to the original coldkey.
Use Cases
- Transfer stake ownership to a new wallet
- Gift staked position without unstaking
- Move stake to a more secure coldkey
- Estate planning or organizational restructuring
From Chain Metadata
Transfers a specified amount of stake from one coldkey to another, optionally across subnets, while keeping the same hotkey.
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | destination_coldkey | AccountId | destination_coldkey (AccountId) (hex -> SS58) |
| 1 | hotkey | AccountId | Hot wallet address (active operations) (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 the source hotkey
Requirements
- Origin coldkey has stake on hotkey
- Transfer is authorized
- Hotkey is registered
Effects
Events Emitted
Storage Modified
Postconditions
- Origin coldkey's stake decreased
- Destination coldkey's stake increased
- Ownership transferred
Side Effects
- Updates StakingHotkeys for both coldkeys
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 transfer_stake call
const destination_coldkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const hotkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const origin_netuid = 1;
const destination_netuid = 1;
const alpha_amount = 1_000_000_000n;
const call = api.tx[stringCamelCase("SubtensorModule")][stringCamelCase("transfer_stake")](
destination_coldkey,
hotkey,
origin_netuid,
destination_netuid,
alpha_amount
);On-Chain Activity
Significant regular use
#31 most used call
80–95% of submissions succeed
As of block 7,429,232
Runtime Info
View Source- Pallet Index
- 7
- Call Index
- 86
- First Version
- v233
- Current Version
- v393