Transactions
fund-evm-key
Fund an EVM (h160) address with TAO from the signing coldkey.
An ordinary EVM account's native balance lives at its legacy ss58 mirror. Registered hashed aliases instead share their full native account's balance. On supported runtimes the transaction resolves the active mapping during execution, so an alias change cannot redirect funds to an obsolete mirror; the funds then appear as the EVM account's balance in MetaMask or any Ethereum tool (displayed with 18 decimals there: 1 TAO = 1e18). Like any transfer this is irreversible, so double-check the address. Protected aliases require their native hashed authorization. On older runtimes, when hashed aliases are enabled, native funding of unprotected aliases is refused: their mapping cannot be guarded against a concurrent registration. Send to those H160 addresses from an EVM wallet instead.
| Signer | Origin | Pallet | Wraps |
|---|---|---|---|
coldkey | signed account (pallet role may apply) | Balances | Balances.transfer_keep_alive, EVM.deposit |
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
evm_address | string | yes | EVM address to fund, as 0x-prefixed h160 hex. |
amount_tao | number | "all" | yes | How much TAO to send. |
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 fund-evm-key \
--evm-address <value> \
--amount-tao <amount|all> --dry-run
btcli tx fund-evm-key \
--evm-address <value> \
--amount-tao <amount|all> -w my_coldkeyPython
import bittensor as bt
from bittensor.wallet import Wallet
wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = bt.FundEvmKey(evm_address="...", amount_tao=1.0)
sub = bt.Subtensor()
plan = sub.plan(intent, wallet) # fee, effects, policy — no submission
result = sub.execute(intent, wallet)
if not result.success:
print(result.error.code, result.error.remediation)(bt.Subtensor is also the async client — async with bt.Subtensor() as client:
— see The client.) Or build the intent by op name, as
an agent would:
result = sub.execute_tool("fund_evm_key", {...}, wallet)On-chain implementation
Balances.transfer_keep_alive is implemented by Substrate's pallet_balances, outside this repository's pallets.
EVM.deposit is implemented by Frontier's pallet_evm (vendored under vendor/frontier), outside this repository's pallets.
Every file is browsable under /code exactly as built into the runtime, or as plain text under /code/raw/<path> (index: /code/index.json).