Skip to content

Polkadot v1.11.0

Compare
Choose a tag to compare
@github-actions github-actions released this 30 Apr 12:30
· 4 commits to release-polkadot-v1.11.0 since this release
0bb6249

This release contains the changes from polkadot-v1.10.0 to polkadot-v1.11.0.

Changelog

Changelog for Node Dev

These changes are relevant to: Those who build around the client side code. Alternative client builders, SMOLDOT, those who consume RPCs. These are people who are oblivious to the runtime changes. They only care about the meta-protocol, not the protocol itself.

[#4059]: Remove redundent logging code

Simplified logging code, now does slightly less work while logging.

[#4027]: Add candidates_pending_availability Runtime API

This new API retrieves all CommittedCandidateReceipts of all candidates pending availability for a parachain at a given relay chain block number. It is required by collators that make use of elastic scaling capability in the context of PoV recovery and block import. The old API candidate_pending_availability is now deprectated and will be removed in the future.

[#3979]: Deprecate para_id() from CoreState in polkadot primitives

CoreState's para_id() function is getting deprecated in favour of direct usage of the ClaimQueue. This is the preferred approach because it provides a better view on what is scheduled on each core.

[#4169]: Stabilize transactionBroadcast RPC class to version 1

The transactionBroadcast RPC API is stabilized to version 1.

[#3953]: Adapt RemoteExternalities and its related types to be used with generic hash parameters

Modify RemoteExternalities, Mode, OnlineConfig andSnapshot to rely now on generic parameter, instead of BlockT. Adjust in consequence their implementation to be compatible with types Hash, or if possible any generic. Adapt Builder struct and implementation for these bounds.

[#4171]: Stabilize transactionWatch RPC class to version 1

The transactionWatch RPC API is stabilized to version 1.

[#3512]: [FRAME] Introduce Runtime Omni Bencher

Introduces a new freestanding binary; the frame-omni-bencher. This can be used as alternative to the node-integrated benchmark pallet command. It currently only supports pallet benchmarking.

The optional change to integrate this MR is in the node. The run function is now deprecated in favour or run_with_spec. This should be rather easy to integrate:

runner.sync_run(|config| cmd
-    .run::<HashingFor<Block>, ReclaimHostFunctions>(config)
+    .run_with_spec::<HashingFor<Block>, ReclaimHostFunctions>(Some(config.chain_spec))
)

Additionally, a new --runtime CLI arg was introduced to the benchmark pallet command. It allows to generate the genesis state directly by the runtime, instead of using a spec file.

[#4168]: Stabilize chianHead RPC class to version 1

The chainHead RPC API is stabilized to version 1.

[#2714]: GenesisConfig presets for runtime

The ChainSpecBuilder is extended with with_genesis_config_preset_name method which allows to build chain-spec using named preset provided by the runtime.

[#2944]: Integrate litep2p into Polkadot SDK

litep2p is a libp2p-compatible P2P networking library. It supports all of the features of rust-libp2p that are currently being utilized by Polkadot SDK and is a drop-in replacement for any node operator.

For node developers, introduction of litep2p implies specifying the networking backend that Polkadot SDK shall use for P2P networking. A new trait called NetworkBackend is introduced which is implemented by both the libp2p and litep2p backends and which is used to initialize any networking-related code.

[#3801]: Remove slot_duration from aura::collators::basic::Params

Removes the slot_duration parameter from the aura::collators::basic::Params. The slot_duration will now be fetched from the runtime using the Aura runtime api.

Changelog for Runtime Dev

These changes are relevant to: All of those who rely on the runtime. A parachain team that is using a pallet. A DApp that is using a pallet. These are people who care about the protocol (WASM, not the meta-protocol (client).)

[#3485]: Broker: sale price runtime api

Defines a runtime api for pallet-broker for getting the current price of a core in the ongoing sale.

[#3660]: Removed pallet::getter usage from Polkadot Runtime pallets

This PR removes all the pallet::getter usages from the Polkadot Runtime pallets, and updates dependant runtimes accordingly. The syntax StorageItem::<T, I>::get() should be used instead.

[#3889]: Allow privileged virtual bond into pallet Staking

Introduces a new low level API to allow privileged virtual bond into pallet Staking. This allows other pallets to stake funds into staking pallet while managing the fund lock and unlocking process themselves.

[#3708]: XCM builder pattern automatically converts instruction parameters.

Small quality of life improvement.
Previously, an XCM could be built like this:

let xcm = Xcm::builder()
    .withdraw_asset((Parent, 100u128).into())
    .buy_execution((Parent, 1u128).into())
    .deposit_asset(All.into(), AccountId32 { id: [0u8; 32], network: None }.into())
    .build();

Now, it can be built like this:

let xcm = Xcm::builder()
    .withdraw_asset((Parent, 100u128))
    .buy_execution((Parent, 1u128))
    .deposit_asset(All, [0u8; 32])
    .build();

[#4037]: Remove xcm::v3 from assets-common nits

Remove xcm::v3 imports from assets-common to make it more generic and facilitate the transition to newer XCM versions. The implementations AssetIdForTrustBackedAssetsConvert, ForeignAssetsConvertedConcreteId, or TrustBackedAssetsAsLocation
used hard-coded xcm::v3::Location, which has been changed to use xcm::latest::Location by default. Alternatively, the providing runtime can configure them according to its needs, such as with a lower XCM version.

Example:

- AssetIdForTrustBackedAssetsConvert<TrustBackedAssetsPalletLocationV3>,
+ AssetIdForTrustBackedAssetsConvert<TrustBackedAssetsPalletLocationV3, xcm::v3::Location>,

Another change is that the removed xcm_builder::V4V3LocationConverter can be replaced with WithLatestLocationConverter.

[#3659]: Unity Balance Conversion for Different IDs of Native Asset

Introduce types to define 1:1 balance conversion for different relative asset ids/locations of native asset for ConversionToAssetBalance trait bounds.

[#2119]: Add example pallet for Multi-Block-Migrations

  • Add an example pallet to demonstrate Multi-Block-Migrations.
  • Add a MigrationId to frame-support for more convenient identification or migrations.
  • Add default config prelude for testing in pallet-migrations.

[#2292]: Migrate Fee Payment from Currency to fungible traits

Deprecates the CurrencyAdapter and introduces FungibleAdapter
Deprecates ToStakingPot and replaces usage with ResolveTo
Updated DealWithFees, ToAuthor, AssetsToBlockAuthor to all use fungible traits
Updated runtime XCM Weight Traders to use ResolveTo
Updated runtime TransactionPayment pallets to use FungibleAdapter instead of CurrencyAdapter

Runtime Migration Guide:

  • Replace usage of CurrencyAdapter with FungibleAdapter
  • Replace usage of ToStakingPot<Runtime> with ResolveTo<pallet_collator_selection::StakingPotAccountId<Runtime>, Balances>

[#3250]: Asset Conversion: Pool Account ID derivation with additional Pallet ID seed

Introduce PalletId as an additional seed parameter for pool's account id derivation.
The PR also introduces the pallet_asset_conversion_ops pallet with a call to migrate a pool to the new account. Additionally fungibles::roles::ResetTeam and fungible::lifetime::Refund traits, to facilitate the migration functionality.

[#4229]: Fix Stuck Collator Funds

Fixes stuck collator funds by providing a migration that should have been in PR 1340.

[#4118]: pallet assets: minor improvement on errors returned for some calls

Some calls in pallet assets have better errors. No new error is introduced, only more sensible choice are made.

[#4006]: Deploy pallet-parameters to rococo and fix dynamic_params name expand

Fix the expanded names of dynamic_params to not remove suffix "s".

Also deploy the parameters pallet to the rococo-runtime.

[#4189]: polkadot_runtime_parachains::coretime: Expose MaxXcmTransactWeight

Expose MaxXcmTransactWeight via the Config trait. This exposes the possibility for runtime implementors to set the maximum weight required for the calls on the coretime chain. Basically it needs to be set to max_weight(set_leases, reserve, notify_core_count) where set_leases etc are the calls on the coretime chain. This ensures that these XCM transact calls send by the relay chain coretime pallet to the coretime chain can be dispatched.

[#4075]: Adds ability to trigger tasks via unsigned transactions

This PR updates the validate_unsigned hook for frame_system to allow valid tasks to be submitted as unsigned transactions. It also updates the task example to be able to submit such transactions via an off-chain worker.

Note that is_valid call on a task MUST be cheap with minimal to no storage reads.
Else, it can make the blockchain vulnerable to DoS attacks.

Further, these tasks will be executed in a random order.

[#3789]: [pallet-contracts] Benchmarks improvements

Reuse wasmi module when validating the wasm code.

[#4156]: AllowHrmpNotificationsFromRelayChain barrier for HRMP notifications from the relaychain

A new barrier, AllowHrmpNotificationsFromRelayChain, has been added.
This barrier can be utilized to ensure that HRMP notifications originate solely from the Relay Chain.
If your runtime relies on these notifications, you can include it in the runtime's barrier type for xcm_executor::Config.

[#3934]: Update benchmarking macros

Current benchmarking macro return a closure with the captured benchmarked code.
This could cause compilation issues when the benchmarked code has complex lifetime requirements.
This PR updates the existing macro by injecting the recoding parameter and invoking the start / stop method around the benchmarked block instead of returning a closure

[#4151]: [pallet-broker] Use saturating math in input validation

Use saturating in the pallet-broker input validation of the drop_history extrinsic. This fixes a safeguard that only expired historic instantaneous pool records get dropped.

[#3997]: [pallet-broker] Fix claim revenue behaviour for zero timeslices

Add a check in the claim_revenue broker call to ensure that max_timeslices > 0 and errors if not. This mitigates an issue where an attacker could call claim_revenue for an existing region that is owed a revenue, with max_timeslices set to 0 for free indefinitely, which would represent an unbounded spam attack.

[#3251]: Asset Conversion: Pool Touch Call

Introduce touch call designed to address operational prerequisites before providing liquidity to a pool.
This function ensures that essential requirements, such as the presence of the pool's accounts, are fulfilled.
It is particularly beneficial in scenarios where a pool creator removes the pool's accounts without providing liquidity.

[#3875]: Fix Mermaid diagram rendering

Fixes the rendering of some Mermaid diagrams in the documentation.

[#3976]: Decrement total_deposit when clearing collection metadata

Decrements total_deposit by the appropriate amount when collection metadata is cleared.

[#2714]: GenesisConfig presets for runtime

The runtime now can provide a number of predefined presets of RuntimeGenesisConfig struct. This presets are intended to be used in different deployments, e.g.: local, staging, etc, and should be included into the corresponding chain-specs.
Having GenesisConfig presets in runtime allows to fully decouple node from runtime types (the problem is described in #1984).

Summary of changes:

  • The GenesisBuilder API was adjusted to enable this functionality,
  • (Breaking change) Old create_default_config method was removed, build_config was renamed to build_state. As a consequence a node won't be able to interact with genesis config for older runtimes. The cleanup was made for sake of API simplicity.

[#3721]: New call hrmp.establish_channel_with_system to allow parachains to establish a channel with a system parachain

This PR adds a new call hrmp.establish_channel_with_system that allows a parachain origin to open a bidirectional channel with a system parachain.

[#3915]: [pallet-contracts] Weights update

Update Host functions benchmarks, instead of benchmarking the whole call extrinsic, this PR solely benchmark the execution of the Host function.
Previously, some benchmarks would overestimate the weight as both the parsing and execution of the contract were included in the benchmark.

[#3813]: Renames frame crate to polkadot-sdk-frame

This PR renames frame crate to polkadot-sdk-frame as frame is not available on crates.io.
Please note that this crate can only be imported as polkadot-sdk-frame or frame.

[#4208]: Fixed GrandpaConsensusLogReader::find_scheduled_change

This PR fixes the issue with authorities set change digest item search in the bridges code. The issue happens when there are multiple consensus digest items in the same header digest.

[#4060]: Fix nostd build of several crates

Fixes feature and dependency configuration of several crate. This should allow for better no-std build capabilities.

Changelog for Node Operator

These changes are relevant to: Those who don't write any code and only run code.

[#4070]: Avoid using para_backing_state if runtime doesn't support async backing

Fixes #4067 which prevents collators to upgrade to latest release (v1.10.0)

[#4072]: Amend chainspecs for people-westend and add IBP bootnodes

Fixes the people-westend chain spec.

[#4021]: Improve log output for block imports

Nodes now print the parent hash on import notification log messages. In addition, the emoji of the log message indicates whether the block was imported as best block or not. "πŸ†" is used for best blocks, "πŸ†•" for other imported blocks.

[#4252]: Add logic to increase pvf worker based on chain

A new logic and cli parameters were added to allow increasing the number of pvf workers based on the chain-id.

[#3852]: (Breaking change)Enforce network key presence on authorities.

(Breaking change) For all authority nodes, the node binary now enforces the presence of a network key, instead of auto-generating when it is absent.

Before this change, all node binaries were auto-generating the node key when it was not present, that is dangerous because other nodes in the network expects a stable identity for authorities.

To prevent accidental generation of node key, we removed this behaviour and node binary will now throw an error if the network key is not present and operators will receive instructions to either persist their network key or explicitly generate a new one with the polkadot key generate-node-key.

To prevent this error on restart/upgrades node operators need to make sure their network key are always persisted, if nodes already correctly persist all directories in --base-path then no action is needed.

[#3983]: Detect closed notification substreams instead of evicting all peers

Replace eviction of all peers when syncing has completely stalled with a more granular detection of notification substreams closed by remote peers.

This change is expected to make the reported peer count lower, as before this change the number also included already closed substreams. Nevertheless, the currently reported number should be seen as the real number of working connections.

[#3630]: Use async backing enabled collator for all the parachains

Promotes all the parachains supported by polkadot-parachain, including all the systems parachains, to use the async backing enabled lookahead Aura collator instead of the generic one.

[#4015]: Improve beefy networking code by forwarding data more directly

Improve internal implementation of beefy to forward data directly to the networking layer instead of first storing them internally. So, the
following error message should not appear again:

The number of unprocessed messages in channel `mpsc_beefy_gossip_validator` exceeded 100000.

[#4017]: Complete removal of TryRuntime subcommand

The deprecated try-runtime subcommand and try-runtime-cli crate has been completely removed.
If you are not already, you should be using the standalone CLI at https://github.com/paritytech/try-runtime-cli.

[#2944]: Integrate litep2p into Polkadot SDK

litep2p is considered experimental and rust-libp2p will remain as the default networking backend for Polkadot SDK but litep2p can be selected with --network-backend litep2p.

Changelog for Runtime User

These changes are relevant to: Anyone using the runtime. This can be a token holder or a dev writing a front end for a chain.

[#3485]: Broker: sale price runtime api

Defines a runtime api for pallet-broker for getting the current price of a core in the ongoing sale.

[#3455]: Region reserve transfers fix

This PR introduces changes enabling the transfer of coretime regions via XCM.
There are two primary issues that are resolved in this PR:

  1. The mint and burn functions were not implemented for coretime regions. These operations are essential for moving assets to and from the XCM holding register.
  2. The transfer of non-fungible assets through XCM was previously disallowed. This was due to incorrectly benchmarking non-fungible asset transfers via XCM, which led to assigning it a weight of Weight::Max, effectively preventing its execution.

[#3695]: pallet-xcm: add new extrinsic for asset transfers using explicit reserve

pallet-xcm has a new extrinsic transfer_assets_using_type_and_then for transferring assets from local chain to destination chain using an explicit XCM transfer types for transferring the assets and the fees:

  • TransferType::LocalReserve: transfer assets to sovereign account of destination
    chain and forward a notification XCM to dest to mint and deposit reserve-based
    assets to beneficiary.
  • TransferType::DestinationReserve: burn local assets and forward a notification to
    dest chain to withdraw the reserve assets from this chain's sovereign account and
    deposit them to beneficiary.
  • TransferType::RemoteReserve(reserve): burn local assets, forward XCM to reserve
    chain to move reserves from this chain's SA to dest chain's SA, and forward another
    XCM to dest to mint and deposit reserve-based assets to beneficiary. Typically
    the remote reserve is Asset Hub.
  • TransferType::Teleport: burn local assets and forward XCM to dest chain to
    mint/teleport assets and deposit them to beneficiary.
    By default, an asset's reserve is its origin chain. But sometimes we may want to explicitly use another chain as reserve (as long as allowed by runtime IsReserve filter).
    This is very helpful for transferring assets with multiple configured reserves (such as Asset Hub ForeignAssets), when the transfer strictly depends on the used reserve location.

E.g. For transferring a bridged Foreign Assets between local parachains, Asset Hub or the parachain that bridged the asset over must be used as the reserve location. Same when transferring bridged assets back across the bridge, the local bridging parachain must be used as the explicit reserve location.

The new method takes a custom_xcm_on_dest parameter allowing the caller to specify what should happen to the transferred assets once they reach the dest chain. The custom_xcm_on_dest parameter should contains the instructions to execute on dest as a final step. Usually as simple as:
Xcm(vec![DepositAsset { assets: Wild(AllCounted(assets.len())), beneficiary }]),
but could be something more exotic like sending the assets even further.

[#4118]: pallet assets: minor improvement on errors returned for some calls

Some calls in pallet assets have better errors. No new error is introduced, only more sensible choice are made.

[#4089]: pallet_broker: Support renewing leases expired in a previous period

Allow renewals of leases that ended before start_sales or in the first period after calling start_sales.
This ensures that everyone has a smooth experience when migrating to coretime and the timing of start_sales isn't that important.

[#4199]: Remove XCM SafeCallFilter for chains using Weights::v3

SafeCallFilter was removed from Rococo and Westend relay and system chains as they all now use Weights::v3 which already accounts for call PoV size.
This effectively removes artificial limitations on what users can XCM::Transact on these chains (blockspace limitations are still upheld).

[#3930]: test runtimes: allow local origins to execute arbitrary XCMs

Allow arbitrary XCM execution for local origins on all test chains.

[#4221]: pallet_broker::start_sales: Take extra_cores and not total cores

Change pallet_broker::start_sales to take extra_cores and not total cores.
It will calculate the total number of cores to offer based on number of reservations plus number of leases plus extra_cores. Internally it will also notify the relay chain of the required number of cores.

Thus, starting the first sales with pallet-broker requires less brain power ;)

[#3959]: Allow StakingAdmin to manage nomination pool configurations

Adds a custom origin to Nomination pool configuration and allows StakingAdmin to be this origin in Westend. Other runtimes could also set this origin to be the same that manages staking-pallet configurations.

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: "1.77.0"

Runtimes

The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.15.0 and rustc 1.77.0 (aedd173a2 2024-03-17).

Rococo

πŸ‹οΈ Runtime Size:          1.87 MB (1959962 bytes)
πŸ”₯ Core Version:          rococo-1011000 (parity-rococo-v2.0-0.tx25.au0)
πŸ—œ Compressed:            Yes: 78.44%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x5d712a861a68968736c1755b2d9e0a0940e1c1b958c8624b7d37648c7a6230f8
πŸ—³οΈ authorizeUpgrade hash: 0xdec174f348a0f1c5497f216872dcd643fd96d895439fa70d1226d3c77abba89a
πŸ—³οΈ Blake2-256 hash:       0x03c08227c18b6aa80d37cb5f74bae53fe9fee7343b8957812676c3809cdf1417
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmZ1a53EJSS7Jx6drqvmV4SYanxWFmoP9v9xKGBaj8ZG46

Rococo Assethub

πŸ‹οΈ Runtime Size:          1.28 MB (1345785 bytes)
πŸ”₯ Core Version:          statemine-1011000 (statemine-0.tx15.au1)
πŸ—œ Compressed:            Yes: 80.04%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x0276c75764e8b9ce5463c01309bf2054595e723a757a2938ae576bd7d8e9e924
πŸ—³οΈ authorizeUpgrade hash: 0x521665686f9eee8d5938cec4ba6fcf26f1227de92eaafd13213874ec06fd9548
πŸ—³οΈ Blake2-256 hash:       0x2f2ac41ac6e29753c86439f05a872e84ee38e631071640a88d271ba26d71bd10
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmP7Ya8i9mYQtp25CQYW6r6sm8NLNgp6RxvG8duphBYSWe

Rococo Bridgehub

πŸ‹οΈ Runtime Size:          1.31 MB (1377110 bytes)
πŸ”₯ Core Version:          bridge-hub-rococo-1011000 (bridge-hub-rococo-0.tx5.au1)
πŸ—œ Compressed:            Yes: 78.07%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0xe360c563d2f6bb2e63c8ef32290ac1e8897a39ce7afba5d467c5f35eabc36297
πŸ—³οΈ authorizeUpgrade hash: 0x8d637e2591c30cc62b4247a23e77f67694adecadd5c560a4be3816b4f0099b6c
πŸ—³οΈ Blake2-256 hash:       0xd196bca5b69e93db9d9b7bb0938a9519d0de799621805295b065fdf5d88a7d16
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmbDWpV9dYvnnGUyc7tddPHkCKE8bctSJwhYxfvhbmNGui

Rococo Contracts

πŸ‹οΈ Runtime Size:          1.25 MB (1307717 bytes)
πŸ”₯ Core Version:          contracts-rococo-1011000 (contracts-rococo-0.tx7.au1)
πŸ—œ Compressed:            Yes: 79.5%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0xc94b4d02fc7be11e57ad91cb08c5a7b830343da52a169aa13c216c18cb80911b
πŸ—³οΈ authorizeUpgrade hash: 0xc5ee4fa84b247e09988be62dcb3d578d3155ea0d36922e09a6531ec20720847b
πŸ—³οΈ Blake2-256 hash:       0xacd760716c8ae5a02335dae24db8ce234eee30cdb178bc68442a394db1ee7534
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmdMSB1MByTGeMB2S1N7bz564PNmpcRZLvmxtBS7Lkhrg9

Rococo Coretime

πŸ‹οΈ Runtime Size:          958.95 kB (981965 bytes)
πŸ”₯ Core Version:          coretime-rococo-1011000 (coretime-rococo-0.tx1.au1)
πŸ—œ Compressed:            Yes: 78.59%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x7d9c49eadb9b7c093d810d804e7a682012cecf139963bc899df8080007d48f8f
πŸ—³οΈ authorizeUpgrade hash: 0x8b6ef496fb705e9982fea6102f994be39498e8ffb6df5a25a9215e6886db1df9
πŸ—³οΈ Blake2-256 hash:       0x7f4c68e664ec347691111700ab1d7c6a557232cb7bd00c95c5359f86491329c8
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmPqFkn9sRqJ1kutWnxcCwPRhoPFNTZGm1NVjnNUnUuTMC

Rococo People

πŸ‹οΈ Runtime Size:          949.43 kB (972214 bytes)
πŸ”₯ Core Version:          people-rococo-1011000 (people-rococo-0.tx1.au1)
πŸ—œ Compressed:            Yes: 78.67%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x00f81059bb0259eef3ea126687ab186d2bedadf075b904dd429c9a80f5b03bd0
πŸ—³οΈ authorizeUpgrade hash: 0x5f42ee4718fd94660102226e7e93e0782ea40d266a3ce8557c7f2708182c2ef3
πŸ—³οΈ Blake2-256 hash:       0x8f2735cc7db9e05197dd39abfc52a1f4acf9327c08abf6ba34bbb40e91d8ec95
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/Qmdyezi3hrzTYSBsJrummDQWainJcYdctvszVrGFJdWguy

Westend

πŸ‹οΈ Runtime Size:          1.77 MB (1852642 bytes)
πŸ”₯ Core Version:          westend-1011000 (parity-westend-0.tx25.au2)
πŸ—œ Compressed:            Yes: 79.13%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x4c1ed7f935c98811da70a5a590c416803d181a2ebf6dbde5adafa374c2f50be0
πŸ—³οΈ authorizeUpgrade hash: 0xc6d7631718fab486806082680209a2207262b0b8fcb669b0e173c2a637b44afe
πŸ—³οΈ Blake2-256 hash:       0xc6a8123fbd0a3f924d5adc432898dcd144e192031f1af68d6be321d414910aad
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmWEukBHND9BzzNkdGE7e5CddsWssa3dDKXT86oEWcWaye

Westend Assethub

πŸ‹οΈ Runtime Size:          1.27 MB (1330734 bytes)
πŸ”₯ Core Version:          westmint-1011000 (westmint-0.tx15.au1)
πŸ—œ Compressed:            Yes: 80.11%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x488d1e4bbc647c9fdcf6e3cba49814f777562705286cf6c9f74dfc82fa5f1066
πŸ—³οΈ authorizeUpgrade hash: 0xf2817f672a260345a290525f03cb26e7a7f4c7cd2ce74d6d08a434862f221188
πŸ—³οΈ Blake2-256 hash:       0x823e9752976f68f8f451b80702dec7389c8a717107a4607d480c99f106954915
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmWEop7UBq1Kw3m7AusCPj8qKJnR4PJRnAyjKhhsfSGmkn

Westend Bridgehub

πŸ‹οΈ Runtime Size:          1.04 MB (1085426 bytes)
πŸ”₯ Core Version:          bridge-hub-westend-1011000 (bridge-hub-westend-0.tx5.au1)
πŸ—œ Compressed:            Yes: 78.55%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x15915c43c30530de8b3971599fa4c76a469af65cd8d6bdd5b3bb38b718192ae8
πŸ—³οΈ authorizeUpgrade hash: 0x1f2a3b80b0e6f4264aa38ec8735c4432e00a596c0e5482d9554a46e8968b51bc
πŸ—³οΈ Blake2-256 hash:       0xed4306515d01d8da1f2190e22a054c75133583c9fe3242d1f0365fa37dcc7d0f
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmQRUFjfMUkRDHjXbAA2dtjCz5pJF5cqDdoPDUmAiUREqd

Westend Collectives

πŸ‹οΈ Runtime Size:          1.10 MB (1157625 bytes)
πŸ”₯ Core Version:          collectives-westend-1011000 (collectives-westend-0.tx6.au1)
πŸ—œ Compressed:            Yes: 79.6%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x2188bf34c4a863b28766437be760e52559d6c751eccf8135afa9e909395baa0d
πŸ—³οΈ authorizeUpgrade hash: 0x2a4dda1d362117e363068601ff0806d4a4dccb51b0a19d0b0c4e2b334a6afaf1
πŸ—³οΈ Blake2-256 hash:       0x6152f89f71fd687bb6705423c8dbf84b8fa804116e8e1094a8d4d7f06a3a8fa8
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmcrKhr1eoadTdQn9ed9ZLUGVeE8HgRqmv4xPcp1E75e4v

Westend Coretime

πŸ‹οΈ Runtime Size:          954.06 kB (976955 bytes)
πŸ”₯ Core Version:          coretime-westend-1011000 (coretime-westend-0.tx1.au1)
πŸ—œ Compressed:            Yes: 78.73%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0xfcff17d422e765955a4a608fb640232d05ffb3b673e7114563930a62c33cfe79
πŸ—³οΈ authorizeUpgrade hash: 0x4aa3fceed783a9cfa3dfa891146a3f4154f0f4e5bc76ac60ed05977fea30102a
πŸ—³οΈ Blake2-256 hash:       0x2d020bf26917a8b58a7b73426bababd6ee2a49459b41e50422900174cb40a17e
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/Qmeu5L5R5z4iL9MZN2A9dKwEhQRocu2xVCwuSJLz3jjALL

Westend Glutton

πŸ‹οΈ Runtime Size:          588.00 kB (602113 bytes)
πŸ”₯ Core Version:          glutton-westend-1011000 (glutton-westend-0.tx1.au1)
πŸ—œ Compressed:            Yes: 76.36%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0x6703ec1466da91a2d75349182af2d91751a40ca6193fa17b1a582fc0abaf3f5f
πŸ—³οΈ authorizeUpgrade hash: 0x5f75479f5bfc40e78fcf5cb9302c4ab762c863a6a525925fac669999b25cddc2
πŸ—³οΈ Blake2-256 hash:       0xee1f411f8da35ed0b9996777f54913acbc74bdd542c4f12d2d19eb558d336bdf
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmPRx9jXmqha8u3wjAdht2ZvFGiDJkt5jMCPJkKnSUVBnK

Westend People

πŸ‹οΈ Runtime Size:          951.32 kB (974150 bytes)
πŸ”₯ Core Version:          people-westend-1011000 (people-westend-0.tx1.au1)
πŸ—œ Compressed:            Yes: 78.64%
🎁 Metadata version:      V14
πŸ—³οΈ system.setCode hash:   0xb2de8f4398d17a8679b6163b88c717ff3c5dfa05f05136a7febe3395fd7a8413
πŸ—³οΈ authorizeUpgrade hash: 0xfa3bf27545795f81ebcd3799556bd514f79aba4cdac7ab2ed3e0c186f7695d3e
πŸ—³οΈ Blake2-256 hash:       0x274b714094b8080713a3f2f60929e2262850c731828c94a47642f2751d4defcf
πŸ“¦ IPFS:                  https://www.ipfs.io/ipfs/QmbCMrJpc7mr9HJ9sJh85bn9THQisgkijDYEEGWUBSdNUu