mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 21:01:02 +00:00
Refactor substrate messages source and substrate messages target (#1105)
* Remove redundant generic parameters from SubstrateMessagesSource * Remove redundant generic parameters from SubstrateMessagesTarget * use uniform alias naming * use aliases instead of fully quallified syntax * pr feedback
This commit is contained in:
committed by
Bastian Köcher
parent
b5240f3f18
commit
5c71f0e996
@@ -147,10 +147,10 @@ impl SubstrateMessageLane for MillauMessagesToRialto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Millau node as messages source.
|
/// Millau node as messages source.
|
||||||
type MillauSourceClient = SubstrateMessagesSource<Millau, Rialto, MillauMessagesToRialto>;
|
type MillauSourceClient = SubstrateMessagesSource<MillauMessagesToRialto>;
|
||||||
|
|
||||||
/// Rialto node as messages target.
|
/// Rialto node as messages target.
|
||||||
type RialtoTargetClient = SubstrateMessagesTarget<Millau, Rialto, MillauMessagesToRialto>;
|
type RialtoTargetClient = SubstrateMessagesTarget<MillauMessagesToRialto>;
|
||||||
|
|
||||||
/// Run Millau-to-Rialto messages sync.
|
/// Run Millau-to-Rialto messages sync.
|
||||||
pub async fn run(
|
pub async fn run(
|
||||||
|
|||||||
@@ -147,10 +147,10 @@ impl SubstrateMessageLane for RialtoMessagesToMillau {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Rialto node as messages source.
|
/// Rialto node as messages source.
|
||||||
type RialtoSourceClient = SubstrateMessagesSource<Rialto, Millau, RialtoMessagesToMillau>;
|
type RialtoSourceClient = SubstrateMessagesSource<RialtoMessagesToMillau>;
|
||||||
|
|
||||||
/// Millau node as messages target.
|
/// Millau node as messages target.
|
||||||
type MillauTargetClient = SubstrateMessagesTarget<Rialto, Millau, RialtoMessagesToMillau>;
|
type MillauTargetClient = SubstrateMessagesTarget<RialtoMessagesToMillau>;
|
||||||
|
|
||||||
/// Run Rialto-to-Millau messages sync.
|
/// Run Rialto-to-Millau messages sync.
|
||||||
pub async fn run(
|
pub async fn run(
|
||||||
|
|||||||
@@ -148,10 +148,10 @@ impl SubstrateMessageLane for RococoMessagesToWococo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Rococo node as messages source.
|
/// Rococo node as messages source.
|
||||||
type RococoSourceClient = SubstrateMessagesSource<Rococo, Wococo, RococoMessagesToWococo>;
|
type RococoSourceClient = SubstrateMessagesSource<RococoMessagesToWococo>;
|
||||||
|
|
||||||
/// Wococo node as messages target.
|
/// Wococo node as messages target.
|
||||||
type WococoTargetClient = SubstrateMessagesTarget<Rococo, Wococo, RococoMessagesToWococo>;
|
type WococoTargetClient = SubstrateMessagesTarget<RococoMessagesToWococo>;
|
||||||
|
|
||||||
/// Run Rococo-to-Wococo messages sync.
|
/// Run Rococo-to-Wococo messages sync.
|
||||||
pub async fn run(
|
pub async fn run(
|
||||||
|
|||||||
@@ -147,10 +147,10 @@ impl SubstrateMessageLane for WococoMessagesToRococo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Wococo node as messages source.
|
/// Wococo node as messages source.
|
||||||
type WococoSourceClient = SubstrateMessagesSource<Wococo, Rococo, WococoMessagesToRococo>;
|
type WococoSourceClient = SubstrateMessagesSource<WococoMessagesToRococo>;
|
||||||
|
|
||||||
/// Rococo node as messages target.
|
/// Rococo node as messages target.
|
||||||
type RococoTargetClient = SubstrateMessagesTarget<Wococo, Rococo, WococoMessagesToRococo>;
|
type RococoTargetClient = SubstrateMessagesTarget<WococoMessagesToRococo>;
|
||||||
|
|
||||||
/// Run Wococo-to-Rococo messages sync.
|
/// Run Wococo-to-Rococo messages sync.
|
||||||
pub async fn run(
|
pub async fn run(
|
||||||
|
|||||||
@@ -79,6 +79,11 @@ pub trait Chain: ChainBase + Clone {
|
|||||||
+ std::convert::TryFrom<sp_core::U256>;
|
+ std::convert::TryFrom<sp_core::U256>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Balance type used by the chain
|
||||||
|
pub type BalanceOf<C> = <C as Chain>::Balance;
|
||||||
|
/// Index type used by the chain
|
||||||
|
pub type IndexOf<C> = <C as Chain>::Index;
|
||||||
|
|
||||||
/// Substrate-based chain with `frame_system::Config::AccountData` set to
|
/// Substrate-based chain with `frame_system::Config::AccountData` set to
|
||||||
/// the `pallet_balances::AccountData<Balance>`.
|
/// the `pallet_balances::AccountData<Balance>`.
|
||||||
pub trait ChainWithBalances: Chain {
|
pub trait ChainWithBalances: Chain {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ pub mod metrics;
|
|||||||
|
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
pub use crate::chain::{BlockWithJustification, Chain, ChainWithBalances, TransactionSignScheme};
|
pub use crate::chain::{BalanceOf, BlockWithJustification, Chain, ChainWithBalances, IndexOf, TransactionSignScheme};
|
||||||
pub use crate::client::{Client, JustificationsSubscription, OpaqueGrandpaAuthoritiesSet};
|
pub use crate::client::{Client, JustificationsSubscription, OpaqueGrandpaAuthoritiesSet};
|
||||||
pub use crate::error::{Error, Result};
|
pub use crate::error::{Error, Result};
|
||||||
pub use crate::sync_header::SyncHeader;
|
pub use crate::sync_header::SyncHeader;
|
||||||
|
|||||||
@@ -38,7 +38,9 @@ use messages_relay::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
use num_traits::{Bounded, Zero};
|
use num_traits::{Bounded, Zero};
|
||||||
use relay_substrate_client::{Chain, Client, Error as SubstrateError, HashOf, HeaderIdOf};
|
use relay_substrate_client::{
|
||||||
|
BalanceOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf, HeaderIdOf, HeaderOf, IndexOf,
|
||||||
|
};
|
||||||
use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId};
|
use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId};
|
||||||
use sp_core::Bytes;
|
use sp_core::Bytes;
|
||||||
use sp_runtime::{traits::Header as HeaderT, DeserializeOwned};
|
use sp_runtime::{traits::Header as HeaderT, DeserializeOwned};
|
||||||
@@ -50,20 +52,20 @@ use std::ops::RangeInclusive;
|
|||||||
pub type SubstrateMessagesProof<C> = (Weight, FromBridgedChainMessagesProof<HashOf<C>>);
|
pub type SubstrateMessagesProof<C> = (Weight, FromBridgedChainMessagesProof<HashOf<C>>);
|
||||||
|
|
||||||
/// Substrate client as Substrate messages source.
|
/// Substrate client as Substrate messages source.
|
||||||
pub struct SubstrateMessagesSource<SC: Chain, TC: Chain, P: SubstrateMessageLane> {
|
pub struct SubstrateMessagesSource<P: SubstrateMessageLane> {
|
||||||
client: Client<SC>,
|
client: Client<P::SourceChain>,
|
||||||
lane: P,
|
lane: P,
|
||||||
lane_id: LaneId,
|
lane_id: LaneId,
|
||||||
target_to_source_headers_relay: Option<OnDemandHeadersRelay<TC>>,
|
target_to_source_headers_relay: Option<OnDemandHeadersRelay<P::TargetChain>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> SubstrateMessagesSource<SC, TC, P> {
|
impl<P: SubstrateMessageLane> SubstrateMessagesSource<P> {
|
||||||
/// Create new Substrate headers source.
|
/// Create new Substrate headers source.
|
||||||
pub fn new(
|
pub fn new(
|
||||||
client: Client<SC>,
|
client: Client<P::SourceChain>,
|
||||||
lane: P,
|
lane: P,
|
||||||
lane_id: LaneId,
|
lane_id: LaneId,
|
||||||
target_to_source_headers_relay: Option<OnDemandHeadersRelay<TC>>,
|
target_to_source_headers_relay: Option<OnDemandHeadersRelay<P::TargetChain>>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
SubstrateMessagesSource {
|
SubstrateMessagesSource {
|
||||||
client,
|
client,
|
||||||
@@ -74,7 +76,7 @@ impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> SubstrateMessagesSource<SC,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> Clone for SubstrateMessagesSource<SC, TC, P> {
|
impl<P: SubstrateMessageLane> Clone for SubstrateMessagesSource<P> {
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
Self {
|
Self {
|
||||||
client: self.client.clone(),
|
client: self.client.clone(),
|
||||||
@@ -86,12 +88,7 @@ impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> Clone for SubstrateMessagesS
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<SC, TC, P> RelayClient for SubstrateMessagesSource<SC, TC, P>
|
impl<P: SubstrateMessageLane> RelayClient for SubstrateMessagesSource<P> {
|
||||||
where
|
|
||||||
SC: Chain,
|
|
||||||
TC: Chain,
|
|
||||||
P: SubstrateMessageLane,
|
|
||||||
{
|
|
||||||
type Error = SubstrateError;
|
type Error = SubstrateError;
|
||||||
|
|
||||||
async fn reconnect(&mut self) -> Result<(), SubstrateError> {
|
async fn reconnect(&mut self) -> Result<(), SubstrateError> {
|
||||||
@@ -100,27 +97,27 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<SC, TC, P> SourceClient<P::MessageLane> for SubstrateMessagesSource<SC, TC, P>
|
impl<P> SourceClient<P::MessageLane> for SubstrateMessagesSource<P>
|
||||||
where
|
where
|
||||||
SC: Chain<
|
P: SubstrateMessageLane,
|
||||||
|
P::SourceChain: Chain<
|
||||||
Hash = <P::MessageLane as MessageLane>::SourceHeaderHash,
|
Hash = <P::MessageLane as MessageLane>::SourceHeaderHash,
|
||||||
BlockNumber = <P::MessageLane as MessageLane>::SourceHeaderNumber,
|
BlockNumber = <P::MessageLane as MessageLane>::SourceHeaderNumber,
|
||||||
Balance = <P::MessageLane as MessageLane>::SourceChainBalance,
|
Balance = <P::MessageLane as MessageLane>::SourceChainBalance,
|
||||||
>,
|
>,
|
||||||
SC::Hash: Copy,
|
BalanceOf<P::SourceChain>: Decode + Bounded,
|
||||||
SC::BlockNumber: Copy,
|
IndexOf<P::SourceChain>: DeserializeOwned,
|
||||||
SC::Balance: Decode + Bounded,
|
HashOf<P::SourceChain>: Copy,
|
||||||
SC::Header: DeserializeOwned,
|
BlockNumberOf<P::SourceChain>: BlockNumberBase + Copy,
|
||||||
SC::Index: DeserializeOwned,
|
HeaderOf<P::SourceChain>: DeserializeOwned,
|
||||||
SC::BlockNumber: BlockNumberBase,
|
P::TargetChain: Chain<
|
||||||
TC: Chain<
|
|
||||||
Hash = <P::MessageLane as MessageLane>::TargetHeaderHash,
|
Hash = <P::MessageLane as MessageLane>::TargetHeaderHash,
|
||||||
BlockNumber = <P::MessageLane as MessageLane>::TargetHeaderNumber,
|
BlockNumber = <P::MessageLane as MessageLane>::TargetHeaderNumber,
|
||||||
>,
|
>,
|
||||||
P: SubstrateMessageLane<SourceChain = SC, TargetChain = TC>,
|
|
||||||
P::MessageLane: MessageLane<
|
P::MessageLane: MessageLane<
|
||||||
MessagesProof = SubstrateMessagesProof<SC>,
|
MessagesProof = SubstrateMessagesProof<P::SourceChain>,
|
||||||
MessagesReceivingProof = SubstrateMessagesReceivingProof<TC>,
|
MessagesReceivingProof = SubstrateMessagesReceivingProof<P::TargetChain>,
|
||||||
>,
|
>,
|
||||||
<P::MessageLane as MessageLane>::TargetHeaderNumber: Decode,
|
<P::MessageLane as MessageLane>::TargetHeaderNumber: Decode,
|
||||||
<P::MessageLane as MessageLane>::TargetHeaderHash: Decode,
|
<P::MessageLane as MessageLane>::TargetHeaderHash: Decode,
|
||||||
@@ -186,7 +183,7 @@ where
|
|||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
make_message_details_map::<SC>(
|
make_message_details_map::<P::SourceChain>(
|
||||||
Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?,
|
Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?,
|
||||||
nonces,
|
nonces,
|
||||||
)
|
)
|
||||||
@@ -264,10 +261,10 @@ where
|
|||||||
.estimate_extrinsic_fee(self.lane.make_messages_receiving_proof_transaction(
|
.estimate_extrinsic_fee(self.lane.make_messages_receiving_proof_transaction(
|
||||||
Zero::zero(),
|
Zero::zero(),
|
||||||
HeaderId(Default::default(), Default::default()),
|
HeaderId(Default::default(), Default::default()),
|
||||||
prepare_dummy_messages_delivery_proof::<SC, TC>(),
|
prepare_dummy_messages_delivery_proof::<P::SourceChain, P::TargetChain>(),
|
||||||
))
|
))
|
||||||
.await
|
.await
|
||||||
.unwrap_or_else(|_| SC::Balance::max_value())
|
.unwrap_or_else(|_| BalanceOf::<P::SourceChain>::max_value())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ use crate::on_demand_headers::OnDemandHeadersRelay;
|
|||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState};
|
use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState};
|
||||||
|
|
||||||
use bridge_runtime_common::messages::{
|
use bridge_runtime_common::messages::{
|
||||||
source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof,
|
source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof,
|
||||||
};
|
};
|
||||||
@@ -35,10 +36,12 @@ use messages_relay::{
|
|||||||
message_lane_loop::{TargetClient, TargetClientState},
|
message_lane_loop::{TargetClient, TargetClientState},
|
||||||
};
|
};
|
||||||
use num_traits::{Bounded, Zero};
|
use num_traits::{Bounded, Zero};
|
||||||
use relay_substrate_client::{Chain, Client, Error as SubstrateError, HashOf};
|
use relay_substrate_client::{
|
||||||
|
BalanceOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf, HeaderOf, IndexOf,
|
||||||
|
};
|
||||||
use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId};
|
use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId};
|
||||||
use sp_core::Bytes;
|
use sp_core::Bytes;
|
||||||
use sp_runtime::{traits::Header as HeaderT, DeserializeOwned, FixedPointNumber, FixedU128};
|
use sp_runtime::{DeserializeOwned, FixedPointNumber, FixedU128};
|
||||||
use std::{convert::TryFrom, ops::RangeInclusive};
|
use std::{convert::TryFrom, ops::RangeInclusive};
|
||||||
|
|
||||||
/// Message receiving proof returned by the target Substrate node.
|
/// Message receiving proof returned by the target Substrate node.
|
||||||
@@ -48,22 +51,22 @@ pub type SubstrateMessagesReceivingProof<C> = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/// Substrate client as Substrate messages target.
|
/// Substrate client as Substrate messages target.
|
||||||
pub struct SubstrateMessagesTarget<SC: Chain, TC: Chain, P: SubstrateMessageLane> {
|
pub struct SubstrateMessagesTarget<P: SubstrateMessageLane> {
|
||||||
client: Client<TC>,
|
client: Client<P::TargetChain>,
|
||||||
lane: P,
|
lane: P,
|
||||||
lane_id: LaneId,
|
lane_id: LaneId,
|
||||||
metric_values: StandaloneMessagesMetrics,
|
metric_values: StandaloneMessagesMetrics,
|
||||||
source_to_target_headers_relay: Option<OnDemandHeadersRelay<SC>>,
|
source_to_target_headers_relay: Option<OnDemandHeadersRelay<P::SourceChain>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> SubstrateMessagesTarget<SC, TC, P> {
|
impl<P: SubstrateMessageLane> SubstrateMessagesTarget<P> {
|
||||||
/// Create new Substrate headers target.
|
/// Create new Substrate headers target.
|
||||||
pub fn new(
|
pub fn new(
|
||||||
client: Client<TC>,
|
client: Client<P::TargetChain>,
|
||||||
lane: P,
|
lane: P,
|
||||||
lane_id: LaneId,
|
lane_id: LaneId,
|
||||||
metric_values: StandaloneMessagesMetrics,
|
metric_values: StandaloneMessagesMetrics,
|
||||||
source_to_target_headers_relay: Option<OnDemandHeadersRelay<SC>>,
|
source_to_target_headers_relay: Option<OnDemandHeadersRelay<P::SourceChain>>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
SubstrateMessagesTarget {
|
SubstrateMessagesTarget {
|
||||||
client,
|
client,
|
||||||
@@ -75,7 +78,7 @@ impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> SubstrateMessagesTarget<SC,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> Clone for SubstrateMessagesTarget<SC, TC, P> {
|
impl<P: SubstrateMessageLane> Clone for SubstrateMessagesTarget<P> {
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
Self {
|
Self {
|
||||||
client: self.client.clone(),
|
client: self.client.clone(),
|
||||||
@@ -88,12 +91,7 @@ impl<SC: Chain, TC: Chain, P: SubstrateMessageLane> Clone for SubstrateMessagesT
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<SC, TC, P> RelayClient for SubstrateMessagesTarget<SC, TC, P>
|
impl<P: SubstrateMessageLane> RelayClient for SubstrateMessagesTarget<P> {
|
||||||
where
|
|
||||||
SC: Chain,
|
|
||||||
TC: Chain,
|
|
||||||
P: SubstrateMessageLane,
|
|
||||||
{
|
|
||||||
type Error = SubstrateError;
|
type Error = SubstrateError;
|
||||||
|
|
||||||
async fn reconnect(&mut self) -> Result<(), SubstrateError> {
|
async fn reconnect(&mut self) -> Result<(), SubstrateError> {
|
||||||
@@ -102,27 +100,28 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<SC, TC, P> TargetClient<P::MessageLane> for SubstrateMessagesTarget<SC, TC, P>
|
impl<P> TargetClient<P::MessageLane> for SubstrateMessagesTarget<P>
|
||||||
where
|
where
|
||||||
SC: Chain<
|
P: SubstrateMessageLane,
|
||||||
|
P::SourceChain: Chain<
|
||||||
Hash = <P::MessageLane as MessageLane>::SourceHeaderHash,
|
Hash = <P::MessageLane as MessageLane>::SourceHeaderHash,
|
||||||
BlockNumber = <P::MessageLane as MessageLane>::SourceHeaderNumber,
|
BlockNumber = <P::MessageLane as MessageLane>::SourceHeaderNumber,
|
||||||
Balance = <P::MessageLane as MessageLane>::SourceChainBalance,
|
Balance = <P::MessageLane as MessageLane>::SourceChainBalance,
|
||||||
>,
|
>,
|
||||||
SC::Balance: TryFrom<TC::Balance> + Bounded,
|
BalanceOf<P::SourceChain>: TryFrom<<P::TargetChain as Chain>::Balance> + Bounded,
|
||||||
TC: Chain<
|
P::TargetChain: Chain<
|
||||||
Hash = <P::MessageLane as MessageLane>::TargetHeaderHash,
|
Hash = <P::MessageLane as MessageLane>::TargetHeaderHash,
|
||||||
BlockNumber = <P::MessageLane as MessageLane>::TargetHeaderNumber,
|
BlockNumber = <P::MessageLane as MessageLane>::TargetHeaderNumber,
|
||||||
>,
|
>,
|
||||||
TC::Hash: Copy,
|
IndexOf<P::TargetChain>: DeserializeOwned,
|
||||||
TC::BlockNumber: Copy,
|
HashOf<P::TargetChain>: Copy,
|
||||||
TC::Header: DeserializeOwned,
|
BlockNumberOf<P::TargetChain>: Copy,
|
||||||
TC::Index: DeserializeOwned,
|
HeaderOf<P::TargetChain>: DeserializeOwned,
|
||||||
<TC::Header as HeaderT>::Number: BlockNumberBase,
|
BlockNumberOf<P::TargetChain>: BlockNumberBase,
|
||||||
P: SubstrateMessageLane<SourceChain = SC, TargetChain = TC>,
|
|
||||||
P::MessageLane: MessageLane<
|
P::MessageLane: MessageLane<
|
||||||
MessagesProof = SubstrateMessagesProof<SC>,
|
MessagesProof = SubstrateMessagesProof<P::SourceChain>,
|
||||||
MessagesReceivingProof = SubstrateMessagesReceivingProof<TC>,
|
MessagesReceivingProof = SubstrateMessagesReceivingProof<P::TargetChain>,
|
||||||
>,
|
>,
|
||||||
<P::MessageLane as MessageLane>::SourceHeaderNumber: Decode,
|
<P::MessageLane as MessageLane>::SourceHeaderNumber: Decode,
|
||||||
<P::MessageLane as MessageLane>::SourceHeaderHash: Decode,
|
<P::MessageLane as MessageLane>::SourceHeaderHash: Decode,
|
||||||
@@ -255,29 +254,31 @@ where
|
|||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
SubstrateError::Custom(format!(
|
SubstrateError::Custom(format!(
|
||||||
"Failed to compute conversion rate from {} to {}",
|
"Failed to compute conversion rate from {} to {}",
|
||||||
TC::NAME,
|
P::TargetChain::NAME,
|
||||||
SC::NAME,
|
P::SourceChain::NAME,
|
||||||
))
|
))
|
||||||
})?;
|
})?;
|
||||||
log::trace!(
|
log::trace!(
|
||||||
target: "bridge",
|
target: "bridge",
|
||||||
"Using conversion rate {} when converting from {} tokens to {} tokens",
|
"Using conversion rate {} when converting from {} tokens to {} tokens",
|
||||||
conversion_rate,
|
conversion_rate,
|
||||||
TC::NAME,
|
P::TargetChain::NAME,
|
||||||
SC::NAME
|
P::SourceChain::NAME,
|
||||||
);
|
);
|
||||||
Ok(convert_target_tokens_to_source_tokens::<SC, TC>(
|
Ok(
|
||||||
FixedU128::from_float(conversion_rate),
|
convert_target_tokens_to_source_tokens::<P::SourceChain, P::TargetChain>(
|
||||||
self.client
|
FixedU128::from_float(conversion_rate),
|
||||||
.estimate_extrinsic_fee(self.lane.make_messages_delivery_transaction(
|
self.client
|
||||||
Zero::zero(),
|
.estimate_extrinsic_fee(self.lane.make_messages_delivery_transaction(
|
||||||
HeaderId(Default::default(), Default::default()),
|
Zero::zero(),
|
||||||
nonces.clone(),
|
HeaderId(Default::default(), Default::default()),
|
||||||
prepare_dummy_messages_proof::<SC>(nonces, total_dispatch_weight, total_size),
|
nonces.clone(),
|
||||||
))
|
prepare_dummy_messages_proof::<P::SourceChain>(nonces, total_dispatch_weight, total_size),
|
||||||
.await
|
))
|
||||||
.unwrap_or_else(|_| TC::Balance::max_value()),
|
.await
|
||||||
))
|
.unwrap_or_else(|_| <P::TargetChain as Chain>::Balance::max_value()),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user