Transactions

multisig-cancel

Cancel an ongoing multisig operation (only the original depositor may).

View as Markdown

Abandons a pending operation before it collects enough approvals: the stored approvals are discarded and the deposit reserved at opening is returned. Only the signatory who opened the operation (and paid the deposit) may cancel it. The threshold, signatory set, call, and opening timepoint must all match the pending operation exactly.

SignerPalletWraps
coldkeyMultisigMultisig.cancel_as_multi

Parameters

ParameterTypeRequiredDescription
thresholdintegeryesNumber of approvals required to execute, counting the signer. Together with the full signatory set it identifies the multisig account, so it must match on every approval.
other_signatoriesarrayyesThe other members of the multisig (every signatory except the signer), as a JSON list of addresses. The same set must be given on every approval; order does not matter (sorted automatically).
callobjectyesThe inner call to dispatch from the multisig account, as a JSON object {"op": <intent name>, ...args}. All approvals must describe the identical call — it is matched by hash. Its arguments must be fully explicit, since it runs as the multisig account, not the signer's wallet.
timepointobjectyesBlock height and extrinsic index of the approval that opened the operation, as a JSON object {"height": ..., "index": ...}. Required — it identifies which pending operation to cancel.

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 multisig-cancel \
  --threshold <int> \
  --other-signatories <a,b,c> \
  --call '<json>' \
  --timepoint '<json>' --dry-run
btcli tx multisig-cancel \
  --threshold <int> \
  --other-signatories <a,b,c> \
  --call '<json>' \
  --timepoint '<json>' -w my_coldkey

Python

import bittensor as sub
from bittensor.wallet import Wallet

wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.MultisigCancel(threshold=0, other_signatories=[...], call={...}, timepoint={...})

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