Transactions
remove-proxy
Revoke one proxy delegation.
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. Validate and Weights grants are revoked by the
hotkey that granted them. Check current delegations with
btcli query proxies.
| Signer | Origin | Pallet | Wraps |
|---|---|---|---|
coldkey | signed account (pallet role may apply) | Proxy | Proxy.remove_proxy |
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
delegate_ss58 | string | yes | Delegate whose authorization to revoke. |
proxy_type | string | no | Type the delegation was granted with (must match exactly). |
delay | integer | no | Delay 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_coldkeyPython
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_proxy — pallets/proxy/src/lib.rs#L304:
#[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).