Transactions

execute-proxy-announced

Execute a proxy call that was announced and has passed its delay.

View as Markdown

The delayed-proxy flow: a delegate added with delay > 0 first announces the call's hash, waits out the delay (during which the real account can veto), then anyone may dispatch the announced call with this intent. The inner call is given as an intent op name plus its arguments and must hash to exactly what was announced. Fails if the delay has not elapsed or no matching announcement exists.

SignerPalletWraps
coldkeyProxyProxy.proxy_announced

Parameters

ParameterTypeRequiredDescription
delegate_ss58stringyesDelegate that made the announcement.
real_ss58stringyesAccount the call executes as (the delegation's grantor).
inner_opstringyesIntent op name of the announced call (see btcli tools for the catalog).
inner_argsobjectyesArguments of the announced call, as a JSON object.
force_proxy_typestringnoRequire the delegation to be exactly this proxy type instead of accepting any type that covers the call.

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 execute-proxy-announced \
  --delegate <ss58|name> \
  --real <ss58|name> \
  --inner-op <value> \
  --inner-args '<json>' --dry-run
btcli tx execute-proxy-announced \
  --delegate <ss58|name> \
  --real <ss58|name> \
  --inner-op <value> \
  --inner-args '<json>' -w my_coldkey

Python

import bittensor as sub
from bittensor.wallet import Wallet

wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.ExecuteProxyAnnounced(delegate_ss58="5F...", real_ss58="5F...", inner_op="...", inner_args={...})

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("execute_proxy_announced", {...}, wallet)