#86·Runtime upgrade to 2500: WASM smart-contract decommission (step 2 of 2)

4hrs 24mins ago
0 Comments
Voting

This motion authorizes the enactment of runtime-2500 on Astar mainnet.

It is the second and final runtime step decommissioning WASM (ink!) smart contracts, following runtime-2400 (referendum #63), which blocked all calls to pallet_contracts and settled the deposits the pallet held. It removes pallet-contracts from the runtime and purges its storage, including the contract child tries, in a multi-block migration. Astar moves from spec version 2400 to 2500.

The release also removes the ORML dependencies, including the XTokens pallet, and reimplements the XCM precompile's xtokens calls on top of pallet_xcm. This is a runtime-only release; node clients are not impacted. Runtime-2500 is already live on Shibuya and Shiden.

Preimage: 0x91db5d57252e47c7d1af4abb47022c173762253a5611de6c6061e7eac205c941

Forum post: WASM smart-contract sunset on Astar and Shiden

Full changelog: runtime-2500 release notes

Required client version: none, node clients are unaffected by this release.

What changes in runtime-2500

  • pallet-contracts is removed and its storage purged in a multi-block migration (#1687). The migration first empties the child tries holding each contract's storage, for live contracts and for those pending deletion, then removes the leftover Contracts pallet prefix. The order matters: the child tries are only addressable through the trie_ids kept under that prefix, so wiping the prefix first would orphan them permanently. Every deletion is measured and charged through benchmarked, size-dependent weights, so large code blobs cannot produce oversized blocks.
  • Consumer references on contract accounts are handed back (#1687). pallet-contracts took a consumer reference on each contract account at instantiation; without releasing it, those accounts could never be reaped.
  • dApp Staking accepts EVM contracts only (#1687). The dApp Staking precompile keeps the Wasm value in its v2 Solidity ABI for compatibility, but rejects calls that use it.
  • ORML dependencies removed, including the XTokens pallet and its storage (#1685). Drops the three open-runtime-module-library crates, closes the dispatch-precompile route into xtokens, and leaves ReserveAssetFilter as the single source of truth for reserve resolution. The xTokens extrinsics no longer exist; integrations must use polkadotXcm.transferAssetsUsingTypeAndThen.
  • XCM precompile rework (#1690). The precompile's xtokens-style transfer functions are reimplemented on pallet_xcm, so EVM callers keep the same interface. Legacy selectors that are no longer supported revert with a message naming their replacement.

Impact

  • WASM smart contracts have not been callable since runtime-2400; this step removes their code and storage from chain state. There is no further functional change for users.
  • User funds held in user wallets are unaffected. Contract deposits were settled under runtime-2400.
  • EVM contracts and EVM precompiles are unaffected, apart from the XCM precompile rework above.
  • Wallets, dApps, and integrators that submit xTokens extrinsics directly must switch to polkadotXcm.transferAssetsUsingTypeAndThen.
  • No action is required from node operators, stakers, dApp Staking participants, or holders.

Sunset sequencing

  • Freeze (runtime-2207, enacted 15 June 2026). New WASM uploads and instantiation disabled.
  • Migration window, 12 June to 10 September 2026.
  • Step 1 (runtime-2400, referendum #63). Calls blocked, deposits settled.
  • Step 2 (runtime-2500, this motion). Pallet removed, contract child tries and the pallet_contracts prefix purged.

Runtime artifacts (Astar)

  • Spec version 2500, metadata v14, 1632375 bytes
  • Blake2-256: 0xe81454088694eca423b6ada1e16e57f064ba8343872b8778a1647e88a7d7bd1d
  • SHA256: 0x52cb8f5681f4c4285b6ec8bb24c0e7f7356738c1020029890002306b925aeff5
  • IPFS: Qmc6csqVU7TUxMyKw52gq5vJqHhn4cLL8A4wb2NvcToGW4

Action requested

Approve enactment of runtime-2500 on Astar mainnet.

Edited
Reply
Up
Share
Only council members can vote, no account found from the council. Still vote
Call
Metadata
Timeline5
Comments