Skip to content
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

FRAME: Consideration (abstraction over storage deposits) #1361

Merged
merged 13 commits into from
Sep 8, 2023

Conversation

gavofyork
Copy link
Member

@gavofyork gavofyork commented Sep 2, 2023

One half of paritytech/substrate#13666

Changes to Preimage pallet to utilize this will be in the follow-up PR.

This doesn't touch any live logic, so can go in without audit once reviewed.

@gavofyork gavofyork changed the title Consideration (abstraction over storage deposits) FRAME: Consideration (abstraction over storage deposits) Sep 2, 2023
@gavofyork gavofyork added the T1-FRAME This PR/Issue is related to core FRAME, the framework. label Sep 2, 2023
@gavofyork gavofyork marked this pull request as ready for review September 2, 2023 13:45
@gavofyork gavofyork requested review from KiChjang and removed request for KiChjang September 2, 2023 13:45
@gavofyork gavofyork closed this Sep 2, 2023
gavofyork and others added 5 commits September 8, 2023 12:35
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
@gavofyork
Copy link
Member Author

bot fmt

@command-bot
Copy link

command-bot bot commented Sep 8, 2023

@gavofyork https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/3620827 was started for your command "$PIPELINE_SCRIPTS_DIR/commands/fmt/fmt.sh". Check out https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/pipelines?page=1&scope=all&username=group_605_bot to know what else is being executed currently.

Comment bot cancel 2-74d768d3-4bab-42fd-a093-8b14dd2ce65e to cancel this command or bot cancel to cancel all commands in this pull request.

@command-bot
Copy link

command-bot bot commented Sep 8, 2023

@gavofyork Command "$PIPELINE_SCRIPTS_DIR/commands/fmt/fmt.sh" has finished. Result: https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/3620827 has finished. If any artifacts were generated, you can download them from https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/3620827/artifacts/download.

@gavofyork
Copy link
Member Author

bot merge

@mordamax
Copy link
Contributor

mordamax commented Sep 8, 2023

@gavofyork we've disabled merge function since it was used primarily for supporting companions chain. Now github has automerge feature which could be used instead

@gavofyork gavofyork merged commit bd0678a into master Sep 8, 2023
108 of 110 checks passed
@gavofyork gavofyork deleted the gav-consideration branch September 8, 2023 15:57
Daanvdplas pushed a commit that referenced this pull request Sep 11, 2023
* Consideration trait

* Avoid associated type in Consideration

* Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>

* Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>

* Update substrate/frame/support/src/traits/storage.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update substrate/frame/support/src/traits/tokens/fungible/mod.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* ".git/.scripts/commands/fmt/fmt.sh"

* Add

---------

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
gavofyork added a commit that referenced this pull request Sep 17, 2023
Make Preimage pallet use Consideration instead of handling deposits
directly.

Other half of paritytech/substrate#13666.
Depends/based on #1361.

Script for the lazy migration that should be run manually once:
[migrate-preimage-lazy.py](https://github.com/ggwpez/substrate-scripts/blob/master/migrate-preimage-lazy.py).

## TODO

- [x] Migration code.

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
bgallois pushed a commit to duniter/duniter-polkadot-sdk that referenced this pull request Mar 25, 2024
…1361)

* Consideration trait

* Avoid associated type in Consideration

* Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>

* Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>

* Update substrate/frame/support/src/traits/storage.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update substrate/frame/support/src/traits/tokens/fungible/mod.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* ".git/.scripts/commands/fmt/fmt.sh"

* Add

---------

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
bgallois pushed a commit to duniter/duniter-polkadot-sdk that referenced this pull request Mar 25, 2024
Make Preimage pallet use Consideration instead of handling deposits
directly.

Other half of paritytech/substrate#13666.
Depends/based on paritytech#1361.

Script for the lazy migration that should be run manually once:
[migrate-preimage-lazy.py](https://github.com/ggwpez/substrate-scripts/blob/master/migrate-preimage-lazy.py).

## TODO

- [x] Migration code.

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
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
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.
Projects
Status: Done
Status: Audited
Development

Successfully merging this pull request may close these issues.

6 participants