This call was removed in v150

This call is no longer available in the current runtime. Existed from v101 to v150. Shown here for historical reference.

transfer

Call Removed v101 → v148, v149 → v150 (removed) #7

Transfers TAO between accounts.

Click items to navigate. Pan and zoom to explore.

Used by: walletsexchangesdevelopersstakers

The Big Picture

The most basic operation: move TAO from A to B. This is the foundation of all payments on Bittensor. Unlike staking operations, transfer just moves liquid TAO without any conversion or earning mechanism.

Why This Matters

You need to move TAO to use the network - fund wallets, pay people, consolidate holdings. This is the simplest way to do that.

Example Scenario

Send 10 TAO to a friend. Call transfer(to=friend_address, amount=10 TAO). Their balance increases by 10 TAO, yours decreases. A small transaction fee is also deducted.

Common Questions

What's the difference between transfer variants?
transfer keeps your account alive (won't empty it). transfer_allow_death can empty it. transfer_all sends everything. All emit the same Transfer event.
Why did my transfer fail?
Usually: insufficient balance, trying to empty account with regular transfer, or recipient address invalid. Check the error code.

Use Cases

  • Send TAO to another address
  • Fund a new wallet
  • Pay for services or purchases

From Chain Metadata

See [`Pallet::transfer`].

Input Parameters

#NameTypeDescription
0
dest
MultiAddress AccountIdLookupOf<T>Recipient account address
1
value
Compact<u64> Cpt T::BalanceAmount to transfer (RAO, ÷10⁹ for TAO) (RAO -> TAO (/ 10^9))

Permissions

Origin
Unknown
Required Role

Permission data inferred from metadata. May be incomplete.

Requirements

  • Sender has sufficient free balance
  • Transfer won't kill sender account (use transfer_allow_death for that)
  • Recipient account can receive funds

Effects

Events Emitted

Storage Modified

Postconditions

  • Sender balance decreased by amount
  • Recipient balance increased by amount

Side Effects

  • May create recipient account if new
  • Transaction fees deducted from sender

Code Examples

// ----------------------------------------------------------------------
// HEADS UP: 1 arg below has a complex type with no usable default.
// Look for `undefined as any` and replace it with real value
// before running — the snippet compiles, but will fail at runtime as-is.
// ----------------------------------------------------------------------
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);

// Build transfer call (typed, named args)
const dest = undefined as any /* MultiAddress — replace with real value */;
const value = 0n;

const tx = api.tx.Balances.transfer({
  dest,
  value,
});

Version History

v101 block 1 2 args
v149 block 3,014,339 2 args
v150 Removed

Runtime Info

Pallet Index
5
Call Index
7
First Version
v101
Removed In
v150