Transactions

remove-proxy

Revoke one proxy delegation.

View as Markdown

The (delegate, proxy_type, delay) triple must match the original add_proxy exactly — a mismatch fails with NotFound rather than removing a different delegation. The proxy deposit reserved at add time is returned to the signer. Check current delegations with btcli query proxies.

SignerOriginPalletWraps
coldkeysigned account (pallet role may apply)ProxyProxy.remove_proxy

Parameters

ParameterTypeRequiredDescription
delegate_ss58stringyesDelegate whose authorization to revoke.
proxy_typestringnoType the delegation was granted with (must match exactly).
delayintegernoDelay the delegation was granted with (must match exactly).

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 remove-proxy \
  --delegate <ss58|name> --dry-run
btcli tx remove-proxy \
  --delegate <ss58|name> -w my_coldkey

Python

import bittensor as bt
from bittensor.wallet import Wallet

wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = bt.RemoveProxy(delegate_ss58="5F...")

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

On-chain implementation

Proxy.remove_proxypallets/proxy/src/lib.rs#L287:

#[pallet::call_index(2)]
#[pallet::weight(T::WeightInfo::remove_proxy(T::MaxProxies::get()))]
pub fn remove_proxy(
    origin: OriginFor<T>,
    delegate: AccountIdLookupOf<T>,
    proxy_type: T::ProxyType,
    delay: BlockNumberFor<T>,
) -> DispatchResult {
    let who = ensure_signed(origin)?;
    let delegate = T::Lookup::lookup(delegate)?;
    Self::remove_proxy_delegate(&who, delegate, proxy_type, delay)
}

Delegates to remove_proxy_delegate.

Every file is browsable under /code exactly as built into the runtime, or as plain text under /code/raw/<path> (index: /code/index.json).