Mortal conversion rate updater transactions (#1257)

* merge all similar update_conversion_rate functions

* stall timeout in conversion rate update loop

* fmt

* fix
This commit is contained in:
Svyatoslav Nikolsky
2022-03-09 11:57:59 +03:00
committed by Bastian Köcher
parent 2bf5b23262
commit ba2b0b086c
9 changed files with 280 additions and 244 deletions
@@ -134,14 +134,8 @@ macro_rules! select_bridge {
type RightAccountIdConverter = bp_rialto::AccountIdConverter;
use crate::chains::{
millau_messages_to_rialto::{
update_rialto_to_millau_conversion_rate as update_right_to_left_conversion_rate,
MillauMessagesToRialto as LeftToRightMessageLane,
},
rialto_messages_to_millau::{
update_millau_to_rialto_conversion_rate as update_left_to_right_conversion_rate,
RialtoMessagesToMillau as RightToLeftMessageLane,
},
millau_messages_to_rialto::MillauMessagesToRialto as LeftToRightMessageLane,
rialto_messages_to_millau::RialtoMessagesToMillau as RightToLeftMessageLane,
};
async fn left_create_account(
@@ -181,22 +175,6 @@ macro_rules! select_bridge {
wococo_messages_to_rococo::WococoMessagesToRococo as RightToLeftMessageLane,
};
async fn update_right_to_left_conversion_rate(
_client: Client<Left>,
_signer: <Left as TransactionSignScheme>::AccountKeyPair,
_updated_rate: f64,
) -> anyhow::Result<()> {
Err(anyhow::format_err!("Conversion rate is not supported by this bridge"))
}
async fn update_left_to_right_conversion_rate(
_client: Client<Right>,
_signer: <Right as TransactionSignScheme>::AccountKeyPair,
_updated_rate: f64,
) -> anyhow::Result<()> {
Err(anyhow::format_err!("Conversion rate is not supported by this bridge"))
}
async fn left_create_account(
left_client: Client<Left>,
left_sign: <Left as TransactionSignScheme>::AccountKeyPair,
@@ -250,14 +228,8 @@ macro_rules! select_bridge {
type RightAccountIdConverter = bp_polkadot::AccountIdConverter;
use crate::chains::{
kusama_messages_to_polkadot::{
update_polkadot_to_kusama_conversion_rate as update_right_to_left_conversion_rate,
KusamaMessagesToPolkadot as LeftToRightMessageLane,
},
polkadot_messages_to_kusama::{
update_kusama_to_polkadot_conversion_rate as update_left_to_right_conversion_rate,
PolkadotMessagesToKusama as RightToLeftMessageLane,
},
kusama_messages_to_polkadot::KusamaMessagesToPolkadot as LeftToRightMessageLane,
polkadot_messages_to_kusama::PolkadotMessagesToKusama as RightToLeftMessageLane,
};
async fn left_create_account(
@@ -354,7 +326,15 @@ impl RelayHeadersAndMessages {
Left::NAME
)
};
substrate_relay_helper::conversion_rate_update::run_conversion_rate_update_loop(
substrate_relay_helper::conversion_rate_update::run_conversion_rate_update_loop::<
LeftToRightMessageLane,
Left,
>(
left_client.clone(),
TransactionParams {
signer: left_messages_pallet_owner.clone(),
mortality: left_transactions_mortality,
},
left_to_right_metrics
.target_to_source_conversion_rate
.as_ref()
@@ -371,21 +351,6 @@ impl RelayHeadersAndMessages {
.ok_or_else(format_err)?
.shared_value_ref(),
CONVERSION_RATE_ALLOWED_DIFFERENCE_RATIO,
move |new_rate| {
log::info!(
target: "bridge",
"Going to update {} -> {} (on {}) conversion rate to {}.",
Right::NAME,
Left::NAME,
Left::NAME,
new_rate,
);
update_right_to_left_conversion_rate(
left_client.clone(),
left_messages_pallet_owner.clone(),
new_rate,
)
},
);
}
if let Some(right_messages_pallet_owner) = right_messages_pallet_owner.clone() {
@@ -397,7 +362,15 @@ impl RelayHeadersAndMessages {
Right::NAME
)
};
substrate_relay_helper::conversion_rate_update::run_conversion_rate_update_loop(
substrate_relay_helper::conversion_rate_update::run_conversion_rate_update_loop::<
RightToLeftMessageLane,
Right,
>(
right_client.clone(),
TransactionParams {
signer: right_messages_pallet_owner.clone(),
mortality: right_transactions_mortality,
},
right_to_left_metrics
.target_to_source_conversion_rate
.as_ref()
@@ -414,21 +387,6 @@ impl RelayHeadersAndMessages {
.ok_or_else(format_err)?
.shared_value_ref(),
CONVERSION_RATE_ALLOWED_DIFFERENCE_RATIO,
move |new_rate| {
log::info!(
target: "bridge",
"Going to update {} -> {} (on {}) conversion rate to {}.",
Left::NAME,
Right::NAME,
Right::NAME,
new_rate,
);
update_left_to_right_conversion_rate(
right_client.clone(),
right_messages_pallet_owner.clone(),
new_rate,
)
},
);
}