mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-01 22:57:23 +00:00
1556873060
* MultiAsset TWO * Ensure MultiLocation always has a canonical representation * Remove v1 module * Draft next MultiAsset API. * Implement custom encoding/decoding scheme for MultiLocation * Properly implement IntoIterator for Junctions * Implement TryFrom<MultiLocation> for Junctions * Fix spelling mistakes * Fix tests in xcm-executor * XCM core builds * XCM Executor builds * XCM Builder builds * Fix xcm-builder tests and compilation * Make pallet-xcm compile * Use MultiLocation::default() * Make polkadot-runtime-common compile * Make rococo-runtime compile * Change return type of parent_count to u8 * Change MAX_MULTILOCATION_LENGTH to 255 * Make kusama-runtime compile * Fix logic in pallet-xcm * Use MultiLocation::empty() * Fix logic in location_conversion * Fix logic in origin_conversion.rs * Make westend-runtime compile * Rename prefixes and suffixes variables * Rename non_parent to interior * Rename non_parent to interior * Add test for encode/decode roundtrip and fix decode algorithm * API changes making their way throughout * Some TODOs * Further build fixes * Rename non_parent/junctions to interior * Basic compile builds * First test fixed * All executor tests fixed * Typo * Optimize subsume_assets and add test * Optimize checked_sub * XCM Builder first test fixed * Fix builder tests * Fix doc test * Make xcm-simulator compile * Make xcm-simulator-example compile * Make spellcheck happy * cargo fmt * fix some doc tests * spelling * named fields for AllOf * Fix subtle bug where Null is treated as an identifier * Add FIXME comment awaiting for const generics eval stabilization * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Reformat * Move to XCM version 1 * Spelling * warnings * Replace some more v0->v1s * warnings * format * Add max_assets param * building * test fixes * tests * another test * final test * Update rustdocs and add debug_assert where sensible * Revert debug_assert in const fn len() * tests * Rename Null -> Here * Introduce * More ergonomics * More ergonomics * test fix * test fixes * docs * BuyExecution includes * Fix XCM extrinsics * fmt * Make Vec<MultiAsset>/MultiAssets conversions safe * More MultiAssets conversion safety * spelling * fix doc test * Apply suggestions from code review Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * Apply suggestions from code review Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * fmt * Add v0, remove VersionedMultiAsset * Remove VersionedMultiLocation * Update xcm/src/v1/order.rs Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * Update xcm/src/v1/mod.rs Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * XCM v0 backwards compatibility * Full compatibility * fmt * Update xcm/pallet-xcm/src/lib.rs * Update xcm/src/v0/order.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Tweaks to versioning system * Fixes * fmt * Fix pallet-xcm tests * fix * Substitute with_parent with with_parents_const * Rename argument name from a to m * Rename split_last to split_last_interior * Allow adding multiple parents in MultiLocation * Rename pop_parent to dec_parent * Ensure relay chain XCM sender receives a MultiLocation without any parents * Block only when MultiLocation destination length is 8 * Cargo fmt * Remove reverse iterators, implement DoubleEndedIterator and add tests * Fix iter_rev lifetime requirements * Cargo fmt * Add an into() method for Junctions for conciseness in const context * Ensure parent count is 0 while executing who in RelayedFrom * Appease spellchecker * Use and_then instead of repeated map_err * Remove custom codec indices for v1 Junctions * Add convenience 'contains_parents_only' method to MultiLocation * Fix merge conflict * Use more convenience methods * Remove with_parachain_interior * Prefer matching against tuple instead of using match guards * Match against tuple instead of using more match guards * Update encode/decode test for MultiLocation * Minor tweaks * Fixes * Fixes * Fixes * Fix MultiLocation * Add deprecation note for iter_rev and into_iter_rev * Update some rustdocs * cargo fmt * Fix xcm-executor unit tests * Fix compilation and unit tests in xcm-builder * cargo fmt * Fix tests in xcm-simulator-example * Publicize MultiLocation fields * Match on the MultiLocation struct directly in xcm-builder * Do not dereference undereferenceable types * Add convenience MultiLocation conversions for tuples * Use clearer import paths * Remove unused dependency * fix junction + response * Import from latest opaque xcm module * Update xcm/src/v1/mod.rs * better comment * Fix ownership transfer * Fix merge * Fix merge * cargo fmt * Fix merge * Fix merge * Fix integration test * More readable Parent syntax * cleanup * cleanup * cleanup * cleanup * cleanup * cleanup * cleanup * cleanup * cargo fmt * Fixes * Fix doc test Co-authored-by: Gav Wood <gavin@parity.io> Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> Co-authored-by: Amar Singh <asinghchrony@protonmail.com> Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
92 lines
2.8 KiB
Rust
92 lines
2.8 KiB
Rust
// Copyright 2021 Parity Technologies (UK) Ltd.
|
|
// This file is part of Polkadot.
|
|
|
|
// Polkadot is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// Polkadot is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
use frame_support::{parameter_types, traits::Everything, weights::Weight};
|
|
use xcm::latest::{
|
|
Error as XcmError, Junctions::Here, MultiAsset, MultiLocation, NetworkId, Parent,
|
|
Result as XcmResult, SendXcm, Xcm,
|
|
};
|
|
use xcm_builder::{AllowUnpaidExecutionFrom, FixedWeightBounds, SignedToAccountId32};
|
|
use xcm_executor::{
|
|
traits::{InvertLocation, TransactAsset, WeightTrader},
|
|
Assets,
|
|
};
|
|
|
|
parameter_types! {
|
|
pub const OurNetwork: NetworkId = NetworkId::Polkadot;
|
|
}
|
|
|
|
/// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location
|
|
/// of this chain.
|
|
pub type LocalOriginToLocation = (
|
|
// And a usual Signed origin to be used in XCM as a corresponding AccountId32
|
|
SignedToAccountId32<crate::Origin, crate::AccountId, OurNetwork>,
|
|
);
|
|
|
|
pub struct DoNothingRouter;
|
|
impl SendXcm for DoNothingRouter {
|
|
fn send_xcm(_dest: MultiLocation, _msg: Xcm<()>) -> XcmResult {
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
pub type Barrier = AllowUnpaidExecutionFrom<Everything>;
|
|
|
|
pub struct DummyAssetTransactor;
|
|
impl TransactAsset for DummyAssetTransactor {
|
|
fn deposit_asset(_what: &MultiAsset, _who: &MultiLocation) -> XcmResult {
|
|
Ok(())
|
|
}
|
|
|
|
fn withdraw_asset(_what: &MultiAsset, _who: &MultiLocation) -> Result<Assets, XcmError> {
|
|
let asset: MultiAsset = (Parent, 100_000).into();
|
|
Ok(asset.into())
|
|
}
|
|
}
|
|
|
|
pub struct DummyWeightTrader;
|
|
impl WeightTrader for DummyWeightTrader {
|
|
fn new() -> Self {
|
|
DummyWeightTrader
|
|
}
|
|
|
|
fn buy_weight(&mut self, _weight: Weight, _payment: Assets) -> Result<Assets, XcmError> {
|
|
Ok(Assets::default())
|
|
}
|
|
}
|
|
|
|
pub struct InvertNothing;
|
|
impl InvertLocation for InvertNothing {
|
|
fn invert_location(_: &MultiLocation) -> MultiLocation {
|
|
Here.into()
|
|
}
|
|
}
|
|
|
|
pub struct XcmConfig;
|
|
impl xcm_executor::Config for XcmConfig {
|
|
type Call = super::Call;
|
|
type XcmSender = DoNothingRouter;
|
|
type AssetTransactor = DummyAssetTransactor;
|
|
type OriginConverter = pallet_xcm::XcmPassthrough<super::Origin>;
|
|
type IsReserve = ();
|
|
type IsTeleporter = ();
|
|
type LocationInverter = InvertNothing;
|
|
type Barrier = Barrier;
|
|
type Weigher = FixedWeightBounds<super::BaseXcmWeight, super::Call>;
|
|
type Trader = DummyWeightTrader;
|
|
type ResponseHandler = ();
|
|
}
|