force_transfer

Call v101 → current #2

Transfers TAO between accounts (root only, can specify source).

View calls on chain

Click items to navigate. Pan and zoom to explore.

Used by: validators

The Big Picture

Like transfer_allow_death, but callable only by root and allows specifying the source account. Used when funds need to be moved without the source account signing the transaction.

Use Cases

  • Emergency fund recovery
  • Protocol-level transfers
  • Correcting stuck balances

From Chain Metadata

Exactly as `transfer`, except the origin must be root and the source account may be specified. ## Complexity Same as transfer, but additional read and write because the source account is not assumed to be in the overlay.

Input Parameters

#NameTypeDescription
0
source
MultiAddress source (MultiAddress)
1
dest
MultiAddress dest (MultiAddress)
2
value
Compact<u64> CptValue in RAO (÷10⁹ for TAO) (RAO -> TAO (/ 10^9))

Permissions

Origin
Unknown
Required Role

Permission data inferred from metadata. May be incomplete.

Requirements

  • Caller is root account
  • Source has sufficient free balance
  • Destination account can receive funds

Effects

Events Emitted

Storage Modified

Postconditions

  • Source balance decreased by amount
  • Destination balance increased by amount
  • Transfer event emitted

Side Effects

  • May create destination account if new
  • May reap source account if balance falls below ED

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 force_transfer call
const source = 0 as any /* MultiAddress */;
const dest = 0 as any /* MultiAddress */;
const value = 0;

const call = api.tx[stringCamelCase("Balances")][stringCamelCase("force_transfer")](
  source,
  dest,
  value
);

Runtime Info

Pallet Index
5
Call Index
2
First Version
v101
Current Version
v393