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 | Recipient account address |
| 1 | value | Compact<u64> Cpt | 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
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 call
const dest = 0 as any /* MultiAddress */;
const value = 0;
const call = api.tx[stringCamelCase("Balances")][stringCamelCase("transfer")](
dest,
value
);Version History
Runtime Info
- Pallet Index
- 5
- Call Index
- 7
- First Version
- v101
- Removed In
- v150