The `xcm` crate was renamed to `staging-xcm` to be able to publish it to
crates.io as someone as squatted `xcm`. The problem with this rename is
that the `TypeInfo` includes the crate name which ultimately lands in
the metadata. The metadata is consumed by downstream users like
`polkadot-js` or people building on top of `polkadot-js`. These people
are using the entire `path` to find the type in the type registry. Thus,
their code would break as the type path would now be [`staging_xcm`,
`VersionedXcm`] instead of [`xcm`, `VersionedXcm`]. This pull request
fixes this by renaming the path segment `staging_xcm` to `xcm`.
This requires: https://github.com/paritytech/scale-info/pull/197
---------
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
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>
This commit adds Rococo Asset Hub dedicated runtime so we can test new
features here, before merging them in Kusama Asset Hub.
Also adds one such feature: asset transfer over bridge (Rococo AssetHub
<> Wococo AssetHub)
- clone `asset-hub-kusama-runtime` -> `asset-hub-rococo-runtime`
- make it use Rococo primitives, names, assets, constants, etc
- add asset-transfer-over-bridge support to Rococo AssetHub <> Wococo
AssetHub
Fixes#1128
---------
Co-authored-by: Branislav Kontur <bkontur@gmail.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
This pull request is removing the Kusama and Polkadot runtime crates. As
still some crates dependent on the runtime crates, this pull request is
doing some more changes.
- It removes the `hostperfcheck` CLI command. This CLI command could
compare the current node against the standard hardware by doing some
checks. Later we added the hardware benchmark feature to Substrate. This
hardware benchmark is running on every node startup and prints a warning
if the current node is too slow. This makes this CLI command a duplicate
that was also depending on the kusama runtime.
- The pull request is removing the emulated integration tests that were
requiring the Kusama or Polkadot runtime crates.
Enable `runtime-benchmarks` feature for `parachain-common` and
`cumulus-primitives-utility` crates' dependencies.
After adding `runtime-benchmarks = []` under `features` category in
`Cargo.toml` files for the creates, I did run,
> zepter lint propagate-feature --feature runtime-benchmarks --workspace
--fix --feature-enables-dep="runtime-benchmarks:frame-benchmarking"
This changes required for
https://github.com/paritytech/polkadot-sdk/pull/1333
* Rename squatted crates
This commit adds the staging- prefix to squatted crates so we can go forward and publish them to crates.io.
Using the staging- prefix is a temp fix until we decide on replacement names.
https://forum.parity.io/t/renaming-squated-crates-in-substrate-polkadot-cumulus/1964/6
* Fix test after crate renames
* Update Lockfile
* remove candidate when to invulnerable
* fix
* candidates to collators
* make parameters consistent and more reasonable
* add call to kick invulnerable candidates
* factor removal into weight
* fix: use accrue instead of add
* make set_invulnerables non-atomic
* benchmark add_invulnerable to account for candidate removal
* don't remove from candidates with set_invulnerables
* fix bounds on benchmarking
* protect against zero min invulnerables underflow
* extra event and tests
* make candidates/invulnerables self-cleaning on session change
* add integrity test
* unused imports
* make rococo-contracts have 1 collator
* Dex and payment by dex in westmint
* Wrap U256 type for now
(to support required traits.)
* cargo fmt
* We can now use U256
* Rename PromotedBalance
* name change
* Updating the code to master.
TODO: handle dust!
* cargo fmt
* Minimising changes and step towards getting benchmarks compiling
(still a From<u32> bound in the pallet)
* minimise diff
* Update parachains/runtimes/assets/westmint/src/lib.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Update parachains/runtimes/assets/westmint/src/lib.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Update parachains/common/src/impls.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Fix benchmark build
* Add in AssetConversionAPI
* Handle dust
* cargo fmt
* Don't need to be explicit that it's AccountId32
* remove pool setup fee
(Asset deposit fees are a sufficient anti-spam measure)
* More natural way to specify native
* cargo fmt
* Update parachains/runtimes/assets/westmint/src/lib.rs
* Additional required impls
* either form of multilocation should be acceptable.
* add call filter exclusion
* Fix typo & try_convert now fails if native is converted
* merge master fixup
* Fix: HoldReason should be there.
* Box MultiAssetId
Otherwise it blows out the Call enum memory size.
* cargo fmt
* update lock file
* add std feature, update lock file
* need to turn on std on common
* adding in westmint tests
* WeightToFee must be from the destination chain.
* cargo fmt
* account for higher ED on westmint
* type removed as not used
* cargo fmt
* remove unused import
* minimising diff
* import needed only with feature enabled
* use multilocation contains
* move the impls to separate file
* simplify on conversion
* simplify on reverse conversion also.
* rename var
* clippy
* removed dead code
* cargo fmt
* Use pay by swap
* review suggestions
* cargo fmt
* Update parachains/runtimes/assets/asset-hub-westend/src/lib.rs
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* add benchmarks for new assets pallet
* revert common/src changes
* need a concrete id
* more fixes
* lock
---------
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
Co-authored-by: joepetrowski <joe@parity.io>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* change dir names
* cargo toml updates
* fix crate imports for build
* change chain spec names and PR review rule
* update cli to accept asset-hub
* find/replace benchmark commands
* integration tests
* bridges docs
* more integration tests
* AuraId
* other statemint tidying
* rename statemint mod
* chain spec mod
* rename e2e test dirs
* one more Runtime::Statemine
* benchmark westmint
* rename chain spec name and id
* rename chain spec files
* more tidying in scripts/docs/tests
* rename old dir if exists
* Force people to manually do the move.
(Safer as there could be additional considerations with their setup)
* review touchups
* more renaming
* Update polkadot-parachain/src/command.rs
Co-authored-by: Bastian Köcher <git@kchr.de>
* better error message
* do not break on-chain spec_name
* log info message that path has been renamed
* better penpal docs
---------
Co-authored-by: gilescope <gilescope@gmail.com>
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: parity-processbot <>
* add foreign assets to westmint
* add foreign assets to statemine
* use updated api for ensure origin trait
* Assets/ForeignAssets tests and fixes (#2167)
* Test for create and transfer `TrustBackedAssets` with AssetTransactor
* Test for transfer `local Currency` with AssetTransactor
* Test for create foreign assets (covers foreign relaychain currency)
* Added `ForeignFungiblesTransactor` and test for transfer `ForeignAssets` with AssetTransactor
* Removed unused `pub const Local: MultiLocation`
* Changed `ParaId -> Sibling` for `SiblingParachainConvertsVia`
* Test for create foreign assets (covers local sibling parachain assets)
* Reverted stuff for ForeignCreators from different global consensus (moved to transfer asset branch)
* Refactor `weight_limit` for `execute_xcm`
* Added test for `set_metadata` by ForeignCreator with `xcm::Transact(set_metadata)`
* Renamed `receive_teleported_asset_works` -> `receive_teleported_asset_for_native_asset_works`
* Allow `ForeignCreators` only for sibling parachains
* Unify ReservedDmpWeight/ReservedXcmpWeight usage
* Removed hack - replaced with `MatchedConvertedConcreteId`
* Refactor `ForeignCreators` to assets-common
* Add `ReceiveTeleportedAsset` test
* Change test - `Utility::batch` -> Multiple `xcm::Transact`
* Reusing the same deposits as for TrustBackedAssets
* missing `try_successful_origin` ?
* Finished `ForeignAssets` for westmint (converter, FungiblesApi, tests)
* Refactoring tests - receive_teleported_asset_for_native_asset_works
* ForeignAssets for statemine + refactored `receive_teleported_asset_from_foreign_creator_works`
* Add `ForeignAssets` to statemine `FungiblesApi`
* Add `asset_transactor_transfer_with_local_consensus_currency_works` to all runtimes
* Added `asset_transactor_transfer_with_trust_backed_assets_works` test
* Added `asset_transactor_transfer_with_foreign_assets_works`
* Fix `missing `try_successful_origin` in implementation`
* Added `create_and_manage_foreign_assets_for_local_consensus_parachain_assets_works`
* Added `ExpectTransactStatus` check
* Small rename
* Extended `test_assets_balances_api_works` with ForeignAssets for `statemine`
* PR fixes
* Update parachains/runtimes/assets/test-utils/src/test_cases.rs
---------
Co-authored-by: parity-processbot <>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* Added `StartsWithExplicitGlobalConsensus` to ignores (#2338)
* Update parachains/runtimes/assets/common/src/lib.rs
Co-authored-by: Gavin Wood <gavin@parity.io>
* include mint and burn in SafeCallFilter
* include mint and burn in SafeCallFilter (statemine)
* clarify doc
* Fix compilation (moved trait `InspectMetadata`)
* Fix test
* Extended test for `teleport` from/to relaychain + `CheckingAccount` (Part I)
* Extended test for `teleport` from/to foreign parachain + `CheckingAccount` (Part II)
* Fixed TODO - `NonLocal` for `ForeignAssets`
* Changed `NonLocal` to `NoChecking`
* Fix weight in test
---------
Co-authored-by: parity-processbot <>
Co-authored-by: muharem <ismailov.m.h@gmail.com>
Co-authored-by: Branislav Kontur <bkontur@gmail.com>
Co-authored-by: Gavin Wood <gavin@parity.io>
* Fix APIs
* Reflect API changes
* Everything builds
* Fixes
* Fixes
* Update Cargo.toml
* Fixes
* Fixes
* No networks use freezes/holds
* update lockfile for {"polkadot", "substrate"}
* Fix test
ED cannot be zero anymore.
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix test
---------
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: parity-processbot <>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Use primitives reexported from `polkadot_primitives` crate root
* restart CI
* Fixes after merge
* update lockfile for {"polkadot", "substrate"}
Co-authored-by: parity-processbot <>
* statemine: migrate pallet assets to v1
* statemint and westmint: migrate pallet assets to v1
* remove items limit
* update dependencies and crate imports
* change substrate version to dependent PR
* revert to master
* revert changes to cargo toml
* fix weights to test compilation with companion substrate branch
* change destroy etrinsic in westmint to new extrinsics
* update lockfile for {"polkadot", "substrate"}
* rebase
Co-authored-by: parity-processbot <>
* Remove contracts RPC
* update lockfile for {"polkadot", "substrate"}
* Remove unused imports
* Properly set a max proof size for cumulus test runtime
* Properly set a max proof size for common runtimes
* Properly set the max proof size for all runtimes
Co-authored-by: parity-processbot <>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>