github polkadot-fellows/runtimes v1.7.0
Runtimes 1.7.0

latest releases: v1.6.2, v1.7.1
13 days ago

Changelog

Changelog for the runtimes governed by the Polkadot Fellowship.

The format is based on Keep a Changelog.

[1.7.0] 22.08.2025

Fixed

  • Use pallet-assets instead of pallet-balances for XCM benchmarks on asset hubs (polkadot-fellows/runtimes/pull/758)
    • This means XCM benchmarks will have a higher weight.
  • All XCM benchmarks use sibling parachain as destination instead of Relay chain to properly adapt weights in context of incoming migration from Relay to Asset Hub (polkadot-fellows/runtimes/pull/709)

Added

  • Integrate "Empowered XCM Origins" features to System Chains (polkadot-fellows/runtimes/pull/799)
  • Test cases for all system chains to verify if parachain is able to process authorize_upgrade call as if it was received from governance chain (polkadot-fellows/runtimes/pull/783)
  • Add Secretary Salary Pay Test Over XCM (#778)
  • Upgrade to Polkadot-SDK stable2506 (polkadot-fellows/runtimes/pull/817)
    • #7833: Add poke_deposit extrinsic to pallet-society
    • #7995: Add PureKilled event to pallet-proxy
    • #8254: Introduce remove_upgrade_cooldown
      This dispatchable enables anyone to pay for removing an active upgrade cooldown from a parachain instead of waiting for the cooldown to be finished. It is useful for times when a parachain needs to apply an upgrade faster than the upgrade cooldown, but it will need to pay in this case. The dispatchable enables anyone to remove an upgrade cooldown of any parachain. The caller needs to pay for the removal and the tokens are burned on a successful removal.
    • #8171: Add event VestingCreated and emit on vested transfer.
    • #8382: Add poke_deposit extrinsic to pallet-bounties
    • #7592: Add Paras authorize_code_hash + apply_authorized_code feature
      This feature is useful when triggering a Paras pallet call from a different chain than the one where the Paras pallet is deployed. For example, we may want to send Paras::force_set_current_code(para, code) from the Collectives and/or Asset Hub to the Relay Chain (because the Relay Chain governance will be migrated to the Asset Hub as a part of AHM).
      The primary reason for this approach is to avoid transferring the entire new_code Wasm blob between chains. Instead, we authorize the code_hash using root via fn authorize_force_set_current_code_hash(new_authorization, expire_at). This authorization can later be applied by anyone using Paras::apply_authorized_force_set_current_code(para, new_code). If expire_at is reached without the authorization being used, it is automatically removed.
    • #7882: Add poke_deposit extrinsic to pallet-recovery
      Historically, the collection of storage deposits was running in an infallible context. Meaning we needed to make sure that the caller was able to pay the deposits when the last contract execution returns. To achieve that, we capped the storage deposit limit to the maximum balance of the origin. This made the code more complex: It conflated the deposit limit with the amount of balance the origin has.
      In the meantime, we changed code around to make the deposit collection fallible. But never changed this aspect.
      This PR rectifies that by doing:
      The root storage meter and all its nested meter's limits are completely independent of the origin's balance. This makes it way easier to argue about the limit that a nested meter has at any point.
      Consistently use StorageDepositNotEnoughFunds (limit not reached) and StorageDepositLimitExhausted (limit reached).
      Origin not being able to pay the existential deposit (ED) for a new account is now StorageDepositNotEnoughFunds and traps the caller rather then being a TransferFailed return code. Important since we are hiding the ED from contracts, so it should also not be an error code that must be handled.
    • #8314: Add RPCs in the statement store to get the statements and not just the statement data.
      In statement-store, statements can contain a proof with the signature of the statement. This proof is useful to assert that the statement comes from the expected account. This proof also signs for all the statement's fields, which can also be useful information for the receiver.
  • Upgrade to Polkadot-SDK unstable2507 (polkadot-fellows/runtimes/pull/849)
    • #8684 Add optional auto-rebag within on-idle to enable incremental correction of account positions within the bags-list during the idle phase of block execution
    • #8693 Add XCM Precompile to pallet-xcm
  • [Encointer] use XCM V5 to remotely spend funds from encointer treasury accounts on AHK polkadot-fellows/runtimes/pull/679

Changed

  • Upgrade to Polkadot-SDK unstable2507 (polkadot-fellows/runtimes/pull/849)
    • #7953: Add deposit for setting session keys
      • 🚨 Setting session keys now might charge a storage deposit. The amount can be inspected in the Session::KeyDeposit of the runtime metadata. This value is intended to be set post AHM. Validators should make sure they have some free balance to cover this deposit the next time they want to rotate their keys.
      • Session keys previously could be set only by the associated controller account of a stash. Now, this filter no longer exists, and they can be set by anyone (ergo, the deposit). For validators, please make sure to submit your session keys (henceforth) from the stash account.
  • Add foreign-consensus cousin Asset Hub as trusted aliaser to allow XCMv5 origin preservation for foreign-consensus parachains polkadot-fellows/runtimes/pull/794)
  • Configure block providers for pallets requiring block context (polkadot-fellows/runtimes/pull/813):
    • vesting: keep using Relay Chain block provider
    • multisig: switch to local block provider (for unique multisig IDs)
    • proxy: use Relay Chain block provider (for delayed announcements)
    • nfts: use Relay Chain block provider (for minting start/end blocks)
  • PolkadotAssetHub: Enable Async Backing (polkadot-fellows/runtimes/pull/763)
  • Upgrade to Polkadot-SDK stable2506 (polkadot-fellows/runtimes/pull/817)
    • #9137: Pallet XCM - transfer_assets pre-ahm patch
      🚨 Pallet XCM's transfer_assets extrinsic now returns an error when it determines that a reserve transfer of DOT|KSM has to be done.
      This is a safeguard in preparation for the Asset Hub Migration (AHM), where the reserve of DOT|KSM will change from the Relay Chain to Asset Hub.
      After the migration, another patch will remove this error case and use the correct reserve.
      🚨 For DOT|KSM cross-chain transfers please use limited_reserve_transfer_assets or transfer_assets_using_type_and_then.
    • #8718: Contracts: Record ED as part of the storage deposit.
    • #8554: Contracts: pallet-assets ERC20 precompile
    • #7762: Contracts: ERC20 XCM Asset Transactor
      This PR introduces an Asset Transactor for dealing with ERC20 tokens and adds it to Asset Hub Westend.
      This means asset ids of the form { parents: 0, interior: X1(AccountKey20 { key, network }) } will be matched by this transactor and the corresponding transfer function will be called in the smart contract whose address is key.
      If your chain uses pallet-revive, you can support ERC20s as well by adding the transactor, which lives in assets-common.
    • #8197: [pallet-revive] Add fee_history
    • #8148: [pallet-revive] eth-rpc refactoring
      • Refactor eth-rpc.
      • Get rid of the in-memory cache; we can just store receipts / logs into sqlite.
      • Track both best and finalized blocks so that we can properly index transactions in case of a Relay Chain re-org.
      • Keep reference to the latest finalized block so that we can use that for queries that use the finalized block tag.
      • Use --index-last-n-blocks CLI parameter to re-index the last n blocks when the server starts.
      • Fix issue with gas_price calculation for EIP1559.
    • #8545: [pallet-revive] eth-rpc improved healthcheck
    • #8587: [pallet-revive] Make subscription task panic on error
    • #8664: [pallet-revive] Fix rpc-types
    • #8311: [pallet-revive] Update tracing RPC methods parameters
      Update debug_trace* methods to support extra parameters supported by geth.
      The method now can specify a timeout and whether we should only return a trace for the top call.
    • #8734: [pallet-revive] Contract's nonce starts at 1
    • #8274: [pallet-revive] Add get_storage_var_key for variable-sized keys
    • #8103: [pallet-revive] Add genesis config
    • #8273: [pallet-revive] Add net-listening rpc
    • #8667: [pallet-revive] Simplify the storage meter
    • #7867: Make read/write benchmarks more accurate
    • #8281: XcmPaymentApi::query_weight_to_asset_fee simple common impl
    • #8535: Make WeightBounds return XcmError to surface failures
      Improved XCM weight calculation error handling and traceability. The WeightBounds trait now returns detailed XcmError types instead of opaque results, allowing downstream consumers to access specific error context for failures like instruction decoding issues, weight overflows, and instruction limit violations. Added structured debug logging with contextual information to aid in diagnosing weight estimation failures during message preparation and execution.
    • #8122: Accommodate small changes to unstable V16 metadata format
      🚨 The frame-metadata version is bumped, which leads to a few minor changes to our sp-metadata-ir crate to accommodate small changes in the unstable V16 metadata format.
    • #8234: Set a 16 MiB heap memory limit when decoding an UncheckedExtrinsic
    • #7730: Nest errors in pallet-xcm
      To address the issue of vague LocalExecutionIncomplete errors in pallet-xcm, the PR introduces LocalExecutionIncompleteWithError(ExecutionError), which nests a compact ExecutionError enumβ€”aligned with XcmError and excluding strings like in FailedToTransactAsset: to provide detailed error information within FRAME's 4-byte limit. This enhances error reporting by specifying causes like insufficient balance or asset transaction failures, with strings logged for debugging.
    • #7220: Yet Another Parachain is introduced, with the main purpose to be a target for the Spammening events, but also to be used like one more general-purpose testing parachain runtime.
    • #3811: Implicit chill when full unbonding in pallet-staking.
      Modifies the unbond extrinsic to forcefully chill stash when unbonding, if the full stake is unbonded.
    • #8724: Implement detailed logging for XCM failures
      Improves diagnostics in XCM-related code by adding detailed error logging, especially within map_err paths. It includes clearer messages, standardized log targets, and richer context to aid runtime developers and node operators in debugging and monitoring.
    • #7960: Stabilize pallet view functions
      Pallet view functions are no longer marked as experimental, and their use is suggested starting from this PR.
    • #7597: Introduce CreateBare, deprecated CreateInherent
      Rename CreateInherent to CreateBare, add method create_bare and deprecate create_inherent.
      Both unsigned transaction and inherent use the extrinsic type Bare.
      Before this PR CreateInherent trait was use to generate unsigned transaction, now unsigned transaction can be generated using a proper trait CreateBare.
    • #8599: Snowbridge: Unpaid execution when bridging to Ethereum
      In Snowbridge V2, the execution fee on Ethereum is estimated dynamically and injected into the XCM, eliminating the need to preconfigure the bridge fee.
      Additionally, we also aim to avoid maintaining the Asset Hub’s sovereign account on the Bridge Hub.
    • #8327: Update to the latest unstable V16 metadata.
    • #8038: Fix penpal runtime
      Allow using Penpal native asset (PEN) for paying local fees and allow teleporting it from/to AH. Also allow unpaid execution from relay chain for sudo calls.
    • #8344: XCMP weight metering: account for the MQ page position
    • #8021: XCMP: use batching when enqueuing inbound messages
      This PR implements batching for the XCMP inbound enqueueing logic, which leads to an about ~75x performance improvement for that specific code.
    • #9202: apply_authorized_force_set_current_code does not need to consume the whole block
  • Proxy type NonTranfer: Use a whitelist of calls and remove some not useful calls from the whitelist (polkadot-fellows/runtimes/pull/646)
  • Add Snowbridge V2 pallets, to enable Snowbridge V2 bridging: polkadot-fellows/runtimes/pull/796)

Runtime info

These runtimes were built with rustc 1.88.0 (6b00bc388 2025-06-23) using srtool v0.18.3

To replicate the build, use the following command:

srtool build
       --root --profile production
       --package CRATE_NAME --runtime-dir PATH_TO_CRATE
       --build-opts="--features=on-chain-release-build"

Polkadot

πŸ‹οΈ Runtime Size:           2.05Mi (2142201 bytes)
πŸ—œ Compressed:             Yes: 74.49%
πŸ”₯ Core Version:           polkadot-1007000 parity-polkadot-0.tx26.au0
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0xe8ff25df68f6e5886311e3e6a2d7fd7e38a1ded3d478dc815e9acf0a84c6551c
πŸ“¦ IPFS:                   QmanQ71ofejLq9us46PtZQbEEeNyhKzYYTTT4j3RzVDJTJ

People Polkadot

πŸ‹οΈ Runtime Size:           1.24Mi (1291981 bytes)
πŸ—œ Compressed:             Yes: 74.96%
πŸ”₯ Core Version:           people-polkadot-1007000 people-polkadot-0.tx0.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x8c85df7566f24c43478657406b98b22c86f248511545be3b2e42d1426b09c896
πŸ“¦ IPFS:                   QmYLpiP87Q6jWPa7yK355DH6KQx8vjrPuWLrkKuqFuAuis

People Kusama

πŸ‹οΈ Runtime Size:           1.23Mi (1288599 bytes)
πŸ—œ Compressed:             Yes: 75.01%
πŸ”₯ Core Version:           people-kusama-1007000 people-kusama-0.tx1.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x52f40e83ccbf6a073dcf3736002156690dcd0bdc25a753a772d9ed6b81cd4999
πŸ“¦ IPFS:                   QmWmc5uuvvY6rQ6gLHZqgEq1XBHtbmHy6TcWhwVjb2PURc

Kusama

πŸ‹οΈ Runtime Size:           2.16Mi (2261450 bytes)
πŸ—œ Compressed:             Yes: 75.1%
πŸ”₯ Core Version:           kusama-1007000 parity-kusama-0.tx26.au2
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x7860c471b8189178556ddc22952193c8fb2099ac201eeda166669df9c3998291
πŸ“¦ IPFS:                   QmRKBB1sFY61ovWSixbqXgyE1mnHiaHMtekZuLECX5HiSo

Glutton

πŸ‹οΈ Runtime Size:           578.78Ki (592662 bytes)
πŸ—œ Compressed:             Yes: 73.24%
πŸ”₯ Core Version:           glutton-1007000 glutton-0.tx1.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x49d37c6c8af4d1d76aec00c4c78662a1324af6ab22880eb1ac2ed3f586e597eb
πŸ“¦ IPFS:                   QmaCohjRpfDg6wtjMGBNqDy2YeHDMwXprUq9JKSeQ7an4s

Encointer Parachain

πŸ‹οΈ Runtime Size:           1.41Mi (1469305 bytes)
πŸ—œ Compressed:             Yes: 75.48%
πŸ”₯ Core Version:           encointer-parachain-1007000 encointer-parachain-1.tx4.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0xf4e121db06fb17abefb9f9ed4ad9daa8e32034d7147d0cbc48bba6405abfa148
πŸ“¦ IPFS:                   QmWdnwJ6Acg1CqoKKC4EBzCytoc7tDrEjxJP5izozx18KC

Coretime Polkadot

πŸ‹οΈ Runtime Size:           1.24Mi (1299004 bytes)
πŸ—œ Compressed:             Yes: 74.88%
πŸ”₯ Core Version:           coretime-polkadot-1007000 coretime-polkadot-0.tx0.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0xafbe04343520216de35e9d4d0089e42776fa241644fc75fee19ad6fdfe75cb61
πŸ“¦ IPFS:                   QmYQAX7CmZwKge4ncEc4fGN9WFqz8xSzAUXuTduWhUorQ1

Coretime Kusama

πŸ‹οΈ Runtime Size:           1.24Mi (1295776 bytes)
πŸ—œ Compressed:             Yes: 74.9%
πŸ”₯ Core Version:           coretime-kusama-1007000 coretime-kusama-0.tx1.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0xc545c878e167f3a92dbc87f8356cf20786940b91e029d923c22eb2876c3c9cc3
πŸ“¦ IPFS:                   QmcDnmkhEGHuoFqPuruqbQ9JAU8WFraC1rAqtfm1Jk8pCk

Collectives

πŸ‹οΈ Runtime Size:           1.42Mi (1487378 bytes)
πŸ—œ Compressed:             Yes: 76.11%
πŸ”₯ Core Version:           collectives-1007000 collectives-0.tx7.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x012d7d347a6f36c83ed922b85aa85145a9ab31e937c895b10df87567a7d07a86
πŸ“¦ IPFS:                   Qmbw4BRcuha5fJnxPWNJebXWXWbo51g8tE4831EuCgwGva

Bridge Hub Polkadot

πŸ‹οΈ Runtime Size:           1.59Mi (1658606 bytes)
πŸ—œ Compressed:             Yes: 74.58%
πŸ”₯ Core Version:           bridge-hub-polkadot-1007000 bridge-hub-polkadot-0.tx4.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0xc71ef1eb515499f49c30fa4c114f16b595f0a73c1dad8d7925a37ca349824521
πŸ“¦ IPFS:                   QmczAs6uPehrefJzuUt5YP3fKGbEbD9ofm8uL9sQvu69ag

Bridge Hub Kusama

πŸ‹οΈ Runtime Size:           1.31Mi (1369784 bytes)
πŸ—œ Compressed:             Yes: 74.39%
πŸ”₯ Core Version:           bridge-hub-kusama-1007000 bridge-hub-kusama-0.tx5.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x180162f28c617fbeec6b7e366628e58d30786bd95103f158a58283f24de23adb
πŸ“¦ IPFS:                   QmP4eE6Jh5i3YNGLGa4PjiUdGKdCbPLvLcdLLRJhuBw22A

Asset Hub Polkadot (previously Statemint)

πŸ‹οΈ Runtime Size:           1.63Mi (1703020 bytes)
πŸ—œ Compressed:             Yes: 77.03%
πŸ”₯ Core Version:           statemint-1007000 statemint-0.tx15.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0x97ae9a5458ecbe7102d90ebcef82c71b4138807711be353a9a6c1b7eb6f2d103
πŸ“¦ IPFS:                   QmbPxezkKGBAmm9VdxXPjY1Wj8tAboSszwqxEu7nCSocux

Asset Hub Kusama (previously Statemine)

πŸ‹οΈ Runtime Size:           1.94Mi (2031384 bytes)
πŸ—œ Compressed:             Yes: 76.55%
πŸ”₯ Core Version:           statemine-1007000 statemine-0.tx15.au1
🎁 Metadata version:       V14
πŸ—³οΈ Blake2-256 hash:        0xb14d573e460f15f03afce7984b65fbe6b8969779316f856ca2c5120ff2565efe
πŸ“¦ IPFS:                   QmW4TKrpBe9egiNMYbys6o8tsypQDgGGcjcDZ6dvQMixLW

Don't miss a new runtimes release

NewReleases is sending notifications on new releases.