mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 21:01:02 +00:00
2cb39f8dc9
Implements an XCM executor `WeightTrader`, facilitating fee payments in any asset that can be exchanged for a native asset. A few constraints need to be observed: - `buy_weight` and `refund` operations must be atomic, as another weight trader implementation might be attempted in case of failure. - swap credit must be utilized since there isn’t an account to which an asset of some class can be deposited with a guarantee to meet the existential deposit requirement. Also, operating with credits enhances the efficiency of the weight trader - https://github.com/paritytech/polkadot-sdk/pull/1677 related PRs: - (depends) https://github.com/paritytech/polkadot-sdk/pull/2031 - (depends) https://github.com/paritytech/polkadot-sdk/pull/1677 - (caused) https://github.com/paritytech/polkadot-sdk/pull/1847 - (caused) https://github.com/paritytech/polkadot-sdk/pull/1876 // DONE: impl `OnUnbalanced` for a `fungible/s` credit // DONE: make the trader free from a concept of a native currency and drop few fallible conversions. related issue - https://github.com/paritytech/polkadot-sdk/issues/1842 // DONE: tests --------- Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Liam Aharon <liam.aharon@hotmail.com>
77 lines
2.9 KiB
Rust
77 lines
2.9 KiB
Rust
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Substrate
|
|
pub use frame_support::{assert_err, assert_ok, pallet_prelude::DispatchResult};
|
|
pub use sp_runtime::DispatchError;
|
|
|
|
// Polkadot
|
|
pub use xcm::{
|
|
latest::ParentThen,
|
|
prelude::{AccountId32 as AccountId32Junction, *},
|
|
v3::{
|
|
Error,
|
|
NetworkId::{Rococo as RococoId, Westend as WestendId},
|
|
},
|
|
};
|
|
|
|
// Bridges
|
|
pub use bp_messages::LaneId;
|
|
|
|
// Cumulus
|
|
pub use emulated_integration_tests_common::{
|
|
accounts::ALICE,
|
|
impls::Inspect,
|
|
test_parachain_is_trusted_teleporter,
|
|
xcm_emulator::{
|
|
assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para,
|
|
RelayChain as Relay, Test, TestArgs, TestContext, TestExt,
|
|
},
|
|
xcm_helpers::{xcm_transact_paid_execution, xcm_transact_unpaid_execution},
|
|
PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3,
|
|
};
|
|
pub use parachains_common::{AccountId, Balance};
|
|
pub use rococo_system_emulated_network::{
|
|
penpal_emulated_chain::PenpalAParaPallet as PenpalAPallet,
|
|
BridgeHubRococoParaReceiver as BridgeHubRococoReceiver, PenpalAPara as PenpalA,
|
|
PenpalAParaReceiver as PenpalAReceiver, PenpalAParaSender as PenpalASender,
|
|
};
|
|
pub use rococo_westend_system_emulated_network::{
|
|
asset_hub_rococo_emulated_chain::{
|
|
genesis::ED as ASSET_HUB_ROCOCO_ED, AssetHubRococoParaPallet as AssetHubRococoPallet,
|
|
},
|
|
asset_hub_westend_emulated_chain::{
|
|
genesis::ED as ASSET_HUB_WESTEND_ED, AssetHubWestendParaPallet as AssetHubWestendPallet,
|
|
},
|
|
bridge_hub_rococo_emulated_chain::{
|
|
genesis::ED as BRIDGE_HUB_ROCOCO_ED, BridgeHubRococoParaPallet as BridgeHubRococoPallet,
|
|
},
|
|
rococo_emulated_chain::{genesis::ED as ROCOCO_ED, RococoRelayPallet as RococoPallet},
|
|
AssetHubRococoPara as AssetHubRococo, AssetHubRococoParaReceiver as AssetHubRococoReceiver,
|
|
AssetHubRococoParaSender as AssetHubRococoSender, AssetHubWestendPara as AssetHubWestend,
|
|
AssetHubWestendParaReceiver as AssetHubWestendReceiver,
|
|
AssetHubWestendParaSender as AssetHubWestendSender, BridgeHubRococoPara as BridgeHubRococo,
|
|
BridgeHubRococoParaSender as BridgeHubRococoSender, BridgeHubWestendPara as BridgeHubWestend,
|
|
RococoRelay as Rococo, RococoRelayReceiver as RococoReceiver,
|
|
RococoRelaySender as RococoSender,
|
|
};
|
|
|
|
pub const ASSET_ID: u32 = 1;
|
|
pub const ASSET_MIN_BALANCE: u128 = 1000;
|
|
pub const ASSETS_PALLET_ID: u8 = 50;
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|