Multisigs

Storage Map v123 → v411 Changed in v411

The set of open multisig operations.

Explore chain
Queried by: developerswalletsvalidatorsstakers

The Big Picture

Every pending multisig operation is stored here. Query this to see which operations are awaiting approvals, who has approved so far, and who deposited. Essential for building multisig wallet interfaces.

Why This Matters

Before approving or cancelling a multisig operation, you need to know its current state. This storage tells you everything about pending operations.

Example Scenario

Query Multisigs(multisig_account, call_hash) returns the Multisig struct with: when (timepoint of first approval), deposit (RAO reserved), depositor (who pays), and approvals (list of accounts that have approved so far).

Common Questions

How do I find all pending operations for a multisig?
Iterate Multisigs with the multisig account as the first key. Each entry is a different pending operation identified by its call hash.
How do I calculate the multisig account address?
It's derived deterministically from the signatory list. Use the Substrate multisig address derivation: blake2(b'modlpy/teleact' ++ signatories.len() ++ signatories)

Use Cases

  • Check status of pending multisig operations
  • List all pending operations for a multisig account
  • Determine who has approved and who is still needed
  • Build multisig management dashboards

From Chain Metadata

The set of open multisig operations.

Purpose & Usage

Purpose

Track pending multisig operations awaiting approvals.

Common Query Patterns

  • Query by (multisig_account, call_hash) to check specific operation status
  • Iterate all pending operations for a multisig account
  • Check approvals and depositor for an operation

Query Keys

#NameTypeDescription
1
accountId account
raw: key1
AccountId Derived multisig account address (hex -> SS58)
2
callHash
raw: key2
[u8; 32] [32] Blake2-256 hash of the call to be executed

Stored Value

Multisig operation state (when created, deposit, depositor, approvals list)

Relationships

Code Examples

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);

// Query Multisigs storage
const key1 = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const key2 = "0x0000000000000000000000000000000000000000000000000000000000000000";

const result = await api.query.Multisig.Multisigs.getValue(key1, key2);
console.log("Multisigs:", result);

On-Chain Activity

Write Frequency
●●○○○○ Minimal <10K est. writes

<10K estimated writes

#52 most written storage item

Write Source User Extrinsics

Modified via user-submitted extrinsics

As of block 7,429,232

Version History

v123 block 720,235 Added
v128–v132 · runtime versions skipped on chain (never deployed)
v133 block 1,404,224 Internal re-bind
v136 block 1,756,781 Internal re-bind
v138 block 1,907,363 Internal re-bind
v140 block 1,929,216 Internal re-bind
v146 block 2,848,978 Internal re-bind
v149 block 3,014,339 Internal re-bind
v151 block 3,157,274 Internal re-bind
v154 block 3,308,611 Internal re-bind
v166–v194 · runtime versions skipped on chain (never deployed)
v195 block 3,791,350 Internal re-bind
v202 block 3,848,823 Internal re-bind
v203–v204 · runtime versions skipped on chain (never deployed)
v205 block 4,209,446 Internal re-bind
v207–v209 · runtime versions skipped on chain (never deployed)
v210 block 4,345,556 Internal re-bind
v213–v215 · runtime versions skipped on chain (never deployed)
v216 block 4,510,996 Internal re-bind
v220–v232 · runtime versions skipped on chain (never deployed)
v233 block 4,920,350 Internal re-bind
v235–v237 · runtime versions skipped on chain (never deployed)
v238 block 4,936,550 Internal re-bind
v253–v256 · runtime versions skipped on chain (never deployed)
v257 block 5,228,683 Internal re-bind
v259–v260 · runtime versions skipped on chain (never deployed)
v261 block 5,328,895 Internal re-bind
v266–v272 · runtime versions skipped on chain (never deployed)
v273 block 5,659,032 Internal re-bind
v275–v275 · runtime versions skipped on chain (never deployed)
v276 block 5,781,672 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind
v293–v296 · runtime versions skipped on chain (never deployed)
v297 block 6,067,943 Internal re-bind
v316–v319 · runtime versions skipped on chain (never deployed)
v320 block 6,523,566 Internal re-bind
v324–v325 · runtime versions skipped on chain (never deployed)
v326 block 6,608,228 Internal re-bind
v327–v333 · runtime versions skipped on chain (never deployed)
v334 block 6,811,690 Internal re-bind
v353–v360 · runtime versions skipped on chain (never deployed)
v361 block 7,063,679 Internal re-bind
v363–v364 · runtime versions skipped on chain (never deployed)
v365 block 7,135,419 Internal re-bind
v378–v384 · runtime versions skipped on chain (never deployed)
v385 block 7,782,670 Internal re-bind
v386–v390 · runtime versions skipped on chain (never deployed)
v391 block 7,782,857 Internal re-bind
v394–v400 · runtime versions skipped on chain (never deployed)
v401 block 8,036,576 Internal re-bind
v403–v410 · runtime versions skipped on chain (never deployed)
v411 block 8,283,784 Internal re-bind Current

Runtime Info

Pallet
Multisig
Storage Kind
Map
First Version
v123
Current Version
v411