StakeTransferred

Event v233 → v247, v252 → v265, v273 → v277, v290 → v298, v301 → v315, v320 → v326, v334 → v367, v372 → v377, v385 → v385, v391 → v402, v411 → current Changed in v411 #90

Emitted when stake is transferred from one coldkey to another.

View events on chain
Useful for: stakerswalletsexchangesanalytics

The Big Picture

Normally stake is tied to your coldkey - the private key that controls it. Stake transfer lets you change who OWNS that stake without unstaking. This preserves your position (no Alpha→TAO conversion) and is useful for wallet migrations, transfers between entities, or moving stake to a more secure coldkey.

Why This Matters

Your stake is earning rewards, and unstaking would convert your Alpha back to TAO (potentially at a loss). Stake transfer lets you change ownership while keeping the stake active - the new coldkey now owns it and receives the rewards.

Example Scenario

You want to move 500 TAO of stake from your hot wallet (coldkey A) to your hardware wallet (coldkey B). Instead of unstaking (losing to slippage) and restaking, you transfer the stake directly. StakeTransferred fires showing coldkey A → coldkey B. The stake is now owned by your hardware wallet, still earning on the same hotkey.

Common Questions

Does the recipient need to do anything?
No, stake transfers are one-way. The destination coldkey automatically receives ownership. They should verify receipt by checking their stake balance.
Can I transfer stake to any coldkey?
Yes, you can transfer to any valid Substrate account. Be very careful with the destination address - transfers cannot be reversed.
Does this affect the hotkey or validator?
No, the stake stays on the same hotkey. Only the coldkey ownership changes. The hotkey/validator sees no difference - same stake, different owner.

Use Cases

  • Transfer stake ownership to a new wallet
  • Gift or sell staked positions without unstaking
  • Consolidate stake from multiple coldkeys
  • Estate planning or organization transfers

How to Use This Event

  • Monitor your coldkeys for incoming stake transfers
  • Track when stake ownership changes hands
  • Build transfer notification systems for high-value accounts

From Chain Metadata

Stake has been transferred from one coldkey to another on the same subnet. Parameters: (origin_coldkey, destination_coldkey, hotkey, origin_netuid, destination_netuid, amount)

Triggers

Effects

Postconditions

  • Origin coldkey's stake decreased
  • Destination coldkey's stake increased
  • Ownership of stake transferred

Side Effects

  • Updates StakingHotkeys for both coldkeys
  • May affect TotalColdkeyStake for both accounts

Event Data

#NameTypeDescription
0
arg0
→ origin_coldkey
AccountId Source coldkey (signer of transfer_stake) (hex -> SS58)
1
arg1
→ destination_coldkey
AccountId Receiving coldkey (hex -> SS58)
2
arg2
→ hotkey
AccountId Hotkey (held constant — transfer moves between coldkeys, same hotkey) (hex -> SS58)
3
arg3
→ origin_netuid
u16 NetUidSubnet stake moved FROM
4
arg4
→ destination_netuid
u16 NetUidSubnet stake moved TO
5
arg5
→ amount
u64 TaoBalanceAmount transferred (raw u64). Cross-subnet: net TAO post-fee (RAO). Same-subnet: alpha (alpha-RAO). Same TaoCurrency-typeName caveat as StakeMoved.

Code Examples

import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443

const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);

// Subscribe to StakeTransferred events
client.finalizedBlock$.subscribe(async (block) => {
  const events = await api.event.SubtensorModule.StakeTransferred.get(block.hash);
  for (const evt of events) {
    console.log("StakeTransferred:", evt.payload);
  }
});

On-Chain Activity

Emission Frequency
●●●○○○ Active 100K–1M emissions

Regular feature-level activity

#35 most emitted event

As of block 7,429,232

Version History

v233 block 4,920,350 6 args
v252 block 5,163,656 6 args
v273 block 5,659,032 6 args
v290 block 5,947,548 6 args
v301 block 6,205,194 6 args
v320 block 6,523,566 6 args
v334 block 6,811,690 6 args
v372 block 7,430,358 6 args
v385 block 7,782,670 6 args
v391 block 7,782,857 6 args
v411 block 8,283,784 6 args Current

Runtime Info

View Source
Pallet Index
7
Event Index
90
First Version
v233
Current Version
v411