-
Notifications
You must be signed in to change notification settings - Fork 709
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use Message Queue
as DMP and XCMP dispatch queue
#1246
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
There is no |
Yes updated it. The migrations are now running automatic in |
claravanstaden
pushed a commit
to Snowfork/runtimes
that referenced
this pull request
Feb 5, 2024
ghost
mentioned this pull request
Feb 26, 2024
This was referenced Mar 1, 2024
bgallois
pushed a commit
to duniter/duniter-polkadot-sdk
that referenced
this pull request
Mar 25, 2024
(imported from paritytech/cumulus#2157) ## Changes This MR refactores the XCMP, Parachains System and DMP pallets to use the [MessageQueue](paritytech/substrate#12485) for delayed execution of incoming messages. The DMP pallet is entirely replaced by the MQ and thereby removed. This allows for PoV-bounded execution and resolves a number of issues that stem from the current work-around. All System Parachains adopt this change. The most important changes are in `primitives/core/src/lib.rs`, `parachains/common/src/process_xcm_message.rs`, `pallets/parachain-system/src/lib.rs`, `pallets/xcmp-queue/src/lib.rs` and the runtime configs. ### DMP Queue Pallet The pallet got removed and its logic refactored into parachain-system. Overweight message management can be done directly through the MQ pallet. Final undeployment migrations are provided by `cumulus_pallet_dmp_queue::UndeployDmpQueue` and `DeleteDmpQueue` that can be configured with an aux config trait like: ```rust parameter_types! { pub const DmpQueuePalletName: &'static str = \"DmpQueue\" < CHANGE ME; pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent; } impl cumulus_pallet_dmp_queue::MigrationConfig for Runtime { type PalletName = DmpQueuePalletName; type DmpHandler = frame_support::traits::EnqueueWithOrigin<MessageQueue, RelayOrigin>; type DbWeight = <Runtime as frame_system::Config>::DbWeight; } // And adding them to your Migrations tuple: pub type Migrations = ( ... cumulus_pallet_dmp_queue::UndeployDmpQueue<Runtime>, cumulus_pallet_dmp_queue::DeleteDmpQueue<Runtime>, ); ``` ### XCMP Queue pallet Removed all dispatch queue functionality. Incoming XCMP messages are now either: Immediately handled if they are Signals, enqueued into the MQ pallet otherwise. New config items for the XCMP queue pallet: ```rust /// The actual queue implementation that retains the messages for later processing. type XcmpQueue: EnqueueMessage<ParaId>; /// How a XCM over HRMP from a sibling parachain should be processed. type XcmpProcessor: ProcessMessage<Origin = ParaId>; /// The maximal number of suspended XCMP channels at the same time. #[pallet::constant] type MaxInboundSuspended: Get<u32>; ``` How to configure those: ```rust // Use the MessageQueue pallet to store messages for later processing. The `TransformOrigin` is needed since // the MQ pallet itself operators on `AggregateMessageOrigin` but we want to enqueue `ParaId`s. type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>; // Process XCMP messages from siblings. This is type-safe to only accept `ParaId`s. They will be dispatched // with origin `Junction::Sibling(…)`. type XcmpProcessor = ProcessFromSibling< ProcessXcmMessage< AggregateMessageOrigin, xcm_executor::XcmExecutor<xcm_config::XcmConfig>, RuntimeCall, >, >; // Not really important what to choose here. Just something larger than the maximal number of channels. type MaxInboundSuspended = sp_core::ConstU32<1_000>; ``` The `InboundXcmpStatus` storage item was replaced by `InboundXcmpSuspended` since it now only tracks inbound queue suspension and no message indices anymore. Now only sends the most recent channel `Signals`, as all prio ones are out-dated anyway. ### Parachain System pallet For `DMP` messages instead of forwarding them to the `DMP` pallet, it now pushes them to the configured `DmpQueue`. The message processing which was triggered in `set_validation_data` is now being done by the MQ pallet `on_initialize`. XCMP messages are still handed off to the `XcmpMessageHandler` (XCMP-Queue pallet) - no change here. New config items for the parachain system pallet: ```rust /// Queues inbound downward messages for delayed processing. /// /// Analogous to the `XcmpQueue` of the XCMP queue pallet. type DmpQueue: EnqueueMessage<AggregateMessageOrigin>; ``` How to configure: ```rust /// Use the MQ pallet to store DMP messages for delayed processing. type DmpQueue = MessageQueue; ``` ## Message Flow The flow of messages on the parachain side. Messages come in from the left via the `Validation Data` and finally end up at the `Xcm Executor` on the right. ![Untitled (1)](https://github.com/paritytech/cumulus/assets/10380170/6cf8b377-88c9-4aed-96df-baace266e04d) ## Further changes - Bumped the default suspension, drop and resume thresholds in `QueueConfigData::default()`. - `XcmpQueue::{suspend_xcm_execution, resume_xcm_execution}` errors when they would be a noop. - Properly validate the `QueueConfigData` before setting it. - Marked weight files as auto-generated so they wont auto-expand in the MR files view. - Move the `hypothetical` asserts to `frame_support` under the name `experimental_hypothetically` Questions: - [ ] What about the ugly `#[cfg(feature = \"runtime-benchmarks\")]` in the runtimes? Not sure how to best fix. Just having them like this makes tests fail that rely on the real message processor when the feature is enabled. - [ ] Need a good weight for `MessageQueueServiceWeight`. The scheduler already takes 80% so I put it to 10% but that is quite low. TODO: - [x] Remove c&p code after paritytech/polkadot#6271 - [x] Use `HandleMessage` once it is public in Substrate - [x] fix `runtime-benchmarks` feature paritytech/polkadot#6966 - [x] Benchmarks - [x] Tests - [ ] Migrate `InboundXcmpStatus` to `InboundXcmpSuspended` - [x] Possibly cleanup Migrations (DMP+XCMP) - [x] optional: create `TransformProcessMessageOrigin` in Substrate and replace `ProcessFromSibling` - [ ] Rerun weights on ref HW --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: Liam Aharon <[email protected]> Co-authored-by: joe petrowski <[email protected]> Co-authored-by: Kian Paimani <[email protected]> Co-authored-by: command-bot <>
github-merge-queue bot
pushed a commit
that referenced
this pull request
May 16, 2024
`cumulus-pallet-dmp-queue` is not needed anymore since #1246. The only logic that remains in the pallet is a lazy migration in the [`on_idle`](https://github.com/paritytech/polkadot-sdk/blob/8d62c13b2541920c37fb9d9ca733fcce91e96573/cumulus/pallets/dmp-queue/src/lib.rs#L158) hook. --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]>
hitchhooker
pushed a commit
to ibp-network/polkadot-sdk
that referenced
this pull request
Jun 5, 2024
`cumulus-pallet-dmp-queue` is not needed anymore since paritytech#1246. The only logic that remains in the pallet is a lazy migration in the [`on_idle`](https://github.com/paritytech/polkadot-sdk/blob/8d62c13b2541920c37fb9d9ca733fcce91e96573/cumulus/pallets/dmp-queue/src/lib.rs#L158) hook. --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]>
52 tasks
7 tasks
AurevoirXavier
added a commit
to darwinia-network/darwinia
that referenced
this pull request
Jun 25, 2024
AurevoirXavier
added a commit
to darwinia-network/darwinia
that referenced
this pull request
Jun 28, 2024
* Setup deps * Remove Koi from account migration test * paritytech/polkadot-sdk#1495 * Bump * paritytech/polkadot-sdk#1524 * !! paritytech/polkadot-sdk#1363 * paritytech/polkadot-sdk#1492 * paritytech/polkadot-sdk#1911 * paritytech/polkadot-sdk#1900 Signed-off-by: Xavier Lau <[email protected]> * paritytech/polkadot-sdk#1661 * paritytech/polkadot-sdk#2144 * paritytech/polkadot-sdk#2048 * paritytech/polkadot-sdk#1672 * paritytech/polkadot-sdk#2303 * paritytech/polkadot-sdk#1256 * Remove identity and vesting * Fixes * paritytech/polkadot-sdk#2657 * paritytech/polkadot-sdk#1313 * paritytech/polkadot-sdk#2331 * paritytech/polkadot-sdk#2409 part.1 * paritytech/polkadot-sdk#2767 * paritytech/polkadot-sdk#2521 Signed-off-by: Xavier Lau <[email protected]> * paritytech/polkadot-sdk#1222 * paritytech/polkadot-sdk#1234 part.1 * Satisfy compiler * XCM V4 part.1 * paritytech/polkadot-sdk#1246 * Remove pallet-democracy part.1 * paritytech/polkadot-sdk#2142 * paritytech/polkadot-sdk#2428 * paritytech/polkadot-sdk#3228 * XCM V4 part.2 * Bump * Build all runtimes * Build node * Remove pallet-democracy Signed-off-by: Xavier Lau <[email protected]> * Format * Fix pallet tests * Fix precompile tests * Format * Fixes * Async, remove council, common pallet config * Fix `ethtx-forward` test case (#1519) * Fix ethtx-forward tests * Format * Fix following the review * Fixes * Fixes * Use default impl * Benchmark helper * Bench part.1 * Bench part.2 * Bench part.3 * Fix all tests * Typo * Feat * Fix EVM tracing build * Reuse upstream `proof_size_base_cost()` (#1521) * Format issue * Fixes * Fix CI --------- Signed-off-by: Xavier Lau <[email protected]> Co-authored-by: Bear Wang <[email protected]>
ntn-x2
pushed a commit
to KILTprotocol/kilt-node
that referenced
this pull request
Jul 26, 2024
## fixes [KILTprotocol/ticket#3439](KILTprotocol/ticket#3439) ### notable Changes - rust version 1.7.4 (Toolchain and gitlab runner are updated) - the preimage_pallet is no longer using deposits, instead it uses [consideration](paritytech/polkadot-sdk#1361), which is an abstration over the balance. The exact footprint of an storage entry is used to calculate the cost storing entries. Might be interesting for our current deposit model. - The pallet-xcm introduced a new benchmarking logic ### Pallets - Removed cumulus_pallet_dmp_queue (Replaced by pallet_message_queue). There is a lazy migration provided, which is running automatically. Once the the [Complete event](paritytech/polkadot-sdk#1246) is emitted, we can delete the pallet. - Treasur introduced a new [spending support](paritytech/polkadot-sdk#1333), which is currently disabled. Might be interesting at some point, if other currencies are available. - `transfer` extrinsic in `pallet_balances` is removed. Will be a breaking change for Sporran. For other new introduced extrinsics, please have a lookin the diffs below. - Tips: A max tip amount has to be specified, which is currently set to 1_000_000 KILT ### Emulated Tests I am quite unhappy with the current state of the emulated tests. I would like to refactor those tests as described in this [issue](KILTprotocol/ticket#3241 (comment)). For this PR, I only fixed problems arised by updating the dependencies. Since the polkadot-runtime is no longer part of the Polkadot-SDK, the relay chain for Spiritnet has been changed to Rococo. The purpose of these tests is to ensure that the expectations of the xcm-configuration match the implementation. The specific relay chain used should not matter. ### XCM - XCM version 4 is out which is also the LTS for XCM. - In version 4 a new instruction `Transfer` is introduced, which needed to be denied by the Barrier - renaming of paramters: The `Multi` is removed: MultiLocation -> Location, MultiAsset -> Asset, ... ### Try-runtime In version 1.7.0 additional try-runtime tests are introduced, where it is tried to decode the whole storage of the chain. This error should only occur for chains which are still running on an ancient SDK version and will be fixed automatically in the next runtime upgrade. ### Weights Since a lot of new extrinsics are introduced, I updated all weights. ### Todos - [x] execute Benchmarking ## Metadata Diff to Develop Branch <details> <summary>Peregrine Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 4, 0, 0, 0, 136, 44, ... ] [Value([Changed(38, U8Change(60, 68)), Changed(159, U8Change(234, 215)), Changed(160, U8Change(147, 189)), Changed(161, U8Change(227, 216)), Changed(162, U8Change(241, 162)), Changed(163, U8Change(111, 114)), Changed(164, U8Change(61, 202)), Changed(165, U8Change(105, 13)), Changed(166, U8Change(98, 101)), Changed(167, U8Change(2, 1)), Changed(171, U8Change(38, 234)), Changed(172, U8Change(96, 147)), Changed(173, U8Change(149, 227)), Changed(174, U8Change(85, 241)), Changed(175, U8Change(192, 111)), Changed(176, U8Change(101, 61)), Changed(177, U8Change(102, 105)), Changed(178, U8Change(3, 98)), Changed(183, U8Change(164, 38)), Changed(184, U8Change(123, 96)), Changed(185, U8Change(125, 149)), Changed(186, U8Change(84, 85)), Changed(187, U8Change(73, 192)), Changed(188, U8Change(148, 101)), Changed(189, U8Change(201, 102)), Changed(190, U8Change(155, 3)), Changed(191, U8Change(1, 2)), Changed(195, U8Change(69, 164)), Changed(196, U8Change(191, 123)), Changed(197, U8Change(186, 125)), Changed(198, U8Change(81, 84)), Changed(199, U8Change(163, 73)), Changed(200, U8Change(16, 148)), Changed(201, U8Change(178, 201)), Changed(202, U8Change(35, 155)), Changed(207, U8Change(195, 69)), Changed(208, U8Change(179, 191)), Changed(209, U8Change(232, 186)), Changed(210, U8Change(211, 81)), Changed(211, U8Change(50, 163)), Changed(212, U8Change(115, 16)), Changed(213, U8Change(153, 178)), Changed(214, U8Change(13, 35)), Changed(219, U8Change(8, 195)), Changed(220, U8Change(0, 179)), Changed(221, U8Change(0, 232)), Changed(222, U8Change(0, 211)), Changed(223, U8Change(0, 50)), Added(224, 115), Added(225, 153), Added(226, 13), Added(227, 1), Added(228, 0), Added(229, 0), Added(230, 0), Added(231, 251), Added(232, 197), Added(233, 119), Added(234, 185), Added(235, 215), Added(236, 71), Added(237, 239), Added(238, 214), Added(239, 1), Added(240, 0), Added(241, 0), Added(242, 0), Added(243, 8), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 8: Sudo -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "remove_key", signature: SignatureDesc { args: [] } } - events changes: [≠] 1: KeyChanged ( old_sudoer: Option<T::AccountId>, ) ) [Signature(SignatureChange { args: [Changed(0, [Name(StringChange("old_sudoer", "old"))]), Added(1, ArgDesc { name: "new", ty: "T::AccountId" })] })] [≠] 2: SudoAsDone ( sudo_result: DispatchResult, ) ) [Name(StringChange("SudoAsDone", "KeyRemoved")), Signature(SignatureChange { args: [Removed(0, ArgDesc { name: "sudo_result", ty: "DispatchResult" })] })] [+] EventDesc { index: 3, name: "SudoAsDone", signature: SignatureDesc { args: [ArgDesc { name: "sudo_result", ty: "DispatchResult" }] } } [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 9: Configuration [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> <details> <summary>Spiritnet Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 1, 0, ... ] [Value([Changed(42, U8Change(60, 68)), Changed(163, U8Change(234, 215)), Changed(164, U8Change(147, 189)), Changed(165, U8Change(227, 216)), Changed(166, U8Change(241, 162)), Changed(167, U8Change(111, 114)), Changed(168, U8Change(61, 202)), Changed(169, U8Change(105, 13)), Changed(170, U8Change(98, 101)), Changed(171, U8Change(2, 1)), Changed(175, U8Change(38, 234)), Changed(176, U8Change(96, 147)), Changed(177, U8Change(149, 227)), Changed(178, U8Change(85, 241)), Changed(179, U8Change(192, 111)), Changed(180, U8Change(101, 61)), Changed(181, U8Change(102, 105)), Changed(182, U8Change(3, 98)), Changed(187, U8Change(164, 38)), Changed(188, U8Change(123, 96)), Changed(189, U8Change(125, 149)), Changed(190, U8Change(84, 85)), Changed(191, U8Change(73, 192)), Changed(192, U8Change(148, 101)), Changed(193, U8Change(201, 102)), Changed(194, U8Change(155, 3)), Changed(195, U8Change(1, 2)), Changed(199, U8Change(69, 164)), Changed(200, U8Change(191, 123)), Changed(201, U8Change(186, 125)), Changed(202, U8Change(81, 84)), Changed(203, U8Change(163, 73)), Changed(204, U8Change(16, 148)), Changed(205, U8Change(178, 201)), Changed(206, U8Change(35, 155)), Changed(211, U8Change(195, 69)), Changed(212, U8Change(179, 191)), Changed(213, U8Change(232, 186)), Changed(214, U8Change(211, 81)), Changed(215, U8Change(50, 163)), Changed(216, U8Change(115, 16)), Changed(217, U8Change(153, 178)), Changed(218, U8Change(13, 35)), Changed(223, U8Change(8, 195)), Changed(224, U8Change(0, 179)), Changed(225, U8Change(0, 232)), Changed(226, U8Change(0, 211)), Changed(227, U8Change(0, 50)), Added(228, 115), Added(229, 153), Added(230, 13), Added(231, 1), Added(232, 0), Added(233, 0), Added(234, 0), Added(235, 251), Added(236, 197), Added(237, 119), Added(238, 185), Added(239, 215), Added(240, 71), Added(241, 239), Added(242, 214), Added(243, 1), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 8), Added(248, 0), Added(249, 0), Added(250, 0), Added(251, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> ## Checklist: - [ ] I have verified that the code works - [ ] No panics! (checked arithmetic ops, no indexing `array[3]` use `get(3)`, ...) - [ ] I have verified that the code is easy to understand - [ ] If not, I have left a well-balanced amount of inline comments - [ ] I have [left the code in a better state](https://deviq.com/principles/boy-scout-rule) - [ ] I have documented the changes (where applicable) * Either PR or Ticket to update [the Docs](https://github.com/KILTprotocol/docs) * Link the PR/Ticket here
TarekkMA
pushed a commit
to moonbeam-foundation/polkadot-sdk
that referenced
this pull request
Aug 2, 2024
`cumulus-pallet-dmp-queue` is not needed anymore since paritytech#1246. The only logic that remains in the pallet is a lazy migration in the [`on_idle`](https://github.com/paritytech/polkadot-sdk/blob/8d62c13b2541920c37fb9d9ca733fcce91e96573/cumulus/pallets/dmp-queue/src/lib.rs#L158) hook. --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Ad96el
added a commit
to KILTprotocol/kilt-node
that referenced
this pull request
Aug 20, 2024
## fixes [KILTprotocol/ticket#3439](KILTprotocol/ticket#3439) ### notable Changes - rust version 1.7.4 (Toolchain and gitlab runner are updated) - the preimage_pallet is no longer using deposits, instead it uses [consideration](paritytech/polkadot-sdk#1361), which is an abstration over the balance. The exact footprint of an storage entry is used to calculate the cost storing entries. Might be interesting for our current deposit model. - The pallet-xcm introduced a new benchmarking logic ### Pallets - Removed cumulus_pallet_dmp_queue (Replaced by pallet_message_queue). There is a lazy migration provided, which is running automatically. Once the the [Complete event](paritytech/polkadot-sdk#1246) is emitted, we can delete the pallet. - Treasur introduced a new [spending support](paritytech/polkadot-sdk#1333), which is currently disabled. Might be interesting at some point, if other currencies are available. - `transfer` extrinsic in `pallet_balances` is removed. Will be a breaking change for Sporran. For other new introduced extrinsics, please have a lookin the diffs below. - Tips: A max tip amount has to be specified, which is currently set to 1_000_000 KILT ### Emulated Tests I am quite unhappy with the current state of the emulated tests. I would like to refactor those tests as described in this [issue](KILTprotocol/ticket#3241 (comment)). For this PR, I only fixed problems arised by updating the dependencies. Since the polkadot-runtime is no longer part of the Polkadot-SDK, the relay chain for Spiritnet has been changed to Rococo. The purpose of these tests is to ensure that the expectations of the xcm-configuration match the implementation. The specific relay chain used should not matter. ### XCM - XCM version 4 is out which is also the LTS for XCM. - In version 4 a new instruction `Transfer` is introduced, which needed to be denied by the Barrier - renaming of paramters: The `Multi` is removed: MultiLocation -> Location, MultiAsset -> Asset, ... ### Try-runtime In version 1.7.0 additional try-runtime tests are introduced, where it is tried to decode the whole storage of the chain. This error should only occur for chains which are still running on an ancient SDK version and will be fixed automatically in the next runtime upgrade. ### Weights Since a lot of new extrinsics are introduced, I updated all weights. ### Todos - [x] execute Benchmarking ## Metadata Diff to Develop Branch <details> <summary>Peregrine Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 4, 0, 0, 0, 136, 44, ... ] [Value([Changed(38, U8Change(60, 68)), Changed(159, U8Change(234, 215)), Changed(160, U8Change(147, 189)), Changed(161, U8Change(227, 216)), Changed(162, U8Change(241, 162)), Changed(163, U8Change(111, 114)), Changed(164, U8Change(61, 202)), Changed(165, U8Change(105, 13)), Changed(166, U8Change(98, 101)), Changed(167, U8Change(2, 1)), Changed(171, U8Change(38, 234)), Changed(172, U8Change(96, 147)), Changed(173, U8Change(149, 227)), Changed(174, U8Change(85, 241)), Changed(175, U8Change(192, 111)), Changed(176, U8Change(101, 61)), Changed(177, U8Change(102, 105)), Changed(178, U8Change(3, 98)), Changed(183, U8Change(164, 38)), Changed(184, U8Change(123, 96)), Changed(185, U8Change(125, 149)), Changed(186, U8Change(84, 85)), Changed(187, U8Change(73, 192)), Changed(188, U8Change(148, 101)), Changed(189, U8Change(201, 102)), Changed(190, U8Change(155, 3)), Changed(191, U8Change(1, 2)), Changed(195, U8Change(69, 164)), Changed(196, U8Change(191, 123)), Changed(197, U8Change(186, 125)), Changed(198, U8Change(81, 84)), Changed(199, U8Change(163, 73)), Changed(200, U8Change(16, 148)), Changed(201, U8Change(178, 201)), Changed(202, U8Change(35, 155)), Changed(207, U8Change(195, 69)), Changed(208, U8Change(179, 191)), Changed(209, U8Change(232, 186)), Changed(210, U8Change(211, 81)), Changed(211, U8Change(50, 163)), Changed(212, U8Change(115, 16)), Changed(213, U8Change(153, 178)), Changed(214, U8Change(13, 35)), Changed(219, U8Change(8, 195)), Changed(220, U8Change(0, 179)), Changed(221, U8Change(0, 232)), Changed(222, U8Change(0, 211)), Changed(223, U8Change(0, 50)), Added(224, 115), Added(225, 153), Added(226, 13), Added(227, 1), Added(228, 0), Added(229, 0), Added(230, 0), Added(231, 251), Added(232, 197), Added(233, 119), Added(234, 185), Added(235, 215), Added(236, 71), Added(237, 239), Added(238, 214), Added(239, 1), Added(240, 0), Added(241, 0), Added(242, 0), Added(243, 8), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 8: Sudo -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "remove_key", signature: SignatureDesc { args: [] } } - events changes: [≠] 1: KeyChanged ( old_sudoer: Option<T::AccountId>, ) ) [Signature(SignatureChange { args: [Changed(0, [Name(StringChange("old_sudoer", "old"))]), Added(1, ArgDesc { name: "new", ty: "T::AccountId" })] })] [≠] 2: SudoAsDone ( sudo_result: DispatchResult, ) ) [Name(StringChange("SudoAsDone", "KeyRemoved")), Signature(SignatureChange { args: [Removed(0, ArgDesc { name: "sudo_result", ty: "DispatchResult" })] })] [+] EventDesc { index: 3, name: "SudoAsDone", signature: SignatureDesc { args: [ArgDesc { name: "sudo_result", ty: "DispatchResult" }] } } [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 9: Configuration [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> <details> <summary>Spiritnet Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 1, 0, ... ] [Value([Changed(42, U8Change(60, 68)), Changed(163, U8Change(234, 215)), Changed(164, U8Change(147, 189)), Changed(165, U8Change(227, 216)), Changed(166, U8Change(241, 162)), Changed(167, U8Change(111, 114)), Changed(168, U8Change(61, 202)), Changed(169, U8Change(105, 13)), Changed(170, U8Change(98, 101)), Changed(171, U8Change(2, 1)), Changed(175, U8Change(38, 234)), Changed(176, U8Change(96, 147)), Changed(177, U8Change(149, 227)), Changed(178, U8Change(85, 241)), Changed(179, U8Change(192, 111)), Changed(180, U8Change(101, 61)), Changed(181, U8Change(102, 105)), Changed(182, U8Change(3, 98)), Changed(187, U8Change(164, 38)), Changed(188, U8Change(123, 96)), Changed(189, U8Change(125, 149)), Changed(190, U8Change(84, 85)), Changed(191, U8Change(73, 192)), Changed(192, U8Change(148, 101)), Changed(193, U8Change(201, 102)), Changed(194, U8Change(155, 3)), Changed(195, U8Change(1, 2)), Changed(199, U8Change(69, 164)), Changed(200, U8Change(191, 123)), Changed(201, U8Change(186, 125)), Changed(202, U8Change(81, 84)), Changed(203, U8Change(163, 73)), Changed(204, U8Change(16, 148)), Changed(205, U8Change(178, 201)), Changed(206, U8Change(35, 155)), Changed(211, U8Change(195, 69)), Changed(212, U8Change(179, 191)), Changed(213, U8Change(232, 186)), Changed(214, U8Change(211, 81)), Changed(215, U8Change(50, 163)), Changed(216, U8Change(115, 16)), Changed(217, U8Change(153, 178)), Changed(218, U8Change(13, 35)), Changed(223, U8Change(8, 195)), Changed(224, U8Change(0, 179)), Changed(225, U8Change(0, 232)), Changed(226, U8Change(0, 211)), Changed(227, U8Change(0, 50)), Added(228, 115), Added(229, 153), Added(230, 13), Added(231, 1), Added(232, 0), Added(233, 0), Added(234, 0), Added(235, 251), Added(236, 197), Added(237, 119), Added(238, 185), Added(239, 215), Added(240, 71), Added(241, 239), Added(242, 214), Added(243, 1), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 8), Added(248, 0), Added(249, 0), Added(250, 0), Added(251, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> ## Checklist: - [ ] I have verified that the code works - [ ] No panics! (checked arithmetic ops, no indexing `array[3]` use `get(3)`, ...) - [ ] I have verified that the code is easy to understand - [ ] If not, I have left a well-balanced amount of inline comments - [ ] I have [left the code in a better state](https://deviq.com/principles/boy-scout-rule) - [ ] I have documented the changes (where applicable) * Either PR or Ticket to update [the Docs](https://github.com/KILTprotocol/docs) * Link the PR/Ticket here
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
T1-FRAME
This PR/Issue is related to core FRAME, the framework.
T2-pallets
This PR/Issue is related to a particular pallet.
T6-XCM
This PR/Issue is related to XCM.
T8-polkadot
This PR/Issue is related to/affects the Polkadot network.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(imported from paritytech/cumulus#2157)
Changes
This MR refactores the XCMP, Parachains System and DMP pallets to use the MessageQueue for delayed execution of incoming messages. The DMP pallet is entirely replaced by the MQ and thereby removed. This allows for PoV-bounded execution and resolves a number of issues that stem from the current work-around.
All System Parachains adopt this change.
The most important changes are in
primitives/core/src/lib.rs
,parachains/common/src/process_xcm_message.rs
,pallets/parachain-system/src/lib.rs
,pallets/xcmp-queue/src/lib.rs
and the runtime configs.DMP Queue Pallet
The pallet got removed and its logic refactored into parachain-system. Overweight message management can be done directly through the MQ pallet.
The undeployment of the pallet commences through the
on_idle
hook step-by step and moves all the remaining messages into theDmpSink
.The pallet can be removed after the lazy migration is done and event
Completed
is emitted.XCMP Queue pallet
Removed all dispatch queue functionality. Incoming XCMP messages are now either: Immediately handled if they are Signals, enqueued into the MQ pallet otherwise.
New config items for the XCMP queue pallet:
How to configure those:
The
InboundXcmpStatus
storage item was replaced byInboundXcmpSuspended
since it now only tracks inbound queue suspension and no message indices anymore.Now only sends the most recent channel
Signals
, as all prio ones are out-dated anyway.Parachain System pallet
For
DMP
messages instead of forwarding them to theDMP
pallet, it now pushes them to the configuredDmpQueue
. The message processing which was triggered inset_validation_data
is now being done by the MQ palleton_initialize
.XCMP messages are still handed off to the
XcmpMessageHandler
(XCMP-Queue pallet) - no change here.New config items for the parachain system pallet:
How to configure:
Message Flow
The flow of messages on the parachain side. Messages come in from the left via the
Validation Data
and finally end up at theXcm Executor
on the right.Further changes
QueueConfigData::default()
.XcmpQueue::{suspend_xcm_execution, resume_xcm_execution}
errors when they would be a noop.QueueConfigData
before setting it.hypothetical
asserts toframe_support
under the nameexperimental_hypothetically
Questions:
#[cfg(feature = \"runtime-benchmarks\")]
in the runtimes? Not sure how to best fix. Just having them like this makes tests fail that rely on the real message processor when the feature is enabled.MessageQueueServiceWeight
. The scheduler already takes 80% so I put it to 10% but that is quite low.TODO:
HandleMessage
once it is public in Substrateruntime-benchmarks
feature Propagateruntime-benchmarks
feature polkadot#6966InboundXcmpStatus
toInboundXcmpSuspended
TransformProcessMessageOrigin
in Substrate and replaceProcessFromSibling