From 35112120ff08be5885fca13ba6b7e31c86c3eb3b Mon Sep 17 00:00:00 2001 From: "ron.yang" Date: Thu, 19 Aug 2021 23:53:07 +0800 Subject: [PATCH] Fix fee --- runtime/asgard/src/lib.rs | 2 +- runtime/dev/src/lib.rs | 2 +- xcm-support/src/lib.rs | 14 ++++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/runtime/asgard/src/lib.rs b/runtime/asgard/src/lib.rs index de695e26ff..29ae109d7d 100644 --- a/runtime/asgard/src/lib.rs +++ b/runtime/asgard/src/lib.rs @@ -997,7 +997,7 @@ impl EnsureOrigin for EnsureConfirmAsMultiSig { impl bifrost_salp::Config for Runtime { type BancorPool = Bancor; - type BifrostXcmExecutor = BifrostXcmAdaptor; + type BifrostXcmExecutor = BifrostXcmAdaptor; type DepositToken = NativeCurrencyId; type Event = Event; type ExecuteXcmOrigin = EnsureXcmOrigin; diff --git a/runtime/dev/src/lib.rs b/runtime/dev/src/lib.rs index 7e6b46d148..adabebdcbf 100644 --- a/runtime/dev/src/lib.rs +++ b/runtime/dev/src/lib.rs @@ -967,7 +967,7 @@ impl EnsureOrigin for EnsureConfirmAsMultiSig { impl bifrost_salp::Config for Runtime { type BancorPool = Bancor; - type BifrostXcmExecutor = BifrostXcmAdaptor; + type BifrostXcmExecutor = BifrostXcmAdaptor; type DepositToken = NativeCurrencyId; type Event = Event; type ExecuteXcmOrigin = EnsureXcmOrigin; diff --git a/xcm-support/src/lib.rs b/xcm-support/src/lib.rs index 3de31d1de8..d630ad63f7 100644 --- a/xcm-support/src/lib.rs +++ b/xcm-support/src/lib.rs @@ -49,6 +49,7 @@ use xcm::{ use xcm_executor::traits::{Convert as xcmConvert, MatchesFungible, TransactAsset}; pub use xcm_executor::XcmExecutor; mod traits; +use frame_support::weights::WeightToFeePolynomial; pub use node_primitives::XcmBaseWeight; pub use traits::{BifrostXcmExecutor, HandleDmpMessage, HandleUmpMessage, HandleXcmpMessage}; @@ -151,10 +152,15 @@ impl< } } -pub struct BifrostXcmAdaptor(PhantomData<(XcmSender, BaseXcmWeight)>); +pub struct BifrostXcmAdaptor( + PhantomData<(XcmSender, BaseXcmWeight, WeightToFee)>, +); -impl> BifrostXcmExecutor - for BifrostXcmAdaptor +impl< + XcmSender: SendXcm, + BaseXcmWeight: Get, + WeightToFee: WeightToFeePolynomial, + > BifrostXcmExecutor for BifrostXcmAdaptor { fn transact_weight(weight: u64) -> u64 { return weight + 4 * BaseXcmWeight::get(); @@ -169,7 +175,7 @@ impl> BifrostXcmExecutor let mut message = Xcm::WithdrawAsset { assets: vec![MultiAsset::ConcreteFungible { id: MultiLocation::Null, - amount: Self::transact_weight(weight) as u128, + amount: WeightToFee::calc(&Self::transact_weight(weight)), }], effects: vec![Order::BuyExecution { fees: MultiAsset::All,