Transfer
Event v101 → current #2Emitted when tokens are transferred between accounts.
View events on chainThe Big Picture
This is the fundamental 'money moved' event. Every TAO transfer between accounts emits this event. It's the building block for payments, tips, exchange operations, and any movement of liquid (unstaked) TAO. Wallets and exchanges monitor this constantly.
Why This Matters
When someone sends you TAO, or you send TAO to someone, this event proves it happened. The from/to/amount fields tell the complete story. Exchanges use this to credit deposits; wallets use it to show transaction history.
Example Scenario
You receive a payment of 10 TAO. Balances.Transfer fires with from: sender's address, to: your address, amount: 10000000000 (in RAO, = 10 TAO). Your wallet detects this event and shows 'Received 10 TAO from [sender]'.
Common Questions
- Why is the amount so large?
- Amounts are in RAO (the smallest unit). 1 TAO = 1,000,000,000 RAO. Divide by 10^9 to get TAO. This avoids decimal precision issues in blockchain math.
- What's the difference between Transfer and transfer_keep_alive?
- transfer_keep_alive refuses to empty your account (keeps existential deposit). transfer_allow_death can empty it completely. Both emit Balances.Transfer.
- Can transfers fail silently?
- No. If you see Balances.Transfer, the transfer succeeded. If it failed, you'd see ExtrinsicFailed instead, with no Transfer event.
Use Cases
- Track incoming and outgoing TAO payments
- Build payment notification systems
- Monitor exchange deposits and withdrawals
- Track fund flows across the network
How to Use This Event
- → Subscribe to your address for payment notifications
- → Monitor exchange hot wallets for deposit detection
- → Index all transfers to build payment analytics
- → Track whale movements and fund flows
From Chain Metadata
Transfer succeeded.
Triggers
Preconditions
- Sender has sufficient balance
- Transfer won't kill sender (or transfer_allow_death used)
- Recipient will meet existential deposit
May fail with
Effects
Storage Modified
Postconditions
- Sender balance decreased by amount
- Recipient balance increased by amount
Side Effects
- May trigger NewAccount if recipient is new
- May trigger KilledAccount if sender balance goes to zero
Event Data
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 });
// Subscribe to Transfer events
api.query.system.events((events) => {
events
.filter(({ event }) =>
event.section === stringCamelCase("Balances") &&
event.method === "Transfer"
)
.forEach(({ event }) => {
console.log("Transfer:", event.data.toHuman());
});
});On-Chain Activity
Core protocol operations, high volume
#10 most emitted event
As of block 7,429,232
Runtime Info
- Pallet Index
- 5
- Event Index
- 2
- First Version
- v101
- Current Version
- v393