Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Release Statemine v5 #654

Closed
wants to merge 38 commits into from
Closed

Release Statemine v5 #654

wants to merge 38 commits into from

Conversation

apopiak
Copy link
Contributor

@apopiak apopiak commented Oct 13, 2021

Note: Don't Merge

WIP release candidate branch for Statemine v5 (based on polkadot-v0.9.11)

apopiak and others added 9 commits October 11, 2021 10:27
* bump runtime spec version

* remove applied runtime migrations

* bump transaction_version

necessary because of extrinsic API changes to pallet-xcm
paritytech/polkadot#3693

* Fix Benchmarks for Statemine-V4 release (#639)

* register validators

* register_as_candidate & leave_intent fixed

* new_session benchmark fixed

* intent_leave_modified

* clean up

* clean up

* benchmark script updated

* update cargo.lock

* done

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>

* Version bump (#648)

* Version bump

fix #646

* Revert "Version bump"

This reverts commit 07517e0.

* Bump polkadot-collator version

* Update polkadot-parachains/Cargo.toml

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Update deps

* Bump version to 4.0.0

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* cargo toml fix

* update deps and remove DisabledValidatorThreshold

* cargo +nightly fmt

* fix compile error

* fix client tests after Polkadot update

Co-authored-by: Ignacio Palacios <ignacio.palacios.santos@gmail.com>
Co-authored-by: Chevdor <chevdor@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* use new pallet name based genesis config names

* use custom substrate and update polkadot

* add initial asset-tx-payment pallet

* update cargo.toml

* add (failing) tests

* dispatch Calls instead of using Pallet functions

* fix fee-refund split

* add test for transaction payment with tip

* update cargo.lock

* update cargo.lock

* remove mint workaround and use Mutable trait

* extract fee charging logic into OnChargeAssetTransaction trait

* use asset-tx-payment in statemint runtime

* make extrinsics public

* make extrinsics public

* use ChargeAssetIdOf type alias

* update deps

* move back to AssetIdOf

* remove extra rpc_http_threads

* use different substrate branch

* Update pallets/asset-tx-payment/src/payment.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update pallets/asset-tx-payment/src/payment.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* remove overrides

* override substrate deps (again)

* increment spec_version and transaction_version (because we change transaction signing)

* remove direct dependency on pallet-balances from asset-tx-payment

* remove Assets pallet visibility workaround

* add docs and comments

* remove unused imports

* more docs

* add more debug asserts to document assumptions

* add test for tx payment from account with only assets

* add test for missing asset case

* extend test to cover non-sufficient assets

* add a test for Pays::No (refunded transaction)

* add type alias comments

* add more doc comments

* add asset-tx-payment to statemine and westmint

* improve formatting

* update license headers

* add default implementation of HandleCredit for ()

* update doc comments and format imports

* adjust Cargo.toml

* update cargo.lock

* cargo fmt

* cargo fmt

* cargo fmt

* cargo +nightly fmt

* add type alias for OnChargeTransaction

* cargo +nightly fmt

* convert ChargeAssetTxPayment from tuple struct to regular struct

* add more comments

* formatting

* adjust imports and comment

* cargo +nightly fmt

* reformat comment

* use ChargeTransactionPayment's own get_priority + update Substrate

* update Substrate and Polkadot

* cargo fmt

* cargo fmt

* add OperationalFeeMultiplier to asset tx payment tests

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* add doc links

* charge a minimum converted asset fee of 1 if the input fee is greater zero

* cargo +nightly fmt

* bump spec and transaction version

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
@apopiak apopiak requested a review from bkchr October 13, 2021 14:04
@apopiak apopiak requested a review from chevdor October 13, 2021 17:01
apopiak and others added 2 commits October 13, 2021 19:06
Co-authored-by: Chevdor <chevdor@users.noreply.github.com>
@bkchr
Copy link
Member

bkchr commented Oct 13, 2021

Why merge it into polkadot-v0.9.11?

And we should probably "upstream" asset-tx-payment to Substrate?

@apopiak
Copy link
Contributor Author

apopiak commented Oct 13, 2021

Why merge it into polkadot-v0.9.11?

As with the previous release branch, this is just meant to track/illustrate changes to the cumulus release it is based on, not meant to be merged (except if you want it to be).

And we should probably "upstream" asset-tx-payment to Substrate?

That's an option, I'll ask the FRAME team.

@apopiak apopiak mentioned this pull request Oct 14, 2021
15 tasks
@apopiak
Copy link
Contributor Author

apopiak commented Oct 14, 2021

@chevdor
Copy link
Contributor

chevdor commented Oct 14, 2021

The build using srtool currently fails in release-statemine-v5.

@chevdor
Copy link
Contributor

chevdor commented Oct 15, 2021

The srtool build issue was due only to the rococo runtime not building. It has been fixed in 4a704cc

chevdor and others added 5 commits October 15, 2021 17:42
* updates weights

* pallet_unique benchmarks added + weights upstream from v4
* updates weights

* pallet_unique benchmarks added + weights upstream from v4

* benchmarks fix for parachain template
* updates weights

* pallet_unique benchmarks added + weights upstream from v4

* weights updates for statemine v5
@apopiak
Copy link
Contributor Author

apopiak commented Oct 20, 2021

Metadata comparison:
Date: Wed Oct 20 10:02:41 UTC 2021
Reference: wss://kusama-statemine-rpc.paritytech.net
Target version: polkadot-collator 5.0.0-0e01e633-x86_64-linux-gnu
Chain: statemine-local

TLDR:

          [Spec] version: 5 -> 500
          [Metadata] version: 13 -> 14
           [Modules] num: 21 -> 22
                     [+] modules: AssetTxPayment
full metadata comparison
----------------------------------------------------------------------
              [Spec] version: 5 -> 500
          [Metadata] version: 13 -> 14
           [Modules] num: 21 -> 22
                     [+] modules: AssetTxPayment
                          [System] idx: 0 (calls: 10, storage: 16)
                          [setChangesTrieConfig] idx: 5 (args: 1)
                                                 (Option<ChangesTrieConfiguration>) -> (Option<SpCoreChangesTrieChangesTrieConfiguration>)
                                    [setStorage] idx: 6 (args: 1)
                                                 (Vec<KeyValue>) -> (Vec<(Bytes,Bytes)>)
                                   [killStorage] idx: 7 (args: 1)
                                                 (Vec<Key>) -> (Vec<Bytes>)
                                    [killPrefix] idx: 8 (args: 2)
                                                 (Key, u32) -> (Bytes, u32)
                                       [account] keys: AccountId -> AccountId32
                                                 value: AccountInfo -> FrameSystemAccountInfo
                                   [blockWeight] type: ConsumedWeight -> FrameSupportWeightsPerDispatchClassU64
                                     [blockHash] keys: BlockNumber -> u32
                                                 value: Hash -> H256
                                        [number] type: BlockNumber -> u32
                                    [parentHash] type: Hash -> H256
                                        [digest] type: DigestOf -> SpRuntimeGenericDigest
                                        [events] type: Vec<EventRecord> -> Vec<FrameSystemEventRecord>
                                    [eventCount] type: EventIndex -> u32
                                   [eventTopics] keys: Hash -> H256
                                                 value: Vec<(BlockNumber,EventIndex)> -> Vec<(u32,u32)>
                            [lastRuntimeUpgrade] type: Option<LastRuntimeUpgradeInfo> -> Option<FrameSystemLastRuntimeUpgradeInfo>
                                [executionPhase] type: Option<Phase> -> Option<FrameSystemPhase>
                 [ParachainSystem] idx: 1 (calls: 5, storage: 19)
                               [setUpgradeBlock] idx: 0 (args: 1)
                                                 (RelayChainBlockNumber) -> (u32)
                             [setValidationData] idx: 1 (args: 1)
                                                 (ParachainInherentData) -> (CumulusPrimitivesParachainInherentParachainInherentData)
                         [sudoSendUpwardMessage] idx: 2 (args: 1)
                                                 (UpwardMessage) -> (Bytes)
                              [authorizeUpgrade] idx: 3 (args: 1)
                                                 (Hash) -> (H256)
                  [pendingRelayChainBlockNumber] type: Option<RelayChainBlockNumber> -> Option<u32>
                                [validationData] type: Option<PersistedValidationData> -> Option<PolkadotPrimitivesV1PersistedValidationData>
                                   [lastUpgrade] type: BlockNumber -> u32
                        [relevantMessagingState] type: Option<MessagingStateSnapshot> -> Option<CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot>
                             [hostConfiguration] type: Option<AbridgedHostConfiguration> -> Option<PolkadotPrimitivesV1AbridgedHostConfiguration>
                                [lastDmqMqcHead] type: MessageQueueChain -> H256
                              [lastHrmpMqcHeads] type: BTreeMap<ParaId,MessageQueueChain> -> BTreeMap<u32, H256>
                                 [hrmpWatermark] type: BlockNumber -> u32
                          [hrmpOutboundMessages] type: Vec<OutboundHrmpMessage> -> Vec<PolkadotCorePrimitivesOutboundHrmpMessage>
                                [upwardMessages] type: Vec<UpwardMessage> -> Vec<Bytes>
                         [pendingUpwardMessages] type: Vec<UpwardMessage> -> Vec<Bytes>
                    [reservedXcmpWeightOverride] type: Option<Weight> -> Option<u64>
                     [reservedDmpWeightOverride] type: Option<Weight> -> Option<u64>
                             [authorizedUpgrade] type: Option<Hash> -> Option<H256>
                       [Timestamp] idx: 3 (calls: 1, storage: 2)
                                           [set] idx: 0 (args: 1)
                                                 (Compact<Moment>) -> (Compact<u64>)
                                           [now] type: Moment -> u64
                        [Balances] idx: 10 (calls: 5 -> 6, storage: 5)
                                   [+] calls: forceUnreserve
                                      [transfer] idx: 0 (args: 2)
                                                 (LookupSource, Compact<Balance>) -> (MultiAddress, Compact<u128>)
                                    [setBalance] idx: 1 (args: 3)
                                                 (LookupSource, Compact<Balance>, Compact<Balance>) -> (MultiAddress, Compact<u128>, Compact<u128>)
                                 [forceTransfer] idx: 2 (args: 3)
                                                 (LookupSource, LookupSource, Compact<Balance>) -> (MultiAddress, MultiAddress, Compact<u128>)
                             [transferKeepAlive] idx: 3 (args: 2)
                                                 (LookupSource, Compact<Balance>) -> (MultiAddress, Compact<u128>)
                                   [transferAll] idx: 4 (args: 2)
                                                 (LookupSource, bool) -> (MultiAddress, bool)
                                 [totalIssuance] type: Balance -> u128
                                       [account] keys: AccountId -> AccountId32
                                                 value: AccountData -> PalletBalancesAccountData
                                         [locks] keys: AccountId -> AccountId32
                                                 value: Vec<BalanceLock> -> Vec<PalletBalancesBalanceLock>
                                      [reserves] keys: AccountId -> AccountId32
                                                 value: Vec<ReserveData> -> Vec<PalletBalancesReserveData>
                                [storageVersion] type: Releases -> PalletBalancesReleases
                      [Authorship] idx: 20 (calls: 1, storage: 3)
                                     [setUncles] idx: 0 (args: 1)
                                                 (Vec<Header>) -> (Vec<SpRuntimeGenericHeader>)
                                        [uncles] type: Vec<UncleEntryItem> -> Vec<PalletAuthorshipUncleEntryItem>
                                        [author] type: Option<AccountId> -> Option<AccountId32>
               [CollatorSelection] idx: 21 (calls: 5, storage: 5)
                              [setInvulnerables] idx: 0 (args: 1)
                                                 (Vec<AccountId>) -> (Vec<AccountId32>)
                              [setCandidacyBond] idx: 2 (args: 1)
                                                 (BalanceOf) -> (u128)
                                 [invulnerables] type: Vec<AccountId> -> Vec<AccountId32>
                                    [candidates] type: Vec<CandidateInfo> -> Vec<PalletCollatorSelectionCandidateInfo>
                             [lastAuthoredBlock] keys: AccountId -> AccountId32
                                                 value: BlockNumber -> u32
                                 [candidacyBond] type: BalanceOf -> u128
                         [Session] idx: 22 (calls: 2, storage: 7)
                                       [setKeys] idx: 0 (args: 2)
                                                 (Keys, Bytes) -> (StatemineRuntimeSessionKeys, Bytes)
                                    [validators] type: Vec<ValidatorId> -> Vec<AccountId32>
                                  [currentIndex] type: SessionIndex -> u32
                                    [queuedKeys] type: Vec<(ValidatorId,Keys)> -> Vec<(AccountId32,StatemineRuntimeSessionKeys)>
                                      [nextKeys] keys: ValidatorId -> AccountId32
                                                 value: Keys -> StatemineRuntimeSessionKeys
                                      [keyOwner] keys: (KeyTypeId,Bytes) -> (SpCoreCryptoKeyTypeId,Bytes)
                                                 value: ValidatorId -> AccountId32
                        [DmpQueue] idx: 33 (calls: 1, storage: 4)
                             [serviceOverweight] idx: 0 (args: 2)
                                                 (OverweightIndex, Weight) -> (u64, u64)
                                 [configuration] type: ConfigData -> CumulusPalletDmpQueueConfigData
                                     [pageIndex] type: PageIndexData -> CumulusPalletDmpQueuePageIndexData
                                         [pages] keys: PageCounter -> u32
                                                 value: Vec<(RelayBlockNumber,Bytes)> -> Vec<(u32,Bytes)>
                                    [overweight] keys: OverweightIndex -> u64
                                                 value: (RelayBlockNumber,Bytes) -> (u32,Bytes)
                        [Multisig] idx: 41 (calls: 4, storage: 2)
                             [asMultiThreshold1] idx: 0 (args: 2)
                                                 (Vec<AccountId>, Call) -> (Vec<AccountId32>, Call)
                                       [asMulti] idx: 1 (args: 6)
                                                 (u16, Vec<AccountId>, Option<Timepoint>, OpaqueCall, bool, Weight) -> (u16, Vec<AccountId32>, Option<PalletMultisigTimepoint>, Bytes, bool, u64)
                                [approveAsMulti] idx: 2 (args: 5)
                                                 (u16, Vec<AccountId>, Option<Timepoint>, [u8;32], Weight) -> (u16, Vec<AccountId32>, Option<PalletMultisigTimepoint>, [u8;32], u64)
                                 [cancelAsMulti] idx: 3 (args: 4)
                                                 (u16, Vec<AccountId>, Timepoint, [u8;32]) -> (u16, Vec<AccountId32>, PalletMultisigTimepoint, [u8;32])
                                     [multisigs] keys: AccountId, [u8;32] -> AccountId32, [u8;32]
                                                 value: Multisig -> PalletMultisigMultisig
                                         [calls] value: (OpaqueCall,AccountId,BalanceOf) -> (Bytes,AccountId32,u128)
                           [Proxy] idx: 42 (calls: 10, storage: 2)
                                         [proxy] idx: 0 (args: 3)
                                                 (AccountId, Option<ProxyType>, Call) -> (AccountId32, Option<StatemineRuntimeProxyType>, Call)
                                      [addProxy] idx: 1 (args: 3)
                                                 (AccountId, ProxyType, BlockNumber) -> (AccountId32, StatemineRuntimeProxyType, u32)
                                   [removeProxy] idx: 2 (args: 3)
                                                 (AccountId, ProxyType, BlockNumber) -> (AccountId32, StatemineRuntimeProxyType, u32)
                                     [anonymous] idx: 4 (args: 3)
                                                 (ProxyType, BlockNumber, u16) -> (StatemineRuntimeProxyType, u32, u16)
                                 [killAnonymous] idx: 5 (args: 5)
                                                 (AccountId, ProxyType, u16, Compact<BlockNumber>, Compact<u32>) -> (AccountId32, StatemineRuntimeProxyType, u16, Compact<u32>, Compact<u32>)
                                      [announce] idx: 6 (args: 2)
                                                 (AccountId, CallHashOf) -> (AccountId32, H256)
                            [removeAnnouncement] idx: 7 (args: 2)
                                                 (AccountId, CallHashOf) -> (AccountId32, H256)
                            [rejectAnnouncement] idx: 8 (args: 2)
                                                 (AccountId, CallHashOf) -> (AccountId32, H256)
                                [proxyAnnounced] idx: 9 (args: 4)
                                                 (AccountId, AccountId, Option<ProxyType>, Call) -> (AccountId32, AccountId32, Option<StatemineRuntimeProxyType>, Call)
                                       [proxies] keys: AccountId -> AccountId32
                                                 value: (Vec<ProxyDefinition>,BalanceOf) -> (Vec<PalletProxyProxyDefinition>,u128)
                                 [announcements] keys: AccountId -> AccountId32
                                                 value: (Vec<ProxyAnnouncement>,BalanceOf) -> (Vec<PalletProxyAnnouncement>,u128)
                          [Assets] idx: 50 (calls: 23, storage: 4)
                                        [create] idx: 0 (args: 3)
                                                 (Compact<AssetId>, LookupSource, TAssetBalance) -> (Compact<u32>, MultiAddress, u128)
                                   [forceCreate] idx: 1 (args: 4)
                                                 (Compact<AssetId>, LookupSource, bool, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, bool, Compact<u128>)
                                       [destroy] idx: 2 (args: 2)
                                                 (Compact<AssetId>, AssetDestroyWitness) -> (Compact<u32>, PalletAssetsDestroyWitness)
                                          [mint] idx: 3 (args: 3)
                                                 (Compact<AssetId>, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, Compact<u128>)
                                          [burn] idx: 4 (args: 3)
                                                 (Compact<AssetId>, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, Compact<u128>)
                                      [transfer] idx: 5 (args: 3)
                                                 (Compact<AssetId>, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, Compact<u128>)
                             [transferKeepAlive] idx: 6 (args: 3)
                                                 (Compact<AssetId>, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, Compact<u128>)
                                 [forceTransfer] idx: 7 (args: 4)
                                                 (Compact<AssetId>, LookupSource, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, MultiAddress, Compact<u128>)
                                        [freeze] idx: 8 (args: 2)
                                                 (Compact<AssetId>, LookupSource) -> (Compact<u32>, MultiAddress)
                                          [thaw] idx: 9 (args: 2)
                                                 (Compact<AssetId>, LookupSource) -> (Compact<u32>, MultiAddress)
                                   [freezeAsset] idx: 10 (args: 1)
                                                 (Compact<AssetId>) -> (Compact<u32>)
                                     [thawAsset] idx: 11 (args: 1)
                                                 (Compact<AssetId>) -> (Compact<u32>)
                             [transferOwnership] idx: 12 (args: 2)
                                                 (Compact<AssetId>, LookupSource) -> (Compact<u32>, MultiAddress)
                                       [setTeam] idx: 13 (args: 4)
                                                 (Compact<AssetId>, LookupSource, LookupSource, LookupSource) -> (Compact<u32>, MultiAddress, MultiAddress, MultiAddress)
                                   [setMetadata] idx: 14 (args: 4)
                                                 (Compact<AssetId>, Bytes, Bytes, u8) -> (Compact<u32>, Bytes, Bytes, u8)
                                 [clearMetadata] idx: 15 (args: 1)
                                                 (Compact<AssetId>) -> (Compact<u32>)
                              [forceSetMetadata] idx: 16 (args: 5)
                                                 (Compact<AssetId>, Bytes, Bytes, u8, bool) -> (Compact<u32>, Bytes, Bytes, u8, bool)
                            [forceClearMetadata] idx: 17 (args: 1)
                                                 (Compact<AssetId>) -> (Compact<u32>)
                              [forceAssetStatus] idx: 18 (args: 8)
                                                 (Compact<AssetId>, LookupSource, LookupSource, LookupSource, LookupSource, Compact<TAssetBalance>, bool, bool) -> (Compact<u32>, MultiAddress, MultiAddress, MultiAddress, MultiAddress, Compact<u128>, bool, bool)
                               [approveTransfer] idx: 19 (args: 3)
                                                 (Compact<AssetId>, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, Compact<u128>)
                                [cancelApproval] idx: 20 (args: 2)
                                                 (Compact<AssetId>, LookupSource) -> (Compact<u32>, MultiAddress)
                           [forceCancelApproval] idx: 21 (args: 3)
                                                 (Compact<AssetId>, LookupSource, LookupSource) -> (Compact<u32>, MultiAddress, MultiAddress)
                              [transferApproved] idx: 22 (args: 4)
                                                 (Compact<AssetId>, LookupSource, LookupSource, Compact<TAssetBalance>) -> (Compact<u32>, MultiAddress, MultiAddress, Compact<u128>)
                                         [asset] keys: AssetId -> u32
                                                 value: AssetDetails -> PalletAssetsAssetDetails
                                       [account] keys: AssetId, AccountId -> u32, AccountId32
                                                 value: AssetBalance -> PalletAssetsAssetBalance
                                     [approvals] keys: AssetId, AccountId, AccountId -> u32, AccountId32, AccountId32
                                                 value: AssetApproval -> PalletAssetsApproval
                                      [metadata] keys: AssetId -> u32
                                                 value: AssetMetadata -> PalletAssetsAssetMetadata
                         [Uniques] idx: 51 (calls: 22, storage: 6)
                                        [create] idx: 0 (args: 2)
                                                 (Compact<ClassId>, LookupSource) -> (Compact<u32>, MultiAddress)
                                   [forceCreate] idx: 1 (args: 3)
                                                 (Compact<ClassId>, LookupSource, bool) -> (Compact<u32>, MultiAddress, bool)
                                       [destroy] idx: 2 (args: 2)
                                                 (Compact<ClassId>, DestroyWitness) -> (Compact<u32>, PalletUniquesDestroyWitness)
                                          [mint] idx: 3 (args: 3)
                                                 (Compact<ClassId>, Compact<InstanceId>, LookupSource) -> (Compact<u32>, Compact<u32>, MultiAddress)
                                          [burn] idx: 4 (args: 3)
                                                 (Compact<ClassId>, Compact<InstanceId>, Option<LookupSource>) -> (Compact<u32>, Compact<u32>, Option<MultiAddress>)
                                      [transfer] idx: 5 (args: 3)
                                                 (Compact<ClassId>, Compact<InstanceId>, LookupSource) -> (Compact<u32>, Compact<u32>, MultiAddress)
                                     [redeposit] idx: 6 (args: 2)
                                                 (Compact<ClassId>, Vec<InstanceId>) -> (Compact<u32>, Vec<u32>)
                                        [freeze] idx: 7 (args: 2)
                                                 (Compact<ClassId>, Compact<InstanceId>) -> (Compact<u32>, Compact<u32>)
                                          [thaw] idx: 8 (args: 2)
                                                 (Compact<ClassId>, Compact<InstanceId>) -> (Compact<u32>, Compact<u32>)
                                   [freezeClass] idx: 9 (args: 1)
                                                 (Compact<ClassId>) -> (Compact<u32>)
                                     [thawClass] idx: 10 (args: 1)
                                                 (Compact<ClassId>) -> (Compact<u32>)
                             [transferOwnership] idx: 11 (args: 2)
                                                 (Compact<ClassId>, LookupSource) -> (Compact<u32>, MultiAddress)
                                       [setTeam] idx: 12 (args: 4)
                                                 (Compact<ClassId>, LookupSource, LookupSource, LookupSource) -> (Compact<u32>, MultiAddress, MultiAddress, MultiAddress)
                               [approveTransfer] idx: 13 (args: 3)
                                                 (Compact<ClassId>, Compact<InstanceId>, LookupSource) -> (Compact<u32>, Compact<u32>, MultiAddress)
                                [cancelApproval] idx: 14 (args: 3)
                                                 (Compact<ClassId>, Compact<InstanceId>, Option<LookupSource>) -> (Compact<u32>, Compact<u32>, Option<MultiAddress>)
                              [forceAssetStatus] idx: 15 (args: 7)
                                                 (Compact<ClassId>, LookupSource, LookupSource, LookupSource, LookupSource, bool, bool) -> (Compact<u32>, MultiAddress, MultiAddress, MultiAddress, MultiAddress, bool, bool)
                                  [setAttribute] idx: 16 (args: 4)
                                                 (Compact<ClassId>, Option<InstanceId>, Bytes, Bytes) -> (Compact<u32>, Option<u32>, Bytes, Bytes)
                                [clearAttribute] idx: 17 (args: 3)
                                                 (Compact<ClassId>, Option<InstanceId>, Bytes) -> (Compact<u32>, Option<u32>, Bytes)
                                   [setMetadata] idx: 18 (args: 4)
                                                 (Compact<ClassId>, Compact<InstanceId>, Bytes, bool) -> (Compact<u32>, Compact<u32>, Bytes, bool)
                                 [clearMetadata] idx: 19 (args: 2)
                                                 (Compact<ClassId>, Compact<InstanceId>) -> (Compact<u32>, Compact<u32>)
                              [setClassMetadata] idx: 20 (args: 3)
                                                 (Compact<ClassId>, Bytes, bool) -> (Compact<u32>, Bytes, bool)
                            [clearClassMetadata] idx: 21 (args: 1)
                                                 (Compact<ClassId>) -> (Compact<u32>)
                                         [class] keys: ClassId -> u32
                                                 value: ClassDetails -> PalletUniquesClassDetails
                                       [account] keys: AccountId, ClassId, InstanceId -> AccountId32, u32, u32
                                                 value: () -> Null
                                         [asset] keys: ClassId, InstanceId -> u32, u32
                                                 value: InstanceDetails -> PalletUniquesInstanceDetails
                               [classMetadataOf] keys: ClassId -> u32
                                                 value: ClassMetadata -> PalletUniquesClassMetadata
                            [instanceMetadataOf] keys: ClassId, InstanceId -> u32, u32
                                                 value: InstanceMetadata -> PalletUniquesInstanceMetadata
                                     [attribute] keys: ClassId, Option<InstanceId>, Bytes -> u32, Option<u32>, Bytes
                                                 value: (Bytes,DepositBalanceOf) -> (Bytes,u128)

------------------------------ SUMMARY ------------------------------- 
⚠️ This filter is here to help spotting changes that should be reviewed carefully. 
⚠️ It catches only index changes, deletions and value decreases. 
## Deletions
 n/a 
## Index changes
 n/a 
## Decreases
 

 
----------------------------------------------------------------------

* use PolkadotXcm for XcmRouter WrapVersion

* use PolkadotXcm for version wrapping

Co-authored-by: Bryan Chen <xlchen1291@gmail.com>
@apopiak
Copy link
Contributor Author

apopiak commented Oct 21, 2021

We configured the runtime to use PolkadotXcm as the XCM version wrapper. This means we will need to set the new SafeXcmVersion storage item in PolkadotXcm (pallet-xcm) to configure the fallback XCM "wire format".
We will set it to v2 to make interaction with Kusama straightforward. (This will be done by setting the storage via set_storage before the upgrade to v500.)
This might make XCM interaction with other parachains not on XCM v2 more difficult. We'll figure those out as we get to them.

@KiChjang
Copy link
Contributor

This might make XCM interaction with other parachains not on XCM v2 more difficult. We'll figure those out as we get to them.

Should not be a problem. As long as no new instructions are used, XCMv2 messages are mostly convertible to older versions.

@apopiak
Copy link
Contributor Author

apopiak commented Nov 2, 2021

@apopiak apopiak closed this Nov 2, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants