StorageVersion

Storage Plain v101 → v411

Version of the transaction payment pallet 's storage schema.

Explore chain
Queried by: developers

The Big Picture

As the runtime evolves, storage schemas may change. This version tracks which schema the pallet is using, enabling migrations during upgrades. For most users this is internal infrastructure - you only need to care about it if you're building low-level tools or debugging upgrade issues.

Why This Matters

Most users don't need this directly. It's infrastructure for runtime upgrades. If you're building tools that directly decode storage, check this to ensure your decoder matches the current schema.

Example Scenario

Query StorageVersion() returns V2. This means the pallet is using storage schema version 2. Your decoder should expect V2 format for any TransactionPayment storage items.

Common Questions

When does this change?
Only during runtime upgrades that include storage migrations for this pallet. These are rare and announced in advance.
What happens if I use the wrong version decoder?
You'll get garbage data or decoding errors. Always check StorageVersion before building custom storage decoders.

Use Cases

  • Verify storage format during node synchronization
  • Debug storage compatibility issues after upgrades
  • Build migration-aware indexing tools

Purpose & Usage

Purpose

Track storage migrations for runtime upgrades - indicates which storage format is in use.

Common Query Patterns

  • Query to verify storage format compatibility
  • Check during runtime upgrades

Stored Value

Storage schema version (Releases enum)

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 StorageVersion storage (no keys - plain value)
const result = await api.query.TransactionPayment.StorageVersion.getValue();
console.log("StorageVersion:", result);

Version History

v101 block 1 Added
v120 block 315,568 Internal re-bind
v123 block 720,235 Internal re-bind
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
v149 block 3,014,339 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
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
v235–v237 · runtime versions skipped on chain (never deployed)
v238 block 4,936,550 Internal re-bind
v266–v272 · runtime versions skipped on chain (never deployed)
v273 block 5,659,032 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind
v307–v314 · runtime versions skipped on chain (never deployed)
v315 block 6,414,634 Internal re-bind
v316–v319 · runtime versions skipped on chain (never deployed)
v320 block 6,523,566 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
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 Current

Runtime Info

Pallet
TransactionPayment
Storage Kind
Plain
First Version
v101
Current Version
v411