Polkadot v1.10.0
This release contains the changes from polkadot-v1.9.0
to polkadot-v1.10.0
.
Changelog
Changelog for Node Dev
[#3521]: Collator side changes for elastic scaling
Parachain teams wishing to utilize the benefits of elastic scaling will need to upgrade their collator code to include these changes.
[#3302]: Collator protocol changes for elastic scaling
This PR introduces changes to the collator protocol to support elastic scaling.
Namely, a new variant added to the collation response to include parent head-data along with the collation. Currently, the new variant is not being used.
[#3950]: Add ClaimQueue
wrapper
Intoduces a new wrapper type: ClaimQueueSnapshot
. It contains a snapshot of the ClaimQueue
at an arbitrary relay chain block. Two methods are exposed to allow access to the claims at specific depths.
[#3795]: Enable collators to build on multiple cores
Introduces a CoreIndex
parameter in SubmitCollationParams
. This enables the collators to make use of potentially multiple cores assigned at some relay chain block. This extra parameter is used by the collator protocol and collation generation subsystems to forward the collation to the approapriate backing group.
[#3580]: Expose ClaimQueue
via a runtime api and consume it in collation-generation
Creates a new runtime api exposing the ClaimQueue
from scheduler
pallet. Consume the api in collation generation (if available) by getting what's scheduled on a core from the ClaimQueue
instead of from next_up_on_available
(from AvailabilityCores
runtime api).
[#3854]: Export unified ParachainHostFunctions
from cumulus-client-service
Exports ParachainHostFunctions
to have a bundled version of SubstrateHostFunctions
and cumulus_primitives_proof_size_hostfunction::storage_proof_size::HostFunctions
. This increases discoverability and makes it more obvious that they should be used together in parachain nodes.
[#3479]: Elastic scaling: runtime dependency tracking and enactment
Adds support in the inclusion and paras_inherent runtime modules for backing and including multiple candidates of the same para if they form a chain.
Changelog for Runtime Dev
[#3817]: Parachain Runtime API Implementations into mod apis Refactoring
This PR introduces a refactoring to the runtime API implementations within the parachain template project. The primary changes include enhancing the visibility of RUNTIME_API_VERSIONS
to pub
in impl_runtime_apis.rs
, centralizing API implementations in a new apis.rs
file, and streamlining lib.rs
. These changes aim to improve project structure, maintainability, and readability.
Key Changes:
RUNTIME_API_VERSIONS
is now publicly accessible, enhancing module-wide visibility.- Introduction of
apis.rs
centralizes runtime API implementations, promoting a cleaner and more navigable project structure. - The main runtime library file,
lib.rs
, has been updated to reflect these structural changes, removing redundant API implementations and simplifying runtime configuration by pointingVERSION
to the newly exposedRUNTIME_API_VERSIONS
fromapis.rs
.
Motivations:
- Improved Project Structure: Centralizing API implementations offers a more organized and understandable project layout.
- Enhanced Readability: The refactoring efforts aim to declutter
lib.rs
, facilitating easier comprehension for new contributors.
[#3722]: Fix kusama 0 backing rewards when entering active set
This PR fixes getting 0 backing rewards the first session when a node enters the active set.
[#3607]: XCM fee payment API
A runtime API was added for estimating the fees required for XCM execution and delivery.
This is the basic building block needed for UIs to accurately estimate fees.
An example implementation is shown in the PR. Ideally it's simple to implement, you only need to call existing parts of your XCM config.
The API looks like so:
fn query_acceptable_payment_assets(xcm_version: Version) -> Result<Vec<VersionedAssetId>, Error>;
fn query_xcm_weight(message: VersionedXcm<Call>) -> Result<Weight, Error>;
fn query_weight_to_asset_fee(weight: Weight, asset: VersionedAssetId) -> Result<u128, Error>;
fn query_delivery_fees(destination: VersionedLocation, message: VersionedXcm<()>) -> Result<VersionedAssets, Error>;
The first three relate to XCM execution fees, given an XCM, you can query its weight, then which assets are acceptable for buying weight and convert weight to a number of those assets.
The last one takes in a destination and a message you want to send from the runtime you're executing this on, it will give you the delivery fees.
[#3761]: Snowbridge: Synchronize from Snowfork repository
This PR improves the beacon client to send the execution header along with the message as proof and removes the verification and storing of all execution headers.
If the AH sovereign account is depleted and relayer rewards cannot be paid, the message should still be processed.
[#3792]: [pallet-xcm] fix transport fees for remote reserve transfers
This PR fixes pallet_xcm::transfer_assets
and pallet_xcm::limited_reserve_transfer_assets
extrinsics for transfers that need to go through remote reserves. The fix is adding a SetFeesMode { jit_withdraw: true }
instruction before local execution of InitiateReserveWithdraw
so that delivery fees are correctly charged by the xcm-executor. Without this change, a runtime that has implemented delivery fees would not be able to execute remote reserve transfers using these extrinsics.
[#3808]: Fix spelling mistakes in source code
Public crate changes:
- The public trait
RuntimeParameterStore
insubstrate/frame/support
had the associated type renamed fromAggregratedKeyValue
toAggregatedKeyValue
. - The public trait
AggregratedKeyValue
insubstrate/frame/support
was similarly renamed toAggregatedKeyValue
. - The public methods
test_versioning
andtest_versioning_register_only
of theTestApi
trait insubstrate/primitives/runtime-interface/test-wasm
had the spelling ofversionning
changed toversioning
. - The public functions
read_trie_first_descendant_value
andread_child_trie_first_descendant_value
insubstrate/primitives/trie
had the spelling ofdescedant
changed todescendant
.
[#3714]: Handle legacy lease swaps on coretime
When a registar::swap
extrinsic is executed it swaps two leases on the relay chain but the broker chain never knows about this swap. This change notifies the broker chain via a XCM message for a swap so that it can update its state.
[#3740]: Removed pallet::getter
usage from Beefy and MMR pallets
This PR removes pallet::getter
usage from pallet-beefy
, pallet-beefy-mmr
and pallet-mmr
, and updates dependant code and runtimes accordingly.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#3927]: pallet-xcm: deprecate transfer extrinsics without weight limit
pallet-xcm's extrinsics teleport_assets
and reserve_transfer_assets
have been marked as deprecated. Please change their usage to the limited_teleport_assets
and limited_reserve_transfer_assets
, respectively; or use the generic/flexible transfer_assets
extrinsic.
[#3738]: Removed pallet::getter
usage from pallet-alliance
This PR removes pallet::getter
usage from pallet-alliance
, and updates dependant code accordingly.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#3190]: Fix algorithmic complexity of the on-demand scheduler.
Improves on demand performance by a significant factor. Previously, having many on-demand cores would cause really poor blocktimes due to the fact that for each core the full order queue was processed. This allows for increasing the max size of the on-demand queue if needed.
At the same time, the spot price for on-demand is now checked prior to every order, ensuring that economic backpressure will be applied.
[#3654]: Remove experimental
feature from pallet-aura
The experimental
feature in pallet-aura
, previously used to gate different experimental changes, became redundant with the introduction of the async backing which relies on the mentioned changes, therefore, it is removed.
[#3718]: Deprecate scheduler traits v1 and v2
Add #[deprecated]
attribute to scheduler traits v1 and v2 to deprecate old versions
[#3471]: removed pallet::getter
from cumulus pallets
This PR removes all the pallet::getter
usages from cumulus pallets, and updates depdendant runtimes accordingly.
The ParaId can be retrieved using <ParachainInfo as Get<ParaId>>::get()
.
For other storage items, the syntax StorageItem::<T, I>::get()
should be used instead.
[#3754]: Migrates Westend to Runtime V2
This PR migrates Westend from construct_runtime
to Runtime V2 as introduced in #1378
[#3350]: removed pallet::getter
from Pallet AURA
This PR removes all the declarations of macro pallet::getter
in the Pallet AURA and replaces the use of storage getter functions authorities() & current_slot() with StorageItem::get()
API across the crates as listed bellow.
The purpose is to discourage developers to use this macro, that is currently being removed and soon will be deprecated.
[#3749]: pallet-xcm: deprecate execute and send in favor of execute_blob and send_blob
pallet-xcm's extrinsics execute
and send
have been marked as deprecated. Please change their usage to the new execute_blob
and send_blob
. The migration from the old extrinsic to the new is very simple.
If you have your message xcm: VersionedXcm<Call>
, then instead of passing in Box::new(xcm)
to both execute
and send
, you would pass in xcm.encode().try_into()
and handle the potential error of its encoded length being bigger than MAX_XCM_ENCODED_SIZE
.
pallet-contracts
takes the XCM encoded now as well. It follows the same API as execute_blob
and send_blob
.
[#3835]: migrations: prevent accidentally using inner unversioned migration instead of VersionedMigration
Currently, it is possible to accidentally use inner unversioned migration instead of VersionedMigration
since both implement OnRuntimeUpgrade
. With this change, we make it clear that Inner
is not intended to be used directly. It is achieved by bounding Inner
to new trait UncheckedOnRuntimeUpgrade
, which has the same interface as OnRuntimeUpgrade
, but can not be used directly for runtime upgrade migrations.
This change will break all existing migrations passed to VersionedMigration
. Developers should simply change those migrations to implement UncheckedOnRuntimeUpgrade
instead of OnRuntimeUpgrade
.
Example:
--- a/path/to/migration.rs
+++ b/path/to/migration.rs
@@ -1,7 +1,7 @@
-impl<T: Config> OnRuntimeUpgrade for MigrateVNToVM<T> {
+impl<T: Config> UncheckedOnRuntimeUpgrade for MigrateVNToVM<T> {
fn on_runtime_upgrade() -> Weight {
// Migration logic here
// Adjust the migration logic if necessary to align with the expectations
// of new `UncheckedOnRuntimeUpgrade` trait.
0
}
}
[#3616]: Benchmarking pallet V2 syntax extension: pov_mode attribute
Adds the pov_mode
attribute from the V1 benchmarking syntax to the V2 syntax. This allows to override the default PoV mode (MaxEncodedLen
) to either Measured
or Ignored
. It can be overridden for a whole benchmark, a key prefix of a specific key itself.
Example syntax looks like this:
#[benchmark(pov_mode = Measured {
Pallet: Measured,
Pallet::Storage: MaxEncodedLen,
})]
fn do_some() {
..
}
[#3844]: Add the ability for MessageQueue to process enqueued messages on idle
Add the option to use remaining weight on idle for processing enqueued messages. This will increase the chances of the messages enqueued during inherent extrinsics to be processed in the same block.
New config types is added on the message-queue Config
trait:
IdleMaxServiceWeight
example:
rust parameter_types! { // The maximum weight to be used from remaining weight for processing enqueued messages on idle pub const IdleMaxServiceWeight: Weight = Some(Weight); } type IdleMaxServiceWeight = IdleMaxServiceWeight; // or `()` to not use this feature
[#3696]: Add HRMP notification handlers to the xcm-executor
Adds optional HRMP notification handlers to the xcm-executor. These handlers are 3 new config types on the xcm-executor Config
trait:
HrmpNewChannelOpenRequestHandler
HrmpChannelAcceptedHandler
HrmpChannelClosingHandler
The traits of these config types are implemented on tuples, and on ()
for the default case.
Changelog for Node Operator
[#3302]: Collator protocol changes for elastic scaling
Validators are required to upgrade to this version before collators in order to support the elastic scaling of parachains.
[#3808]: Fix spelling mistakes in source code
Some spelling mistakes in log output, error messages and tracing (prometheus/grafana) have been fixed.
[#3961]: Added support for coretime-kusama/polkadot and people-kusama/polkadot
The support for running coretime-kusama
and people-kusama
collators with polkadot-parachain-bin
have been added.
Changelog for Runtime User
[#3341]: Fix schedule_code_upgrade
when called by the owner/root
Fixes schedule_code_upgrade
when being used by the owner/root. The call is used for manually upgrading the validation code of a parachain on the relay chain. It was failing before because the relay chain waited for the parachain to make progress. However, this call is mostly used for when a parachain are bricked which means that they are not able anymore to build any blocks. The fix is to schedule the validation code upgrade and then to enact it at the scheduled block. The enacting happens now without requiring the parachain to make any progress.
[#3849]: Unrequest a pre-image when it failed to execute
When a referenda finished the proposal will be scheduled. When it is scheduled, the pre-image is requested. The pre-image is unrequested after the proposal was executed. However, if the proposal failed to execute it wasn't unrequested. Thus, it could not be removed from the on-chain state. This issue is now solved by ensuring to unrequest the pre-image when it failed to execute.
[#3438]: Pools: Make PermissionlessWithdraw the default claim permission
Makes permissionless withdrawing the default claim permission, giving any network participant access to claim pool rewards on member's behalf, by default.
[#3706]: Extrinsic to restore corrupted staking ledgers
This PR adds a new extrinsic Call::restore_ledger
gated by StakingAdmin
origin that restores a corrupted staking ledger. This extrinsic will be used to recover ledgers that were affected by the issue discussed in #3245.
The extrinsic will re-write the storage items associated with a stash account provided as input parameter. The data used to reset the ledger can be either i) fetched on-chain or ii) partially/totally set by the input parameters of the call.
Changes introduced:
- Adds
Call::restore_ledger
extrinsic to recover a corrupted ledger; - Adds trait
frame_support::traits::currency::InspectLockableCurrency
to allow external pallets to read current locks given an account and lock ID; - Implements the
InspectLockableCurrency
in the pallet-balances. - Adds staking locks try-runtime checks (#3751)
[#3850]: Detect incorrect pre-image length when submitting a referenda
When submitting a referenda the proposal
is passed as argument.
The proposal
is most of the time a reference to a pre-image
and which also contains the length of the pre-image
. This pull request
adds some logic to check that if the pre-image
already exists and if it exists, it ensures that the length is passed correctly. This prevents that the referenda can not be executed because of a mismatch of this length.
[#3749]: pallet-xcm: deprecate execute and send in favor of execute_blob and send_blob
pallet-xcm has a new pair of extrinsics, execute_blob
and send_blob
.These are meant to be used instead of execute
and send
, which are now deprecated and will be removed eventually. These new extrinsics just require you to input the encoded XCM.
There's a new utility in PolkadotJS Apps for encoding XCMs you can use:
https://polkadot.js.org/apps/#/utilities/xcm
Just pass in the encoded XCM to the new extrinsics and you're done.
pallet-contracts takes the XCM encoded now as well. It follows the same API as execute_blob
and send_blob
.
[#3246]: Try State Hook for Beefy.
Invariants for storage items in the beefy pallet. Enforces the following Invariants:
Authorities
should not exceed theMaxAuthorities
capacity.NextAuthorities
should not exceed theMaxAuthorities
capacity.ValidatorSetId
must be present inSetIdSession
.
Rust compiler versions
This release was built and tested against the following versions of rustc.
Other versions may work.
Rust Stable: rustc 1.75.0 (82e1608df 2023-12-21)
Rust Nightly: rustc 1.77.0-nightly (ef71f1047 2024-01-21)
Runtimes
Westend
ποΈ Runtime size: 1.780 MB (1,865,983 bytes)
π Compressed: Yes, 79.13%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: westend-1010000 (parity-westend-0.tx24.au2)
π³οΈ system.setCode hash: 0x53f2a8c836850c83364be48f66e6589d1074091bdf74aee0da4eea66140e233a
π³οΈ authorizeUpgrade hash: 0xbfde5a2cd16cb520907a5dc142114d72d6d80fe4316c71a8d995a7d0a7292f03
π³οΈ Blake2-256 hash: 0x67b635216cfd9d40548f3a0d0c963015fb2b9a5b2dcf5171e3933b964a6f3838
π¦ IPFS: https://www.ipfs.io/ipfs/QmUJ2Sj81vFSD91fM2X3CLHB7shgCw3TD99tUy3JbZBZtk
Westend AssetHub
ποΈ Runtime size: 1.255 MB (1,315,803 bytes)
π Compressed: Yes, 80.47%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: westmint-1010000 (westmint-0.tx14.au1)
π³οΈ system.setCode hash: 0xd0743a2334e5b731394468ef5d9a28da460e5b9012fe01101da8f3916d732982
π³οΈ authorizeUpgrade hash: 0x3c45352f00158480b14c1b00c7e6fe477f3abc1fe2fa3b895d9a7450ebd5f56e
π³οΈ Blake2-256 hash: 0x2c4eaa1dc41f4cd8d1540c9763f65b32c0e42bae2079a303725b30fe08a62be7
π¦ IPFS: https://www.ipfs.io/ipfs/QmPCujTnuMMeepKkDpfcKdY2qoQ86MNP6YkFwQayXWFH6A
Westend BridgeHub
ποΈ Runtime size: 1.044 MB (1,094,763 bytes)
π Compressed: Yes, 78.76%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: bridge-hub-westend-1010000 (bridge-hub-westend-0.tx4.au1)
π³οΈ system.setCode hash: 0x75271ccc4d19c4c371729e9ccf4156ff2d57e6a4bd7269b18f562e3bc72ebbab
π³οΈ authorizeUpgrade hash: 0x834d1e79c1d94ff42b2e45c4999a6e832ed582dc54f784822f8f45569fc8085b
π³οΈ Blake2-256 hash: 0x6bf5e5050865ae320e7cd6f6b67bd8166200d7061e36cff4c8953b6035f4dbb8
π¦ IPFS: https://www.ipfs.io/ipfs/QmZ4AQk1SijHMjdk9BBFD91vkATVzF3RHo5omHucaH1XPm
Westend Collectives
ποΈ Runtime size: 1.117 MB (1,171,710 bytes)
π Compressed: Yes, 80.01%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: collectives-westend-1010000 (collectives-westend-0.tx5.au1)
π³οΈ system.setCode hash: 0x9c085a90bff4d645502cd254ff5654a70f01283f18b079540087379e87c8a880
π³οΈ authorizeUpgrade hash: 0x2a649e3001d32222adb3c38de2fddcfc0a7f6a2f5aff76e11cc1479dd188a1dc
π³οΈ Blake2-256 hash: 0x2cc1a6f1217ec8a2f453423f6882f17712a687d22fefffba20d6d0afa5a83939
π¦ IPFS: https://www.ipfs.io/ipfs/QmbaDBxyRYweKorR99a9MTgDAYtH4AHnVpo8QPVXx47Js9
Westend Coretime
ποΈ Runtime size: 0.931 MB (976,120 bytes)
π Compressed: Yes, 79.13%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: coretime-westend-1010000 (coretime-westend-0.tx0.au1)
π³οΈ system.setCode hash: 0xeec18105079e4a6d00ecec2c4cbefda0a65ff7e0b5d0a1008ae5dc09d82c27b5
π³οΈ authorizeUpgrade hash: 0x9b5d3b19d192c6275139e0a842a3bd5b4b99063d877424b5e0e96b8abc82283a
π³οΈ Blake2-256 hash: 0x9a47e27b3ad05651a2934706fa4ff57549750ec31a3613f56281d2f1ddc7f976
π¦ IPFS: https://www.ipfs.io/ipfs/Qme9k51jjQh9wWZZa1FwZ2pnE1BDspcnzccA3eCoHPve5g
Westend Glutton
ποΈ Runtime size: 0.572 MB (600,292 bytes)
π Compressed: Yes, 76.02%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: glutton-westend-1010000 (glutton-westend-0.tx1.au1)
π³οΈ system.setCode hash: 0xcc4a57e00a8ea2804fa55ee70af81ca74770a1f091d2050b39560a8b0a63d6fb
π³οΈ authorizeUpgrade hash: 0xc2c5b169e5446886103590883cdccd4565ef9c601eec1990d735d975a6a639ed
π³οΈ Blake2-256 hash: 0xdedaa76a44468fbae1f7140228661d07858f2971737b6e81515644782ff7789b
π¦ IPFS: https://www.ipfs.io/ipfs/QmbJxaAjfwF9NttSWjsPuaAKrdrnBWWyYHMsVfrs7sGNdS
Westend People
ποΈ Runtime size: 0.929 MB (974,084 bytes)
π Compressed: Yes, 79.24%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: people-westend-1010000 (people-westend-0.tx0.au1)
π³οΈ system.setCode hash: 0x1cd1a6577e3af5d05911710e5226ca33c53f9787292e121f78b04ae206ed7983
π³οΈ authorizeUpgrade hash: 0xabd1746ac07df242956029b6a7602fed63f00d4d5d7b9d16ee83cab57c513508
π³οΈ Blake2-256 hash: 0xdd371c8adaa10749f66051f995c1698f0c330fee8269866ee2d4d509ed52966e
π¦ IPFS: https://www.ipfs.io/ipfs/QmTSWxgTKGMYF8vQERoVwGcu2ZGLjRvqujDWfUUHYMPX42
Rococo
ποΈ Runtime size: 1.632 MB (1,711,567 bytes)
π Compressed: Yes, 79.67%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: rococo-1010000 (parity-rococo-v2.0-0.tx24.au0)
π³οΈ system.setCode hash: 0x4723700868d0fc23b9b541fc050003ffa9b01cf82eb7eb62d403599c6aea4c43
π³οΈ authorizeUpgrade hash: 0xc82a77d7804b3dbec4b44659fe0d9aa62a39bded1347749bfc41266e3550f7fa
π³οΈ Blake2-256 hash: 0x879ae913b831731382f78350390754484a42dea5bf353757ffd4f0582d9190f8
π¦ IPFS: https://www.ipfs.io/ipfs/QmUSjx4f4XM4XHdcXNcxSYnWhFEURJyBa7YLd6uFbazpmZ
Rococo AssetHub
ποΈ Runtime size: 1.262 MB (1,323,488 bytes)
π Compressed: Yes, 80.32%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: statemine-1010000 (statemine-0.tx14.au1)
π³οΈ system.setCode hash: 0x851f5dd4807669f96b12f62c428694c6c00186c3a0f25b74862cc312107d76c6
π³οΈ authorizeUpgrade hash: 0x84b3f87e44ef33b0052b49c9bc3752963fb22fe28768246a7548565d91963f44
π³οΈ Blake2-256 hash: 0xe3e72f8c468aa0ae5d1ae6543dfe7b90b748e16d1faace732d1063fcb303a17a
π¦ IPFS: https://www.ipfs.io/ipfs/QmSBuFrhFVqCcMiRNcTbeyCBRh9okFoc1c9HUqdHtHgxMp
Rococo BridgeHub
ποΈ Runtime size: 1.325 MB (1,389,404 bytes)
π Compressed: Yes, 78.29%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: bridge-hub-rococo-1010000 (bridge-hub-rococo-0.tx4.au1)
π³οΈ system.setCode hash: 0xcd0becffe847311a006ae069dd744ff916b08e6b083d5af39937e2e20b41c4ef
π³οΈ authorizeUpgrade hash: 0x2d6ed947d33bc7e00c44feffd368648ec7886d7d12d65f8cfb84e850e9004332
π³οΈ Blake2-256 hash: 0x502c2b4388b629bf46c5274dd61dceade66b1a1728f87b2ea6c8b0edc1856d59
π¦ IPFS: https://www.ipfs.io/ipfs/QmTo8dzc9FgmQjiiAK52dzfqjwfw8fTJGmphE3nGe1C77P
Rococo Contracts
ποΈ Runtime size: 1.251 MB (1,311,351 bytes)
π Compressed: Yes, 79.63%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: contracts-rococo-1010000 (contracts-rococo-0.tx6.au1)
π³οΈ system.setCode hash: 0x7b69f9b08b4464f9bed59b53a8a291fccd0a501d9fa0362c975a4fd6b49ad98c
π³οΈ authorizeUpgrade hash: 0x520183382ad3e68f8f1900028c80f940a9492fc6b70daa80d3d895bbdaaef7e4
π³οΈ Blake2-256 hash: 0x4e515c2e2f81fea690d209017da33b6ff59cf6ae019a979215058234302721f8
π¦ IPFS: https://www.ipfs.io/ipfs/QmQGsZdSerjBJALaRrvfT3h3ETKMQQPkZJCp4r4KamfseW
Rococo Coretime
ποΈ Runtime size: 0.940 MB (986,150 bytes)
π Compressed: Yes, 79.13%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: coretime-rococo-1010000 (coretime-rococo-0.tx0.au1)
π³οΈ system.setCode hash: 0x83dd2e3c82d0c0a9bce62ae93f613ab6981cb694da549a93eaadae26e472bfcc
π³οΈ authorizeUpgrade hash: 0xd225861d408c78f0fc52e36e07adcb1aa85189b1b4ab0f508505e4e080eb033c
π³οΈ Blake2-256 hash: 0x53e891901270a0f169040545a37d5225cd05d8915f60fead6e71623133b436a2
π¦ IPFS: https://www.ipfs.io/ipfs/QmRGj4gNHTSkB1mCrAMK9gdC9vjzXcYbVyu7es3wBvc1f3
Rococo People
ποΈ Runtime size: 0.934 MB (979,359 bytes)
π Compressed: Yes, 79.12%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: people-rococo-1010000 (people-rococo-0.tx0.au1)
π³οΈ system.setCode hash: 0x5a9569ebc29f927d998e1022a6ae5b7e2558559d6db7c8f0f556a296fb0af40d
π³οΈ authorizeUpgrade hash: 0x817c87c3db0c34abc59ccc3a2405767dd335e269cc2d6017351538ea39a3d18e
π³οΈ Blake2-256 hash: 0x3fc704e0641acc614bb0f479395f6f0c4118c6c187efba1972d6117cd0072813
π¦ IPFS: https://www.ipfs.io/ipfs/QmbbahqfjRQugSFMuPFhkrrres7T1ngSCuDodzKkme7f1t