Skip to content

Remove deprecated calls in cumulus-parachain-system#5439

Merged
ggwpez merged 9 commits intoparitytech:masterfrom
gui1117:gui-parachain-system-remove-calls
Aug 27, 2024
Merged

Remove deprecated calls in cumulus-parachain-system#5439
ggwpez merged 9 commits intoparitytech:masterfrom
gui1117:gui-parachain-system-remove-calls

Conversation

@gui1117
Copy link
Copy Markdown
Contributor

@gui1117 gui1117 commented Aug 22, 2024

Calls were written to be removed after June 2024. This PR removes them.

This PR will break users using those calls. The call won't be decodable by the runtime, so it should fail early with no consequences. The functionality must be same as before, users will just need to use the calls in System.

@paritytech-cicd-pr
Copy link
Copy Markdown

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: test-linux-stable 2/3
Logs: https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/7101192

@gui1117 gui1117 changed the title Remove deprecated calls in cumulus-parachain-system WIP: Remove deprecated calls in cumulus-parachain-system Aug 22, 2024
@gui1117 gui1117 changed the title WIP: Remove deprecated calls in cumulus-parachain-system Remove deprecated calls in cumulus-parachain-system Aug 22, 2024
Copy link
Copy Markdown
Member

@ggwpez ggwpez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙏

PS: The semver check is buggy, but the prdoc looks good here.

@ggwpez ggwpez added the T2-pallets This PR/Issue is related to a particular pallet. label Aug 22, 2024
})
}
}
if let Call::set_validation_data { .. } = call {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need this (=

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

set_validation_data is an inherent, inherent should not be validated by validate_unsigned, they only go through pre_dispatch.

The default implementation (by construct_runtime) is to consider all calls invalid in validate_unsigned and all calls valid in pre_dispatch. So the default implementation is what we want here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed the behavior in construct runtime is allow calls in pre_dispatch and automatically reject any calls that don't have ValidateUnsigned::validate_unsigned impl.

On a different note, inherents are never "validated" as transactions and never enter the transaction pool, they are just included in the block and applied along with other regular transactions. Specifically when inherents are applied, the Applyable impl of UncheckedExtrinsic calls on ValidateUnsigned::pre_dispatch. ValidateUnsigned::validate_unsigned is called only when validating a checked extrinsic in frame_executive, which is called when a transaction tries to enter the transaction pool, which should never happen for inherents.

set_validation_data must be called exactly once per block, as an inherent, at the beginning of the block. This means it was never correct to have a ValidateUnsigned validation for it. It should never be allowed as an unsigned transaction, only as an inherent.

Also, for peace of mind, all of the tests, including zombienet tests, are passing with the changes in this PR. The chain doesn't work without calls to set_validation_data every block, so the fact that the tests pass reinforces the reasoning.

Copy link
Copy Markdown
Contributor

@lexnv lexnv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for contributing once again @gui1117 🙏

@gui1117
Copy link
Copy Markdown
Contributor Author

gui1117 commented Aug 27, 2024

CI is good, non-mandatory gitlab-subsystem-benchmark-approval-voting is failing, but it must not be related to the PR.

@ggwpez ggwpez added this pull request to the merge queue Aug 27, 2024
Merged via the queue into paritytech:master with commit f0323d5 Aug 27, 2024
ordian added a commit that referenced this pull request Aug 27, 2024
* master: (36 commits)
  Bump the ci_dependencies group across 1 directory with 2 updates (#5401)
  Remove deprecated calls in cumulus-parachain-system (#5439)
  Make the PR template a default for new PRs (#5462)
  Only log the propagating transactions when they are not empty (#5424)
  [CI] Fix SemVer check base commit (#5361)
  Sync status refactoring (#5450)
  Add build options to the srtool build step (#4956)
  `MaybeConsideration` extension trait for `Consideration` (#5384)
  Skip slot before creating inherent data providers during major sync (#5344)
  Add symlinks for code of conduct and contribution guidelines (#5447)
  pallet-collator-selection: correctly register weight in `new_session` (#5430)
  Derive `Clone` on `EncodableOpaqueLeaf` (#5442)
  Moving `Find FAIL-CI` check to GHA (#5377)
  Remove panic, as proof is invalid. (#5427)
  Reactive syncing metrics (#5410)
  [bridges] Prune messages from confirmation tx body, not from the on_idle (#5006)
  Change the chain to Rococo in the parachain template Zombienet config (#5279)
  Improve the appearance of crates on `crates.io` (#5243)
  Add initial version of `pallet_revive` (#5293)
  Update OpenZeppelin template documentation (#5398)
  ...
@gui1117 gui1117 deleted the gui-parachain-system-remove-calls branch August 27, 2024 11:42
Ad96el added a commit to KILTprotocol/kilt-node that referenced this pull request May 19, 2025
## Updates Polkadot dependencies to version 2409-05 

### Versioning 

Polkadot dependencies have been updated from version 1.7.0 to 1.16.5.
Versions between 1.7.0 and 1.14.x were skipped due to ambiguity around
which tag, branch, crates.io version, or commit to use. Additionally,
many intermediate versions were broken, as Parity crates frequently
failed to compile.

The main motivation for this update was to ensure compatibility with
Hyperbridge, which only supports the current LTS version. LTS version
2407 was also skipped, as internal crates failed to compile (I admit I
did not test all possible patch versions).

### Notable changes

- The pallet-parachain-system no longer exposes the authorize_upgrade
and enact_authorized_upgrade extrinsics. According to [this
PR](paritytech/polkadot-sdk#5439), parachains
should now use the system.setCode extrinsic instead.

- The pallet-treasury no longer exposes `propose_spend`,
`reject_proposal`, and `approve_proposal`. This may pose issues if there
are pending proposals during a runtime upgrade.

- frame-omni-bencher is now available. As a result, the custom
benchmarking CLI has been removed from the node. I can reintroduce it if
needed.

- I removed the genesis builder from the node implementation and moved
it into the runtime itself, following the pattern used in the parachain
template and other projects.
The RuntimeGenesis is now required by the runtime-api; without it,
benchmarking no longer works.

To improve compatibility with the upcoming omni-node, we should consider
introducing a separate crate that handles the chain specs and
RuntimeGenesis configurations for different chains.

### Migrations 

- cumulus_pallet_xcmp_queue has a migration, which is added to Peregrine
and Spiritnet.


### Future work 

- Replace construct_rutnime macro with the new more rusty construct
runtime.
- Introduce a new crate for the Omni Node that is responsible for
managing chain specs and RuntimeGenesis configurations


The WASMs diff can be investigated here:

<details>
<summary> 
Spiritnet Wasm Diff
</summary>

```
[≠] pallet 0: System -> 6 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized    
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] BlockWeights: [ 2, 91, 31, 93, 0, 7, 0, 136, 82, 106, 116, 2, 0, 64, 1, 194, 160, 169, 29, 0, 1, 7, 208, 9, 24, 164, 75, 2, 0, 208, 0, 1, ... ]
        [Value([Changed(0, U8Change(2, 98)), Changed(1, U8Change(91, 77)), Changed(2, U8Change(31, 24)), Changed(3, U8Change(93, 108)), Changed(15, U8Change(194, 66)), Changed(16, U8Change(160, 71)), Changed(17, U8Change(169, 135)), Changed(18, U8Change(29, 25)), Changed(22, U8Change(208, 48)), Changed(23, U8Change(9, 160)), Changed(24, U8Change(24, 32)), Changed(25, U8Change(164, 165)), Changed(45, U8Change(194, 66)), Changed(46, U8Change(160, 71)), Changed(47, U8Change(169, 135)), Changed(48, U8Change(29, 25)), Changed(52, U8Change(208, 48)), Changed(53, U8Change(171, 66)), Changed(54, U8Change(172, 181)), Changed(55, U8Change(190, 191)), Changed(83, U8Change(194, 66)), Changed(84, U8Change(160, 71)), Changed(85, U8Change(169, 135)), Changed(86, U8Change(29, 25))])]
    [≠] 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(34, U8Change(238, 80)), Changed(35, U8Change(44, 45)), Changed(51, U8Change(4, 5))])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 5: Indices -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 180, 124, 243, 40, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(180, 0)), Changed(2, U8Change(124, 0)), Changed(3, U8Change(243, 0)), Changed(4, U8Change(40, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 6: Balances -> 1 change(s)
  - calls changes:
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[+] id: 25 - new pallet: Collators
[≠] pallet 35: Treasury -> 32 change(s)
  - calls changes:
    [-] "propose_spend"
    [-] "reject_proposal"
    [-] "approve_proposal"

  - events changes:
    [≠]  0: Proposed ( proposal_index: ProposalIndex, )  )
        [Name(StringChange("Proposed", "Spending")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "budget_remaining")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))])] })]
    [≠]  1: Spending ( budget_remaining: BalanceOf<T, I>, )  )
        [Name(StringChange("Spending", "Awarded")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("budget_remaining", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  2: Awarded ( proposal_index: ProposalIndex, award: BalanceOf<T, I>, account: T::AccountId, )  )
        [Name(StringChange("Awarded", "Burnt")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "burnt_funds")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Removed(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  3: Rejected ( proposal_index: ProposalIndex, slashed: BalanceOf<T, I>, )  )
        [Name(StringChange("Rejected", "Rollover")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "rollover_balance")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "slashed", ty: "BalanceOf<T, I>" })] })]
    [≠]  4: Burnt ( burnt_funds: BalanceOf<T, I>, )  )
        [Name(StringChange("Burnt", "Deposit")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("burnt_funds", "value"))])] })]
    [≠]  5: Rollover ( rollover_balance: BalanceOf<T, I>, )  )
        [Name(StringChange("Rollover", "SpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("rollover_balance", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "amount", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "beneficiary", ty: "T::AccountId" })] })]
    [≠]  6: Deposit ( value: BalanceOf<T, I>, )  )
        [Name(StringChange("Deposit", "UpdatedInactive")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("value", "reactivated"))]), Added(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  7: SpendApproved ( proposal_index: ProposalIndex, amount: BalanceOf<T, I>, beneficiary: T::AccountId, )  )
        [Name(StringChange("SpendApproved", "AssetSpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "index")), Ty(StringChange("ProposalIndex", "SpendIndex"))]), Changed(1, [Name(StringChange("amount", "asset_kind")), Ty(StringChange("BalanceOf<T, I>", "T::AssetKind"))]), Changed(2, [Name(StringChange("beneficiary", "amount")), Ty(StringChange("T::AccountId", "AssetBalanceOf<T, I>"))]), Added(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Added(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Added(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠]  8: UpdatedInactive ( reactivated: BalanceOf<T, I>, deactivated: BalanceOf<T, I>, )  )
        [Name(StringChange("UpdatedInactive", "AssetSpendVoided")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("reactivated", "index")), Ty(StringChange("BalanceOf<T, I>", "SpendIndex"))]), Removed(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  9: AssetSpendApproved ( index: SpendIndex, asset_kind: T::AssetKind, amount: AssetBalanceOf<T, I>, beneficiary: T::Beneficiary, valid_from: BlockNumberFor<T>, expire_at: BlockNumberFor<T>, )  )
        [Name(StringChange("AssetSpendApproved", "Paid")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("asset_kind", "payment_id")), Ty(StringChange("T::AssetKind", "<T::Paymaster as Pay>::Id"))]), Removed(2, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }), Removed(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Removed(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Removed(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠] 10: AssetSpendVoided ( index: SpendIndex, )  )
        [Name(StringChange("AssetSpendVoided", "PaymentFailed")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [≠] 11: Paid ( index: SpendIndex, payment_id: <T::Paymaster as Pay>::Id, )  )
        [Name(StringChange("Paid", "SpendProcessed")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [-] "PaymentFailed"
    [-] "SpendProcessed"

  - errors changes:
    [≠]  0: InsufficientProposersBalance
        [Name(StringChange("InsufficientProposersBalance", "InvalidIndex"))]
    [≠]  1: InvalidIndex    
        [Name(StringChange("InvalidIndex", "TooManyApprovals"))]
    [≠]  2: TooManyApprovals
        [Name(StringChange("TooManyApprovals", "InsufficientPermission"))]
    [≠]  3: InsufficientPermission
        [Name(StringChange("InsufficientPermission", "ProposalNotApproved"))]
    [≠]  4: ProposalNotApproved
        [Name(StringChange("ProposalNotApproved", "FailedToConvertBalance"))]
    [≠]  5: FailedToConvertBalance
        [Name(StringChange("FailedToConvertBalance", "SpendExpired"))]
    [≠]  6: SpendExpired    
        [Name(StringChange("SpendExpired", "EarlyPayout"))]
    [≠]  7: EarlyPayout     
        [Name(StringChange("EarlyPayout", "AlreadyAttempted"))]
    [≠]  8: AlreadyAttempted
        [Name(StringChange("AlreadyAttempted", "PayoutError"))]
    [≠]  9: PayoutError     
        [Name(StringChange("PayoutError", "NotAttempted"))]
    [≠] 10: NotAttempted    
        [Name(StringChange("NotAttempted", "Inconclusive"))]
    [-] "Inconclusive"

  - constants changes:
    [-] "ProposalBond"
    [-] "ProposalBondMaximum"
    [-] "ProposalBondMinimum"

[≠] pallet 42: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 43: Proxy -> 4 change(s)
  - constants changes:
    [≠] AnnouncementDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] AnnouncementDepositFactor: [0, 232, 83, 87, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(232, 0)), Changed(2, U8Change(83, 0)), Changed(3, U8Change(87, 0)), Changed(5, U8Change(3, 0))])]
    [≠] ProxyDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] ProxyDepositFactor: [0, 244, 169, 43, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(244, 0)), Changed(2, U8Change(169, 0)), Changed(3, U8Change(43, 0)), Changed(4, U8Change(128, 0)), Changed(5, U8Change(1, 0))])]

[≠] pallet 46: Tips -> 2 change(s)
  - constants changes:
    [≠] DataDepositPerByte: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]
    [≠] TipReportDepositBase: [0, 244, 86, 40, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(0, U8Change(0, 1)), Changed(1, U8Change(244, 0)), Changed(2, U8Change(86, 0)), Changed(3, U8Change(40, 0)), Changed(4, U8Change(250, 0)), Changed(5, U8Change(50, 0))])]

[≠] pallet 47: Multisig -> 2 change(s)
  - constants changes:
    [≠] DepositBase: [0, 128, 27, 132, 238, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(27, 0)), Changed(3, U8Change(132, 0)), Changed(4, U8Change(238, 0)), Changed(5, U8Change(50, 0))])]
    [≠] DepositFactor: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]

[≠] pallet 49: Fungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 62: Attestation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 28, 201, 221, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(28, 0)), Changed(2, U8Change(201, 0)), Changed(3, U8Change(221, 0)), Changed(5, U8Change(110, 0))])]

[≠] pallet 63: Delegation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 128, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(198, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(126, 0)), Changed(5, U8Change(141, 0)), Changed(6, U8Change(3, 0))])]

[≠] pallet 64: Did -> 4 change(s)
  - constants changes:
    [≠] BaseDeposit: [0, 0, 141, 73, 253, 26, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(2, U8Change(141, 0)), Changed(3, U8Change(73, 0)), Changed(4, U8Change(253, 0)), Changed(5, U8Change(26, 0)), Changed(6, U8Change(7, 0))])]
    [≠] Fee: [0, 32, 61, 136, 121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(61, 0)), Changed(3, U8Change(136, 0)), Changed(4, U8Change(121, 0)), Changed(5, U8Change(45, 0))])]
    [≠] KeyDeposit: [0, 220, 32, 116, 151, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(220, 0)), Changed(2, U8Change(32, 0)), Changed(3, U8Change(116, 0)), Changed(4, U8Change(151, 0)), Changed(5, U8Change(1, 0))])]
    [≠] ServiceEndpointDeposit: [0, 240, 36, 238, 189, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(240, 0)), Changed(2, U8Change(36, 0)), Changed(3, U8Change(238, 0)), Changed(4, U8Change(189, 0)), Changed(5, U8Change(237, 0))])]

[≠] pallet 67: DidLookup -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 192, 175, 214, 145, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(192, 0)), Changed(2, U8Change(175, 0)), Changed(3, U8Change(214, 0)), Changed(4, U8Change(145, 0)), Changed(5, U8Change(54, 0))])]

[≠] pallet 68: Web3Names -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 212, 80, 168, 93, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(212, 0)), Changed(2, U8Change(80, 0)), Changed(3, U8Change(168, 0)), Changed(4, U8Change(93, 0)), Changed(5, U8Change(107, 0))])]

[≠] pallet 69: PublicCredentials -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 92, 106, 81, 252, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(92, 0)), Changed(2, U8Change(106, 0)), Changed(3, U8Change(81, 0)), Changed(4, U8Change(252, 0)), Changed(5, U8Change(69, 0))])]

[≠] pallet 80: ParachainSystem -> 3 change(s)
  - calls changes:
    [-] "authorize_upgrade"
    [-] "enact_authorized_upgrade"

  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 82: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 0, 2, 0] }

[≠] pallet 83: PolkadotXcm -> 3 change(s)
  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 86: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [0] }

[-] pallet 66: Inflation
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true

!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
```

</details>

<details>
<summary> 
Peregrine WASM diff
</summary> 

```
!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
[≠] pallet 0: System -> 6 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized    
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] BlockWeights: [ 2, 91, 31, 93, 0, 7, 0, 136, 82, 106, 116, 2, 0, 64, 1, 194, 160, 169, 29, 0, 1, 7, 208, 9, 24, 164, 75, 2, 0, 208, 0, 1, ... ]
        [Value([Changed(0, U8Change(2, 98)), Changed(1, U8Change(91, 77)), Changed(2, U8Change(31, 24)), Changed(3, U8Change(93, 108)), Changed(15, U8Change(194, 66)), Changed(16, U8Change(160, 71)), Changed(17, U8Change(169, 135)), Changed(18, U8Change(29, 25)), Changed(22, U8Change(208, 48)), Changed(23, U8Change(9, 160)), Changed(24, U8Change(24, 32)), Changed(25, U8Change(164, 165)), Changed(45, U8Change(194, 66)), Changed(46, U8Change(160, 71)), Changed(47, U8Change(169, 135)), Changed(48, U8Change(29, 25)), Changed(52, U8Change(208, 48)), Changed(53, U8Change(171, 66)), Changed(54, U8Change(172, 181)), Changed(55, U8Change(190, 191)), Changed(83, U8Change(194, 66)), Changed(84, U8Change(160, 71)), Changed(85, U8Change(169, 135)), Changed(86, U8Change(29, 25))])]
    [≠] 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, 238, 44, ... ]
        [Value([Changed(30, U8Change(238, 80)), Changed(31, U8Change(44, 45)), Changed(47, U8Change(4, 5)), Changed(263, U8Change(1, 2))])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 5: Indices -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 180, 124, 243, 40, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(180, 0)), Changed(2, U8Change(124, 0)), Changed(3, U8Change(243, 0)), Changed(4, U8Change(40, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 6: Balances -> 1 change(s)
  - calls changes:
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[+] id: 25 - new pallet: Collators
[≠] pallet 35: Treasury -> 33 change(s)
  - calls changes:
    [-] "propose_spend"
    [-] "reject_proposal"
    [-] "approve_proposal"

  - events changes:
    [≠]  0: Proposed ( proposal_index: ProposalIndex, )  )
        [Name(StringChange("Proposed", "Spending")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "budget_remaining")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))])] })]
    [≠]  1: Spending ( budget_remaining: BalanceOf<T, I>, )  )
        [Name(StringChange("Spending", "Awarded")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("budget_remaining", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  2: Awarded ( proposal_index: ProposalIndex, award: BalanceOf<T, I>, account: T::AccountId, )  )
        [Name(StringChange("Awarded", "Burnt")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "burnt_funds")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Removed(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  3: Rejected ( proposal_index: ProposalIndex, slashed: BalanceOf<T, I>, )  )
        [Name(StringChange("Rejected", "Rollover")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "rollover_balance")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "slashed", ty: "BalanceOf<T, I>" })] })]
    [≠]  4: Burnt ( burnt_funds: BalanceOf<T, I>, )  )
        [Name(StringChange("Burnt", "Deposit")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("burnt_funds", "value"))])] })]
    [≠]  5: Rollover ( rollover_balance: BalanceOf<T, I>, )  )
        [Name(StringChange("Rollover", "SpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("rollover_balance", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "amount", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "beneficiary", ty: "T::AccountId" })] })]
    [≠]  6: Deposit ( value: BalanceOf<T, I>, )  )
        [Name(StringChange("Deposit", "UpdatedInactive")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("value", "reactivated"))]), Added(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  7: SpendApproved ( proposal_index: ProposalIndex, amount: BalanceOf<T, I>, beneficiary: T::AccountId, )  )
        [Name(StringChange("SpendApproved", "AssetSpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "index")), Ty(StringChange("ProposalIndex", "SpendIndex"))]), Changed(1, [Name(StringChange("amount", "asset_kind")), Ty(StringChange("BalanceOf<T, I>", "T::AssetKind"))]), Changed(2, [Name(StringChange("beneficiary", "amount")), Ty(StringChange("T::AccountId", "AssetBalanceOf<T, I>"))]), Added(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Added(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Added(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠]  8: UpdatedInactive ( reactivated: BalanceOf<T, I>, deactivated: BalanceOf<T, I>, )  )
        [Name(StringChange("UpdatedInactive", "AssetSpendVoided")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("reactivated", "index")), Ty(StringChange("BalanceOf<T, I>", "SpendIndex"))]), Removed(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  9: AssetSpendApproved ( index: SpendIndex, asset_kind: T::AssetKind, amount: AssetBalanceOf<T, I>, beneficiary: T::Beneficiary, valid_from: BlockNumberFor<T>, expire_at: BlockNumberFor<T>, )  )
        [Name(StringChange("AssetSpendApproved", "Paid")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("asset_kind", "payment_id")), Ty(StringChange("T::AssetKind", "<T::Paymaster as Pay>::Id"))]), Removed(2, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }), Removed(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Removed(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Removed(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠] 10: AssetSpendVoided ( index: SpendIndex, )  )
        [Name(StringChange("AssetSpendVoided", "PaymentFailed")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [≠] 11: Paid ( index: SpendIndex, payment_id: <T::Paymaster as Pay>::Id, )  )
        [Name(StringChange("Paid", "SpendProcessed")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [-] "PaymentFailed"
    [-] "SpendProcessed"

  - errors changes:
    [≠]  0: InsufficientProposersBalance
        [Name(StringChange("InsufficientProposersBalance", "InvalidIndex"))]
    [≠]  1: InvalidIndex    
        [Name(StringChange("InvalidIndex", "TooManyApprovals"))]
    [≠]  2: TooManyApprovals
        [Name(StringChange("TooManyApprovals", "InsufficientPermission"))]
    [≠]  3: InsufficientPermission
        [Name(StringChange("InsufficientPermission", "ProposalNotApproved"))]
    [≠]  4: ProposalNotApproved
        [Name(StringChange("ProposalNotApproved", "FailedToConvertBalance"))]
    [≠]  5: FailedToConvertBalance
        [Name(StringChange("FailedToConvertBalance", "SpendExpired"))]
    [≠]  6: SpendExpired    
        [Name(StringChange("SpendExpired", "EarlyPayout"))]
    [≠]  7: EarlyPayout     
        [Name(StringChange("EarlyPayout", "AlreadyAttempted"))]
    [≠]  8: AlreadyAttempted
        [Name(StringChange("AlreadyAttempted", "PayoutError"))]
    [≠]  9: PayoutError     
        [Name(StringChange("PayoutError", "NotAttempted"))]
    [≠] 10: NotAttempted    
        [Name(StringChange("NotAttempted", "Inconclusive"))]
    [-] "Inconclusive"

  - constants changes:
    [≠] Burn: [0; 4]        
        [Value([Changed(0, U8Change(0, 64)), Changed(1, U8Change(0, 66)), Changed(2, U8Change(0, 15))])]
    [-] "ProposalBond"
    [-] "ProposalBondMaximum"
    [-] "ProposalBondMinimum"

[≠] pallet 42: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 43: Proxy -> 4 change(s)
  - constants changes:
    [≠] AnnouncementDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] AnnouncementDepositFactor: [0, 232, 83, 87, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(232, 0)), Changed(2, U8Change(83, 0)), Changed(3, U8Change(87, 0)), Changed(5, U8Change(3, 0))])]
    [≠] ProxyDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] ProxyDepositFactor: [0, 244, 169, 43, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(244, 0)), Changed(2, U8Change(169, 0)), Changed(3, U8Change(43, 0)), Changed(4, U8Change(128, 0)), Changed(5, U8Change(1, 0))])]

[≠] pallet 46: Tips -> 2 change(s)
  - constants changes:
    [≠] DataDepositPerByte: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]
    [≠] TipReportDepositBase: [0, 244, 86, 40, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(0, U8Change(0, 1)), Changed(1, U8Change(244, 0)), Changed(2, U8Change(86, 0)), Changed(3, U8Change(40, 0)), Changed(4, U8Change(250, 0)), Changed(5, U8Change(50, 0))])]

[≠] pallet 47: Multisig -> 2 change(s)
  - constants changes:
    [≠] DepositBase: [0, 128, 27, 132, 238, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(27, 0)), Changed(3, U8Change(132, 0)), Changed(4, U8Change(238, 0)), Changed(5, U8Change(50, 0))])]
    [≠] DepositFactor: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]

[≠] pallet 49: Fungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 50: BondedFungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 62: Attestation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 28, 201, 221, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(28, 0)), Changed(2, U8Change(201, 0)), Changed(3, U8Change(221, 0)), Changed(5, U8Change(110, 0))])]

[≠] pallet 63: Delegation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 128, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(198, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(126, 0)), Changed(5, U8Change(141, 0)), Changed(6, U8Change(3, 0))])]

[≠] pallet 64: Did -> 4 change(s)
  - constants changes:
    [≠] BaseDeposit: [0, 0, 141, 73, 253, 26, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(2, U8Change(141, 0)), Changed(3, U8Change(73, 0)), Changed(4, U8Change(253, 0)), Changed(5, U8Change(26, 0)), Changed(6, U8Change(7, 0))])]
    [≠] Fee: [0, 32, 61, 136, 121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(61, 0)), Changed(3, U8Change(136, 0)), Changed(4, U8Change(121, 0)), Changed(5, U8Change(45, 0))])]
    [≠] KeyDeposit: [0, 220, 32, 116, 151, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(220, 0)), Changed(2, U8Change(32, 0)), Changed(3, U8Change(116, 0)), Changed(4, U8Change(151, 0)), Changed(5, U8Change(1, 0))])]
    [≠] ServiceEndpointDeposit: [0, 240, 36, 238, 189, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(240, 0)), Changed(2, U8Change(36, 0)), Changed(3, U8Change(238, 0)), Changed(4, U8Change(189, 0)), Changed(5, U8Change(237, 0))])]

[≠] pallet 67: DidLookup -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 192, 175, 214, 145, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(192, 0)), Changed(2, U8Change(175, 0)), Changed(3, U8Change(214, 0)), Changed(4, U8Change(145, 0)), Changed(5, U8Change(54, 0))])]

[≠] pallet 68: Web3Names -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 212, 80, 168, 93, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(212, 0)), Changed(2, U8Change(80, 0)), Changed(3, U8Change(168, 0)), Changed(4, U8Change(93, 0)), Changed(5, U8Change(107, 0))])]

[≠] pallet 69: PublicCredentials -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 92, 106, 81, 252, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(92, 0)), Changed(2, U8Change(106, 0)), Changed(3, U8Change(81, 0)), Changed(4, U8Change(252, 0)), Changed(5, U8Change(69, 0))])]

[≠] pallet 75: BondedCurrencies -> 5 change(s)
  - calls changes:
    [≠]  0: create_pool ( curve: CurveInput<CurveParameterInputOf<T>>, collateral_id: CollateralAssetIdOf<T>, currencies: BoundedVec<TokenMetaOf<T>, T::MaxCurrenciesPerPool>, denomination: u8, transferable: bool, min_operation_balance: u128, )  )
        [Signature(SignatureChange { args: [Changed(3, [Name(StringChange("denomination", "currencies_settings")), Ty(StringChange("u8", "BondedCurrenciesSettingsOf<T>"))]), Removed(4, ArgDesc { name: "transferable", ty: "bool" }), Removed(5, ArgDesc { name: "min_operation_balance", ty: "u128" })] })]
    [≠]  1: reset_team ( pool_id: T::PoolId, team: PoolManagingTeam<AccountIdOf<T>>, currency_idx: u32, )  )
        [Signature(SignatureChange { args: [Changed(2, [Name(StringChange("currency_idx", "currency_count"))])] })]

  - events changes:
    [+] EventDesc { index: 8, name: "TeamChanged", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::PoolId" }, ArgDesc { name: "admin", ty: "T::AccountId" }, ArgDesc { name: "freezer", ty: "T::AccountId" }] } }

  - constants changes:
    [≠] BaseDeposit: [0, 72, 24, 17, 197, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(72, 0)), Changed(2, U8Change(24, 0)), Changed(3, U8Change(17, 0)), Changed(4, U8Change(197, 0)), Changed(5, U8Change(95, 0))])]
    [≠] DepositPerCurrency: [0, 176, 10, 2, 169, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(176, 0)), Changed(2, U8Change(10, 0)), Changed(3, U8Change(2, 0)), Changed(4, U8Change(169, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 80: ParachainSystem -> 3 change(s)
  - calls changes:
    [-] "authorize_upgrade"
    [-] "enact_authorized_upgrade"

  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 82: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 0, 2, 0] }

[≠] pallet 83: PolkadotXcm -> 3 change(s)
  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 86: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [0] }

[-] pallet 66: Inflation
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true

!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
```


</details>
hacker-nova7431 added a commit to hacker-nova7431/kilt-node that referenced this pull request Sep 29, 2025
## Updates Polkadot dependencies to version 2409-05 

### Versioning 

Polkadot dependencies have been updated from version 1.7.0 to 1.16.5.
Versions between 1.7.0 and 1.14.x were skipped due to ambiguity around
which tag, branch, crates.io version, or commit to use. Additionally,
many intermediate versions were broken, as Parity crates frequently
failed to compile.

The main motivation for this update was to ensure compatibility with
Hyperbridge, which only supports the current LTS version. LTS version
2407 was also skipped, as internal crates failed to compile (I admit I
did not test all possible patch versions).

### Notable changes

- The pallet-parachain-system no longer exposes the authorize_upgrade
and enact_authorized_upgrade extrinsics. According to [this
PR](paritytech/polkadot-sdk#5439), parachains
should now use the system.setCode extrinsic instead.

- The pallet-treasury no longer exposes `propose_spend`,
`reject_proposal`, and `approve_proposal`. This may pose issues if there
are pending proposals during a runtime upgrade.

- frame-omni-bencher is now available. As a result, the custom
benchmarking CLI has been removed from the node. I can reintroduce it if
needed.

- I removed the genesis builder from the node implementation and moved
it into the runtime itself, following the pattern used in the parachain
template and other projects.
The RuntimeGenesis is now required by the runtime-api; without it,
benchmarking no longer works.

To improve compatibility with the upcoming omni-node, we should consider
introducing a separate crate that handles the chain specs and
RuntimeGenesis configurations for different chains.

### Migrations 

- cumulus_pallet_xcmp_queue has a migration, which is added to Peregrine
and Spiritnet.


### Future work 

- Replace construct_rutnime macro with the new more rusty construct
runtime.
- Introduce a new crate for the Omni Node that is responsible for
managing chain specs and RuntimeGenesis configurations


The WASMs diff can be investigated here:

<details>
<summary> 
Spiritnet Wasm Diff
</summary>

```
[≠] pallet 0: System -> 6 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized    
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] BlockWeights: [ 2, 91, 31, 93, 0, 7, 0, 136, 82, 106, 116, 2, 0, 64, 1, 194, 160, 169, 29, 0, 1, 7, 208, 9, 24, 164, 75, 2, 0, 208, 0, 1, ... ]
        [Value([Changed(0, U8Change(2, 98)), Changed(1, U8Change(91, 77)), Changed(2, U8Change(31, 24)), Changed(3, U8Change(93, 108)), Changed(15, U8Change(194, 66)), Changed(16, U8Change(160, 71)), Changed(17, U8Change(169, 135)), Changed(18, U8Change(29, 25)), Changed(22, U8Change(208, 48)), Changed(23, U8Change(9, 160)), Changed(24, U8Change(24, 32)), Changed(25, U8Change(164, 165)), Changed(45, U8Change(194, 66)), Changed(46, U8Change(160, 71)), Changed(47, U8Change(169, 135)), Changed(48, U8Change(29, 25)), Changed(52, U8Change(208, 48)), Changed(53, U8Change(171, 66)), Changed(54, U8Change(172, 181)), Changed(55, U8Change(190, 191)), Changed(83, U8Change(194, 66)), Changed(84, U8Change(160, 71)), Changed(85, U8Change(169, 135)), Changed(86, U8Change(29, 25))])]
    [≠] 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(34, U8Change(238, 80)), Changed(35, U8Change(44, 45)), Changed(51, U8Change(4, 5))])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 5: Indices -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 180, 124, 243, 40, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(180, 0)), Changed(2, U8Change(124, 0)), Changed(3, U8Change(243, 0)), Changed(4, U8Change(40, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 6: Balances -> 1 change(s)
  - calls changes:
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[+] id: 25 - new pallet: Collators
[≠] pallet 35: Treasury -> 32 change(s)
  - calls changes:
    [-] "propose_spend"
    [-] "reject_proposal"
    [-] "approve_proposal"

  - events changes:
    [≠]  0: Proposed ( proposal_index: ProposalIndex, )  )
        [Name(StringChange("Proposed", "Spending")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "budget_remaining")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))])] })]
    [≠]  1: Spending ( budget_remaining: BalanceOf<T, I>, )  )
        [Name(StringChange("Spending", "Awarded")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("budget_remaining", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  2: Awarded ( proposal_index: ProposalIndex, award: BalanceOf<T, I>, account: T::AccountId, )  )
        [Name(StringChange("Awarded", "Burnt")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "burnt_funds")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Removed(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  3: Rejected ( proposal_index: ProposalIndex, slashed: BalanceOf<T, I>, )  )
        [Name(StringChange("Rejected", "Rollover")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "rollover_balance")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "slashed", ty: "BalanceOf<T, I>" })] })]
    [≠]  4: Burnt ( burnt_funds: BalanceOf<T, I>, )  )
        [Name(StringChange("Burnt", "Deposit")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("burnt_funds", "value"))])] })]
    [≠]  5: Rollover ( rollover_balance: BalanceOf<T, I>, )  )
        [Name(StringChange("Rollover", "SpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("rollover_balance", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "amount", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "beneficiary", ty: "T::AccountId" })] })]
    [≠]  6: Deposit ( value: BalanceOf<T, I>, )  )
        [Name(StringChange("Deposit", "UpdatedInactive")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("value", "reactivated"))]), Added(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  7: SpendApproved ( proposal_index: ProposalIndex, amount: BalanceOf<T, I>, beneficiary: T::AccountId, )  )
        [Name(StringChange("SpendApproved", "AssetSpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "index")), Ty(StringChange("ProposalIndex", "SpendIndex"))]), Changed(1, [Name(StringChange("amount", "asset_kind")), Ty(StringChange("BalanceOf<T, I>", "T::AssetKind"))]), Changed(2, [Name(StringChange("beneficiary", "amount")), Ty(StringChange("T::AccountId", "AssetBalanceOf<T, I>"))]), Added(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Added(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Added(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠]  8: UpdatedInactive ( reactivated: BalanceOf<T, I>, deactivated: BalanceOf<T, I>, )  )
        [Name(StringChange("UpdatedInactive", "AssetSpendVoided")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("reactivated", "index")), Ty(StringChange("BalanceOf<T, I>", "SpendIndex"))]), Removed(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  9: AssetSpendApproved ( index: SpendIndex, asset_kind: T::AssetKind, amount: AssetBalanceOf<T, I>, beneficiary: T::Beneficiary, valid_from: BlockNumberFor<T>, expire_at: BlockNumberFor<T>, )  )
        [Name(StringChange("AssetSpendApproved", "Paid")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("asset_kind", "payment_id")), Ty(StringChange("T::AssetKind", "<T::Paymaster as Pay>::Id"))]), Removed(2, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }), Removed(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Removed(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Removed(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠] 10: AssetSpendVoided ( index: SpendIndex, )  )
        [Name(StringChange("AssetSpendVoided", "PaymentFailed")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [≠] 11: Paid ( index: SpendIndex, payment_id: <T::Paymaster as Pay>::Id, )  )
        [Name(StringChange("Paid", "SpendProcessed")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [-] "PaymentFailed"
    [-] "SpendProcessed"

  - errors changes:
    [≠]  0: InsufficientProposersBalance
        [Name(StringChange("InsufficientProposersBalance", "InvalidIndex"))]
    [≠]  1: InvalidIndex    
        [Name(StringChange("InvalidIndex", "TooManyApprovals"))]
    [≠]  2: TooManyApprovals
        [Name(StringChange("TooManyApprovals", "InsufficientPermission"))]
    [≠]  3: InsufficientPermission
        [Name(StringChange("InsufficientPermission", "ProposalNotApproved"))]
    [≠]  4: ProposalNotApproved
        [Name(StringChange("ProposalNotApproved", "FailedToConvertBalance"))]
    [≠]  5: FailedToConvertBalance
        [Name(StringChange("FailedToConvertBalance", "SpendExpired"))]
    [≠]  6: SpendExpired    
        [Name(StringChange("SpendExpired", "EarlyPayout"))]
    [≠]  7: EarlyPayout     
        [Name(StringChange("EarlyPayout", "AlreadyAttempted"))]
    [≠]  8: AlreadyAttempted
        [Name(StringChange("AlreadyAttempted", "PayoutError"))]
    [≠]  9: PayoutError     
        [Name(StringChange("PayoutError", "NotAttempted"))]
    [≠] 10: NotAttempted    
        [Name(StringChange("NotAttempted", "Inconclusive"))]
    [-] "Inconclusive"

  - constants changes:
    [-] "ProposalBond"
    [-] "ProposalBondMaximum"
    [-] "ProposalBondMinimum"

[≠] pallet 42: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 43: Proxy -> 4 change(s)
  - constants changes:
    [≠] AnnouncementDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] AnnouncementDepositFactor: [0, 232, 83, 87, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(232, 0)), Changed(2, U8Change(83, 0)), Changed(3, U8Change(87, 0)), Changed(5, U8Change(3, 0))])]
    [≠] ProxyDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] ProxyDepositFactor: [0, 244, 169, 43, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(244, 0)), Changed(2, U8Change(169, 0)), Changed(3, U8Change(43, 0)), Changed(4, U8Change(128, 0)), Changed(5, U8Change(1, 0))])]

[≠] pallet 46: Tips -> 2 change(s)
  - constants changes:
    [≠] DataDepositPerByte: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]
    [≠] TipReportDepositBase: [0, 244, 86, 40, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(0, U8Change(0, 1)), Changed(1, U8Change(244, 0)), Changed(2, U8Change(86, 0)), Changed(3, U8Change(40, 0)), Changed(4, U8Change(250, 0)), Changed(5, U8Change(50, 0))])]

[≠] pallet 47: Multisig -> 2 change(s)
  - constants changes:
    [≠] DepositBase: [0, 128, 27, 132, 238, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(27, 0)), Changed(3, U8Change(132, 0)), Changed(4, U8Change(238, 0)), Changed(5, U8Change(50, 0))])]
    [≠] DepositFactor: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]

[≠] pallet 49: Fungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 62: Attestation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 28, 201, 221, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(28, 0)), Changed(2, U8Change(201, 0)), Changed(3, U8Change(221, 0)), Changed(5, U8Change(110, 0))])]

[≠] pallet 63: Delegation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 128, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(198, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(126, 0)), Changed(5, U8Change(141, 0)), Changed(6, U8Change(3, 0))])]

[≠] pallet 64: Did -> 4 change(s)
  - constants changes:
    [≠] BaseDeposit: [0, 0, 141, 73, 253, 26, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(2, U8Change(141, 0)), Changed(3, U8Change(73, 0)), Changed(4, U8Change(253, 0)), Changed(5, U8Change(26, 0)), Changed(6, U8Change(7, 0))])]
    [≠] Fee: [0, 32, 61, 136, 121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(61, 0)), Changed(3, U8Change(136, 0)), Changed(4, U8Change(121, 0)), Changed(5, U8Change(45, 0))])]
    [≠] KeyDeposit: [0, 220, 32, 116, 151, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(220, 0)), Changed(2, U8Change(32, 0)), Changed(3, U8Change(116, 0)), Changed(4, U8Change(151, 0)), Changed(5, U8Change(1, 0))])]
    [≠] ServiceEndpointDeposit: [0, 240, 36, 238, 189, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(240, 0)), Changed(2, U8Change(36, 0)), Changed(3, U8Change(238, 0)), Changed(4, U8Change(189, 0)), Changed(5, U8Change(237, 0))])]

[≠] pallet 67: DidLookup -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 192, 175, 214, 145, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(192, 0)), Changed(2, U8Change(175, 0)), Changed(3, U8Change(214, 0)), Changed(4, U8Change(145, 0)), Changed(5, U8Change(54, 0))])]

[≠] pallet 68: Web3Names -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 212, 80, 168, 93, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(212, 0)), Changed(2, U8Change(80, 0)), Changed(3, U8Change(168, 0)), Changed(4, U8Change(93, 0)), Changed(5, U8Change(107, 0))])]

[≠] pallet 69: PublicCredentials -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 92, 106, 81, 252, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(92, 0)), Changed(2, U8Change(106, 0)), Changed(3, U8Change(81, 0)), Changed(4, U8Change(252, 0)), Changed(5, U8Change(69, 0))])]

[≠] pallet 80: ParachainSystem -> 3 change(s)
  - calls changes:
    [-] "authorize_upgrade"
    [-] "enact_authorized_upgrade"

  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 82: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 0, 2, 0] }

[≠] pallet 83: PolkadotXcm -> 3 change(s)
  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 86: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [0] }

[-] pallet 66: Inflation
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true

!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
```

</details>

<details>
<summary> 
Peregrine WASM diff
</summary> 

```
!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
[≠] pallet 0: System -> 6 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized    
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] BlockWeights: [ 2, 91, 31, 93, 0, 7, 0, 136, 82, 106, 116, 2, 0, 64, 1, 194, 160, 169, 29, 0, 1, 7, 208, 9, 24, 164, 75, 2, 0, 208, 0, 1, ... ]
        [Value([Changed(0, U8Change(2, 98)), Changed(1, U8Change(91, 77)), Changed(2, U8Change(31, 24)), Changed(3, U8Change(93, 108)), Changed(15, U8Change(194, 66)), Changed(16, U8Change(160, 71)), Changed(17, U8Change(169, 135)), Changed(18, U8Change(29, 25)), Changed(22, U8Change(208, 48)), Changed(23, U8Change(9, 160)), Changed(24, U8Change(24, 32)), Changed(25, U8Change(164, 165)), Changed(45, U8Change(194, 66)), Changed(46, U8Change(160, 71)), Changed(47, U8Change(169, 135)), Changed(48, U8Change(29, 25)), Changed(52, U8Change(208, 48)), Changed(53, U8Change(171, 66)), Changed(54, U8Change(172, 181)), Changed(55, U8Change(190, 191)), Changed(83, U8Change(194, 66)), Changed(84, U8Change(160, 71)), Changed(85, U8Change(169, 135)), Changed(86, U8Change(29, 25))])]
    [≠] 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, 238, 44, ... ]
        [Value([Changed(30, U8Change(238, 80)), Changed(31, U8Change(44, 45)), Changed(47, U8Change(4, 5)), Changed(263, U8Change(1, 2))])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 5: Indices -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 180, 124, 243, 40, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(180, 0)), Changed(2, U8Change(124, 0)), Changed(3, U8Change(243, 0)), Changed(4, U8Change(40, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 6: Balances -> 1 change(s)
  - calls changes:
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[+] id: 25 - new pallet: Collators
[≠] pallet 35: Treasury -> 33 change(s)
  - calls changes:
    [-] "propose_spend"
    [-] "reject_proposal"
    [-] "approve_proposal"

  - events changes:
    [≠]  0: Proposed ( proposal_index: ProposalIndex, )  )
        [Name(StringChange("Proposed", "Spending")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "budget_remaining")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))])] })]
    [≠]  1: Spending ( budget_remaining: BalanceOf<T, I>, )  )
        [Name(StringChange("Spending", "Awarded")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("budget_remaining", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  2: Awarded ( proposal_index: ProposalIndex, award: BalanceOf<T, I>, account: T::AccountId, )  )
        [Name(StringChange("Awarded", "Burnt")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "burnt_funds")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Removed(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  3: Rejected ( proposal_index: ProposalIndex, slashed: BalanceOf<T, I>, )  )
        [Name(StringChange("Rejected", "Rollover")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "rollover_balance")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "slashed", ty: "BalanceOf<T, I>" })] })]
    [≠]  4: Burnt ( burnt_funds: BalanceOf<T, I>, )  )
        [Name(StringChange("Burnt", "Deposit")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("burnt_funds", "value"))])] })]
    [≠]  5: Rollover ( rollover_balance: BalanceOf<T, I>, )  )
        [Name(StringChange("Rollover", "SpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("rollover_balance", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "amount", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "beneficiary", ty: "T::AccountId" })] })]
    [≠]  6: Deposit ( value: BalanceOf<T, I>, )  )
        [Name(StringChange("Deposit", "UpdatedInactive")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("value", "reactivated"))]), Added(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  7: SpendApproved ( proposal_index: ProposalIndex, amount: BalanceOf<T, I>, beneficiary: T::AccountId, )  )
        [Name(StringChange("SpendApproved", "AssetSpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "index")), Ty(StringChange("ProposalIndex", "SpendIndex"))]), Changed(1, [Name(StringChange("amount", "asset_kind")), Ty(StringChange("BalanceOf<T, I>", "T::AssetKind"))]), Changed(2, [Name(StringChange("beneficiary", "amount")), Ty(StringChange("T::AccountId", "AssetBalanceOf<T, I>"))]), Added(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Added(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Added(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠]  8: UpdatedInactive ( reactivated: BalanceOf<T, I>, deactivated: BalanceOf<T, I>, )  )
        [Name(StringChange("UpdatedInactive", "AssetSpendVoided")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("reactivated", "index")), Ty(StringChange("BalanceOf<T, I>", "SpendIndex"))]), Removed(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  9: AssetSpendApproved ( index: SpendIndex, asset_kind: T::AssetKind, amount: AssetBalanceOf<T, I>, beneficiary: T::Beneficiary, valid_from: BlockNumberFor<T>, expire_at: BlockNumberFor<T>, )  )
        [Name(StringChange("AssetSpendApproved", "Paid")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("asset_kind", "payment_id")), Ty(StringChange("T::AssetKind", "<T::Paymaster as Pay>::Id"))]), Removed(2, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }), Removed(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Removed(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Removed(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠] 10: AssetSpendVoided ( index: SpendIndex, )  )
        [Name(StringChange("AssetSpendVoided", "PaymentFailed")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [≠] 11: Paid ( index: SpendIndex, payment_id: <T::Paymaster as Pay>::Id, )  )
        [Name(StringChange("Paid", "SpendProcessed")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [-] "PaymentFailed"
    [-] "SpendProcessed"

  - errors changes:
    [≠]  0: InsufficientProposersBalance
        [Name(StringChange("InsufficientProposersBalance", "InvalidIndex"))]
    [≠]  1: InvalidIndex    
        [Name(StringChange("InvalidIndex", "TooManyApprovals"))]
    [≠]  2: TooManyApprovals
        [Name(StringChange("TooManyApprovals", "InsufficientPermission"))]
    [≠]  3: InsufficientPermission
        [Name(StringChange("InsufficientPermission", "ProposalNotApproved"))]
    [≠]  4: ProposalNotApproved
        [Name(StringChange("ProposalNotApproved", "FailedToConvertBalance"))]
    [≠]  5: FailedToConvertBalance
        [Name(StringChange("FailedToConvertBalance", "SpendExpired"))]
    [≠]  6: SpendExpired    
        [Name(StringChange("SpendExpired", "EarlyPayout"))]
    [≠]  7: EarlyPayout     
        [Name(StringChange("EarlyPayout", "AlreadyAttempted"))]
    [≠]  8: AlreadyAttempted
        [Name(StringChange("AlreadyAttempted", "PayoutError"))]
    [≠]  9: PayoutError     
        [Name(StringChange("PayoutError", "NotAttempted"))]
    [≠] 10: NotAttempted    
        [Name(StringChange("NotAttempted", "Inconclusive"))]
    [-] "Inconclusive"

  - constants changes:
    [≠] Burn: [0; 4]        
        [Value([Changed(0, U8Change(0, 64)), Changed(1, U8Change(0, 66)), Changed(2, U8Change(0, 15))])]
    [-] "ProposalBond"
    [-] "ProposalBondMaximum"
    [-] "ProposalBondMinimum"

[≠] pallet 42: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 43: Proxy -> 4 change(s)
  - constants changes:
    [≠] AnnouncementDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] AnnouncementDepositFactor: [0, 232, 83, 87, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(232, 0)), Changed(2, U8Change(83, 0)), Changed(3, U8Change(87, 0)), Changed(5, U8Change(3, 0))])]
    [≠] ProxyDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] ProxyDepositFactor: [0, 244, 169, 43, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(244, 0)), Changed(2, U8Change(169, 0)), Changed(3, U8Change(43, 0)), Changed(4, U8Change(128, 0)), Changed(5, U8Change(1, 0))])]

[≠] pallet 46: Tips -> 2 change(s)
  - constants changes:
    [≠] DataDepositPerByte: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]
    [≠] TipReportDepositBase: [0, 244, 86, 40, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(0, U8Change(0, 1)), Changed(1, U8Change(244, 0)), Changed(2, U8Change(86, 0)), Changed(3, U8Change(40, 0)), Changed(4, U8Change(250, 0)), Changed(5, U8Change(50, 0))])]

[≠] pallet 47: Multisig -> 2 change(s)
  - constants changes:
    [≠] DepositBase: [0, 128, 27, 132, 238, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(27, 0)), Changed(3, U8Change(132, 0)), Changed(4, U8Change(238, 0)), Changed(5, U8Change(50, 0))])]
    [≠] DepositFactor: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]

[≠] pallet 49: Fungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 50: BondedFungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 62: Attestation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 28, 201, 221, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(28, 0)), Changed(2, U8Change(201, 0)), Changed(3, U8Change(221, 0)), Changed(5, U8Change(110, 0))])]

[≠] pallet 63: Delegation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 128, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(198, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(126, 0)), Changed(5, U8Change(141, 0)), Changed(6, U8Change(3, 0))])]

[≠] pallet 64: Did -> 4 change(s)
  - constants changes:
    [≠] BaseDeposit: [0, 0, 141, 73, 253, 26, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(2, U8Change(141, 0)), Changed(3, U8Change(73, 0)), Changed(4, U8Change(253, 0)), Changed(5, U8Change(26, 0)), Changed(6, U8Change(7, 0))])]
    [≠] Fee: [0, 32, 61, 136, 121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(61, 0)), Changed(3, U8Change(136, 0)), Changed(4, U8Change(121, 0)), Changed(5, U8Change(45, 0))])]
    [≠] KeyDeposit: [0, 220, 32, 116, 151, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(220, 0)), Changed(2, U8Change(32, 0)), Changed(3, U8Change(116, 0)), Changed(4, U8Change(151, 0)), Changed(5, U8Change(1, 0))])]
    [≠] ServiceEndpointDeposit: [0, 240, 36, 238, 189, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(240, 0)), Changed(2, U8Change(36, 0)), Changed(3, U8Change(238, 0)), Changed(4, U8Change(189, 0)), Changed(5, U8Change(237, 0))])]

[≠] pallet 67: DidLookup -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 192, 175, 214, 145, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(192, 0)), Changed(2, U8Change(175, 0)), Changed(3, U8Change(214, 0)), Changed(4, U8Change(145, 0)), Changed(5, U8Change(54, 0))])]

[≠] pallet 68: Web3Names -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 212, 80, 168, 93, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(212, 0)), Changed(2, U8Change(80, 0)), Changed(3, U8Change(168, 0)), Changed(4, U8Change(93, 0)), Changed(5, U8Change(107, 0))])]

[≠] pallet 69: PublicCredentials -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 92, 106, 81, 252, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(92, 0)), Changed(2, U8Change(106, 0)), Changed(3, U8Change(81, 0)), Changed(4, U8Change(252, 0)), Changed(5, U8Change(69, 0))])]

[≠] pallet 75: BondedCurrencies -> 5 change(s)
  - calls changes:
    [≠]  0: create_pool ( curve: CurveInput<CurveParameterInputOf<T>>, collateral_id: CollateralAssetIdOf<T>, currencies: BoundedVec<TokenMetaOf<T>, T::MaxCurrenciesPerPool>, denomination: u8, transferable: bool, min_operation_balance: u128, )  )
        [Signature(SignatureChange { args: [Changed(3, [Name(StringChange("denomination", "currencies_settings")), Ty(StringChange("u8", "BondedCurrenciesSettingsOf<T>"))]), Removed(4, ArgDesc { name: "transferable", ty: "bool" }), Removed(5, ArgDesc { name: "min_operation_balance", ty: "u128" })] })]
    [≠]  1: reset_team ( pool_id: T::PoolId, team: PoolManagingTeam<AccountIdOf<T>>, currency_idx: u32, )  )
        [Signature(SignatureChange { args: [Changed(2, [Name(StringChange("currency_idx", "currency_count"))])] })]

  - events changes:
    [+] EventDesc { index: 8, name: "TeamChanged", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::PoolId" }, ArgDesc { name: "admin", ty: "T::AccountId" }, ArgDesc { name: "freezer", ty: "T::AccountId" }] } }

  - constants changes:
    [≠] BaseDeposit: [0, 72, 24, 17, 197, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(72, 0)), Changed(2, U8Change(24, 0)), Changed(3, U8Change(17, 0)), Changed(4, U8Change(197, 0)), Changed(5, U8Change(95, 0))])]
    [≠] DepositPerCurrency: [0, 176, 10, 2, 169, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(176, 0)), Changed(2, U8Change(10, 0)), Changed(3, U8Change(2, 0)), Changed(4, U8Change(169, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 80: ParachainSystem -> 3 change(s)
  - calls changes:
    [-] "authorize_upgrade"
    [-] "enact_authorized_upgrade"

  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 82: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 0, 2, 0] }

[≠] pallet 83: PolkadotXcm -> 3 change(s)
  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 86: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [0] }

[-] pallet 66: Inflation
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true

!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
```


</details>
infra-riderju74 added a commit to infra-riderju74/kilt-node that referenced this pull request Oct 27, 2025
## Updates Polkadot dependencies to version 2409-05 

### Versioning 

Polkadot dependencies have been updated from version 1.7.0 to 1.16.5.
Versions between 1.7.0 and 1.14.x were skipped due to ambiguity around
which tag, branch, crates.io version, or commit to use. Additionally,
many intermediate versions were broken, as Parity crates frequently
failed to compile.

The main motivation for this update was to ensure compatibility with
Hyperbridge, which only supports the current LTS version. LTS version
2407 was also skipped, as internal crates failed to compile (I admit I
did not test all possible patch versions).

### Notable changes

- The pallet-parachain-system no longer exposes the authorize_upgrade
and enact_authorized_upgrade extrinsics. According to [this
PR](paritytech/polkadot-sdk#5439), parachains
should now use the system.setCode extrinsic instead.

- The pallet-treasury no longer exposes `propose_spend`,
`reject_proposal`, and `approve_proposal`. This may pose issues if there
are pending proposals during a runtime upgrade.

- frame-omni-bencher is now available. As a result, the custom
benchmarking CLI has been removed from the node. I can reintroduce it if
needed.

- I removed the genesis builder from the node implementation and moved
it into the runtime itself, following the pattern used in the parachain
template and other projects.
The RuntimeGenesis is now required by the runtime-api; without it,
benchmarking no longer works.

To improve compatibility with the upcoming omni-node, we should consider
introducing a separate crate that handles the chain specs and
RuntimeGenesis configurations for different chains.

### Migrations 

- cumulus_pallet_xcmp_queue has a migration, which is added to Peregrine
and Spiritnet.


### Future work 

- Replace construct_rutnime macro with the new more rusty construct
runtime.
- Introduce a new crate for the Omni Node that is responsible for
managing chain specs and RuntimeGenesis configurations


The WASMs diff can be investigated here:

<details>
<summary> 
Spiritnet Wasm Diff
</summary>

```
[≠] pallet 0: System -> 6 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized    
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] BlockWeights: [ 2, 91, 31, 93, 0, 7, 0, 136, 82, 106, 116, 2, 0, 64, 1, 194, 160, 169, 29, 0, 1, 7, 208, 9, 24, 164, 75, 2, 0, 208, 0, 1, ... ]
        [Value([Changed(0, U8Change(2, 98)), Changed(1, U8Change(91, 77)), Changed(2, U8Change(31, 24)), Changed(3, U8Change(93, 108)), Changed(15, U8Change(194, 66)), Changed(16, U8Change(160, 71)), Changed(17, U8Change(169, 135)), Changed(18, U8Change(29, 25)), Changed(22, U8Change(208, 48)), Changed(23, U8Change(9, 160)), Changed(24, U8Change(24, 32)), Changed(25, U8Change(164, 165)), Changed(45, U8Change(194, 66)), Changed(46, U8Change(160, 71)), Changed(47, U8Change(169, 135)), Changed(48, U8Change(29, 25)), Changed(52, U8Change(208, 48)), Changed(53, U8Change(171, 66)), Changed(54, U8Change(172, 181)), Changed(55, U8Change(190, 191)), Changed(83, U8Change(194, 66)), Changed(84, U8Change(160, 71)), Changed(85, U8Change(169, 135)), Changed(86, U8Change(29, 25))])]
    [≠] 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(34, U8Change(238, 80)), Changed(35, U8Change(44, 45)), Changed(51, U8Change(4, 5))])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 5: Indices -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 180, 124, 243, 40, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(180, 0)), Changed(2, U8Change(124, 0)), Changed(3, U8Change(243, 0)), Changed(4, U8Change(40, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 6: Balances -> 1 change(s)
  - calls changes:
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[+] id: 25 - new pallet: Collators
[≠] pallet 35: Treasury -> 32 change(s)
  - calls changes:
    [-] "propose_spend"
    [-] "reject_proposal"
    [-] "approve_proposal"

  - events changes:
    [≠]  0: Proposed ( proposal_index: ProposalIndex, )  )
        [Name(StringChange("Proposed", "Spending")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "budget_remaining")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))])] })]
    [≠]  1: Spending ( budget_remaining: BalanceOf<T, I>, )  )
        [Name(StringChange("Spending", "Awarded")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("budget_remaining", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  2: Awarded ( proposal_index: ProposalIndex, award: BalanceOf<T, I>, account: T::AccountId, )  )
        [Name(StringChange("Awarded", "Burnt")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "burnt_funds")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Removed(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  3: Rejected ( proposal_index: ProposalIndex, slashed: BalanceOf<T, I>, )  )
        [Name(StringChange("Rejected", "Rollover")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "rollover_balance")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "slashed", ty: "BalanceOf<T, I>" })] })]
    [≠]  4: Burnt ( burnt_funds: BalanceOf<T, I>, )  )
        [Name(StringChange("Burnt", "Deposit")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("burnt_funds", "value"))])] })]
    [≠]  5: Rollover ( rollover_balance: BalanceOf<T, I>, )  )
        [Name(StringChange("Rollover", "SpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("rollover_balance", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "amount", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "beneficiary", ty: "T::AccountId" })] })]
    [≠]  6: Deposit ( value: BalanceOf<T, I>, )  )
        [Name(StringChange("Deposit", "UpdatedInactive")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("value", "reactivated"))]), Added(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  7: SpendApproved ( proposal_index: ProposalIndex, amount: BalanceOf<T, I>, beneficiary: T::AccountId, )  )
        [Name(StringChange("SpendApproved", "AssetSpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "index")), Ty(StringChange("ProposalIndex", "SpendIndex"))]), Changed(1, [Name(StringChange("amount", "asset_kind")), Ty(StringChange("BalanceOf<T, I>", "T::AssetKind"))]), Changed(2, [Name(StringChange("beneficiary", "amount")), Ty(StringChange("T::AccountId", "AssetBalanceOf<T, I>"))]), Added(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Added(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Added(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠]  8: UpdatedInactive ( reactivated: BalanceOf<T, I>, deactivated: BalanceOf<T, I>, )  )
        [Name(StringChange("UpdatedInactive", "AssetSpendVoided")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("reactivated", "index")), Ty(StringChange("BalanceOf<T, I>", "SpendIndex"))]), Removed(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  9: AssetSpendApproved ( index: SpendIndex, asset_kind: T::AssetKind, amount: AssetBalanceOf<T, I>, beneficiary: T::Beneficiary, valid_from: BlockNumberFor<T>, expire_at: BlockNumberFor<T>, )  )
        [Name(StringChange("AssetSpendApproved", "Paid")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("asset_kind", "payment_id")), Ty(StringChange("T::AssetKind", "<T::Paymaster as Pay>::Id"))]), Removed(2, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }), Removed(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Removed(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Removed(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠] 10: AssetSpendVoided ( index: SpendIndex, )  )
        [Name(StringChange("AssetSpendVoided", "PaymentFailed")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [≠] 11: Paid ( index: SpendIndex, payment_id: <T::Paymaster as Pay>::Id, )  )
        [Name(StringChange("Paid", "SpendProcessed")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [-] "PaymentFailed"
    [-] "SpendProcessed"

  - errors changes:
    [≠]  0: InsufficientProposersBalance
        [Name(StringChange("InsufficientProposersBalance", "InvalidIndex"))]
    [≠]  1: InvalidIndex    
        [Name(StringChange("InvalidIndex", "TooManyApprovals"))]
    [≠]  2: TooManyApprovals
        [Name(StringChange("TooManyApprovals", "InsufficientPermission"))]
    [≠]  3: InsufficientPermission
        [Name(StringChange("InsufficientPermission", "ProposalNotApproved"))]
    [≠]  4: ProposalNotApproved
        [Name(StringChange("ProposalNotApproved", "FailedToConvertBalance"))]
    [≠]  5: FailedToConvertBalance
        [Name(StringChange("FailedToConvertBalance", "SpendExpired"))]
    [≠]  6: SpendExpired    
        [Name(StringChange("SpendExpired", "EarlyPayout"))]
    [≠]  7: EarlyPayout     
        [Name(StringChange("EarlyPayout", "AlreadyAttempted"))]
    [≠]  8: AlreadyAttempted
        [Name(StringChange("AlreadyAttempted", "PayoutError"))]
    [≠]  9: PayoutError     
        [Name(StringChange("PayoutError", "NotAttempted"))]
    [≠] 10: NotAttempted    
        [Name(StringChange("NotAttempted", "Inconclusive"))]
    [-] "Inconclusive"

  - constants changes:
    [-] "ProposalBond"
    [-] "ProposalBondMaximum"
    [-] "ProposalBondMinimum"

[≠] pallet 42: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 43: Proxy -> 4 change(s)
  - constants changes:
    [≠] AnnouncementDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] AnnouncementDepositFactor: [0, 232, 83, 87, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(232, 0)), Changed(2, U8Change(83, 0)), Changed(3, U8Change(87, 0)), Changed(5, U8Change(3, 0))])]
    [≠] ProxyDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] ProxyDepositFactor: [0, 244, 169, 43, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(244, 0)), Changed(2, U8Change(169, 0)), Changed(3, U8Change(43, 0)), Changed(4, U8Change(128, 0)), Changed(5, U8Change(1, 0))])]

[≠] pallet 46: Tips -> 2 change(s)
  - constants changes:
    [≠] DataDepositPerByte: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]
    [≠] TipReportDepositBase: [0, 244, 86, 40, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(0, U8Change(0, 1)), Changed(1, U8Change(244, 0)), Changed(2, U8Change(86, 0)), Changed(3, U8Change(40, 0)), Changed(4, U8Change(250, 0)), Changed(5, U8Change(50, 0))])]

[≠] pallet 47: Multisig -> 2 change(s)
  - constants changes:
    [≠] DepositBase: [0, 128, 27, 132, 238, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(27, 0)), Changed(3, U8Change(132, 0)), Changed(4, U8Change(238, 0)), Changed(5, U8Change(50, 0))])]
    [≠] DepositFactor: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]

[≠] pallet 49: Fungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 62: Attestation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 28, 201, 221, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(28, 0)), Changed(2, U8Change(201, 0)), Changed(3, U8Change(221, 0)), Changed(5, U8Change(110, 0))])]

[≠] pallet 63: Delegation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 128, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(198, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(126, 0)), Changed(5, U8Change(141, 0)), Changed(6, U8Change(3, 0))])]

[≠] pallet 64: Did -> 4 change(s)
  - constants changes:
    [≠] BaseDeposit: [0, 0, 141, 73, 253, 26, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(2, U8Change(141, 0)), Changed(3, U8Change(73, 0)), Changed(4, U8Change(253, 0)), Changed(5, U8Change(26, 0)), Changed(6, U8Change(7, 0))])]
    [≠] Fee: [0, 32, 61, 136, 121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(61, 0)), Changed(3, U8Change(136, 0)), Changed(4, U8Change(121, 0)), Changed(5, U8Change(45, 0))])]
    [≠] KeyDeposit: [0, 220, 32, 116, 151, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(220, 0)), Changed(2, U8Change(32, 0)), Changed(3, U8Change(116, 0)), Changed(4, U8Change(151, 0)), Changed(5, U8Change(1, 0))])]
    [≠] ServiceEndpointDeposit: [0, 240, 36, 238, 189, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(240, 0)), Changed(2, U8Change(36, 0)), Changed(3, U8Change(238, 0)), Changed(4, U8Change(189, 0)), Changed(5, U8Change(237, 0))])]

[≠] pallet 67: DidLookup -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 192, 175, 214, 145, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(192, 0)), Changed(2, U8Change(175, 0)), Changed(3, U8Change(214, 0)), Changed(4, U8Change(145, 0)), Changed(5, U8Change(54, 0))])]

[≠] pallet 68: Web3Names -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 212, 80, 168, 93, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(212, 0)), Changed(2, U8Change(80, 0)), Changed(3, U8Change(168, 0)), Changed(4, U8Change(93, 0)), Changed(5, U8Change(107, 0))])]

[≠] pallet 69: PublicCredentials -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 92, 106, 81, 252, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(92, 0)), Changed(2, U8Change(106, 0)), Changed(3, U8Change(81, 0)), Changed(4, U8Change(252, 0)), Changed(5, U8Change(69, 0))])]

[≠] pallet 80: ParachainSystem -> 3 change(s)
  - calls changes:
    [-] "authorize_upgrade"
    [-] "enact_authorized_upgrade"

  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 82: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 0, 2, 0] }

[≠] pallet 83: PolkadotXcm -> 3 change(s)
  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 86: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [0] }

[-] pallet 66: Inflation
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true

!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
```

</details>

<details>
<summary> 
Peregrine WASM diff
</summary> 

```
!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
[≠] pallet 0: System -> 6 change(s)
  - errors changes:
    [≠]  6: NothingAuthorized
        [Name(StringChange("NothingAuthorized", "MultiBlockMigrationsOngoing"))]
    [≠]  7: Unauthorized    
        [Name(StringChange("Unauthorized", "NothingAuthorized"))]
    [+] ErrorDesc { index: 8, name: "Unauthorized" }

  - constants changes:
    [≠] BlockWeights: [ 2, 91, 31, 93, 0, 7, 0, 136, 82, 106, 116, 2, 0, 64, 1, 194, 160, 169, 29, 0, 1, 7, 208, 9, 24, 164, 75, 2, 0, 208, 0, 1, ... ]
        [Value([Changed(0, U8Change(2, 98)), Changed(1, U8Change(91, 77)), Changed(2, U8Change(31, 24)), Changed(3, U8Change(93, 108)), Changed(15, U8Change(194, 66)), Changed(16, U8Change(160, 71)), Changed(17, U8Change(169, 135)), Changed(18, U8Change(29, 25)), Changed(22, U8Change(208, 48)), Changed(23, U8Change(9, 160)), Changed(24, U8Change(24, 32)), Changed(25, U8Change(164, 165)), Changed(45, U8Change(194, 66)), Changed(46, U8Change(160, 71)), Changed(47, U8Change(169, 135)), Changed(48, U8Change(29, 25)), Changed(52, U8Change(208, 48)), Changed(53, U8Change(171, 66)), Changed(54, U8Change(172, 181)), Changed(55, U8Change(190, 191)), Changed(83, U8Change(194, 66)), Changed(84, U8Change(160, 71)), Changed(85, U8Change(169, 135)), Changed(86, U8Change(29, 25))])]
    [≠] 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, 238, 44, ... ]
        [Value([Changed(30, U8Change(238, 80)), Changed(31, U8Change(44, 45)), Changed(47, U8Change(4, 5)), Changed(263, U8Change(1, 2))])]

  - storages changes:
    [+] StorageDesc { name: "InherentsApplied", modifier: "Default", default_value: [0] }

[≠] pallet 5: Indices -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 180, 124, 243, 40, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(180, 0)), Changed(2, U8Change(124, 0)), Changed(3, U8Change(243, 0)), Changed(4, U8Change(40, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 6: Balances -> 1 change(s)
  - calls changes:
    [+] CallDesc { index: 10, name: "burn", signature: SignatureDesc { args: [ArgDesc { name: "value", ty: "T::Balance" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

[≠] pallet 23: Aura -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "SlotDuration", value: [224, 46, 0, 0, 0, 0, 0, 0] }

[+] id: 25 - new pallet: Collators
[≠] pallet 35: Treasury -> 33 change(s)
  - calls changes:
    [-] "propose_spend"
    [-] "reject_proposal"
    [-] "approve_proposal"

  - events changes:
    [≠]  0: Proposed ( proposal_index: ProposalIndex, )  )
        [Name(StringChange("Proposed", "Spending")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "budget_remaining")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))])] })]
    [≠]  1: Spending ( budget_remaining: BalanceOf<T, I>, )  )
        [Name(StringChange("Spending", "Awarded")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("budget_remaining", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  2: Awarded ( proposal_index: ProposalIndex, award: BalanceOf<T, I>, account: T::AccountId, )  )
        [Name(StringChange("Awarded", "Burnt")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "burnt_funds")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "award", ty: "BalanceOf<T, I>" }), Removed(2, ArgDesc { name: "account", ty: "T::AccountId" })] })]
    [≠]  3: Rejected ( proposal_index: ProposalIndex, slashed: BalanceOf<T, I>, )  )
        [Name(StringChange("Rejected", "Rollover")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "rollover_balance")), Ty(StringChange("ProposalIndex", "BalanceOf<T, I>"))]), Removed(1, ArgDesc { name: "slashed", ty: "BalanceOf<T, I>" })] })]
    [≠]  4: Burnt ( burnt_funds: BalanceOf<T, I>, )  )
        [Name(StringChange("Burnt", "Deposit")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("burnt_funds", "value"))])] })]
    [≠]  5: Rollover ( rollover_balance: BalanceOf<T, I>, )  )
        [Name(StringChange("Rollover", "SpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("rollover_balance", "proposal_index")), Ty(StringChange("BalanceOf<T, I>", "ProposalIndex"))]), Added(1, ArgDesc { name: "amount", ty: "BalanceOf<T, I>" }), Added(2, ArgDesc { name: "beneficiary", ty: "T::AccountId" })] })]
    [≠]  6: Deposit ( value: BalanceOf<T, I>, )  )
        [Name(StringChange("Deposit", "UpdatedInactive")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("value", "reactivated"))]), Added(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  7: SpendApproved ( proposal_index: ProposalIndex, amount: BalanceOf<T, I>, beneficiary: T::AccountId, )  )
        [Name(StringChange("SpendApproved", "AssetSpendApproved")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("proposal_index", "index")), Ty(StringChange("ProposalIndex", "SpendIndex"))]), Changed(1, [Name(StringChange("amount", "asset_kind")), Ty(StringChange("BalanceOf<T, I>", "T::AssetKind"))]), Changed(2, [Name(StringChange("beneficiary", "amount")), Ty(StringChange("T::AccountId", "AssetBalanceOf<T, I>"))]), Added(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Added(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Added(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠]  8: UpdatedInactive ( reactivated: BalanceOf<T, I>, deactivated: BalanceOf<T, I>, )  )
        [Name(StringChange("UpdatedInactive", "AssetSpendVoided")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("reactivated", "index")), Ty(StringChange("BalanceOf<T, I>", "SpendIndex"))]), Removed(1, ArgDesc { name: "deactivated", ty: "BalanceOf<T, I>" })] })]
    [≠]  9: AssetSpendApproved ( index: SpendIndex, asset_kind: T::AssetKind, amount: AssetBalanceOf<T, I>, beneficiary: T::Beneficiary, valid_from: BlockNumberFor<T>, expire_at: BlockNumberFor<T>, )  )
        [Name(StringChange("AssetSpendApproved", "Paid")), Signature(SignatureChange { args: [Changed(1, [Name(StringChange("asset_kind", "payment_id")), Ty(StringChange("T::AssetKind", "<T::Paymaster as Pay>::Id"))]), Removed(2, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }), Removed(3, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }), Removed(4, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }), Removed(5, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" })] })]
    [≠] 10: AssetSpendVoided ( index: SpendIndex, )  )
        [Name(StringChange("AssetSpendVoided", "PaymentFailed")), Signature(SignatureChange { args: [Added(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [≠] 11: Paid ( index: SpendIndex, payment_id: <T::Paymaster as Pay>::Id, )  )
        [Name(StringChange("Paid", "SpendProcessed")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" })] })]
    [-] "PaymentFailed"
    [-] "SpendProcessed"

  - errors changes:
    [≠]  0: InsufficientProposersBalance
        [Name(StringChange("InsufficientProposersBalance", "InvalidIndex"))]
    [≠]  1: InvalidIndex    
        [Name(StringChange("InvalidIndex", "TooManyApprovals"))]
    [≠]  2: TooManyApprovals
        [Name(StringChange("TooManyApprovals", "InsufficientPermission"))]
    [≠]  3: InsufficientPermission
        [Name(StringChange("InsufficientPermission", "ProposalNotApproved"))]
    [≠]  4: ProposalNotApproved
        [Name(StringChange("ProposalNotApproved", "FailedToConvertBalance"))]
    [≠]  5: FailedToConvertBalance
        [Name(StringChange("FailedToConvertBalance", "SpendExpired"))]
    [≠]  6: SpendExpired    
        [Name(StringChange("SpendExpired", "EarlyPayout"))]
    [≠]  7: EarlyPayout     
        [Name(StringChange("EarlyPayout", "AlreadyAttempted"))]
    [≠]  8: AlreadyAttempted
        [Name(StringChange("AlreadyAttempted", "PayoutError"))]
    [≠]  9: PayoutError     
        [Name(StringChange("PayoutError", "NotAttempted"))]
    [≠] 10: NotAttempted    
        [Name(StringChange("NotAttempted", "Inconclusive"))]
    [-] "Inconclusive"

  - constants changes:
    [≠] Burn: [0; 4]        
        [Value([Changed(0, U8Change(0, 64)), Changed(1, U8Change(0, 66)), Changed(2, U8Change(0, 15))])]
    [-] "ProposalBond"
    [-] "ProposalBondMaximum"
    [-] "ProposalBondMinimum"

[≠] pallet 42: Scheduler -> 11 change(s)
  - calls changes:
    [+] CallDesc { index: 6, name: "set_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 7, name: "set_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }, ArgDesc { name: "retries", ty: "u8" }, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }] } }
    [+] CallDesc { index: 8, name: "cancel_retry", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }] } }
    [+] CallDesc { index: 9, name: "cancel_retry_named", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "TaskName" }] } }

  - events changes:
    [≠]  3: CallUnavailable ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("CallUnavailable", "RetrySet")), Signature(SignatureChange { args: [Added(2, ArgDesc { name: "period", ty: "BlockNumberFor<T>" }), Added(3, ArgDesc { name: "retries", ty: "u8" })] })]
    [≠]  4: PeriodicFailed ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PeriodicFailed", "RetryCancelled"))]
    [≠]  5: PermanentlyOverweight ( task: TaskAddress<BlockNumberFor<T>>, id: Option<TaskName>, )  )
        [Name(StringChange("PermanentlyOverweight", "CallUnavailable"))]
    [+] EventDesc { index: 6, name: "PeriodicFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 7, name: "RetryFailed", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }
    [+] EventDesc { index: 8, name: "PermanentlyOverweight", signature: SignatureDesc { args: [ArgDesc { name: "task", ty: "TaskAddress<BlockNumberFor<T>>" }, ArgDesc { name: "id", ty: "Option<TaskName>" }] } }

  - storages changes:
    [+] StorageDesc { name: "Retries", modifier: "Optional", default_value: [0] }

[≠] pallet 43: Proxy -> 4 change(s)
  - constants changes:
    [≠] AnnouncementDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] AnnouncementDepositFactor: [0, 232, 83, 87, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(232, 0)), Changed(2, U8Change(83, 0)), Changed(3, U8Change(87, 0)), Changed(5, U8Change(3, 0))])]
    [≠] ProxyDepositBase: [0, 32, 247, 165, 75, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(247, 0)), Changed(3, U8Change(165, 0)), Changed(4, U8Change(75, 0)), Changed(5, U8Change(51, 0))])]
    [≠] ProxyDepositFactor: [0, 244, 169, 43, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(244, 0)), Changed(2, U8Change(169, 0)), Changed(3, U8Change(43, 0)), Changed(4, U8Change(128, 0)), Changed(5, U8Change(1, 0))])]

[≠] pallet 46: Tips -> 2 change(s)
  - constants changes:
    [≠] DataDepositPerByte: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]
    [≠] TipReportDepositBase: [0, 244, 86, 40, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(0, U8Change(0, 1)), Changed(1, U8Change(244, 0)), Changed(2, U8Change(86, 0)), Changed(3, U8Change(40, 0)), Changed(4, U8Change(250, 0)), Changed(5, U8Change(50, 0))])]

[≠] pallet 47: Multisig -> 2 change(s)
  - constants changes:
    [≠] DepositBase: [0, 128, 27, 132, 238, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(27, 0)), Changed(3, U8Change(132, 0)), Changed(4, U8Change(238, 0)), Changed(5, U8Change(50, 0))])]
    [≠] DepositFactor: [0, 116, 59, 164, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(116, 0)), Changed(2, U8Change(59, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(11, 0))])]

[≠] pallet 49: Fungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 50: BondedFungibles -> 5 change(s)
  - calls changes:
    [+] CallDesc { index: 32, name: "transfer_all", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::AssetIdParameter" }, ArgDesc { name: "dest", ty: "AccountIdLookupOf<T>" }, ArgDesc { name: "keep_alive", ty: "bool" }] } }

  - events changes:
    [+] EventDesc { index: 24, name: "Deposited", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }
    [+] EventDesc { index: 25, name: "Withdrawn", signature: SignatureDesc { args: [ArgDesc { name: "asset_id", ty: "T::AssetId" }, ArgDesc { name: "who", ty: "T::AccountId" }, ArgDesc { name: "amount", ty: "T::Balance" }] } }

  - errors changes:
    [+] ErrorDesc { index: 20, name: "BadAssetId" }

  - storages changes:
    [+] StorageDesc { name: "NextAssetId", modifier: "Optional", default_value: [0] }

[≠] pallet 62: Attestation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 28, 201, 221, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(28, 0)), Changed(2, U8Change(201, 0)), Changed(3, U8Change(221, 0)), Changed(5, U8Change(110, 0))])]

[≠] pallet 63: Delegation -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 128, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(128, 0)), Changed(2, U8Change(198, 0)), Changed(3, U8Change(164, 0)), Changed(4, U8Change(126, 0)), Changed(5, U8Change(141, 0)), Changed(6, U8Change(3, 0))])]

[≠] pallet 64: Did -> 4 change(s)
  - constants changes:
    [≠] BaseDeposit: [0, 0, 141, 73, 253, 26, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(2, U8Change(141, 0)), Changed(3, U8Change(73, 0)), Changed(4, U8Change(253, 0)), Changed(5, U8Change(26, 0)), Changed(6, U8Change(7, 0))])]
    [≠] Fee: [0, 32, 61, 136, 121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(32, 0)), Changed(2, U8Change(61, 0)), Changed(3, U8Change(136, 0)), Changed(4, U8Change(121, 0)), Changed(5, U8Change(45, 0))])]
    [≠] KeyDeposit: [0, 220, 32, 116, 151, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(220, 0)), Changed(2, U8Change(32, 0)), Changed(3, U8Change(116, 0)), Changed(4, U8Change(151, 0)), Changed(5, U8Change(1, 0))])]
    [≠] ServiceEndpointDeposit: [0, 240, 36, 238, 189, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(240, 0)), Changed(2, U8Change(36, 0)), Changed(3, U8Change(238, 0)), Changed(4, U8Change(189, 0)), Changed(5, U8Change(237, 0))])]

[≠] pallet 67: DidLookup -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 192, 175, 214, 145, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(192, 0)), Changed(2, U8Change(175, 0)), Changed(3, U8Change(214, 0)), Changed(4, U8Change(145, 0)), Changed(5, U8Change(54, 0))])]

[≠] pallet 68: Web3Names -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 212, 80, 168, 93, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(212, 0)), Changed(2, U8Change(80, 0)), Changed(3, U8Change(168, 0)), Changed(4, U8Change(93, 0)), Changed(5, U8Change(107, 0))])]

[≠] pallet 69: PublicCredentials -> 1 change(s)
  - constants changes:
    [≠] Deposit: [0, 92, 106, 81, 252, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(92, 0)), Changed(2, U8Change(106, 0)), Changed(3, U8Change(81, 0)), Changed(4, U8Change(252, 0)), Changed(5, U8Change(69, 0))])]

[≠] pallet 75: BondedCurrencies -> 5 change(s)
  - calls changes:
    [≠]  0: create_pool ( curve: CurveInput<CurveParameterInputOf<T>>, collateral_id: CollateralAssetIdOf<T>, currencies: BoundedVec<TokenMetaOf<T>, T::MaxCurrenciesPerPool>, denomination: u8, transferable: bool, min_operation_balance: u128, )  )
        [Signature(SignatureChange { args: [Changed(3, [Name(StringChange("denomination", "currencies_settings")), Ty(StringChange("u8", "BondedCurrenciesSettingsOf<T>"))]), Removed(4, ArgDesc { name: "transferable", ty: "bool" }), Removed(5, ArgDesc { name: "min_operation_balance", ty: "u128" })] })]
    [≠]  1: reset_team ( pool_id: T::PoolId, team: PoolManagingTeam<AccountIdOf<T>>, currency_idx: u32, )  )
        [Signature(SignatureChange { args: [Changed(2, [Name(StringChange("currency_idx", "currency_count"))])] })]

  - events changes:
    [+] EventDesc { index: 8, name: "TeamChanged", signature: SignatureDesc { args: [ArgDesc { name: "id", ty: "T::PoolId" }, ArgDesc { name: "admin", ty: "T::AccountId" }, ArgDesc { name: "freezer", ty: "T::AccountId" }] } }

  - constants changes:
    [≠] BaseDeposit: [0, 72, 24, 17, 197, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(72, 0)), Changed(2, U8Change(24, 0)), Changed(3, U8Change(17, 0)), Changed(4, U8Change(197, 0)), Changed(5, U8Change(95, 0))])]
    [≠] DepositPerCurrency: [0, 176, 10, 2, 169, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        [Value([Changed(1, U8Change(176, 0)), Changed(2, U8Change(10, 0)), Changed(3, U8Change(2, 0)), Changed(4, U8Change(169, 0)), Changed(5, U8Change(53, 0))])]

[≠] pallet 80: ParachainSystem -> 3 change(s)
  - calls changes:
    [-] "authorize_upgrade"
    [-] "enact_authorized_upgrade"

  - constants changes:
    [+] ConstantDesc { name: "SelfParaId", value: [100, 0, 0, 0] }

[≠] pallet 82: XcmpQueue -> 4 change(s)
  - errors changes:
    [+] ErrorDesc { index: 3, name: "TooManyActiveOutboundChannels" }
    [+] ErrorDesc { index: 4, name: "TooBig" }

  - constants changes:
    [+] ConstantDesc { name: "MaxActiveOutboundChannels", value: [128, 0, 0, 0] }
    [+] ConstantDesc { name: "MaxPageSize", value: [0, 0, 2, 0] }

[≠] pallet 83: PolkadotXcm -> 3 change(s)
  - errors changes:
    [-] "InvalidAssetNotConcrete"

  - storages changes:
    [+] StorageDesc { name: "RecordedXcm", modifier: "Optional", default_value: [0] }
    [+] StorageDesc { name: "ShouldRecordXcm", modifier: "Default", default_value: [0] }

[≠] pallet 86: MessageQueue -> 1 change(s)
  - constants changes:
    [+] ConstantDesc { name: "IdleMaxServiceWeight", value: [0] }

[-] pallet 66: Inflation
SUMMARY:
- Compatible.......................: false
- Require transaction_version bump.: true

!!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!!
```


</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

T2-pallets This PR/Issue is related to a particular pallet.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

7 participants