as_multi
Call v123 → v148, v149 → current #1Register approval for a dispatch, executing if threshold is reached.
View calls on chainCall Workflow
This diagram shows the call execution flow: starting with as_multi, passing through validation
(signature, nonce, mortality, fee payment), then pre-dispatch checks, followed by dispatch which emits events: NewMultisig, MultisigApproval, MultisigExecuted and modifies storage: Multisigs, and finally post-dispatch where ExtrinsicSuccess is emitted and fees are settled.
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
Click items to navigate. Pan and zoom to explore.
Used by: developerswalletsvalidatorsstakers
The Big Picture
This is the core multisig call. Multiple parties must approve before a call executes. The first approver reserves a deposit and stores the call on-chain.
Use Cases
- Shared custody of funds requiring multiple approvals
- Team treasury management with governance
- Security-critical operations requiring sign-off
- Escrow arrangements requiring multiple parties
From Chain Metadata
See [`Pallet::as_multi`].
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | threshold | u16 | Number of approvals required (2 or higher) |
| 1 | other_signatories | Vec<AccountId> Vec | List of other signatory accounts (sorted, excludes caller) |
| 2 | maybe_timepoint → timepoint | Option Option<Timepoint<BlockNumberFor<T>>> | Timepoint from first approval (None for first approval) |
| 3 | call | RuntimeCall Box<<T as Config>::RuntimeCall> | The call to approve/execute |
| 4 | max_weight | Weight | Maximum weight allowed for the call execution |
Permissions
Origin
Unknown
Required Role
Permission data inferred from metadata. May be incomplete.
Requirements
- Caller is one of the signatories
- Threshold is 2 or greater
- If first approval: maybe_timepoint must be None
- If subsequent approval: maybe_timepoint must match original
- All signatories are unique and sorted
Effects
Events Emitted
Storage Modified
Postconditions
- Approval recorded for this signatory
- If threshold reached: call is executed
- If not reached: call stored awaiting more approvals
Side Effects
- Deposit reserved on first approval (DepositBase + threshold * DepositFactor)
- Deposit returned when call executes or is cancelled
- Emits NewMultisig (first approval) or MultisigApproval/MultisigExecuted
Code Examples
// ----------------------------------------------------------------------
// HEADS UP: 2 args below have a complex type with no usable default.
// Look for `undefined as any` and replace them with real values
// before running — the snippet compiles, but will fail at runtime as-is.
// ----------------------------------------------------------------------
import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443
const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);
// Build as_multi call (typed, named args)
const threshold = 0;
const other_signatories = [] as [];
const timepoint = undefined;
const call = undefined as any /* RuntimeCall — replace with real value */;
const max_weight = undefined as any /* Weight — replace with real value */;
const tx = api.tx.Multisig.as_multi({
threshold,
other_signatories,
maybe_timepoint: timepoint,
call,
max_weight,
});Version History
v123 block 720,235 5 args
v149 block 3,014,339 5 args Current
Runtime Info
- Pallet Index
- 13
- Call Index
- 1
- First Version
- v123
- Current Version
- v411