Skip to content

Polkadot v1.9.0

Compare
Choose a tag to compare
@EgorPopelyaev EgorPopelyaev released this 19 Mar 14:23
· 2 commits to release-polkadot-v1.9.0 since this release
3c3d6fc

This release contains the changes from polkadot-v1.8.0 to polkadot-v1.9.0.

Changelog

Changelog for Node Dev

[#3187]: Retrying an execution on failed runtime construction

If a runtime construction error happened during the execution request, then the artifact is re-prepared and the execution request is retried at most once. See also the related issue.

[#3233]: provisioner: allow multiple cores assigned to the same para

Enable supplying multiple backable candidates to the paras_inherent pallet for the same paraid.

[#3447]: Use generic hash for runtime wasm in resolve_state_version_from_wasm

Changes the runtime hash algorithm used in resolve_state_version_from_wasm from DefaultHasher to a caller-provided one (usually HashingFor<Block>). Fixes a bug where the runtime wasm was being compiled again when it was not needed, because the hash did not match.

Changelog for Node Operator

[#3523]: Fix crash of synced parachain node run with --sync=warp

Fix crash of SyncingEngine when an already synced parachain node is run with --sync=warp (issue #3496).
The issue manifests itself by errors in the logs:

[Parachain] Cannot set warp sync target block: no warp sync strategy is active.
[Parachain] Failed to set warp sync target block header, terminating `SyncingEngine`.

Followed by a stream of messages:

[Parachain] Protocol command streams have been shut down

[#3231]: Allow parachain which acquires multiple coretime cores to make progress

Adds the needed changes so that parachains which acquire multiple coretime cores can still make progress.
Only one of the cores will be able to be occupied at a time.
Only works if the ElasticScalingMVP node feature is enabled in the runtime and the block author validator is updated to include this change.

[#3510]: Fix multi-collator parachain transition to async backing

The dynamic Aura slot duration, introduced in PR#3211, didn't take the block import pipeline into account. The result was the parachain backed by multiple collators not being able to keep producing blocks after its runtime was upgraded to support async backing, requiring to
restart all the collator nodes. This change fixes the issue, introducing the dynamic Aura slot duration into the block import pipeline.

[#3504]: add prometheus label "is_rate_limited" to rpc calls

This PR adds a label "is_rate_limited" to the prometheus metrics "substrate_rpc_calls_time" and "substrate_rpc_calls_finished" than can be used to distinguish rate-limited RPC calls from other RPC calls. Because rate-limited RPC calls may take tens of seconds.

Changelog for Runtime Dev

[#3491]: Remove Deprecated OldWeight

Removed deprecated sp_weights::OldWeight type. Use [weight_v2::Weight] instead.

[#3002]: PoV Reclaim Runtime Side

Adds a mechanism to reclaim proof size weight.

  1. Introduces a new SignedExtension that reclaims the difference
    between benchmarked proof size weight and actual consumed proof size weight.
  2. Introduces a manual mechanism, StorageWeightReclaimer, to reclaim excess storage weight for situations
    that require manual weight management. The most prominent case is the on_idle hook.
  3. Adds the storage_proof_size host function to the PVF. Parachain nodes should add it to ensure compatibility.

To enable proof size reclaiming, add the host storage_proof_size host function to the parachain node. Add the
StorageWeightReclaim SignedExtension to your runtime and enable proof recording during block import.

[#3378]: Remove deprecated GenesisConfig

Removes deprecated type GenesisConfig, it was replaced by RuntimeGenesisConfig on May 24 of 2023. The type GenesisConfig was deprecated on May 24 of 2023 #14210

[#1554]: Runtime Upgrade ref docs and Single Block Migration example pallet

frame_support::traits::GetStorageVersion::current_storage_version has been renamed frame_support::traits::GetStorageVersion::in_code_storage_version.
A simple find-replace is sufficient to handle this change.

[#3456]: Removed pallet::getter usage from pallet-collective

This PR removes pallet::getter usage from pallet-collective, and updates dependant code accordingly.
The syntax StorageItem::<T, I>::get() should be used instead.

[#1781]: Multi-Block-Migrations, poll hook and new System Callbacks

The major things that this MR touches are:

Multi-Block-Migrations: pallet-migrations is introduced that can be configured in the System of a runtime to act as multi-block migrator. The migrations pallet then in turn receives the list of MBMs as config parameter. The list of migrations can be an aggregated
tuple of SteppedMigration trait implementation.
It is paramount that the migrations pallet is configured in System once it is deployed. A test is in place to double check this.

To integrate this into your runtime, it is only necessary to change the return type of initialize_block to RuntimeExecutiveMode. For extended info please see #1781.

poll: a new pallet hook named poll is added. This can be used for places where the code that should be executed is not deadline critical. Runtime devs are advised to skim their usage of on_initialize and on_finalize to see whether they can be replace with poll. poll is not guaranteed to be called each block. In fact it will not be called when MBMs are ongoing.

System Callbacks: The system pallet gets five new config items - all of which can be safely set to () as default. They are:

  • SingleBlockMigrations: replaces the Executive now for configuring migrations.
  • MultiBlockMigrator: the pallet-migrations would be set here, if deployed.
  • PreInherents: a hook that runs before any inherent.
  • PostInherents: a hook to run between inherents and poll/MBM logic.
  • PostTransactions: a hook to run after all transactions but before on_idle.

[#3377]: Permissioned contract deployment

This PR introduces two new config types that specify the origins allowed to upload and instantiate contract code. However, this check is not enforced when a contract instantiates another contract.

[#3532]: Remove deprecated trait Store

The deprecated trait Store feature has been removed from the codebase. Please remove usages of generate_store macro from your pallets and access the storage through generics. For example, <Self as Store>::StoredRange::mutate will need to be updated to StoredRange::<T>::mutate.

[#2393]: [XCMP] Use the number of 'ready' pages in XCMP suspend logic

Semantics of the suspension logic in the XCMP queue pallet change from using the number of total pages to the number of 'ready' pages. The number of ready pages is now also exposed by the MessageQueue pallet to downstream via the queue footprint.

[#3505]: Removes as [disambiguation_path] from the required syntax in derive_impl

This PR removes the need to specify as [disambiguation_path] for cases where the trait definition resides within the same scope as default impl path.

For example, in the following macro invocation

#[derive_impl(frame_system::config_preludes::TestDefaultConfig as frame_system::DefaultConfig)]
impl frame_system::Config for Runtime {
  ...
}

the trait DefaultConfig lies within the frame_system scope and TestDefaultConfig impls the DefaultConfig trait.

Using this information, we can compute the disambiguation path internally, thus removing the need of an explicit specification:

#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
impl frame_system::Config for Runtime {
  ...
}

In cases where the trait lies outside this scope, we would still need to specify it explicitly, but this should take care of most (if not all) uses of derive_impl within FRAME's context.

[#3460]: Repot all templates

This PR moves all templates into a single folder in the polkadot-sdk repo (/templates) and unifies their crate names as well. Most notably, the crate name for what was formerly known as node-template is no solochain-template-node. The other two crates in the template are
consequently called: solochain-runtime-template and pallet-solochain-template. The other two template crate names follow a similar patter, just replacing solochain with parachain or minimal.

This PR is part of a bigger step toward automating the template repositories, see the following: #3155

[#3643]: Fix weight refund for pallet_collator_selection::set_candidacy_bond

This PR implements the weight refund of pallet_collator_selection::set_candidacy_bond to account for no iterations over the candidate list when the candidacy bond is decreased.

[#3665]: Revert "FRAME Create TransactionExtension as a replacement for SignedExtension (#2280)"

This PR reverts the PR which introduced TransactionExtension to replace SignedExtension.

[#3371]: removed pallet::getter from example pallets

This PR removes all the pallet::getter usages from the template pallets found in the Substrate and Cumulus template nodes, and from the Substrate example pallets.
The purpose is to discourage developers to use this macro, that is currently being removed and soon will be deprecated.

[#3574]: Generate test functions for each benchmark with benchmarking v2

This PR fixes an issue where using impl_benchmark_test_suite macro within modules that use the benchmarking v2 macros (#[benchmarks] and #[instance_benchmarks]) always produced a single test called test_benchmarks instead of a separate benchmark test for every benchmark (noted with the #[benchmark] macro).

By using this macro from now on, new tests will be created named test_benchmark_{name} where name is the name of the benchmark function. Those tests will be nested inside the module intended for benchmark functions.

Also, when using impl_benchmark_test_suite inside the module, the import of such marco will not be necessary, so any explicit import of it will be marked as unused, the same way it works for v1 macros so far.

[#3453]: [pallet-nomination-pools]: chill is permissionless if depositor's stake is less than min_nominator_bond

Nomination pools currently have an issue whereby member funds cannot be unbonded if the depositor bonded amount is less than MinNominatorBond.
This PR makes the chill function permissionless if this condition is met.
Consequently, nominate function also checks for depositor to have at least MinNominatorBond, and returns MinimumBondNotMet error if not.

[#3606]: [pallet_contracts] mark lock/unlock_delegate_dependency as stable

Lock and unlock delegate dependency are stable now, so we can mark them as such.

[#3589]: Removed pallet::getter usage from pallet-im-online

This PR removes pallet::getter usage from pallet-im-online, and updates dependant code accordingly.
The syntax StorageItem::<T, I>::get() should be used instead.

[#3411]: add Encointer as trusted teleporter for Westend

add Encointer as trusted teleporter for Westend with ParaId 1003

[#3454]: Introduce storage attr macro #[disable_try_decode_storage] and set it on System::Events and ParachainSystem::HostConfiguration

Allows marking storage items with #[disable_try_decode_storage], which disables that storage item from being decoded during try_decode_entire_state calls.

Applied the attribute to System::Events to close #2560.
Applied the attribute to ParachainSystem::HostConfiguration to resolve periodic issues with it.

[#1378]: Construct Runtime V2 - An outer macro approach to define the runtime

Introduces #[frame_support::runtime] that can be attached to a mod to define a runtime. The items in this mod can be attached to the following attributes to define the key components of the runtime.

  1. #[runtime::runtime] attached to a struct defines the main runtime
  2. #[runtime::derive] attached to the runtime struct defines the types generated by the runtime
  3. #[runtime::pallet_index] must be attached to a pallet to define its index
  4. #[runtime::disable_call] can be optionally attached to a pallet to disable its calls
  5. #[runtime::disable_unsigned] can be optionally attached to a pallet to disable unsigned calls
  6. A pallet instance can be defined as TemplateModule: pallet_template<Instance>
    An optional attribute can be defined as #[frame_support::runtime(legacy_ordering)] to ensure that the order of hooks is same as the order of pallets (and not based on the pallet_index). This is to support legacy runtimes and should be avoided for new ones.

[#3636]: [pallet_broker] Fix Linear::adapt_price behavior at zero

This fixes the behaviour of Linear which is the default implementation of the AdaptPrice trait in the broker pallet. Previously if cores were offered but not sold in only one sale, the price would be set to zero and due to the logic being purely multiplicative, the price would stay at 0 indefinitely.

[#3540]: [pallet-contracts] Only allow non-deterministic code to be uploaded with Determinism::Relaxed

The upload_code extrinsic, will now only allow non-deterministic code to be uploaded with the Determinism::Relaxed flag.
This prevent an attacker from uploading "deterministic" code with the Determinism::Relaxed flag, preventing the code to be instantiated for on-chain execution.

[#3403]: Add claim_assets extrinsic to pallet-xcm

There's a new extrinsic in pallet-xcm that needs a new configuration item for its benchmarks.
It's a simple function in pallet_xcm::benchmarking::Config, get_asset, that returns a valid asset handled by the AssetTransactor of the chain.
If you're already using pallet-xcm-benchmarks, then you already have this function there and can just copy and paste it.

[#3412]: [FRAME] Add genesis test and remove some checks

The construct_runtime macro now generates a test to assert that all GenesisConfigs of all pallets can be build within the runtime. This ensures that the BuildGenesisConfig runtime API works.
Further, some checks from a few pallets were removed to make this pass.

[#3324]: Fix weight calculation and event emission in pallet-membership

Bug fix for the membership pallet to use correct weights. Also no event will be emitted anymore when change_key is called with identical accounts.

[#3513]: Fix call enum's metadata regression

This PR fixes an issue where in the metadata of all FRAME-based chains, the documentation for all extrinsic/call/transactions has been replaced by a single line saying "see Pallet::name".

Many wallets display the metadata of transactions to the user before signing, and this bug might have affected this process.

Changelog for Runtime User

[#3403]: Add claim_assets extrinsic to pallet-xcm

There's a new extrinsic in pallet-xcm for claiming assets.
This means that if your assets ever get trapped while teleporting or doing reserve asset transfers, you can easily claim them by calling this new extrinsic.

[#3639]: Prevents staking controllers from becoming stashes of different ledgers; Ensures that no ledger in bad state is mutated.

This PR introduces a fix to the staking logic which prevents an existing controller from bonding as a stash of another ledger, which lead to staking ledger inconsistencies down the line. In addition, it adds a few (temporary) gates to prevent ledgers that are already in a bad state from mutating its state.

In summary:

  • Checks if stash is already a controller when calling Call::bond and fails if that's the case;
  • Ensures that all fetching ledgers from storage are done through the StakingLedger API;
  • Ensures that a Error::BadState is returned if the ledger bonding is in a bad state. This prevents bad ledgers from mutating (e.g. bond_extra, set_controller, etc) its state and avoid further data inconsistencies.
  • Prevents stashes which are controllers or another ledger from calling set_controller, since that may lead to a bad state.
  • Adds further try-state runtime checks that check if there are ledgers in a bad state based on their bonded metadata.

[#3513]: Fix call enum's metadata regression

This PR fixes an issue where in the metadata of all FRAME-based chains, the documentation for all extrinsic/call/transactions has been replaced by a single line saying "see Pallet::name".

Many wallets display the metadata of transactions to the user before signing, and this bug might have affected this process.

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.757 MB (1,842,646 bytes)
πŸ—œ Compressed:               Yes, 79.19%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             westend-1009000 (parity-westend-0.tx24.au2)
πŸ—³οΈ system.setCode hash:      0x701d8f5af35d2788db7406852b7b9c31fc43a3c643475ecba7b7d39962e170e7
πŸ—³οΈ authorizeUpgrade hash:    0xef9b696bb7fb109542b07b4f11cf6ae78181ffa644347d30d06f50d23c30cbca
πŸ—³οΈ Blake2-256 hash:          0xfc05f1863c0050bac8cb117c094232576bf63b8315415e95c77d506ef656a960
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmYwmvhKKryNv5VAAdX8uA8cdoM2qpYZt5rDsCrGhs5DTx

Westend AssetHub

πŸ‹οΈ Runtime size:             1.269 MB (1,331,063 bytes)
πŸ—œ Compressed:               Yes, 80.34%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             westmint-1009000 (westmint-0.tx14.au1)
πŸ—³οΈ system.setCode hash:      0x7da5685a7412845f68817e71792e7220ad560312875142575892e355567c837f
πŸ—³οΈ authorizeUpgrade hash:    0x56270c019b5d6c8806937b34c4d64a0d7e4875ed208dbf6a09d711aca3a9d7a7
πŸ—³οΈ Blake2-256 hash:          0x80a9c31324a26e22639b3a79d6c3662c6aa0a718a537bd8472277155b8bbb104
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmXLQBjCzre6RyhoEtRiT3BnXqZ7h7BS1Jx8rmXZQapcoW

Westend BridgeHub

πŸ‹οΈ Runtime size:             1.039 MB (1,089,313 bytes)
πŸ—œ Compressed:               Yes, 78.85%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             bridge-hub-westend-1009000 (bridge-hub-westend-0.tx4.au1)
πŸ—³οΈ system.setCode hash:      0xe7322884b8de41a1cdf0442d8f085963facf3f7a436310c8d11c85d50dc173e1
πŸ—³οΈ authorizeUpgrade hash:    0xb7e6b2c5a97d893bfe7edf0c3c921a559597e8a697daa91846a9cce09204c9c1
πŸ—³οΈ Blake2-256 hash:          0x65b5e41a926fd4fcc07c99feee2695081b92f89b0f66f8302234ee4d9b5cd8d1
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmUHja1UXwwgFSGT2z9PY8rKkWdni6ewYSxbZtqy1MQuC8

Westend Collectives

πŸ‹οΈ Runtime size:             1.114 MB (1,167,964 bytes)
πŸ—œ Compressed:               Yes, 80.00%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             collectives-westend-1009000 (collectives-westend-0.tx5.au1)
πŸ—³οΈ system.setCode hash:      0x57a82d883cac7decbb13bac4b285120684631c69bf895ee2b277950915959acd
πŸ—³οΈ authorizeUpgrade hash:    0x0af556ed32430a8719965d175a2cca671ab9e26415ecbfe11d96838107f258ed
πŸ—³οΈ Blake2-256 hash:          0xdbe90c603ba6a766a4c1f51c8759512550b4a9c0ec0a2a7d228f453ab0bc2e72
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmXre8D1LAA9QZSg58j6AsYtefkR4ASjjjXvwPYAC5WNsj

Westend Coretime

πŸ‹οΈ Runtime size:             0.935 MB (980,253 bytes)
πŸ—œ Compressed:               Yes, 79.12%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             coretime-westend-1009000 (coretime-westend-0.tx0.au1)
πŸ—³οΈ system.setCode hash:      0xec597998dab53e6fffe963dbbe1854598e6f51a81b13609e61167d015a75910e
πŸ—³οΈ authorizeUpgrade hash:    0x432e4453c5a7ac3872fdcb97c3d642d1e41e37509fa1aa32858e1681407e6638
πŸ—³οΈ Blake2-256 hash:          0x03eaab8eedbc97b35b211ab6af2954b4f17ec13d27386b4da3790b109c62ec63
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmfGU5rtbkYW1ua25ff9mcJtFpPRsfd7DULNZA6JWgdMtZ

Westend Glutton

πŸ‹οΈ Runtime size:             0.576 MB (603,629 bytes)
πŸ—œ Compressed:               Yes, 76.17%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             glutton-westend-1009000 (glutton-westend-0.tx1.au1)
πŸ—³οΈ system.setCode hash:      0x7193243316a9883819b555eb91910c6564e3721d8880ed17d1a17eae243949be
πŸ—³οΈ authorizeUpgrade hash:    0x6bfeb46ffe9eb9aecbaf928dc6049b8e3197a65cfcb51e31e8740b1a0ecb084a
πŸ—³οΈ Blake2-256 hash:          0xa75c2d0d45f22571a7e9564411fa4af45beabdc7124c7ecb2074ee40e1195bea
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmVWRMnumAjt9DwagjphHB8fFYqtbwo5nwhdPkPiV7KV2u

Westend People

πŸ‹οΈ Runtime size:             0.938 MB (983,363 bytes)
πŸ—œ Compressed:               Yes, 79.14%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             people-westend-1009000 (people-westend-0.tx0.au1)
πŸ—³οΈ system.setCode hash:      0x34a20df5ac6f7582fd844108466dfe9c0d31cf6a73352e10f8b875e37ee8c9b2
πŸ—³οΈ authorizeUpgrade hash:    0xeb6b3fd2fde1c67c2b4f0cccda9785c3ba7109eebe8973947ec8f64ff1d1a224
πŸ—³οΈ Blake2-256 hash:          0xd6a0dcf6172aa84c8e4d850815cef8e622629b970f67dd08ec38cdf65680e394
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmTHtnfWLk28JdUYQJ8zaFVpCNbqp3DvBKhtQYYhB5Zyb4

Rococo

πŸ‹οΈ Runtime size:             1.610 MB (1,687,924 bytes)
πŸ—œ Compressed:               Yes, 79.69%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             rococo-1009000 (parity-rococo-v2.0-0.tx24.au0)
πŸ—³οΈ system.setCode hash:      0x6816e625e4bbe14e034cdaccf231a3089c22f2feeb41d9685f82db0a53310e8d
πŸ—³οΈ authorizeUpgrade hash:    0x50c6d0acf0b0138e44e0d8622fa7d68505f69ab14c3ad0465f99d5c9b32f0c56
πŸ—³οΈ Blake2-256 hash:          0xb0e7f8643af6be330798d8e9a228c77adc4232a39a9f78c2e3099230665cfd69
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmfJNgagapjtjeyyReSffy8pHsrS4ruocPQXUP1VCrwPsE

Rococo AssetHub

πŸ‹οΈ Runtime size:             1.256 MB (1,317,340 bytes)
πŸ—œ Compressed:               Yes, 80.44%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             statemine-1009000 (statemine-0.tx14.au1)
πŸ—³οΈ system.setCode hash:      0x0fdf5ece8dee4a5ba1843a35162ff189eb01da5269348c59c612c21891d6c54b
πŸ—³οΈ authorizeUpgrade hash:    0x7bf464a80759214d869d8881406eef2fd1bdb8b348a2e245dea439434536bad9
πŸ—³οΈ Blake2-256 hash:          0xc10a3135772b7509ff55bfb597f8da238d2b96292a9310db636c54994bb928b2
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmRVvp1KqyC4rxmtpbAhNFwX42soWzmq6LGv3CjdTx9GhT

Rococo BridgeHub

πŸ‹οΈ Runtime size:             1.320 MB (1,384,500 bytes)
πŸ—œ Compressed:               Yes, 78.48%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             bridge-hub-rococo-1009000 (bridge-hub-rococo-0.tx4.au1)
πŸ—³οΈ system.setCode hash:      0x67951cf2ba12574ea4c0ea39101f8636592a3bee96192bc2041b43c6275238a0
πŸ—³οΈ authorizeUpgrade hash:    0x09fc3e588ed056ac33b8e61db068102927896f81577a690b1736de73026c318b
πŸ—³οΈ Blake2-256 hash:          0x86e87b03a8c7e35ccf41d45db71dfc3b9cb050240f82cd016886cd1fb40cb270
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmVoCMcqU8fviekBgjPbrjR1NkNXhCDA4ECQPVXd7XzGZ1

Rococo Contracts

πŸ‹οΈ Runtime size:             1.259 MB (1,319,676 bytes)
πŸ—œ Compressed:               Yes, 79.73%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             contracts-rococo-1009000 (contracts-rococo-0.tx6.au1)
πŸ—³οΈ system.setCode hash:      0xacb85de0cc955734eaa1042e261216f7fd9099a0543022f218bb1347cad60c9b
πŸ—³οΈ authorizeUpgrade hash:    0xacf7394c3a2b069da76e90f937eb5ad7b74115de74ca03ada594516bcd203204
πŸ—³οΈ Blake2-256 hash:          0xbb72adf22822f80092bffc193728d6ab592793e99136ae4ed63e021ad0cbc3f0
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmbVMENwGyZTwtWGmLTxeXzPrEf1cdQhy8guNYV8yNyGAu

Rococo Coretime

πŸ‹οΈ Runtime size:             0.940 MB (986,141 bytes)
πŸ—œ Compressed:               Yes, 79.08%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             coretime-rococo-1009000 (coretime-rococo-0.tx0.au1)
πŸ—³οΈ system.setCode hash:      0xad73d11fa61eda0ca0f14f89181a5f913181e86b9cbf6d0f0262acfc870376a7
πŸ—³οΈ authorizeUpgrade hash:    0x14326845e49b7aabcce6a1b6b734adbbdd7fc0e1259edc267b3f4897f1115df5
πŸ—³οΈ Blake2-256 hash:          0x0ad916eb630842eab648adae6be05297b89e134899064f447c768db811eb351d
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/Qmd4RdgSmaP5shtELMnrzUhEMHJDDRnEFLe19MrfSUbSq5

Rococo People

πŸ‹οΈ Runtime size:             0.936 MB (981,117 bytes)
πŸ—œ Compressed:               Yes, 79.18%
✨ Reserved meta:            OK - [6D, 65, 74, 61]
🎁 Metadata version:         V14
πŸ”₯ Core version:             people-rococo-1009000 (people-rococo-0.tx0.au1)
πŸ—³οΈ system.setCode hash:      0x0d933218a2b0a6fd7ce1949e336db1f850d9c41c316871ce651134b1170b3673
πŸ—³οΈ authorizeUpgrade hash:    0x7021f2e39278b7cd1caa751c01a888a94b4d33b5e506d636ec294e69598d9c56
πŸ—³οΈ Blake2-256 hash:          0x351b1acb5278c62caea851be964058c21de7da2025473a80047d1e5ad73a9cfb
πŸ“¦ IPFS:                     https://www.ipfs.io/ipfs/QmS1uW8KgWDREdgmvMneWBM22Ts7Ev5MmdMADNLPfjfgse