Commit Graph
100 Commits
Author SHA1 Message Date
3dece311be Introduce XcmFeesToAccount fee manager (#1234)
Combination of paritytech/polkadot#7005, its addon PR
paritytech/polkadot#7585 and its companion paritytech/cumulus#2433.

This PR introduces a new XcmFeesToAccount struct which implements the
`FeeManager` trait, and assigns this struct as the `FeeManager` in the
XCM config for all runtimes.

The struct simply deposits all fees handled by the XCM executor to a
specified account. In all runtimes, the specified account is configured
as the treasury account.

XCM __delivery__ fees are now being introduced (unless the root origin
is sending a message to a system parachain on behalf of the originating
chain).

# Note for reviewers

Most file changes are tests that had to be modified to account for the
new fees.
Main changes are in:
- cumulus/pallets/xcmp-queue/src/lib.rs <- To make it track the delivery
fees exponential factor
- polkadot/xcm/xcm-builder/src/fee_handling.rs <- Added. Has the
FeeManager implementation
- All runtime xcm_config files <- To add the FeeManager to the XCM
configuration

# Important note

After this change, instructions that create and send a new XCM (Query*,
Report*, ExportMessage, InitiateReserveWithdraw, InitiateTeleport,
DepositReserveAsset, TransferReserveAsset, LockAsset and RequestUnlock)
will require the corresponding origin account in the origin register to
pay for transport delivery fees, and the onward message will fail to be
sent if the origin account does not have the required amount. This
delivery fee is on top of what we already collect as tx fees in
pallet-xcm and XCM BuyExecution fees!

Wallet UIs that want to expose the new delivery fee can do so using the
formula:

```
delivery_fee_factor * (base_fee + encoded_msg_len * per_byte_fee)
```

where the delivery fee factor can be obtained from the corresponding
pallet based on which transport you are using (UMP, HRMP or bridges),
the base fee is a constant, the encoded message length from the message
itself and the per byte fee is the same as the configured per byte fee
for txs (i.e. `TransactionByteFee`).

---------

Co-authored-by: Branislav Kontur <bkontur@gmail.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: Giles Cope <gilescope@gmail.com>
Co-authored-by: command-bot <>
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Liam Aharon <liam.aharon@hotmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
2023-10-18 17:22:25 +02:00
Keith YeungandFrancisco Aguirre 3f5edc52b2 Use safe math when pruning statuses (#1835)
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
2023-10-10 17:32:11 +02:00
688a4e4126 XCM: Replace council XCM origin with general admin (#7633)
* XCM: Replace council XCM origin with general admin

* Fixes

* Fixes

* Update runtime/polkadot/src/xcm_config.rs

Co-authored-by: ordian <write@reusable.software>

* ".git/.scripts/commands/fmt/fmt.sh"

---------

Co-authored-by: ordian <write@reusable.software>
Co-authored-by: command-bot <>
2023-08-18 05:15:35 +00:00
Keith Yeungandparity-processbot e9c6c72f5a XCM: Rename Instruction instructions to Command instructions (#7593)
Co-authored-by: parity-processbot <>
2023-08-14 21:30:12 +00:00
Keith Yeung 0f90a667bd Document non-uniqueness of SetTopic IDs (#7579)
* Document non-uniqueness of SetTopic IDs

* More comments on WithUniqueTopic
2023-08-07 16:13:36 +00:00
Keith Yeungandparity-processbot 9e31bcdc00 [XCM] Make NetworkId and Junction versioned (#7376)
* [XCM] Make NetworkId and Junction versioned

* Fixes

---------

Co-authored-by: parity-processbot <>
2023-06-15 18:22:35 +00:00
f2fe05a757 Implement AliasOrigin processing in XCVM (#7245)
* Implement AliasOrigin processing in XCVM

* add builder types and first test

* switch to more general builder types

* clone target for RemovePrefixAccountId32

* change builder types

* change AliasForeignAccountId32 and add test for AliasCase

* add Aliasers type to xcm configs

* add benchmark

* benchmark fix

* add benchmark function for runtimes

* fix alias_origin result types

* fix benchmark test

* add runtime-benchmarks feature in pallet-xcm-benchmarks

* fmt

* remove AliasCase, add test and fmt

* address feedback

* ".git/.scripts/commands/bench/bench.sh" xcm kusama pallet_xcm_benchmarks::generic

* ".git/.scripts/commands/bench/bench.sh" xcm westend pallet_xcm_benchmarks::generic

* ".git/.scripts/commands/bench/bench.sh" xcm rococo pallet_xcm_benchmarks::generic

* address feedback

* lock

* ".git/.scripts/commands/bench/bench.sh" xcm kusama pallet_xcm_benchmarks::generic

* ".git/.scripts/commands/bench/bench.sh" xcm westend pallet_xcm_benchmarks::generic

* ".git/.scripts/commands/bench/bench.sh" xcm rococo pallet_xcm_benchmarks::generic

* change doc

* fmt

---------

Co-authored-by: Just van Stam <just.van.stam@gmail.com>
Co-authored-by: Just van Stam <vstam1@users.noreply.github.com>
Co-authored-by: command-bot <>
2023-06-05 14:39:01 +00:00
Keith Yeung da24214174 Emit events related to asset mutations (#14099)
* Emit events related to asset mutations

* Fixes

* Improve unit tests

* cargo fmt
2023-05-09 12:28:58 +00:00
Keith Yeungandparity-processbot b441d05dac Companion for paritytech/polkadot#7098 (#2469)
* Companion for paritytech/polkadot#7098

* Fixes

* Add missing benchmarked function

* Fix typo

* update lockfile for {"polkadot", "substrate"}

---------

Co-authored-by: parity-processbot <>
2023-04-27 10:48:22 +00:00
Keith Yeungandcommand-bot d20e3c1145 XCM: Implement a blocking barrier (#7098)
* Move XCM matcher to xcm-builder

* Use ProcessMessageError as the error type in MatchXcm and ShouldExecute

* Implement a blocking barrier

* Fixes

* Add benchmarking for force_suspension

* ".git/.scripts/commands/bench/bench.sh" runtime westend pallet_xcm

* ".git/.scripts/commands/bench/bench.sh" runtime rococo pallet_xcm

* ".git/.scripts/commands/bench/bench.sh" runtime kusama pallet_xcm

* ".git/.scripts/commands/bench/bench.sh" runtime polkadot pallet_xcm

* ".git/.scripts/commands/bench/bench.sh" runtime westend pallet_xcm

* ".git/.scripts/commands/bench/bench.sh" runtime rococo pallet_xcm

---------

Co-authored-by: command-bot <>
2023-04-27 10:22:39 +00:00
Keith Yeung a8d80532ce Revert default proof size back to 64 KB (#7115)
* Revert default proof size back to 64 KB

* Fix test expectations

* Enhance unit test

* cargo fmt

* Fix comment
2023-04-24 12:24:44 +00:00
Keith Yeung 8b0b86651f Reduce base proof size weight component to zero (#7081)
* Reduce base proof size weight component to 1KiB

* Create TempFixedXcmWeight and set PoV weight to 0

* Set DEFAULT_PROOF_SIZE to 0

* Fix comment

* Update test expectations

* Fix comment
2023-04-21 14:16:50 +00:00
023d459857 XCM: Properly set the pricing for the DMP router (#6843)
* Properly set the pricing for the DMP router

* Publicize price types

* Use FixedU128 instead of Percent

* Add sp-arithmetic as a dependency for rococo runtime

* Add sp-arithmetic as a dependency to all runtimes

* Remove duplicate import

* Add missing import

* Fix tests

* Create an appropriate QueueDownwardMessageError variant

* Recalculate delivery fee factor based on past queue sizes

* Remove unused error variant

* Fixes

* Fixes

* Remove unused imports

* Rewrite fee factor update mechanism

* Remove unused imports

* Fixes

* Update runtime/parachains/src/dmp.rs

Co-authored-by: Squirrel <gilescope@gmail.com>

* Make DeliveryFeeFactor be a StorageMap keyed on ParaIds

* Fixes

* introduce limit for fee increase on dmp queue

* add message_size based fee factor to increment_fee_factor

* change message_size fee rate to correct value

* fix div by 0 error

* bind limit to variable

* fix message_size_factor and add DeliveryFeeFactor test

* add test for ExponentialPrice implementation

* make test formula based

* make delivery fee factor test formula based

* add max value test for DeliveryFeeFactor and move limit to config

* change threshold back to dynamic value and fix tests

* fmt

* suggested changes and fmt

* small stylistic change

* fmt

* change to tokenlocation

* small fixes

* fmt

* remove sp_arithmetic dependency

* Update runtime/parachains/src/dmp.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

---------

Co-authored-by: Squirrel <gilescope@gmail.com>
Co-authored-by: Just van Stam <just.van.stam@gmail.com>
Co-authored-by: Just van Stam <vstam1@users.noreply.github.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
2023-04-20 11:04:33 +00:00
Keith Yeung 3df25a1fd7 Use RuntimeHoldReason for the NIS pallet HoldReason (#7017)
* Use RuntimeHoldReason for the NIS pallet HoldReason

* Update substrate

* Fixes

* Fixes

* Fixes

* Fixes

* Move encoding test to tests.rs
2023-04-13 10:00:26 +02:00
Keith Yeung 38f3b053d7 Add HoldReason to the NIS pallet (#13823)
* Add HoldReason to the NIS pallet

* Rename composable_enum to composite_enum

* Add encoding test

* Add more doc comments
2023-04-06 06:24:45 +00:00
Keith Yeung 1a55f961c6 Implement #[pallet::composite_enum] (#13722)
* Implement #[pallet::hold_reason]

* Appease clippy

* cargo fmt

* Update test expectations

* Update test expectations

* Support composite_enum attribute instead

* Update test expectations

* Change hold_reason to composite_enum

* Add UI test for unsupported identifier when using composite_enum

* Fix comment

* Add documentation for pallet::composable_enum

* More docs

* cargo fmt
2023-04-04 12:28:46 +00:00
Keith Yeung ce03148b28 XCM: Use matcher API in DenyReserveAssetTransferToRelay (#2290)
* Use matcher API in DenyReserveAssetTransferToRelay

* Fixes

* Fixes

* Fixes

* cargo fmt
2023-03-10 13:44:43 +00:00
Keith Yeung d29951e2f8 Introduce XCM matcher for writing barriers (#6756)
* Introduce XCM matcher for writing barriers

* Fix compilation

* cargo fmt

* Add more doc comments

* Add mod doc comment

* More doc comments

* Add tests and fix logic

* Remove redundant syntax

* Add more doc comments

* Add more doc comments

* Add more doc comments
2023-03-04 05:37:56 +00:00
Keith YeungandGavin Wood 56f6b39da8 XCM: Limit the max number of assets weighable in MultiAssets (#6786)
* Limit the max number of assets weighable in MultiAssets

* Apply suggestions from code review

Co-authored-by: Gavin Wood <gavin@parity.io>

* Add tests

* cargo fmt

* Include proof size weight in tests

* Add comments

---------

Co-authored-by: Gavin Wood <gavin@parity.io>
2023-02-28 10:12:12 +01:00
Keith Yeung 3df2893bae Ensure max_weight is assigned properly in AllowTopPaidExecutionFrom (#6787) 2023-02-25 16:37:56 +01:00
Keith Yeung 7619fea80f Remove BoundedVec half-impls in xcm (#6636)
* Replace sp-core dependency with more primitive crates

* Remove BoundedVec half-impls in xcm

* Fixes

* Bump bounded-collections

* Address review comments

* Bump bounded-collections

* Fix benchmarks

* Fixes

* Fixes

* cargo fmt

* Fix tests

* Update url

* Bump url to 2.3.1

* Bump anyhow

* Use bounded-collections in pallet-xcm

* Update substrate
2023-02-09 02:42:59 +00:00
Keith Yeung c653c34070 Remove in-tree bounded types and use bounded-collections crate (#13243)
* Remove in-tree bounded types and use bounded-collections crate

* Fixes

* Bump bounded-collections version

* cargo fmt

* Bump bounded-collections

* Only export non-bounded types at the top level

* Fixes

* Bump bounded-collections
2023-02-03 15:32:55 +00:00
Keith Yeung 1790d0ae36 Bump parity-scale-codec to 3.3.0 (#6666) 2023-02-03 14:03:38 +00:00
Keith Yeung c26a7532c9 XCM: Add HRMP to SafeCallFilter (#6606)
* XCM: Add HRMP to SafeCallFilter

* Whitelist several paras_registrar calls
2023-01-23 22:19:45 +00:00
Keith Yeungandparity-processbot 6f6bfc312c Companion for paritytech/polkadot#6578 (#2112)
* Add ExpectTransactStatus benchmarking

* cargo fmt

* update lockfile for {"polkadot", "substrate"}

Co-authored-by: parity-processbot <>
2023-01-19 08:43:15 +00:00
Keith Yeung 9c5b161f08 Add runtime-benchmarks feature to test client and test service (#6566) 2023-01-17 17:22:27 +09:00
Keith Yeungandparity-processbot 8979aaa9d0 Companion for paritytech/substrate#12868 (#1970)
* Replace WEIGHT_PER_* with WEIGHT_REF_TIME_PER_*

* Fixes

* Fixes

* update lockfile for {"substrate", "polkadot"}

Co-authored-by: parity-processbot <>
2022-12-08 17:36:30 +00:00
Keith Yeung 6f666a07b4 Companion for paritytech/substrate#12868 (#6406)
* Replace WEIGHT_PER_* with WEIGHT_REF_TIME_PER_*

* cargo fmt

* Update substrate
2022-12-08 16:56:37 +00:00
Keith Yeungandcommand-bot 51db8c77a7 Introduce sensible weight constants (#12868)
* Introduce sensible weight constants

* cargo fmt

* Remove unused import

* Add missing import

* ".git/.scripts/bench-bot.sh" pallet dev pallet_lottery

Co-authored-by: command-bot <>
2022-12-09 01:18:51 +09:00
Keith Yeung 7ad763f9bd Fix a few migration issues with 2D weights (#1755)
* Give a max proof size to DMP individual weight processing during migration

* Fix a few migration issues with 2D weights

* Update substrate

* Fixes

* cargo fmt

* Re-add v1 migration

* Set DEFAULT_POV_SIZE to 64 KB

* Use Weight::from_parts

* Update Polkadot

* Fixes
2022-10-24 15:03:02 +00:00
Keith YeungandOliver Tale-Yazdi 5cbb6b4c43 Migrate Weights properly to v2 (#1722)
* Migrate Weights properly to v2

* Add missing on_runtime_upgrade implementation

* Fix benchmarks

* Apply suggestions from code review

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* cargo fmt

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
2022-10-11 16:36:03 +00:00
Keith Yeung fbdfa84cd7 Rename from_components to from_parts (#12473)
* Rename `from_components` to `from_parts`

* Fixes

* Spelling
2022-10-11 16:35:54 +00:00
Keith YeungandOliver Tale-Yazdi 42c043d7f4 Properly migrate weights to v2 (#6091)
* Create migration for config pallet

* Use XcmWeight in XCM pallet extrinsics

* Link to PR in doc comment

* cargo fmt

* Fix tests

* Fix tests

* Remove unused import

* Update runtime/parachains/src/configuration/migration.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add missing on_runtime_upgrade implementation

* Use new migration API

* cargo fmt

* Fix log message

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
2022-10-05 09:47:15 +00:00
Keith Yeung f64fccdd6c Remove unnecessary Clone trait bounds on CountedStorageMap (#12402)
* Remove unnecessary Clone trait bounds on CountedStorageMap

* cargo fmt
2022-10-03 15:50:00 +00:00
Keith Yeung af579524ac Carry over where clauses defined in Config to Call and Hook (#12388) 2022-09-30 03:14:13 +00:00
Keith Yeung a4fb1d7096 Properly set the max proof size weight on defaults and tests (#12383)
* Properly set the max proof size weight on defaults and tests

* cargo fmt

* Set proper max proof size for contracts pallet tests

* Properly set max proof size for node

* Properly set max proof size for frame system mock

* Update test expectations

* Update test expectations

* Properly set max proof size for balances mock

* Update test expectations

* Update test expectations

* Properly set max proof size for democracy mock

* Properly set max proof size for scheduler mock

* Properly set max proof size for fast unstake mock

* Properly set max proof size for tx payment mock

* Properly set max proof size for elections phragmen mock

* Properly set max proof size for node template
2022-09-29 15:48:10 +00:00
0327258566 Add storage size component to weights (#12277)
* Add storage size component to weights

* Rename storage_size to proof_size

* Update primitives/weights/src/weight_v2.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fixes

* cargo fmt

* Implement custom Decode and CompactAs

* Add missing import

* Fixes

* Remove CompactAs implementation

* Properly migrate from 1D weight

* Remove #[pallet::compact] from Weight parameters

* More #[pallet::compact] removals

* Add unit tests

* Set appropriate default block proof size

* cargo fmt

* Remove nonsensical weight constant

* Test only for the reference time weight in frame_system::limits

* Only check for reference time weight on idle

* Use destructuring syntax

* Update test expectations

* Fixes

* Fixes

* Fixes

* Correctly migrate from 1D weights

* cargo fmt

* Migrate using extra extrinsics instead of custom Decode

* Fixes

* Silence dispatch call warnings that were previously allowed

* Fix gas_left test

* Use OldWeight instead of u64

* Fixes

* Only check for reference time weight in election provider

* Fix test expectations

* Fix test expectations

* Use only reference time weight in grandpa test

* Use only reference time weight in examples test

* Use only reference time weight in examples test

* Fix test expectations

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2022-09-28 10:21:53 +00:00
2072bdf777 Companion for paritytech/substrate#12219 (#1610)
* Remove CanAuthorWith trait

CanAuthotWith trait removed. Also all dependencies, parameters, type
paramers were removed. This is related to removal of native runtime.

* Companion for paritytech/substrate#12219

* Fixes

* polkadot-runtime-common updated

cargo update -p polkadot-runtime-common

* warning fixed

* Update cid

* update lockfile for {"polkadot", "substrate"}

* Update substrate

* update lockfile for {"polkadot", "substrate"}

* Update polkadot

* Fix tests

* 🤦

Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com>
Co-authored-by: parity-processbot <>
Co-authored-by: Bastian Köcher <info@kchr.de>
2022-09-14 07:59:03 +00:00
Keith Yeungandparity-processbot a2c6536f77 Companion for paritytech/substrate#12219 (#5987)
* Companion for paritytech/substrate#12219

* Fixes

* update lockfile for {"substrate"}

* Fixes

* cargo fmt

Co-authored-by: parity-processbot <>
2022-09-13 15:48:17 +00:00
30e7b1e8cd Create sp-weights crate to store weight primitives (#12219)
* Create sp-weights crate to store weight primitives

* Fix templates

* Fix templates

* Fixes

* Fixes

* cargo fmt

* Fixes

* Fixes

* Use deprecated type alias instead of deprecated unit types

* Use deprecated subtraits instead of deprecated hollow new traits

* Fixes

* Allow deprecation in macro expansion

* Add missing where clause during call macro expansion

* cargo fmt

* Fixes

* cargo fmt

* Fixes

* Fixes

* Fixes

* Fixes

* Move FRAME-specific weight files back to frame_support

* Fixes

* Update frame/support/src/dispatch.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update frame/support/src/dispatch.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update frame/support/src/dispatch.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Add missing header

* Rewrite module docs

* Fixes

* Fixes

* Fixes

* Fixes

* cargo fmt

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
2022-09-13 13:23:44 +00:00
Keith Yeungandparity-processbot 11b18e89c6 Companion for paritytech/substrate#12183 (#1601)
* Companion for paritytech/substrate#12183

* Fixes

* Update pallets/xcmp-queue/src/lib.rs

* Update pallets/xcmp-queue/src/lib.rs

* update lockfile for {"substrate", "polkadot"}

Co-authored-by: parity-processbot <>
2022-09-08 05:29:53 +00:00
ef3b001b4e Companion for paritytech/substrate#12183 (#5971)
* Companion for paritytech/substrate#12183

* Fixes

* Fixes

* Fixes

* cargo fmt

* Fixes

* Fixes

* Fixes

* cargo fmt

* Update runtime/parachains/src/paras_inherent/mod.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* update lockfile for {"substrate"}

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: parity-processbot <>
2022-09-08 05:05:03 +00:00
6ce4d45175 Remove Ord impl for Weights V2 and add comparison fns (#12183)
* Remove Ord impl for Weights V2 and add comparison fns

* Remove TODO

* Update frame/multisig/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/election-provider-multi-phase/src/unsigned.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove unused import

* cargo fmt

* Fix tests

* Fix more tests

* cargo fmt

* Fix more tests

* Update frame/contracts/src/wasm/mod.rs

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* Update weight benchmarking templates

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2022-09-08 04:22:41 +00:00
Keith Yeung 99d8111c67 Move Get and bounded types to sp-core (#12203)
* Move Get and bounded types to sp-core

* Fixes

* cargo fmt

* Fixes
2022-09-07 15:41:45 +00:00
Keith Yeungparitytech-ciparity-processbot
36e721bf2a Companion for paritytech/substrate#12157 (#1590)
* Remove RefTimeWeight

* [ci] Apply cargo-fmt

* update lockfile for {"substrate", "polkadot"}

Co-authored-by: paritytech-ci <paritytech-ci@parity.io>
Co-authored-by: parity-processbot <>
2022-09-02 19:36:55 +00:00
Keith Yeungandparity-processbot 41eff346cb Companion of paritytech/substrate#12157 (#5964)
* Remove RefTimeWeight

* Fixes

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
2022-09-02 19:12:06 +00:00
Keith Yeung 948af11977 Allow construct_runtime to take cfg attributes for pallets (#11818)
* Allow construct_runtime to take cfg attributes for pallets

* cargo fmt

* Remove commented out code

* Fixes

* cargo fmt

* Remove inaccurate comments

* Fix typo

* Properly reverse pallets

* Fixes

* cargo fmt

* Add missing newlines
2022-08-25 08:56:18 +00:00
Keith Yeungandparity-processbot edc8f7b409 Implement ResultQuery (#11257)
* Implement ResultQuery

* Fix test expectations

* Add more tests

* Fix test expectations

* Clean up some names

* Silence warnings

* Specify error type when supplying error type to ResultQuery

* cargo fmt

* Add support for type parameters in parameter_types macro

* Reduce deeply indented code

* Fixes

* Update test expectation

* Rewrite and document formula for calculating max storage size

* More docs

* cargo fmt

* formatting

Co-authored-by: parity-processbot <>
2022-08-24 17:47:08 +00:00
Keith Yeung d318a13b31 Add and implement MaxEncodedLen to token traits (#11945)
* Add and implement MaxEncodedLen bounds to token traits

* cargo fmt

* Update UI test expectations
2022-08-01 14:24:22 +00:00
Keith Yeung 939c31bfde Implement Serialize/Deserialize on WeakBoundedVec (#11713)
* Implement Serialize/Deserialize on WeakBoundedVec

* cargo fmt

* Warn when there are too many elements while deserializing WeakBoundedVec
2022-06-21 06:49:43 +00:00
Keith Yeung d577099011 Companion for paritytech/substrate#11631 (#1363) 2022-06-16 17:36:19 +00:00
Keith Yeungparity-processbotShawn Tabrizi
2c85668512 Companion for paritytech/substrate#11631 (#5671)
* Companion for paritytech/substrate#11631

* Fixes

* Update sp-runtime

* Fixes

* update lockfile for {"substrate"}

* remove unused

Co-authored-by: parity-processbot <>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2022-06-16 13:36:01 -04:00
2dfc7cec47 Allow relay chain council to send XCMs (#5597)
* Allow relay chain council to send XCMs

* Update runtime/kusama/src/xcm_config.rs

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

* spellcheck

Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: joepetrowski <joe@parity.io>
2022-06-16 13:37:49 +00:00
Keith Yeung dd71ee0334 Bounded ping pallet (#1333)
* Bounded ping pallet

* cargo fmt
2022-06-15 20:58:52 +00:00
Keith YeungandSquirrel f4bd86e98e Bounded collator selection pallet (#1337)
* Bounded collator selection pallet

* Update pallets/collator-selection/src/lib.rs

Co-authored-by: Squirrel <gilescope@gmail.com>

Co-authored-by: Squirrel <gilescope@gmail.com>
2022-06-14 12:36:14 +00:00
Keith Yeung dbe1881702 Properly implement Debug on bounded types (#11659) 2022-06-14 02:39:33 +00:00
Keith Yeungparity-processbotShawn Tabrizi
968e2f1638 Bounded aura ext pallet (#1359)
* Bounded aura ext pallet

* bump deps

Co-authored-by: parity-processbot <>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2022-06-14 02:38:50 +00:00
Keith Yeung 809a3e3a32 Derive MaxEncodedLen on cumulus_pallet_xcm::Origin (#1360) 2022-06-14 01:26:31 +00:00
Keith Yeung 19684de7d8 Implement PartialOrd and Ord on BoundedSlice and WeakBoundedVec (#11655)
* Implement PartialOrd and Ord on BoundedSlice and WeakBoundedVec

* More implementations of PartialEq and PartialOrd

* cargo fmt

* Fixes
2022-06-13 20:55:48 +00:00
Keith Yeungandparity-processbot f3c49cb790 Companion for paritytech/substrate#11584 (#5633)
* Companion for paritytech/substrate#11584

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
2022-06-13 18:34:45 +00:00
Keith YeungandAdrian Catangiu 4e2fb0af60 Implement MaxEncodedLen on pallet-beefy (#11584)
* Implement MaxEncodedLen on pallet-beefy

* Return Result in intialize_authorities

* Update docs

* Log error when authorities list gets truncated

* Update frame/beefy/src/lib.rs

Co-authored-by: Adrian Catangiu <adrian@parity.io>

* cargo fmt

Co-authored-by: Adrian Catangiu <adrian@parity.io>
2022-06-13 17:53:07 +00:00
Keith YeungandOliver Tale-Yazdi 2d6b0ecc21 Move bounded type definitions to sp-runtime (#11645)
* Move bounded type definitions to sp-runtime

* cargo fmt

* Fix compile error

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Move TryCollect to sp-runtime

* Write some docs

* Import missing types

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
2022-06-13 12:31:42 +00:00
Keith Yeung 09b5def9b1 Use BoundedVec in aura pallet (#11617)
* Use BoundedVec in aura pallet

* cargo fmt
2022-06-10 17:20:03 +00:00
Keith Yeung 0e3918d9fe Implement more IntoIter traits for bounded types (#11616) 2022-06-07 14:32:30 +00:00
Keith Yeung 038e52f5e0 Remove #[pallet::without_storage_info] for pallet-remark (#11590) 2022-06-03 17:30:12 +00:00
Keith Yeungandparity-processbot 8d3f692e0c Introduce #[pallet::call_index] attribute to dispatchables (#11381)
* Introduce #[pallet::call_index] attribute to dispatchables

* cargo fmt

* Add more docs and prevent duplicates of call indices

* Add UI test for conflicting call indices

* cargo fmt

Co-authored-by: parity-processbot <>
2022-05-23 16:47:36 +00:00
Keith YeungandGiles Cope 0e3f36224a Implement transfer_asset on CurrencyAdapter (#4549)
* Implement transfer_asset on CurrencyAdapter

* Use Currency::transfer in transfer_asset

* Add a test to assert that Currency::transfer was indeed used

* Remove superfluous balance conversion to u128

* Rename transfer_asset and beam_asset

Co-authored-by: Giles Cope <gilescope@gmail.com>
2022-03-29 10:23:18 +00:00
Keith YeungShawn Tabriziparity-processbot
7cf8010815 Companion for paritytech/substrate#10242 (#4862)
* Rename to BagError

* update lockfile for {"substrate"}

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: parity-processbot <>
2022-03-24 15:39:24 +01:00
208be86934 Allow pallet error enum variants to contain fields (#10242)
* Allow pallet errors to contain at most one field

* Update docs on pallet::error

* Reword documentation

* cargo fmt

* Introduce CompactPalletError trait and require #[pallet::error] fields to implement them

* cargo fmt

* Do not assume tuple variants

* Add CompactPalletError derive macro

* Check for error type compactness in construct_runtime

* cargo fmt

* Derive CompactPalletError instead of implementing it directly during macro expansion

* Implement CompactPalletError on OptionBool instead of Option<bool>

* Check for type idents instead of variant ident

* Add doc comments for ErrorCompactnessTest

* Add an trait implementation of ErrorCompactnessTest for ()

* Convert the error field of DispatchError to a 4-element byte array

* Add static check for pallet error size

* Rename to MAX_PALLET_ERROR_ENCODED_SIZE

* Remove ErrorCompactnessTest trait

* Remove check_compactness

* Return only the most significant byte when constructing a custom InvalidTransaction

* Rename CompactPalletError to PalletError

* Use counter to generate unique idents for assert macros

* Make declarative pallet macros compile with pallet error size checks

* Remove unused doc comment

* Try and fix build errors

* Fix build errors

* Add macro_use for some test modules

* Test fix

* Fix compilation errors

* Remove unneeded #[macro_use]

* Resolve import ambiguity

* Make path to pallet Error enum more specific

* Fix test expectation

* Disambiguate imports

* Fix test expectations

* Revert appending pallet module name to path

* Rename bags_list::list::Error to BagError

* Fixes

* Fixes

* Fixes

* Fix test expectations

* Fix test expectation

* Add more implementations for PalletError

* Lift the 1-field requirement for nested pallet errors

* Fix UI test expectation

* Remove PalletError impl for OptionBool

* Use saturating operations

* cargo fmt

* Delete obsolete test

* Fix test expectation

* Try and use assert macro in const context

* Pull out the pallet error size check macro

* Fix UI test for const assertion

* cargo fmt

* Apply clippy suggestion

* Fix doc comment

* Docs for create_tt_return_macro

* Ensure TryInto is imported in earlier Rust editions

* Apply suggestions from code review

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

* Fix up comments and names

* Implement PalletError for Never

* cargo fmt

* Don't compile example code

* Bump API version for block builder

* Factor in codec attributes while derving PalletError

* Rename module and fix unit test

* Add missing attribute

* Check API version and convert ApplyExtrinsicResult accordingly

* Rename BagError to ListError

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Use codec crate re-exported from frame support

* Add links to types mentioned in doc comments

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

* cargo fmt

* cargo fmt

* Re-add attribute for hidden docs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
2022-03-24 08:11:14 +00:00
Keith Yeung 66d0e26d00 Use WeightToFee when calculating cost of each weight unit in XCM trader (#1055)
* Use WeightToFee when calculating cost of each weight unit in XCM trader

* Set the OnUnbalanced type parameter for XCM Traders
2022-03-08 09:10:41 +00:00
Keith YeungandParity Bot 5f3497830a Add missing XCM benchmarks for ReserveAssetDeposited (#4923)
* Add missing XCM benchmarks for ReserveAssetDeposited

* Check whether checking account is zero before minting

* Try and prevent overflow

* Remove minting currencies into the checking account

* cargo run --quiet --profile=production  --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::fungible --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs

* Use a smaller divisor

* Mint a smaller amount still

* cargo run --quiet --profile=production  --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::fungible --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs

* Remove logic for minting assets to the checking account

* Configure a smaller amount of reserve asset used for testing

* Try unwrapping the result of an execution

* Set the origin properly

* Revert "Set the origin properly"

This reverts commit c748a05733173fb7072878c19b10a583675a5f54.

* Update license year

* cargo run --quiet --profile=production  --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::fungible --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs

* Update license year

Co-authored-by: Parity Bot <admin@parity.io>
2022-03-08 05:09:44 +00:00
Keith Yeung e7d354ca14 Update rand to v0.8.5 (#987)
* Update rand to v0.8.5

* Enable std_rng feature on rand

* Enable std_rng only when std is enabled

* Revert "Enable std_rng only when std is enabled"

This reverts commit 8fb3b72dbd6dc18bc19868b999b5b07cea4b7392.
2022-02-14 23:14:05 +00:00
Keith Yeung d166c78b17 Move XCM configurations out into its own module (#981)
* Move XCM configurations out into its own module

* Revert removal of the AccountNonceApi
2022-02-11 15:59:48 -08:00
Keith Yeung 89fa61125e Make some UI test expectations crisper (#10791)
* Make some UI test expectations crisper

* Update frame/support/test/tests/construct_runtime_ui/undefined_genesis_config_part.rs

* Update UI test expectations

* Missing newlines

* More whitespace issues
2022-02-04 15:42:13 +00:00
Keith YeungandAlexander Popiak d793334bbd Add the ability to suspend or resume XCM execution on the XCMP queue (#896)
* Add the ability to suspend or resume XCM execution on the XCMP queue

* Rename QueueActive to QueueSuspended

* Add the ability to suspend the DMP queue

* Rename XCMP to DMP in comments where appropriate

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

* Add a bypass for XCMP queue suspension

* Revert "Add the ability to suspend the DMP queue"

This reverts commit 363ca09b41e40fce3f2740e7ab78f5c54781ca5c.

* Change controller origin to either root or council-issued origin

* Rename to ControllerOriginConverter

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
2022-01-31 12:12:09 +00:00
Keith Yeungandparity-processbot 8c28d4c669 Companion for paritytech/polkadot#4712 (#901)
* Rename ParentIsDefault to ParentIsAllZeroes

* Fixes

* Create ParentAccounts for respective networks

* Fixes

* Use b"Parent" as the basis for generating parent AccountId

* Fixes

* Use preset parent account ID

* update lockfile for {"polkadot"}

Co-authored-by: parity-processbot <>
2022-01-21 11:40:27 +00:00
Keith YeungandBastian Köcher efe290490a Remove Default bound on AccountId types under the xcm directory (#4712)
* Refactor ParentIsDefault to ParentIsAllZeroes

* Remove Default bound on all AccountId types under the xcm directory

* Change to ParentIs<A: Get<AccountId>, AccountId>

* Provide a better account for ParentIs

* Fixes

* Fixes

* Fixes

* Fixes

* Update xcm/xcm-builder/src/currency_adapter.rs

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

* Use preset account ID value for parent MultiLocations

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
2022-01-21 11:03:39 +00:00
Keith Yeung 185e301fdd Move XCM runtime configurations into their own files (#4644)
* Move XCM runtime configurations into their own files

* Update copyright year

* Fix compilation errors

* Import XCM types in westend runtime unit tests
2022-01-11 09:09:34 +00:00
Keith YeungandParity Bot 5047ef8eff Set CurrentCodeHash before running some dispatchable benchmarks (#4645)
* Set CurrentCodeHash before running some dispatchable benchmarks

* Use insert instead of put

* Actually hash the ValidationCode

* cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs

Co-authored-by: Parity Bot <admin@parity.io>
2022-01-03 02:05:37 +00:00
Keith Yeung cf509bdb51 Use derive macro to generate XcmWeightInfo trait (#4618)
* Use derive macro to generate XcmWeightInfo trait

* Move the Weight type alias out of proc macro
2021-12-29 06:38:11 +00:00
Keith Yeung cd32a971a1 Update proc-macro2 to 1.0.36 (#879) 2021-12-28 21:38:20 +01:00
Keith Yeung d78ea860ec Update serde to 1.0.132 (#871) 2021-12-21 09:15:50 +01:00
Keith Yeung f873384852 Create a README for XCMv2 detailing notable changes (#4059)
* Create a README for XCMv2 detailing notable changes

* Typo

* Appease spellcheck and cargo fmt

* Add XCM pallet item to be aware of

* cargo fmt

* Remove all XCM README.md
2021-12-18 06:05:52 +00:00
Keith Yeung 7aa1727bbd Disable asset transfers on Statemint (against master branch) (#838)
* Disable asset transfers on Statemint

* Fixup
2021-12-16 01:05:16 +00:00
Keith Yeung 8a2a86655f Update XCM MultiLocation prefixes for assets (#831) 2021-12-13 23:52:38 +00:00
Keith Yeung 54423f8b8a Add CheckNonZeroSender to runtime configs (#4493)
* Add CheckNonZeroSender to runtime configs

* cargo fmt

* Fixes

* Fixes

* Fixes

* Fixes

* Fixes
2021-12-12 11:22:08 +01:00
Keith Yeung 308cb3e76b Update serde to 1.0.131 (#853) 2021-12-11 14:10:51 +01:00
Keith Yeung 9e9ff9e5d0 Add CheckNonZeroSender to runtime configs (#847)
* Add CheckNonZeroSender to runtime configs

* cargo update -p polkadot-primitives

* Fixes

* Fixes
2021-12-09 14:53:51 +01:00
Keith Yeung b5135277f4 Support overweight messages in XCMP queue (#799)
* Support overweight messages in XCMP queue

* Add storage migration logic to XCMP queue pallet

* Check whether required weight is larger than max individual weight first

* cargo fmt

* Add some unit tests

* Remove review question comment
2021-12-08 18:07:08 -08:00
Keith Yeung 5491f088a9 Use saturating_add when converting a Vec<MultiAsset> to MultiAssets (#4492) 2021-12-08 20:59:33 +01:00
Keith Yeung 8e9cf43f5e Disable asset transfers on Polkadot (#4475) 2021-12-06 22:30:29 +01:00
Keith YeungandAlexander Popiak ad8fa5fc07 Refactor some types in XCMP queue (#813)
* Rename InboundXcmpStatus and its related types

* Rename OutboundXcmpStatus and its relevant types

* Add documentation to the newly created types

* Ensure storage prefixes are kept the same

* Add code comments

* Revert storage name changes

* typo fix

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
2021-12-02 00:24:04 +00:00
Keith Yeung 1fed3540ba Update W3F URL links (#10374) 2021-11-26 08:58:00 +00:00
Keith Yeung bbde75e8eb Update W3F URL links (#4376) 2021-11-26 08:49:51 +00:00
Keith Yeung 0b85e34aa3 Bump syn to 1.0.81 (#707)
* Bump syn to 1.0.81

* Make formatting check happy
2021-10-27 19:26:49 +02:00
Keith YeungandAlexander Popiak 04a5d8c8b2 Rename Statemint where appropriate (#4087)
* Rename Statemint where appropriate

* Rename to Rockmine

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

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
2021-10-15 17:03:34 -05:00
769595eea5 Create a README for XCMv1 detailing notable changes (#4058)
* Create a README for XCMv1 detailing notable changes

* Update xcm/src/v1/README.md

Co-authored-by: Gavin Wood <gavin@parity.io>

* Update xcm/src/v1/README.md

Co-authored-by: David <dvdplm@gmail.com>

* Update xcm/src/v1/README.md

Co-authored-by: David <dvdplm@gmail.com>

* Update xcm/src/v1/README.md

Co-authored-by: David <dvdplm@gmail.com>

* Update xcm/src/v1/README.md

Co-authored-by: David <dvdplm@gmail.com>

* Link to relevant PR for a full list of changes

* Typo

* Add notable changes to top-level XCM rustdoc

* Appease spellchecker

Co-authored-by: Gavin Wood <gavin@parity.io>
Co-authored-by: David <dvdplm@gmail.com>
2021-10-13 11:17:30 +00:00
Keith Yeung 819849f097 Make most XCM APIs accept an Into<MultiLocation> where MultiLocation is accepted (#3627)
* Change send_xcm MultiLocation argument to be generic

* Change pallet_xcm::send_xcm MultiLocation and Junctions argument to be generic

* Change convert_origin MultiLocation argument to be generic

* Change OnResponse MultiLocation arguments to be generic

* Change UniversalWeigher MultiLocation argumente to be generic

* Change ExecuteXcm MultiLocation argument to be generic

* Remove usages of into for the MultiLocation argument in execute_xcm

* Make use of generic MultiLocation arguments in rustdocs

* Cargo fmt

* Remove unused import in tests

* Resolve conflicts

* cargo fmt

* Appease spellcheck

* impl Into<MultiLocation> in more places
2021-09-29 23:24:49 +00:00
Keith YeungandGuillaume Thiolliere 7b65b049cb Extend PalletInfoAccess with module_name and crate_version method (#9690)
* Record pallet indices in CallMetadata

* Resurrect PalletVersion infrastructure and rename as CrateVersion

* cargo fmt

* Add missing runtime generics to pallet struct

* Fix path to instance

* Fix test

* Fix UI test expectations

* Fix UI test expectations

* Move crate_version function to PalletInfoAccess

* Update UI test expectations

* Add crate_name method to PalletInfo

* Convert path to module name instead of exposing crate name

* cargo fmt

* Keep the double colons when constructing the module name

* Remove unused import

* Update UI test expectations

* Update frame/support/src/traits/metadata.rs

Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>

* Update UI test expectations

Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
2021-09-28 11:35:33 +02:00
Keith YeungandParity Bot 7da1421baa Add benchmarking for parachain runtime initializer pallet (#3913)
* Add benchmarking for parachain runtime initializer pallet

* Fix default impl for initializer pallet WeightInfo

* cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::initializer --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_initializer.rs

* cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::initializer --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_initializer.rs

* Use real weights and use max_block as default weight

* Add variable for digest vec length for initializer benchmark

* Fix compilation errors

* Add WeightInfo to parachains_initializer config in polkadot runtime

* cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::initializer --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_initializer.rs

* cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::initializer --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_initializer.rs

* Appease spellchecker

* Use kusama weights in polkadot runtime for parachain initializer pallet

Co-authored-by: Parity Bot <admin@parity.io>
2021-09-28 04:55:19 +00:00