Skip to content

Conversation

rflechtner
Copy link
Contributor

Ad96el and others added 27 commits February 19, 2025 14:30
## fixes Chopsticks 

We decided to remove the `messageQueue` pallet from the snapshot tests
since its events are not reliably reproducible and cause flaky tests.
This PR removes all occurrences.
Cargo deny raises warnings about an issue in the Tokyo library, which
has soundness issues in the version used here.
Fortunately this can easily be bumped to a patched version.
Changes to pallet-bonded-coins to address findings in the audit.
---
Co-authored-by: Adel Golghalyani <[email protected]>
## fixes [#3822](KILTprotocol/ticket#3822)

This PR introduces permissioned collators to the Peregrine and Spirtinet
runtimes. The council or governance is now allowed to add and remove
members through the newly deployed pallet-membership. This pallet is
then used by a new session manager implementation. The old session
manager implementation remains untouched—it's only moved out of the
runtime.

After the migration, the parachain-staking pallet becomes essentially
obsolete, as collators no longer receive rewards for block production.

A follow-up PR will reduce rewards in the parachain-staking pallet
accordingly.

The round information (which determines session length) still resides in
the parachain-staking pallet. Before it can be removed, a new source for
round length must be implemented—either directly in the runtime or via a
custom pallet that includes collator information.

### How to test
- Navigate to the zombienet directory and spin up a Peregrine runtime.
- Perform the runtime upgrade (sudo -> system -> set_code).
- Add a new collator via sudo or start a council motion (sudo ->
permissionedCollators -> add_member).
- Force a new round (sudo -> parachainStaking -> forceNewRound).
- Verify in the session pallet that the new collator is queued. (To use
a new collator, spin up a node with the correct keys. Using an existing
collator is usually easier.)
- Force another new round.
- Only the new collator should be producing blocks now.
## Apply review suggestions
## 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>
Updates the lock file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants