Skip to content

chore: polkadotstable-2409-5#885

Merged
Ad96el merged 41 commits intodevelopfrom
chore/polkadot-1.8.0
May 19, 2025
Merged

chore: polkadotstable-2409-5#885
Ad96el merged 41 commits intodevelopfrom
chore/polkadot-1.8.0

Conversation

@Ad96el
Copy link
Contributor

@Ad96el Ad96el commented Apr 30, 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, 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:

Spiritnet Wasm Diff
[≠] 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 !!!
Peregrine WASM diff
!!! 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 !!!


#[test]
fn successful_with_stored_v2() {
#[allow(deprecated)]
Copy link
Contributor Author

Choose a reason for hiding this comment

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

We still want to check if the components are working with the deprecated version.

# Cumulus
cumulus-pallet-aura-ext = { workspace = true }
cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook"] }
cumulus-pallet-parachain-system = { workspace = true }
Copy link
Contributor Author

@Ad96el Ad96el Apr 30, 2025

Choose a reason for hiding this comment

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

The paremterized-consensus-hook is removed in version: Polkadot v1.13.0

}
}

#[allow(deprecated)]
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The next major release will already contain the omninode. Therefore, I kept the changes as minimal as possible, as they get anyway dropped in the next polkadot dependency update.

Comment on lines +253 to +255
type HrmpChannelAcceptedHandler = ();
type HrmpChannelClosingHandler = ();
type HrmpNewChannelOpenRequestHandler = ();
Copy link
Contributor Author

Choose a reason for hiding this comment

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

No need for optional extra logic for updating any HRMP channel.

type HrmpChannelAcceptedHandler = ();
type HrmpChannelClosingHandler = ();
type HrmpNewChannelOpenRequestHandler = ();
type XcmRecorder = ();
Copy link
Contributor Author

Choose a reason for hiding this comment

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

New type used for dry runes. Enables a better investigation of received and send XCM messages. The recorded messages are available under Polkadotxcm.

Comment on lines -102 to -105
type OnSlash = Treasury;
type ProposalBond = ProposalBond;
type ProposalBondMinimum = ConstU128<{ 20 * KILT }>;
type ProposalBondMaximum = ();
Copy link
Contributor Author

Choose a reason for hiding this comment

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

TODO: check treasury changes.

Copy link
Contributor Author

@Ad96el Ad96el May 6, 2025

Choose a reason for hiding this comment

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

Removed in: [https://github.com/paritytech/polkadot-sdk/pull/4831] and paritytech/polkadot-sdk@d579b67.

Just use spend_local

Copy link
Contributor Author

@Ad96el Ad96el Apr 30, 2025

Choose a reason for hiding this comment

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

There’s no longer a need to manually bump storage values.
Newly introduced pallets default to the correct storage version.
So, I’ve removed the migration helper.

@Ad96el Ad96el changed the title Chore/polkadot 1.8.0 chore: polkadotstable-2409-5 Apr 30, 2025
@Ad96el Ad96el added the ci-skip-docs-pr ci-skip-docs-pr label Apr 30, 2025
#[cfg(not(feature = "runtime-benchmarks"))]
type PrimeOrigin = frame_support::traits::NeverEnsureOrigin<AccountId>;
#[cfg(feature = "runtime-benchmarks")]
type PrimeOrigin = frame_system::EnsureSigned<AccountId>;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Required, otherwise benchmarking was not working.

// along with this program. If not, see <https://www.gnu.org/licenses/>.

// If you feel like getting in touch with us, you can do so at <hello@kilt.io>
#![allow(clippy::expect_used)]
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I do not like this. By moving the mod in a new crate, we can get rid of it.


fn authorities() -> Vec<AuthorityId> {
Aura::authorities().into_inner()
pallet_aura::Authorities::<Runtime>::get().into_inner()
Copy link
Contributor Author

Choose a reason for hiding this comment

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

getters are removed.

//! WORST CASE MAP SIZE: `1000000`
//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K`
//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
Copy link
Contributor Author

@Ad96el Ad96el May 7, 2025

Choose a reason for hiding this comment

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

Strange… I can see in the logs that the chain is set to Development. Not sure why it's showing None here.
None would mean the benchmarks are executed with the default RuntimeGenesis, which is also fine but still....


pub type RuntimeMigrations = (
pallet_xcm::migration::MigrateToLatestXcmVersion<Runtime>,
frame_support::migrations::RemovePallet<DmpPalletName, <Runtime as frame_system::Config>::DbWeight>,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I am not sure anymore, If we already executed the DmpPallet removement. It still does not hurt to execute the migration. Document, when this can be removed

@Ad96el Ad96el marked this pull request as ready for review May 7, 2025 10:02
@Ad96el Ad96el requested review from abdulmth and rflechtner May 7, 2025 10:02
));
System::assert_last_event(

#[cfg(not(feature = "runtime-benchmarks"))]
Copy link
Contributor

Choose a reason for hiding this comment

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

should be further looked into.

Comment on lines +254 to +259
pub fn get_public_key_from_secret<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
#[allow(clippy::expect_used)]
TPublic::Pair::from_string(&format!("//{}", seed), None)
.expect("static values are valid; qed")
.public()
}
Copy link
Contributor

Choose a reason for hiding this comment

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

expect here should be dealt with?


parameter_types! {
pub const Inflation: &'static str = "Inflation";
pub const DmpPalletName: &'static str = "DmpQueue";
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe unnecessary?


[features]
default = ["std"]
mock = ["std"]
Copy link
Contributor

Choose a reason for hiding this comment

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

Why?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The pallet is using a mock feature, which is not specified in the cargo.toml. Rust was complaining about it now: https://github.com/KILTprotocol/kilt-node/blob/develop/pallets/pallet-configuration/src/lib.rs#L33

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm quite sure this is a misconfiguration somewhere, as using mock itself should not require using std. But it's not that important, maybe just add a quick FIXME that we can address later on.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

After cargo clean it seems to work now: 2b62fdd 😃

abdulmth
abdulmth previously approved these changes May 16, 2025
@Ad96el Ad96el enabled auto-merge (squash) May 16, 2025 12:06
@Ad96el Ad96el disabled auto-merge May 16, 2025 13:10
# Implements ISMP related pallet
@Ad96el Ad96el enabled auto-merge (squash) May 16, 2025 13:22
@Ad96el Ad96el disabled auto-merge May 19, 2025 07:33
@Ad96el Ad96el merged commit ff4b170 into develop May 19, 2025
18 checks passed
@Ad96el Ad96el deleted the chore/polkadot-1.8.0 branch May 19, 2025 07:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-skip-docs-pr ci-skip-docs-pr

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants