Transactions
transfer
Transfer TAO from the coldkey to a destination address.
Sends free balance from the signing coldkey to the destination. On-chain
transfers are irreversible — funds sent to a wrong address cannot be
recovered, so double-check the destination. A transaction fee is deducted
from the sender on top of the amount, and the call fails if the free
balance cannot cover both. Pass all to sweep the entire transferable
balance. With keep_alive (the default) the transfer refuses to drop
the sender below the existential deposit; disable it only when
intentionally emptying the account.
| Signer | Pallet | Wraps |
|---|---|---|
coldkey | Balances | Balances.transfer_keep_alive, Balances.transfer_allow_death, Balances.transfer_all |
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
dest_ss58 | string | yes | Account the funds are sent to. |
amount_tao | number | "all" | yes | How much to send. |
keep_alive | boolean | no | Refuse to drop the sender below the existential deposit. Disable it only when you intend to empty the account, which lets the chain reap it. |
Address parameters (--hotkey, --coldkey, --dest, ...) accept a raw ss58
address, an address-book or proxy-book name, or a local wallet/hotkey name.
CLI
Preview with --dry-run (shows fee, effects, and policy result without
submitting), then submit:
btcli tx transfer \
--dest <ss58|name> \
--amount-tao <amount|all> --dry-run
btcli tx transfer \
--dest <ss58|name> \
--amount-tao <amount|all> -w my_coldkeyPython
import bittensor as sub
from bittensor.wallet import Wallet
wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.Transfer(dest_ss58="5F...", amount_tao=1.0)
async with sub.Client("finney") as client:
plan = await client.plan(intent, wallet) # fee, effects, policy — no submission
result = await client.execute(intent, wallet)
if not result.success:
print(result.error.code, result.error.remediation)Or build it by op name, as an agent would:
await client.execute_tool("transfer", {...}, wallet)