-
Notifications
You must be signed in to change notification settings - Fork 799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FRAME: Consideration (abstraction over storage deposits) #1361
Conversation
4eebde0
to
3f92be2
Compare
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
bot fmt |
@gavofyork https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/3620827 was started for your command Comment |
@gavofyork Command |
bot merge |
@gavofyork we've disabled |
* Consideration trait * Avoid associated type in Consideration * Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs Co-authored-by: Francisco Aguirre <[email protected]> * Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs Co-authored-by: Francisco Aguirre <[email protected]> * Update substrate/frame/support/src/traits/storage.rs Co-authored-by: Kian Paimani <[email protected]> * Update substrate/frame/support/src/traits/tokens/fungible/mod.rs Co-authored-by: Oliver Tale-Yazdi <[email protected]> * ".git/.scripts/commands/fmt/fmt.sh" * Add --------- Co-authored-by: Francisco Aguirre <[email protected]> Co-authored-by: Kian Paimani <[email protected]> Co-authored-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: command-bot <>
Make Preimage pallet use Consideration instead of handling deposits directly. Other half of paritytech/substrate#13666. Depends/based on #1361. Script for the lazy migration that should be run manually once: [migrate-preimage-lazy.py](https://github.com/ggwpez/substrate-scripts/blob/master/migrate-preimage-lazy.py). ## TODO - [x] Migration code. --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: command-bot <> Co-authored-by: Francisco Aguirre <[email protected]> Co-authored-by: Kian Paimani <[email protected]>
…1361) * Consideration trait * Avoid associated type in Consideration * Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs Co-authored-by: Francisco Aguirre <[email protected]> * Update substrate/frame/support/src/traits/tokens/fungible/freeze.rs Co-authored-by: Francisco Aguirre <[email protected]> * Update substrate/frame/support/src/traits/storage.rs Co-authored-by: Kian Paimani <[email protected]> * Update substrate/frame/support/src/traits/tokens/fungible/mod.rs Co-authored-by: Oliver Tale-Yazdi <[email protected]> * ".git/.scripts/commands/fmt/fmt.sh" * Add --------- Co-authored-by: Francisco Aguirre <[email protected]> Co-authored-by: Kian Paimani <[email protected]> Co-authored-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: command-bot <>
Make Preimage pallet use Consideration instead of handling deposits directly. Other half of paritytech/substrate#13666. Depends/based on paritytech#1361. Script for the lazy migration that should be run manually once: [migrate-preimage-lazy.py](https://github.com/ggwpez/substrate-scripts/blob/master/migrate-preimage-lazy.py). ## TODO - [x] Migration code. --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: command-bot <> Co-authored-by: Francisco Aguirre <[email protected]> Co-authored-by: Kian Paimani <[email protected]>
## fixes [KILTprotocol/ticket#3439](KILTprotocol/ticket#3439) ### notable Changes - rust version 1.7.4 (Toolchain and gitlab runner are updated) - the preimage_pallet is no longer using deposits, instead it uses [consideration](paritytech/polkadot-sdk#1361), which is an abstration over the balance. The exact footprint of an storage entry is used to calculate the cost storing entries. Might be interesting for our current deposit model. - The pallet-xcm introduced a new benchmarking logic ### Pallets - Removed cumulus_pallet_dmp_queue (Replaced by pallet_message_queue). There is a lazy migration provided, which is running automatically. Once the the [Complete event](paritytech/polkadot-sdk#1246) is emitted, we can delete the pallet. - Treasur introduced a new [spending support](paritytech/polkadot-sdk#1333), which is currently disabled. Might be interesting at some point, if other currencies are available. - `transfer` extrinsic in `pallet_balances` is removed. Will be a breaking change for Sporran. For other new introduced extrinsics, please have a lookin the diffs below. - Tips: A max tip amount has to be specified, which is currently set to 1_000_000 KILT ### Emulated Tests I am quite unhappy with the current state of the emulated tests. I would like to refactor those tests as described in this [issue](KILTprotocol/ticket#3241 (comment)). For this PR, I only fixed problems arised by updating the dependencies. Since the polkadot-runtime is no longer part of the Polkadot-SDK, the relay chain for Spiritnet has been changed to Rococo. The purpose of these tests is to ensure that the expectations of the xcm-configuration match the implementation. The specific relay chain used should not matter. ### XCM - XCM version 4 is out which is also the LTS for XCM. - In version 4 a new instruction `Transfer` is introduced, which needed to be denied by the Barrier - renaming of paramters: The `Multi` is removed: MultiLocation -> Location, MultiAsset -> Asset, ... ### Try-runtime In version 1.7.0 additional try-runtime tests are introduced, where it is tried to decode the whole storage of the chain. This error should only occur for chains which are still running on an ancient SDK version and will be fixed automatically in the next runtime upgrade. ### Weights Since a lot of new extrinsics are introduced, I updated all weights. ### Todos - [x] execute Benchmarking ## Metadata Diff to Develop Branch <details> <summary>Peregrine Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 4, 0, 0, 0, 136, 44, ... ] [Value([Changed(38, U8Change(60, 68)), Changed(159, U8Change(234, 215)), Changed(160, U8Change(147, 189)), Changed(161, U8Change(227, 216)), Changed(162, U8Change(241, 162)), Changed(163, U8Change(111, 114)), Changed(164, U8Change(61, 202)), Changed(165, U8Change(105, 13)), Changed(166, U8Change(98, 101)), Changed(167, U8Change(2, 1)), Changed(171, U8Change(38, 234)), Changed(172, U8Change(96, 147)), Changed(173, U8Change(149, 227)), Changed(174, U8Change(85, 241)), Changed(175, U8Change(192, 111)), Changed(176, U8Change(101, 61)), Changed(177, U8Change(102, 105)), Changed(178, U8Change(3, 98)), Changed(183, U8Change(164, 38)), Changed(184, U8Change(123, 96)), Changed(185, U8Change(125, 149)), Changed(186, U8Change(84, 85)), Changed(187, U8Change(73, 192)), Changed(188, U8Change(148, 101)), Changed(189, U8Change(201, 102)), Changed(190, U8Change(155, 3)), Changed(191, U8Change(1, 2)), Changed(195, U8Change(69, 164)), Changed(196, U8Change(191, 123)), Changed(197, U8Change(186, 125)), Changed(198, U8Change(81, 84)), Changed(199, U8Change(163, 73)), Changed(200, U8Change(16, 148)), Changed(201, U8Change(178, 201)), Changed(202, U8Change(35, 155)), Changed(207, U8Change(195, 69)), Changed(208, U8Change(179, 191)), Changed(209, U8Change(232, 186)), Changed(210, U8Change(211, 81)), Changed(211, U8Change(50, 163)), Changed(212, U8Change(115, 16)), Changed(213, U8Change(153, 178)), Changed(214, U8Change(13, 35)), Changed(219, U8Change(8, 195)), Changed(220, U8Change(0, 179)), Changed(221, U8Change(0, 232)), Changed(222, U8Change(0, 211)), Changed(223, U8Change(0, 50)), Added(224, 115), Added(225, 153), Added(226, 13), Added(227, 1), Added(228, 0), Added(229, 0), Added(230, 0), Added(231, 251), Added(232, 197), Added(233, 119), Added(234, 185), Added(235, 215), Added(236, 71), Added(237, 239), Added(238, 214), Added(239, 1), Added(240, 0), Added(241, 0), Added(242, 0), Added(243, 8), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 8: Sudo -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "remove_key", signature: SignatureDesc { args: [] } } - events changes: [≠] 1: KeyChanged ( old_sudoer: Option<T::AccountId>, ) ) [Signature(SignatureChange { args: [Changed(0, [Name(StringChange("old_sudoer", "old"))]), Added(1, ArgDesc { name: "new", ty: "T::AccountId" })] })] [≠] 2: SudoAsDone ( sudo_result: DispatchResult, ) ) [Name(StringChange("SudoAsDone", "KeyRemoved")), Signature(SignatureChange { args: [Removed(0, ArgDesc { name: "sudo_result", ty: "DispatchResult" })] })] [+] EventDesc { index: 3, name: "SudoAsDone", signature: SignatureDesc { args: [ArgDesc { name: "sudo_result", ty: "DispatchResult" }] } } [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 9: Configuration [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> <details> <summary>Spiritnet Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 1, 0, ... ] [Value([Changed(42, U8Change(60, 68)), Changed(163, U8Change(234, 215)), Changed(164, U8Change(147, 189)), Changed(165, U8Change(227, 216)), Changed(166, U8Change(241, 162)), Changed(167, U8Change(111, 114)), Changed(168, U8Change(61, 202)), Changed(169, U8Change(105, 13)), Changed(170, U8Change(98, 101)), Changed(171, U8Change(2, 1)), Changed(175, U8Change(38, 234)), Changed(176, U8Change(96, 147)), Changed(177, U8Change(149, 227)), Changed(178, U8Change(85, 241)), Changed(179, U8Change(192, 111)), Changed(180, U8Change(101, 61)), Changed(181, U8Change(102, 105)), Changed(182, U8Change(3, 98)), Changed(187, U8Change(164, 38)), Changed(188, U8Change(123, 96)), Changed(189, U8Change(125, 149)), Changed(190, U8Change(84, 85)), Changed(191, U8Change(73, 192)), Changed(192, U8Change(148, 101)), Changed(193, U8Change(201, 102)), Changed(194, U8Change(155, 3)), Changed(195, U8Change(1, 2)), Changed(199, U8Change(69, 164)), Changed(200, U8Change(191, 123)), Changed(201, U8Change(186, 125)), Changed(202, U8Change(81, 84)), Changed(203, U8Change(163, 73)), Changed(204, U8Change(16, 148)), Changed(205, U8Change(178, 201)), Changed(206, U8Change(35, 155)), Changed(211, U8Change(195, 69)), Changed(212, U8Change(179, 191)), Changed(213, U8Change(232, 186)), Changed(214, U8Change(211, 81)), Changed(215, U8Change(50, 163)), Changed(216, U8Change(115, 16)), Changed(217, U8Change(153, 178)), Changed(218, U8Change(13, 35)), Changed(223, U8Change(8, 195)), Changed(224, U8Change(0, 179)), Changed(225, U8Change(0, 232)), Changed(226, U8Change(0, 211)), Changed(227, U8Change(0, 50)), Added(228, 115), Added(229, 153), Added(230, 13), Added(231, 1), Added(232, 0), Added(233, 0), Added(234, 0), Added(235, 251), Added(236, 197), Added(237, 119), Added(238, 185), Added(239, 215), Added(240, 71), Added(241, 239), Added(242, 214), Added(243, 1), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 8), Added(248, 0), Added(249, 0), Added(250, 0), Added(251, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> ## Checklist: - [ ] I have verified that the code works - [ ] No panics! (checked arithmetic ops, no indexing `array[3]` use `get(3)`, ...) - [ ] I have verified that the code is easy to understand - [ ] If not, I have left a well-balanced amount of inline comments - [ ] I have [left the code in a better state](https://deviq.com/principles/boy-scout-rule) - [ ] I have documented the changes (where applicable) * Either PR or Ticket to update [the Docs](https://github.com/KILTprotocol/docs) * Link the PR/Ticket here
## fixes [KILTprotocol/ticket#3439](KILTprotocol/ticket#3439) ### notable Changes - rust version 1.7.4 (Toolchain and gitlab runner are updated) - the preimage_pallet is no longer using deposits, instead it uses [consideration](paritytech/polkadot-sdk#1361), which is an abstration over the balance. The exact footprint of an storage entry is used to calculate the cost storing entries. Might be interesting for our current deposit model. - The pallet-xcm introduced a new benchmarking logic ### Pallets - Removed cumulus_pallet_dmp_queue (Replaced by pallet_message_queue). There is a lazy migration provided, which is running automatically. Once the the [Complete event](paritytech/polkadot-sdk#1246) is emitted, we can delete the pallet. - Treasur introduced a new [spending support](paritytech/polkadot-sdk#1333), which is currently disabled. Might be interesting at some point, if other currencies are available. - `transfer` extrinsic in `pallet_balances` is removed. Will be a breaking change for Sporran. For other new introduced extrinsics, please have a lookin the diffs below. - Tips: A max tip amount has to be specified, which is currently set to 1_000_000 KILT ### Emulated Tests I am quite unhappy with the current state of the emulated tests. I would like to refactor those tests as described in this [issue](KILTprotocol/ticket#3241 (comment)). For this PR, I only fixed problems arised by updating the dependencies. Since the polkadot-runtime is no longer part of the Polkadot-SDK, the relay chain for Spiritnet has been changed to Rococo. The purpose of these tests is to ensure that the expectations of the xcm-configuration match the implementation. The specific relay chain used should not matter. ### XCM - XCM version 4 is out which is also the LTS for XCM. - In version 4 a new instruction `Transfer` is introduced, which needed to be denied by the Barrier - renaming of paramters: The `Multi` is removed: MultiLocation -> Location, MultiAsset -> Asset, ... ### Try-runtime In version 1.7.0 additional try-runtime tests are introduced, where it is tried to decode the whole storage of the chain. This error should only occur for chains which are still running on an ancient SDK version and will be fixed automatically in the next runtime upgrade. ### Weights Since a lot of new extrinsics are introduced, I updated all weights. ### Todos - [x] execute Benchmarking ## Metadata Diff to Develop Branch <details> <summary>Peregrine Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 48, 109, 97, 115, 104, 110, 101, 116, 45, 110, 111, 100, 101, 4, 0, 0, 0, 136, 44, ... ] [Value([Changed(38, U8Change(60, 68)), Changed(159, U8Change(234, 215)), Changed(160, U8Change(147, 189)), Changed(161, U8Change(227, 216)), Changed(162, U8Change(241, 162)), Changed(163, U8Change(111, 114)), Changed(164, U8Change(61, 202)), Changed(165, U8Change(105, 13)), Changed(166, U8Change(98, 101)), Changed(167, U8Change(2, 1)), Changed(171, U8Change(38, 234)), Changed(172, U8Change(96, 147)), Changed(173, U8Change(149, 227)), Changed(174, U8Change(85, 241)), Changed(175, U8Change(192, 111)), Changed(176, U8Change(101, 61)), Changed(177, U8Change(102, 105)), Changed(178, U8Change(3, 98)), Changed(183, U8Change(164, 38)), Changed(184, U8Change(123, 96)), Changed(185, U8Change(125, 149)), Changed(186, U8Change(84, 85)), Changed(187, U8Change(73, 192)), Changed(188, U8Change(148, 101)), Changed(189, U8Change(201, 102)), Changed(190, U8Change(155, 3)), Changed(191, U8Change(1, 2)), Changed(195, U8Change(69, 164)), Changed(196, U8Change(191, 123)), Changed(197, U8Change(186, 125)), Changed(198, U8Change(81, 84)), Changed(199, U8Change(163, 73)), Changed(200, U8Change(16, 148)), Changed(201, U8Change(178, 201)), Changed(202, U8Change(35, 155)), Changed(207, U8Change(195, 69)), Changed(208, U8Change(179, 191)), Changed(209, U8Change(232, 186)), Changed(210, U8Change(211, 81)), Changed(211, U8Change(50, 163)), Changed(212, U8Change(115, 16)), Changed(213, U8Change(153, 178)), Changed(214, U8Change(13, 35)), Changed(219, U8Change(8, 195)), Changed(220, U8Change(0, 179)), Changed(221, U8Change(0, 232)), Changed(222, U8Change(0, 211)), Changed(223, U8Change(0, 50)), Added(224, 115), Added(225, 153), Added(226, 13), Added(227, 1), Added(228, 0), Added(229, 0), Added(230, 0), Added(231, 251), Added(232, 197), Added(233, 119), Added(234, 185), Added(235, 215), Added(236, 71), Added(237, 239), Added(238, 214), Added(239, 1), Added(240, 0), Added(241, 0), Added(242, 0), Added(243, 8), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 8: Sudo -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "remove_key", signature: SignatureDesc { args: [] } } - events changes: [≠] 1: KeyChanged ( old_sudoer: Option<T::AccountId>, ) ) [Signature(SignatureChange { args: [Changed(0, [Name(StringChange("old_sudoer", "old"))]), Added(1, ArgDesc { name: "new", ty: "T::AccountId" })] })] [≠] 2: SudoAsDone ( sudo_result: DispatchResult, ) ) [Name(StringChange("SudoAsDone", "KeyRemoved")), Signature(SignatureChange { args: [Removed(0, ArgDesc { name: "sudo_result", ty: "DispatchResult" })] })] [+] EventDesc { index: 3, name: "SudoAsDone", signature: SignatureDesc { args: [ArgDesc { name: "sudo_result", ty: "DispatchResult" }] } } [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 9: Configuration [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> <details> <summary>Spiritnet Diff</summary> ``` !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! [≠] pallet 0: System -> 8 change(s) - calls changes: [+] CallDesc { index: 9, name: "authorize_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 10, name: "authorize_upgrade_without_checks", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }] } } [+] CallDesc { index: 11, name: "apply_authorized_upgrade", signature: SignatureDesc { args: [ArgDesc { name: "code", ty: "Vec<u8>" }] } } - events changes: [+] EventDesc { index: 6, name: "UpgradeAuthorized", signature: SignatureDesc { args: [ArgDesc { name: "code_hash", ty: "T::Hash" }, ArgDesc { name: "check_version", ty: "bool" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "NothingAuthorized" } [+] ErrorDesc { index: 7, name: "Unauthorized" } - constants changes: [≠] Version: [ 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 56, 107, 105, 108, 116, 45, 115, 112, 105, 114, 105, 116, 110, 101, 116, 1, 0, ... ] [Value([Changed(42, U8Change(60, 68)), Changed(163, U8Change(234, 215)), Changed(164, U8Change(147, 189)), Changed(165, U8Change(227, 216)), Changed(166, U8Change(241, 162)), Changed(167, U8Change(111, 114)), Changed(168, U8Change(61, 202)), Changed(169, U8Change(105, 13)), Changed(170, U8Change(98, 101)), Changed(171, U8Change(2, 1)), Changed(175, U8Change(38, 234)), Changed(176, U8Change(96, 147)), Changed(177, U8Change(149, 227)), Changed(178, U8Change(85, 241)), Changed(179, U8Change(192, 111)), Changed(180, U8Change(101, 61)), Changed(181, U8Change(102, 105)), Changed(182, U8Change(3, 98)), Changed(187, U8Change(164, 38)), Changed(188, U8Change(123, 96)), Changed(189, U8Change(125, 149)), Changed(190, U8Change(84, 85)), Changed(191, U8Change(73, 192)), Changed(192, U8Change(148, 101)), Changed(193, U8Change(201, 102)), Changed(194, U8Change(155, 3)), Changed(195, U8Change(1, 2)), Changed(199, U8Change(69, 164)), Changed(200, U8Change(191, 123)), Changed(201, U8Change(186, 125)), Changed(202, U8Change(81, 84)), Changed(203, U8Change(163, 73)), Changed(204, U8Change(16, 148)), Changed(205, U8Change(178, 201)), Changed(206, U8Change(35, 155)), Changed(211, U8Change(195, 69)), Changed(212, U8Change(179, 191)), Changed(213, U8Change(232, 186)), Changed(214, U8Change(211, 81)), Changed(215, U8Change(50, 163)), Changed(216, U8Change(115, 16)), Changed(217, U8Change(153, 178)), Changed(218, U8Change(13, 35)), Changed(223, U8Change(8, 195)), Changed(224, U8Change(0, 179)), Changed(225, U8Change(0, 232)), Changed(226, U8Change(0, 211)), Changed(227, U8Change(0, 50)), Added(228, 115), Added(229, 153), Added(230, 13), Added(231, 1), Added(232, 0), Added(233, 0), Added(234, 0), Added(235, 251), Added(236, 197), Added(237, 119), Added(238, 185), Added(239, 215), Added(240, 71), Added(241, 239), Added(242, 214), Added(243, 1), Added(244, 0), Added(245, 0), Added(246, 0), Added(247, 8), Added(248, 0), Added(249, 0), Added(250, 0), Added(251, 0)])] - storages changes: [+] StorageDesc { name: "AuthorizedUpgrade", modifier: "Optional", default_value: [0] } [≠] pallet 6: Balances -> 7 change(s) - calls changes: [+] CallDesc { index: 9, name: "force_adjust_total_issuance", signature: SignatureDesc { args: [ArgDesc { name: "direction", ty: "AdjustmentDirection" }, ArgDesc { name: "delta", ty: "T::Balance" }] } } [-] "set_balance_deprecated" [-] "transfer" - events changes: [+] EventDesc { index: 21, name: "TotalIssuanceForced", signature: SignatureDesc { args: [ArgDesc { name: "old", ty: "T::Balance" }, ArgDesc { name: "new", ty: "T::Balance" }] } } - errors changes: [+] ErrorDesc { index: 10, name: "IssuanceDeactivated" } [+] ErrorDesc { index: 11, name: "DeltaZero" } - constants changes: [-] "MaxHolds" [≠] pallet 24: AuraExt -> 1 change(s) - storages changes: [+] StorageDesc { name: "SlotInfo", modifier: "Optional", default_value: [0] } [≠] pallet 30: Democracy -> 9 change(s) - calls changes: [≠] 7: fast_track ( proposal_hash: H256, voting_period: BlockNumberFor<T>, delay: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 8: veto_external ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 16: blacklist ( proposal_hash: H256, maybe_ref_index: Option<ReferendumIndex>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 18: set_metadata ( owner: MetadataOwner, maybe_hash: Option<PreimageHash>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("Option<PreimageHash>", "Option<T::Hash>"))])] })] - events changes: [≠] 9: Vetoed ( who: T::AccountId, proposal_hash: H256, until: BlockNumberFor<T>, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 10: Blacklisted ( proposal_hash: H256, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("H256", "T::Hash"))])] })] [≠] 14: MetadataSet ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 15: MetadataCleared ( owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] 16: MetadataTransferred ( prev_owner: MetadataOwner, owner: MetadataOwner, hash: PreimageHash, ) ) [Signature(SignatureChange { args: [Changed(2, [Ty(StringChange("PreimageHash", "T::Hash"))])] })] [≠] pallet 31: Council -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 32: TechnicalCommittee -> 1 change(s) - errors changes: [+] ErrorDesc { index: 10, name: "PrimeAccountNotMember" } [≠] pallet 35: Treasury -> 20 change(s) - calls changes: [≠] 3: spend ( amount: BalanceOf<T, I>, beneficiary: AccountIdLookupOf<T>, ) ) [Name(StringChange("spend", "spend_local"))] [+] CallDesc { index: 5, name: "spend", signature: SignatureDesc { args: [ArgDesc { name: "asset_kind", ty: "Box<T::AssetKind>" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "Box<BeneficiaryLookupOf<T, I>>" }, ArgDesc { name: "valid_from", ty: "Option<BlockNumberFor<T>>" }] } } [+] CallDesc { index: 6, name: "payout", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 7, name: "check_status", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] CallDesc { index: 8, name: "void_spend", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - events changes: [+] EventDesc { index: 9, name: "AssetSpendApproved", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "asset_kind", ty: "T::AssetKind" }, ArgDesc { name: "amount", ty: "AssetBalanceOf<T, I>" }, ArgDesc { name: "beneficiary", ty: "T::Beneficiary" }, ArgDesc { name: "valid_from", ty: "BlockNumberFor<T>" }, ArgDesc { name: "expire_at", ty: "BlockNumberFor<T>" }] } } [+] EventDesc { index: 10, name: "AssetSpendVoided", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } [+] EventDesc { index: 11, name: "Paid", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 12, name: "PaymentFailed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }, ArgDesc { name: "payment_id", ty: "<T::Paymaster as Pay>::Id" }] } } [+] EventDesc { index: 13, name: "SpendProcessed", signature: SignatureDesc { args: [ArgDesc { name: "index", ty: "SpendIndex" }] } } - errors changes: [+] ErrorDesc { index: 5, name: "FailedToConvertBalance" } [+] ErrorDesc { index: 6, name: "SpendExpired" } [+] ErrorDesc { index: 7, name: "EarlyPayout" } [+] ErrorDesc { index: 8, name: "AlreadyAttempted" } [+] ErrorDesc { index: 9, name: "PayoutError" } [+] ErrorDesc { index: 10, name: "NotAttempted" } [+] ErrorDesc { index: 11, name: "Inconclusive" } - constants changes: [+] ConstantDesc { name: "PayoutPeriod", value: [192, 75, 3, 0, 0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "SpendCount", modifier: "Default", default_value: [0, 0, 0, 0] } [+] StorageDesc { name: "Spends", modifier: "Optional", default_value: [0] } [≠] pallet 41: Vesting -> 1 change(s) - calls changes: [+] CallDesc { index: 5, name: "force_remove_vesting_schedule", signature: SignatureDesc { args: [ArgDesc { name: "target", ty: "<T::Lookup as StaticLookup>::Source" }, ArgDesc { name: "schedule_index", ty: "u32" }] } } [≠] pallet 44: Preimage -> 4 change(s) - calls changes: [+] CallDesc { index: 4, name: "ensure_updated", signature: SignatureDesc { args: [ArgDesc { name: "hashes", ty: "Vec<T::Hash>" }] } } - errors changes: [+] ErrorDesc { index: 6, name: "TooMany" } [+] ErrorDesc { index: 7, name: "TooFew" } - storages changes: [+] StorageDesc { name: "RequestStatusFor", modifier: "Optional", default_value: [0] } [≠] pallet 46: Tips -> 5 change(s) - errors changes: [≠] 3: NotFinder [Name(StringChange("NotFinder", "MaxTipAmountExceeded"))] [≠] 4: StillOpen [Name(StringChange("StillOpen", "NotFinder"))] [≠] 5: Premature [Name(StringChange("Premature", "StillOpen"))] [+] ErrorDesc { index: 6, name: "Premature" } - constants changes: [+] ConstantDesc { name: "MaxTipAmount", value: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } [≠] pallet 80: ParachainSystem -> 9 change(s) - events changes: [≠] 3: UpgradeAuthorized ( code_hash: T::Hash, ) ) [Name(StringChange("UpgradeAuthorized", "DownwardMessagesReceived")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("code_hash", "count")), Ty(StringChange("T::Hash", "u32"))])] })] [≠] 4: DownwardMessagesReceived ( count: u32, ) ) [Name(StringChange("DownwardMessagesReceived", "DownwardMessagesProcessed")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("count", "weight_used")), Ty(StringChange("u32", "Weight"))]), Added(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [≠] 5: DownwardMessagesProcessed ( weight_used: Weight, dmq_head: relay_chain::Hash, ) ) [Name(StringChange("DownwardMessagesProcessed", "UpwardMessageSent")), Signature(SignatureChange { args: [Changed(0, [Name(StringChange("weight_used", "message_hash")), Ty(StringChange("Weight", "Option<XcmHash>"))]), Removed(1, ArgDesc { name: "dmq_head", ty: "relay_chain::Hash" })] })] [-] "UpwardMessageSent" - storages changes: [+] StorageDesc { name: "AggregatedUnincludedSegment", modifier: "Optional", default_value: [0] } [+] StorageDesc { name: "UnincludedSegment", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpgradeGoAhead", modifier: "Default", default_value: [0] } [+] StorageDesc { name: "UpwardDeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [-] "AuthorizedUpgrade" [≠] pallet 82: XcmpQueue -> 25 change(s) - calls changes: [-] "service_overweight" [-] "update_threshold_weight" [-] "update_weight_restrict_decay" [-] "update_xcmp_max_individual_weight" - events changes: [≠] 0: Success ( message_hash: XcmHash, message_id: XcmHash, weight: Weight, ) ) [Name(StringChange("Success", "XcmpMessageSent")), Signature(SignatureChange { args: [Removed(1, ArgDesc { name: "message_id", ty: "XcmHash" }), Removed(2, ArgDesc { name: "weight", ty: "Weight" })] })] [-] "Fail" [-] "BadVersion" [-] "BadFormat" [-] "XcmpMessageSent" [-] "OverweightEnqueued" [-] "OverweightServiced" - errors changes: [≠] 0: FailedToSend [Name(StringChange("FailedToSend", "BadQueueConfig"))] [≠] 1: BadXcmOrigin [Name(StringChange("BadXcmOrigin", "AlreadySuspended"))] [≠] 2: BadXcm [Name(StringChange("BadXcm", "AlreadyResumed"))] [-] "BadOverweightIndex" [-] "WeightOverLimit" - constants changes: [+] ConstantDesc { name: "MaxInboundSuspended", value: [0, 0, 0, 0] } - storages changes: [+] StorageDesc { name: "DeliveryFeeFactor", modifier: "Default", default_value: [0, 0, 100, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0] } [+] StorageDesc { name: "InboundXcmpSuspended", modifier: "Default", default_value: [0] } [≠] Default QueueConfig: [2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 130, 26, 6, 0, 0, 8, 0, 7, 0, 200, 23, 168, 4, 2, 0, 4, 0] [DefaultValue([Changed(0, U8Change(2, 32)), Changed(4, U8Change(5, 48)), Changed(8, U8Change(1, 8)), Removed(12, 130), Removed(13, 26), Removed(14, 6), Removed(15, 0), Removed(16, 0), Removed(17, 8), Removed(18, 0), Removed(19, 7), Removed(20, 0), Removed(21, 200), Removed(22, 23), Removed(23, 168), Removed(24, 4), Removed(25, 2), Removed(26, 0), Removed(27, 4), Removed(28, 0)])] [-] "CounterForOverweight" [-] "InboundXcmpMessages" [-] "InboundXcmpStatus" [-] "Overweight" [-] "OverweightCount" [≠] pallet 83: PolkadotXcm -> 35 change(s) - calls changes: [≠] 0: send ( dest: Box<VersionedMultiLocation>, message: Box<VersionedXcm<()>>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 1: teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 2: reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 3: execute ( message: Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>, max_weight: Weight, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedXcm<<T as SysConfig>::RuntimeCall>>", "Box<VersionedXcm<<T as Config>::RuntimeCall>>"))])] })] [≠] 4: force_xcm_version ( location: Box<MultiLocation>, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<MultiLocation>", "Box<Location>"))])] })] [≠] 6: force_subscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 7: force_unsubscribe_version_notify ( location: Box<VersionedMultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))])] })] [≠] 8: limited_reserve_transfer_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [≠] 9: limited_teleport_assets ( dest: Box<VersionedMultiLocation>, beneficiary: Box<VersionedMultiLocation>, assets: Box<VersionedMultiAssets>, fee_asset_item: u32, weight_limit: WeightLimit, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(1, [Ty(StringChange("Box<VersionedMultiLocation>", "Box<VersionedLocation>"))]), Changed(2, [Ty(StringChange("Box<VersionedMultiAssets>", "Box<VersionedAssets>"))])] })] [+] CallDesc { index: 11, name: "transfer_assets", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "fee_asset_item", ty: "u32" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } [+] CallDesc { index: 12, name: "claim_assets", signature: SignatureDesc { args: [ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "beneficiary", ty: "Box<VersionedLocation>" }] } } [+] CallDesc { index: 13, name: "transfer_assets_using_type_and_then", signature: SignatureDesc { args: [ArgDesc { name: "dest", ty: "Box<VersionedLocation>" }, ArgDesc { name: "assets", ty: "Box<VersionedAssets>" }, ArgDesc { name: "assets_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "remote_fees_id", ty: "Box<VersionedAssetId>" }, ArgDesc { name: "fees_transfer_type", ty: "Box<TransferType>" }, ArgDesc { name: "custom_xcm_on_dest", ty: "Box<VersionedXcm<()>>" }, ArgDesc { name: "weight_limit", ty: "WeightLimit" }] } } - events changes: [≠] 1: Sent ( origin: MultiLocation, destination: MultiLocation, message: Xcm<()>, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 2: UnexpectedResponse ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 8: InvalidResponder ( origin: MultiLocation, query_id: QueryId, expected_location: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 9: InvalidResponderVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 11: AssetsTrapped ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [≠] 12: VersionChangeNotified ( destination: MultiLocation, result: XcmVersion, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 13: SupportedVersionChanged ( location: MultiLocation, version: XcmVersion, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 14: NotifyTargetSendFail ( location: MultiLocation, query_id: QueryId, error: XcmError, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 15: NotifyTargetMigrationFail ( location: VersionedMultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("VersionedMultiLocation", "VersionedLocation"))])] })] [≠] 16: InvalidQuerierVersion ( origin: MultiLocation, query_id: QueryId, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))])] })] [≠] 17: InvalidQuerier ( origin: MultiLocation, query_id: QueryId, expected_querier: MultiLocation, maybe_actual_querier: Option<MultiLocation>, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("MultiLocation", "Location"))]), Changed(3, [Ty(StringChange("Option<MultiLocation>", "Option<Location>"))])] })] [≠] 18: VersionNotifyStarted ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 19: VersionNotifyRequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 20: VersionNotifyUnrequested ( destination: MultiLocation, cost: MultiAssets, message_id: XcmHash, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 21: FeesPaid ( paying: MultiLocation, fees: MultiAssets, ) ) [Signature(SignatureChange { args: [Changed(0, [Ty(StringChange("MultiLocation", "Location"))]), Changed(1, [Ty(StringChange("MultiAssets", "Assets"))])] })] [≠] 22: AssetsClaimed ( hash: H256, origin: MultiLocation, assets: VersionedMultiAssets, ) ) [Signature(SignatureChange { args: [Changed(1, [Ty(StringChange("MultiLocation", "Location"))]), Changed(2, [Ty(StringChange("VersionedMultiAssets", "VersionedAssets"))])] })] [+] EventDesc { index: 23, name: "VersionMigrationFinished", signature: SignatureDesc { args: [ArgDesc { name: "version", ty: "XcmVersion" }] } } - errors changes: [≠] 13: InvalidAsset [Name(StringChange("InvalidAsset", "CannotCheckOutTeleport"))] [+] ErrorDesc { index: 20, name: "InvalidAssetNotConcrete" } [+] ErrorDesc { index: 21, name: "InvalidAssetUnknownReserve" } [+] ErrorDesc { index: 22, name: "InvalidAssetUnsupportedReserve" } [+] ErrorDesc { index: 23, name: "TooManyReserves" } [+] ErrorDesc { index: 24, name: "LocalExecutionIncomplete" } [+] id: 86 - new pallet: MessageQueue [-] pallet 85: DmpQueue SUMMARY: - Compatible.......................: false - Require transaction_version bump.: true !!! THE SUBWASM REDUCED DIFFER IS EXPERIMENTAL, DOUBLE CHECK THE RESULTS !!! ``` </details> ## Checklist: - [ ] I have verified that the code works - [ ] No panics! (checked arithmetic ops, no indexing `array[3]` use `get(3)`, ...) - [ ] I have verified that the code is easy to understand - [ ] If not, I have left a well-balanced amount of inline comments - [ ] I have [left the code in a better state](https://deviq.com/principles/boy-scout-rule) - [ ] I have documented the changes (where applicable) * Either PR or Ticket to update [the Docs](https://github.com/KILTprotocol/docs) * Link the PR/Ticket here
One half of paritytech/substrate#13666
Changes to Preimage pallet to utilize this will be in the follow-up PR.
This doesn't touch any live logic, so can go in without audit once reviewed.