mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 12:11:02 +00:00
Improve relayer initialization behaviour (#1743)
Wait until the initialization transaction is finalized/lost.
This commit is contained in:
committed by
Bastian Köcher
parent
f82372e818
commit
64f03aaa0b
@@ -24,10 +24,12 @@
|
|||||||
use crate::{error::Error, finality::engine::Engine};
|
use crate::{error::Error, finality::engine::Engine};
|
||||||
use sp_core::Pair;
|
use sp_core::Pair;
|
||||||
|
|
||||||
|
use bp_runtime::HeaderIdOf;
|
||||||
use relay_substrate_client::{
|
use relay_substrate_client::{
|
||||||
AccountKeyPairOf, Chain, ChainWithTransactions, Client, Error as SubstrateError,
|
AccountKeyPairOf, Chain, ChainWithTransactions, Client, Error as SubstrateError,
|
||||||
UnsignedTransaction,
|
UnsignedTransaction,
|
||||||
};
|
};
|
||||||
|
use relay_utils::{TrackedTransactionStatus, TransactionTracker};
|
||||||
use sp_runtime::traits::Header as HeaderT;
|
use sp_runtime::traits::Header as HeaderT;
|
||||||
|
|
||||||
/// Submit headers-bridge initialization transaction.
|
/// Submit headers-bridge initialization transaction.
|
||||||
@@ -61,13 +63,26 @@ pub async fn initialize<
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
match result {
|
match result {
|
||||||
Ok(Some(tx_hash)) => log::info!(
|
Ok(Some(tx_status)) => match tx_status {
|
||||||
target: "bridge",
|
TrackedTransactionStatus::Lost => {
|
||||||
"Successfully submitted {}-headers bridge initialization transaction to {}: {:?}",
|
log::error!(
|
||||||
SourceChain::NAME,
|
target: "bridge",
|
||||||
TargetChain::NAME,
|
"Failed to execute {}-headers bridge initialization transaction on {}: {:?}.",
|
||||||
tx_hash,
|
SourceChain::NAME,
|
||||||
),
|
TargetChain::NAME,
|
||||||
|
tx_status
|
||||||
|
)
|
||||||
|
},
|
||||||
|
TrackedTransactionStatus::Finalized(_) => {
|
||||||
|
log::info!(
|
||||||
|
target: "bridge",
|
||||||
|
"Successfully executed {}-headers bridge initialization transaction on {}: {:?}.",
|
||||||
|
SourceChain::NAME,
|
||||||
|
TargetChain::NAME,
|
||||||
|
tx_status
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
Ok(None) => (),
|
Ok(None) => (),
|
||||||
Err(err) => log::error!(
|
Err(err) => log::error!(
|
||||||
target: "bridge",
|
target: "bridge",
|
||||||
@@ -92,7 +107,7 @@ async fn do_initialize<
|
|||||||
prepare_initialize_transaction: F,
|
prepare_initialize_transaction: F,
|
||||||
dry_run: bool,
|
dry_run: bool,
|
||||||
) -> Result<
|
) -> Result<
|
||||||
Option<TargetChain::Hash>,
|
Option<TrackedTransactionStatus<HeaderIdOf<TargetChain>>>,
|
||||||
Error<SourceChain::Hash, <SourceChain::Header as HeaderT>::Number>,
|
Error<SourceChain::Hash, <SourceChain::Header as HeaderT>::Number>,
|
||||||
>
|
>
|
||||||
where
|
where
|
||||||
@@ -128,8 +143,8 @@ where
|
|||||||
initialization_data,
|
initialization_data,
|
||||||
);
|
);
|
||||||
|
|
||||||
let initialization_tx_hash = target_client
|
let tx_status = target_client
|
||||||
.submit_signed_extrinsic(&target_signer, move |_, transaction_nonce| {
|
.submit_and_watch_signed_extrinsic(&target_signer, move |_, transaction_nonce| {
|
||||||
let tx = prepare_initialize_transaction(transaction_nonce, initialization_data);
|
let tx = prepare_initialize_transaction(transaction_nonce, initialization_data);
|
||||||
if dry_run {
|
if dry_run {
|
||||||
Err(SubstrateError::Custom(
|
Err(SubstrateError::Custom(
|
||||||
@@ -140,7 +155,9 @@ where
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
.map_err(|err| Error::SubmitTransaction(TargetChain::NAME, err))?;
|
.map_err(|err| Error::SubmitTransaction(TargetChain::NAME, err))?
|
||||||
|
.wait()
|
||||||
|
.await;
|
||||||
|
|
||||||
Ok(Some(initialization_tx_hash))
|
Ok(Some(tx_status))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user