Skip to content

Commit b05cef5

Browse files
authored
Improve relayer initialization behaviour (#1743)
Wait until the initialization transaction is finalized/lost.
1 parent c7b6bae commit b05cef5

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

relays/lib-substrate-relay/src/finality/initialize.rs

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
use crate::{error::Error, finality::engine::Engine};
2525
use sp_core::Pair;
2626

27+
use bp_runtime::HeaderIdOf;
2728
use relay_substrate_client::{
2829
AccountKeyPairOf, Chain, ChainWithTransactions, Client, Error as SubstrateError,
2930
UnsignedTransaction,
3031
};
32+
use relay_utils::{TrackedTransactionStatus, TransactionTracker};
3133
use sp_runtime::traits::Header as HeaderT;
3234

3335
/// Submit headers-bridge initialization transaction.
@@ -61,13 +63,26 @@ pub async fn initialize<
6163
.await;
6264

6365
match result {
64-
Ok(Some(tx_hash)) => log::info!(
65-
target: "bridge",
66-
"Successfully submitted {}-headers bridge initialization transaction to {}: {:?}",
67-
SourceChain::NAME,
68-
TargetChain::NAME,
69-
tx_hash,
70-
),
66+
Ok(Some(tx_status)) => match tx_status {
67+
TrackedTransactionStatus::Lost => {
68+
log::error!(
69+
target: "bridge",
70+
"Failed to execute {}-headers bridge initialization transaction on {}: {:?}.",
71+
SourceChain::NAME,
72+
TargetChain::NAME,
73+
tx_status
74+
)
75+
},
76+
TrackedTransactionStatus::Finalized(_) => {
77+
log::info!(
78+
target: "bridge",
79+
"Successfully executed {}-headers bridge initialization transaction on {}: {:?}.",
80+
SourceChain::NAME,
81+
TargetChain::NAME,
82+
tx_status
83+
)
84+
},
85+
},
7186
Ok(None) => (),
7287
Err(err) => log::error!(
7388
target: "bridge",
@@ -92,7 +107,7 @@ async fn do_initialize<
92107
prepare_initialize_transaction: F,
93108
dry_run: bool,
94109
) -> Result<
95-
Option<TargetChain::Hash>,
110+
Option<TrackedTransactionStatus<HeaderIdOf<TargetChain>>>,
96111
Error<SourceChain::Hash, <SourceChain::Header as HeaderT>::Number>,
97112
>
98113
where
@@ -128,8 +143,8 @@ where
128143
initialization_data,
129144
);
130145

131-
let initialization_tx_hash = target_client
132-
.submit_signed_extrinsic(&target_signer, move |_, transaction_nonce| {
146+
let tx_status = target_client
147+
.submit_and_watch_signed_extrinsic(&target_signer, move |_, transaction_nonce| {
133148
let tx = prepare_initialize_transaction(transaction_nonce, initialization_data);
134149
if dry_run {
135150
Err(SubstrateError::Custom(
@@ -140,7 +155,9 @@ where
140155
}
141156
})
142157
.await
143-
.map_err(|err| Error::SubmitTransaction(TargetChain::NAME, err))?;
158+
.map_err(|err| Error::SubmitTransaction(TargetChain::NAME, err))?
159+
.wait()
160+
.await;
144161

145-
Ok(Some(initialization_tx_hash))
162+
Ok(Some(tx_status))
146163
}

0 commit comments

Comments
 (0)