use complex transactions on RBH/WBH bridge hubs (#1893)

This commit is contained in:
Svyatoslav Nikolsky
2023-02-20 11:27:39 +03:00
committed by Bastian Köcher
parent 976e96608c
commit bb078b8226
9 changed files with 68 additions and 14 deletions
@@ -20,8 +20,9 @@ use bp_bridge_hub_wococo::{PolkadotSignedExtension, AVERAGE_BLOCK_INTERVAL};
use bp_messages::MessageNonce;
use codec::Encode;
use relay_substrate_client::{
Chain, ChainWithBalances, ChainWithMessages, ChainWithTransactions, Error as SubstrateError,
SignParam, UnderlyingChainProvider, UnsignedTransaction,
Chain, ChainWithBalances, ChainWithMessages, ChainWithTransactions, ChainWithUtilityPallet,
Error as SubstrateError, MockedRuntimeUtilityPallet, SignParam, UnderlyingChainProvider,
UnsignedTransaction,
};
use sp_core::{storage::StorageKey, Pair};
use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount};
@@ -56,6 +57,10 @@ impl ChainWithBalances for BridgeHubWococo {
}
}
impl ChainWithUtilityPallet for BridgeHubWococo {
type UtilityPallet = MockedRuntimeUtilityPallet<runtime::Call>;
}
impl ChainWithTransactions for BridgeHubWococo {
type AccountKeyPair = sp_core::sr25519::Pair;
type SignedTransaction = runtime::UncheckedExtrinsic;
@@ -23,7 +23,7 @@ use bp_bridge_hub_wococo::SignedExtension;
pub use bp_header_chain::BridgeGrandpaCallOf;
pub use bp_parachains::BridgeParachainCall;
pub use bridge_runtime_common::messages::BridgeMessagesCallOf;
pub use relay_substrate_client::calls::SystemCall;
pub use relay_substrate_client::calls::{SystemCall, UtilityCall};
/// Unchecked BridgeHubWococo extrinsic.
pub type UncheckedExtrinsic = bp_bridge_hub_wococo::UncheckedExtrinsic<Call, SignedExtension>;
@@ -47,6 +47,9 @@ pub enum Call {
#[cfg(test)]
#[codec(index = 0)]
System(SystemCall),
/// Utility pallet.
#[codec(index = 40)]
Utility(UtilityCall<Call>),
/// Rococo bridge pallet.
#[codec(index = 43)]
@@ -59,6 +62,12 @@ pub enum Call {
BridgeRococoMessages(BridgeRococoMessagesCall),
}
impl From<UtilityCall<Call>> for Call {
fn from(call: UtilityCall<Call>) -> Call {
Call::Utility(call)
}
}
#[cfg(test)]
mod tests {
use super::*;