diff --git a/bridges/relays/lib-substrate-relay/src/messages_source.rs b/bridges/relays/lib-substrate-relay/src/messages_source.rs index e2876b3107..28b5e69410 100644 --- a/bridges/relays/lib-substrate-relay/src/messages_source.rs +++ b/bridges/relays/lib-substrate-relay/src/messages_source.rs @@ -367,7 +367,13 @@ where ) -> Result, SubstrateError> { if let Some(ref target_to_source_headers_relay) = self.target_to_source_headers_relay { if P::SourceBatchCallBuilder::BATCH_CALL_SUPPORTED { - return BatchConfirmationTransaction::

::new(self.clone(), id).await.map(Some) + let (proved_header, prove_calls) = + target_to_source_headers_relay.prove_header(id.0).await?; + return Ok(Some(BatchConfirmationTransaction { + messages_source: self.clone(), + proved_header, + prove_calls, + })) } target_to_source_headers_relay.require_more_headers(id.0).await; @@ -384,21 +390,6 @@ pub struct BatchConfirmationTransaction { prove_calls: Vec>, } -impl BatchConfirmationTransaction

{ - async fn new( - messages_source: SubstrateMessagesSource

, - required_target_header_on_source: TargetHeaderIdOf>, - ) -> Result { - let (proved_header, prove_calls) = messages_source - .target_to_source_headers_relay - .as_ref() - .expect("BatchConfirmationTransaction is only created when target_to_source_headers_relay is Some; qed") - .prove_header(required_target_header_on_source.0) - .await?; - Ok(Self { messages_source, proved_header, prove_calls }) - } -} - #[async_trait] impl BatchTransaction< diff --git a/bridges/relays/lib-substrate-relay/src/messages_target.rs b/bridges/relays/lib-substrate-relay/src/messages_target.rs index 9d80b9166c..5e67461ab3 100644 --- a/bridges/relays/lib-substrate-relay/src/messages_target.rs +++ b/bridges/relays/lib-substrate-relay/src/messages_target.rs @@ -274,7 +274,13 @@ where ) -> Result, SubstrateError> { if let Some(ref source_to_target_headers_relay) = self.source_to_target_headers_relay { if P::TargetBatchCallBuilder::BATCH_CALL_SUPPORTED { - return BatchDeliveryTransaction::

::new(self.clone(), id).await.map(Some) + let (proved_header, prove_calls) = + source_to_target_headers_relay.prove_header(id.0).await?; + return Ok(Some(BatchDeliveryTransaction { + messages_target: self.clone(), + proved_header, + prove_calls, + })) } source_to_target_headers_relay.require_more_headers(id.0).await; @@ -291,21 +297,6 @@ pub struct BatchDeliveryTransaction { prove_calls: Vec>, } -impl BatchDeliveryTransaction

{ - async fn new( - messages_target: SubstrateMessagesTarget

, - required_source_header_on_target: SourceHeaderIdOf>, - ) -> Result { - let (proved_header, prove_calls) = messages_target - .source_to_target_headers_relay - .as_ref() - .expect("BatchDeliveryTransaction is only created when source_to_target_headers_relay is Some; qed") - .prove_header(required_source_header_on_target.0) - .await?; - Ok(Self { messages_target, proved_header, prove_calls }) - } -} - #[async_trait] impl BatchTransaction<