From 647eb801659af1b1915daa2916201547e6519fec Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Tue, 23 Mar 2021 09:50:13 +0300 Subject: [PATCH] Westend->Millau headers relay in deployments (#831) * reorganize monitoring * Westend->Millau bridge * support multiple bridges * initialize Westend -> Millau bridge byMillau.George * fix intersecting ports * ignore dashboards * single bridged network * deal with multple --env-file args * fix chain name * use images from docker hub * update show_help * updated comment * mount whole dashboards directory * removed unneeded network * reverted reverse-proxy changes * prometheus -> targets * separate Grafana.Dockerfile with builtin /etc/grafana * Revert "separate Grafana.Dockerfile with builtin /etc/grafana" This reverts commit 53e04c4556f882d19e3af0fac581a926b8e0c167. * read dashboards from /etc/grafana/dashboards * stop comment --- bridges/bin/millau/node/src/chain_spec.rs | 11 +++++++++-- bridges/bin/millau/runtime/src/lib.rs | 2 +- bridges/modules/finality-verifier/src/lib.rs | 6 ++++-- bridges/relays/substrate/src/rialto_millau/mod.rs | 5 ++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/bridges/bin/millau/node/src/chain_spec.rs b/bridges/bin/millau/node/src/chain_spec.rs index ac9a873f4f..a9f977f637 100644 --- a/bridges/bin/millau/node/src/chain_spec.rs +++ b/bridges/bin/millau/node/src/chain_spec.rs @@ -16,8 +16,8 @@ use bp_millau::derive_account_from_rialto_id; use millau_runtime::{ - AccountId, AuraConfig, BalancesConfig, BridgeRialtoConfig, GenesisConfig, GrandpaConfig, SessionConfig, - SessionKeys, Signature, SudoConfig, SystemConfig, WASM_BINARY, + AccountId, AuraConfig, BalancesConfig, BridgeRialtoConfig, BridgeWestendFinalityVerifierConfig, GenesisConfig, + GrandpaConfig, SessionConfig, SessionKeys, Signature, SudoConfig, SystemConfig, WASM_BINARY, }; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_core::{sr25519, Pair, Public}; @@ -179,6 +179,13 @@ fn testnet_genesis( .map(|x| (x.0.clone(), x.0.clone(), session_keys(x.1.clone(), x.2.clone()))) .collect::>(), }), + pallet_finality_verifier_Instance1: Some(BridgeWestendFinalityVerifierConfig { + // for our deployments to avoid multiple same-nonces transactions: + // //Alice is already used to initialize Rialto<->Millau bridge + // => let's use //George to initialize Westend->Millau bridge + owner: Some(get_account_id_from_seed::("George")), + ..Default::default() + }), } } diff --git a/bridges/bin/millau/runtime/src/lib.rs b/bridges/bin/millau/runtime/src/lib.rs index 0be3642dec..f9c534bf56 100644 --- a/bridges/bin/millau/runtime/src/lib.rs +++ b/bridges/bin/millau/runtime/src/lib.rs @@ -380,7 +380,7 @@ construct_runtime!( BridgeRialtoMessages: pallet_bridge_messages::{Module, Call, Storage, Event}, BridgeCallDispatch: pallet_bridge_call_dispatch::{Module, Event}, BridgeRialtoFinalityVerifier: pallet_finality_verifier::{Module, Call}, - BridgeWestendFinalityVerifier: pallet_finality_verifier::::{Module, Call}, + BridgeWestendFinalityVerifier: pallet_finality_verifier::::{Module, Call, Config}, System: frame_system::{Module, Call, Config, Storage, Event}, RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, diff --git a/bridges/modules/finality-verifier/src/lib.rs b/bridges/modules/finality-verifier/src/lib.rs index 4399d78a74..7e6b8a8353 100644 --- a/bridges/modules/finality-verifier/src/lib.rs +++ b/bridges/modules/finality-verifier/src/lib.rs @@ -256,8 +256,10 @@ pub mod pallet { #[pallet::genesis_config] pub struct GenesisConfig, I: 'static = ()> { - owner: Option, - init_data: Option>>, + /// Optional module owner account. + pub owner: Option, + /// Optional module initialization data. + pub init_data: Option>>, } #[cfg(feature = "std")] diff --git a/bridges/relays/substrate/src/rialto_millau/mod.rs b/bridges/relays/substrate/src/rialto_millau/mod.rs index 82402d71d4..be7d20debf 100644 --- a/bridges/relays/substrate/src/rialto_millau/mod.rs +++ b/bridges/relays/substrate/src/rialto_millau/mod.rs @@ -115,6 +115,9 @@ async fn run_init_bridge(command: cli::InitBridge) -> Result<(), String> { .next_account_index(millau_sign.signer.public().into()) .await?; + // at Westend -> Millau initialization we're not using sudo, because otherwise our deployments + // may fail, because we need to initialize both Rialto -> Millau and Westend -> Millau bridge. + // => since there's single possible sudo account, one of transaction may fail with duplicate nonce error crate::headers_initialize::initialize(westend_client, millau_client.clone(), move |initialization_data| { let initialize_call = millau_runtime::FinalityBridgeWestendCall::< millau_runtime::Runtime, @@ -126,7 +129,7 @@ async fn run_init_bridge(command: cli::InitBridge) -> Result<(), String> { *millau_client.genesis_hash(), &millau_sign.signer, millau_signer_next_index, - millau_runtime::SudoCall::sudo(Box::new(initialize_call.into())).into(), + initialize_call.into(), ) .encode(), ))