Skip to content

Commit

Permalink
Update xcm config for template
Browse files Browse the repository at this point in the history
  • Loading branch information
yrong committed Aug 15, 2023
1 parent 0084e90 commit 619a47d
Showing 1 changed file with 23 additions and 33 deletions.
56 changes: 23 additions & 33 deletions parachain-template/runtime/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,28 @@ use super::{
use frame_support::{
match_types, parameter_types,
traits::{ConstU32, Everything, Nothing},
weights::Weight, BoundedBTreeMap
weights::Weight,
};
use frame_system::EnsureRoot;
use pallet_xcm::XcmPassthrough;
use polkadot_parachain::primitives::Sibling;
use polkadot_runtime_common::impls::ToAuthor;
use xcm::latest::prelude::*;
use xcm_builder::{AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, DenyReserveTransferToRelayChain, DenyThenTry, EnsureXcmOrigin, FixedWeightBounds, IsConcrete, NativeAsset, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, SovereignPaidRemoteExporter, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WithComputedOrigin, WithUniqueTopic};
use xcm_builder::{
AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom,
CurrencyAdapter, DenyReserveTransferToRelayChain, DenyThenTry, EnsureXcmOrigin,
FixedWeightBounds, IsConcrete, NativeAsset, ParentIsPreset, RelayChainAsNative,
SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative,
SignedToAccountId32, SovereignPaidRemoteExporter, SovereignSignedViaLocation, TakeWeightCredit,
TrailingSetTopicAsId, UsingComponents, WithComputedOrigin, WithUniqueTopic,
};
use xcm_executor::XcmExecutor;

parameter_types! {
pub const RelayLocation: MultiLocation = MultiLocation::parent();
pub const RelayNetwork: Option<NetworkId> = None;
pub const RelayNetwork: Option<NetworkId> = Some(NetworkId::Kusama);
pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into();
pub UniversalLocation: InteriorMultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
pub UniversalLocation: InteriorMultiLocation = X2(GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into()));
}

/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used
Expand Down Expand Up @@ -188,41 +195,24 @@ impl cumulus_pallet_xcm::Config for Runtime {
/// All configuration related to bridging
pub mod bridging {
use pallet_bridge_transfer_primitives::{
AssetFilter, BridgeConfig, BridgesConfig, BridgesConfigAdapter, BridgesConfigBuilder,
MaybePaidLocation, MultiLocationFilter, ReserveLocation,
BridgeConfig, BridgesConfig, BridgesConfigAdapter, BridgesConfigBuilder, MaybePaidLocation,
};

use frame_support::{parameter_types};
use frame_support::traits::ConstU32;
use crate::xcm_config::{
Junction::{GlobalConsensus, Parachain},
Junctions::X1,
MultiLocation, SovereignPaidRemoteExporter, UniversalLocation, XcmRouter,
};
use frame_support::parameter_types;
use xcm::v3::NetworkId;
use xcm_builder::SovereignPaidRemoteExporter;
use crate::xcm_config::{UniversalLocation, XcmRouter};

parameter_types! {
pub const PolkadotNetwork: NetworkId = NetworkId::Polkadot;
pub BridgeHubKusamaParaId: u32 = 1013;
pub BridgeHubKusama: MultiLocation = MultiLocation::new(1, X1(Parachain(BridgeHubKusamaParaId::get())));
// Network and location for the local Ethereum testnet.
pub EthereumNetwork: NetworkId = NetworkId::Ethereum { chain_id: 15 };
pub EthereumLocation: MultiLocation = MultiLocation::new(2, X1(GlobalConsensus(EthereumNetwork::get())));
pub Bridges: BridgesConfig = BridgesConfigBuilder::default()
.add_or_panic(
PolkadotNetwork::get(),
BridgeConfig::new(
MaybePaidLocation {
location: BridgeHubKusama::get(),
// No fees needed because we use `UnpaidRemoteExporter` and BridgeHubKusama allows unpaid execution for local system parachains
maybe_fee: None,
}
).add_target_location(
// add target location as AssetHubPolkadot
MaybePaidLocation {
location: AssetHubPolkadot::get(),
maybe_fee: AssetHubPolkadotMaxFee::get(),
},
Some(AssetFilter::ByMultiLocation(
MultiLocationFilter::default()
// allow transfer KSM
.add_equals(KsmLocation::get())
))
)
)
.add_or_panic(
EthereumNetwork::get(),
BridgeConfig::new(
Expand All @@ -241,5 +231,5 @@ pub mod bridging {
}

pub type BridgeXcmSender =
SovereignPaidRemoteExporter<Bridges, XcmRouter, UniversalLocation>;
SovereignPaidRemoteExporter<BridgesConfigAdapter<Bridges>, XcmRouter, UniversalLocation>;
}

0 comments on commit 619a47d

Please sign in to comment.