Polkadot v1.11.0
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
withFungibleAdapter
- Replace usage of
ToStakingPot<Runtime>
withResolveTo<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 tobuild_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:
- 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.
- 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 todest
to mint and deposit reserve-based
assets tobeneficiary
.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 tobeneficiary
.TransferType::RemoteReserve(reserve)
: burn local assets, forward XCM toreserve
chain to move reserves from this chain's SA todest
chain's SA, and forward another
XCM todest
to mint and deposit reserve-based assets tobeneficiary
. Typically
the remotereserve
is Asset Hub.TransferType::Teleport
: burn local assets and forward XCM todest
chain to
mint/teleport assets and deposit them tobeneficiary
.
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 (1955833 bytes)
π₯ Core Version: rococo-1011001 (parity-rococo-v2.0-0.tx25.au0)
π Compressed: Yes: 78.45%
π Metadata version: V14
π³οΈ system.setCode hash: 0x09bfd205675273ce118e57f9e1c87a102033d6a1a6c4cfdc00fc1cb251bdaef3
π³οΈ authorizeUpgrade hash: 0x88cc7d52d7bd02c56f7ced4cc19dd2c1c951e1f2415bb4bf5f27aa8351fe0152
π³οΈ Blake2-256 hash: 0xb134d599ba1c6fd891a1e313cf52d9166688d8be6d67c4a4ba19dc02c881235d
π¦ IPFS: Qmdm1XKdAQ8tKnuqpMqKifjbbFaspfFciHiAd4dgnWCdXS
Rococo Assethub
ποΈ Runtime Size: 1.29 MB (1356935 bytes)
π₯ Core Version: statemine-1011001 (statemine-0.tx16.au1)
π Compressed: Yes: 79.98%
π Metadata version: V14
π³οΈ system.setCode hash: 0xba6bd31bf2e68855c07a8de526999e360b7aba6bf97645977e538c2e5f990530
π³οΈ authorizeUpgrade hash: 0x39c95aead836a8cca1e0cf7f75e807edbf5e7ef32294e99f83eb366656b62037
π³οΈ Blake2-256 hash: 0xab998b4da9a194ce1ff742ab6df77767228b3c8fc3927d0b2cfba0220b5494e9
π¦ IPFS: QmaT4ntrZEXx6ybUWAUEk5YVmY6wLo6J8RBTrph6YFUfv3
Rococo Bridgehub
ποΈ Runtime Size: 1.32 MB (1382956 bytes)
π₯ Core Version: bridge-hub-rococo-1011002 (bridge-hub-rococo-0.tx5.au1)
π Compressed: Yes: 78.12%
π Metadata version: V14
π³οΈ system.setCode hash: 0x80d0b5e26e966bb0cea31257e5683518385268795e568443284a8ca98688ac80
π³οΈ authorizeUpgrade hash: 0x648510198e79939570a96974b75079acbbe5553e9462289e835844213f933fdc
π³οΈ Blake2-256 hash: 0x6796ce5f7776cb01ff764ba8a6021e74c6ea3f421485f3b2f688a9cb6106f69f
π¦ IPFS: QmP5RiwRVRpVgt1hXypW7EkKE7KmNVyD7apfYiLYcymYm9
Rococo Contracts
ποΈ Runtime Size: 1.25 MB (1313276 bytes)
π₯ Core Version: contracts-rococo-1011001 (contracts-rococo-0.tx7.au1)
π Compressed: Yes: 79.56%
π Metadata version: V14
π³οΈ system.setCode hash: 0xef3e154d065724e3552160d552709bbe4a9b98545331fab2ccac455e060c094c
π³οΈ authorizeUpgrade hash: 0x6b198f3a7b871800442108cc4927a541e171120b546b640b55025e1b52127206
π³οΈ Blake2-256 hash: 0xb002027a040dd23c2fcda5314b4a0b9e71d4c2bbe72c4c9a74a73ae7221e520d
π¦ IPFS: Qmb3Re1e6KL6fXHzH39oyzsCQ79LWotVfifAqEwyTj5TsN
Rococo Coretime
ποΈ Runtime Size: 963.73 kB (986857 bytes)
π₯ Core Version: coretime-rococo-1011001 (coretime-rococo-0.tx1.au1)
π Compressed: Yes: 78.59%
π Metadata version: V14
π³οΈ system.setCode hash: 0x76dc3bbb799cf2a7ce78c9701cbdfeb6935de0005cd3246f6c57885acd027a49
π³οΈ authorizeUpgrade hash: 0xf42623a120c3ecdd28163fbbc30164be220d83aa00da6ab1cdbf6eaba1ac502d
π³οΈ Blake2-256 hash: 0x47a15a7238b55b8c99395a86ab86e27e64f3736ae03c4871d44a108b7136be1f
π¦ IPFS: QmQFp1ZQ7vP5KzrNtP3VSsWZJfsXmE24awKWcBGz2Tv7VJ
Rococo People
ποΈ Runtime Size: 955.66 kB (978598 bytes)
π₯ Core Version: people-rococo-1011001 (people-rococo-0.tx1.au1)
π Compressed: Yes: 78.66%
π Metadata version: V14
π³οΈ system.setCode hash: 0xaaa69aadadcd5c43af7d2d43bb53ea3fcf2a5d21c91f759adcd9ed9041c76bd9
π³οΈ authorizeUpgrade hash: 0xff1ecf72a4d57eb73fd672ccc4632ab9169cd23aa2172fd70788c433e0dbaf85
π³οΈ Blake2-256 hash: 0xe296c51a095a81e09b4a9657667cd5337a6a9ac73fd58736018b629f8e37b022
π¦ IPFS: QmZv672n5ZffqZ4Bh7LKSU7bYzTQD5vCmU8mDT5zczcvfw
Westend
ποΈ Runtime Size: 1.77 MB (1852264 bytes)
π₯ Core Version: westend-1011001 (parity-westend-0.tx25.au2)
π Compressed: Yes: 79.13%
π Metadata version: V14
π³οΈ system.setCode hash: 0x2b1081318084af649e9a2becb99bead702323e2a4d257d27875e837d9fab1ba9
π³οΈ authorizeUpgrade hash: 0xa3b54dcfeb81629e1e134e4ac82a81c8f921629d4af09564fe8fc9bb8950dd45
π³οΈ Blake2-256 hash: 0x4cdb473e3262fa8b813c57aca6cadc55a0f0fea8ce65c8bea9995e8366cce341
π¦ IPFS: QmSg25huqBc7pxkMrU9XK4g5pffdfgoerDb3QrDBDJCiLU
Westend Assethub
ποΈ Runtime Size: 1.27 MB (1333003 bytes)
π₯ Core Version: westmint-1011001 (westmint-0.tx16.au1)
π Compressed: Yes: 80.1%
π Metadata version: V14
π³οΈ system.setCode hash: 0x3eb03953cff9ce425dc578f10010f8397596116e25ebd6eba3e0b896bdfc5f98
π³οΈ authorizeUpgrade hash: 0x7c12a67bd6d804fd0f564f26fd31d60b879bda4e35c3e41a7731d47c71ea8ecb
π³οΈ Blake2-256 hash: 0xdc846af4c1461a8a9c45c366ac483efa5c98a436a8f5ad3deb1329755247f1dc
π¦ IPFS: QmbR5eBKNU4zwQp1FDAFbjU27mrZFUWbG1LkE5EDATuQUQ
Westend Bridgehub
ποΈ Runtime Size: 1.05 MB (1096284 bytes)
π₯ Core Version: bridge-hub-westend-1011001 (bridge-hub-westend-0.tx5.au1)
π Compressed: Yes: 78.35%
π Metadata version: V14
π³οΈ system.setCode hash: 0xb558394177cfd8c421a1440a67bbf9459ab40ef4d192d3943f962b22bf05d080
π³οΈ authorizeUpgrade hash: 0x346d8dabe7d6123a2f5f38438c6e2f2eec549d080fa286678e27a30ea7014e1a
π³οΈ Blake2-256 hash: 0x26ebb25f2750c4d04ea5b2d0aeaf177fe0806074d020d87c9597c5b06a98d958
π¦ IPFS: QmdaLvk2XehsqVY7VXP3GT5ur2us6tqLiQvDb5A86zPxgZ
Westend Collectives
ποΈ Runtime Size: 1.11 MB (1167343 bytes)
π₯ Core Version: collectives-westend-1011001 (collectives-westend-0.tx6.au1)
π Compressed: Yes: 79.53%
π Metadata version: V14
π³οΈ system.setCode hash: 0xa1a7821d361891f623a8d0d613d9f4ca6b0542744247ce7cd3f50cf836b6f678
π³οΈ authorizeUpgrade hash: 0xb5142cc0704164715bc561ba4f3e91c44336fafdc7b0a23a45aba51fd60223eb
π³οΈ Blake2-256 hash: 0xf70030ee4937732edad3ffa005fc7c08695666ab7442eceb4e3ca2a75a6715fc
π¦ IPFS: QmQprhBhJWs2nLC2JJWRx96x9T2RYgzR5EkMfYfmpdsHJi
Westend Coretime
ποΈ Runtime Size: 960.79 kB (983846 bytes)
π₯ Core Version: coretime-westend-1011001 (coretime-westend-0.tx1.au1)
π Compressed: Yes: 78.79%
π Metadata version: V14
π³οΈ system.setCode hash: 0x04a37aabc5553e66dcfb583f7c984e48f49f3149e9ad010ea3e704778c97fc83
π³οΈ authorizeUpgrade hash: 0x23a22c523e2fa362c5d45484fdaaf9f8fa35f789b22a02d8786bb5cd6dcced59
π³οΈ Blake2-256 hash: 0xe93ef82bce9494a2b0e7b2d156414193e8556a0dc51feb933e933fd33879664e
π¦ IPFS: QmbQDWfhM1BYcmFQZtcW99WWNEF5Sk6M9ChuJ8pjAnkmWF
Westend Glutton
ποΈ Runtime Size: 590.33 kB (604503 bytes)
π₯ Core Version: glutton-westend-1011001 (glutton-westend-0.tx1.au1)
π Compressed: Yes: 76.43%
π Metadata version: V14
π³οΈ system.setCode hash: 0x89a5675a178c32020c2c0ff96d007cf5617b83a121bf2ba482acee87c95e9936
π³οΈ authorizeUpgrade hash: 0x4ff89db12ae22f0ca5a30759c4cbd6ebbc7908a291bff4091f7f2c59a07c6b09
π³οΈ Blake2-256 hash: 0xf16b22e6557d7c113b5cc180285779a9699fb0d974fe5f0547c03aa805a8a320
π¦ IPFS: QmUy3ENe5fuqWA9EZUZPoadxRztvxqG6s33pC7yRxnsmM8
Westend People
ποΈ Runtime Size: 957.68 kB (980664 bytes)
π₯ Core Version: people-westend-1011001 (people-westend-0.tx1.au1)
π Compressed: Yes: 78.59%
π Metadata version: V14
π³οΈ system.setCode hash: 0x9733b662efbdfb66d0733c94b6fb309da2fc72b3c3b4938c311a2de4ca00c24b
π³οΈ authorizeUpgrade hash: 0x63f2639721e9b6a84ccb84b2df376ed0f33054beb5a78e4fbc71a19c37f67b42
π³οΈ Blake2-256 hash: 0x96b630f31c856da0eb75940c96d5d8ba5032f713e43202ed709ee4306f6d9d9e
π¦ IPFS: QmYa2ADMtH12NWJfu53RtGLCcosRvpQJPGKFz7RPmVqNHw