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) #7Transfers TAO between accounts.
Call Workflow
Click items to navigate. Pan and zoom to explore.
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
| # | Name | Type | Description |
|---|---|---|---|
| 0 | dest | MultiAddress AccountIdLookupOf<T> | Recipient account address |
| 1 | value | Compact<u64> Cpt T::Balance | Amount to transfer (RAO, ÷10⁹ for TAO) (RAO -> TAO (/ 10^9)) |
Permissions
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
Runtime Info
- Pallet Index
- 5
- Call Index
- 7
- First Version
- v101
- Removed In
- v150