diff --git a/.github/workflows/release-30_create-draft.yml b/.github/workflows/release-30_create-draft.yml index 38c105d8b8..6453dc1ac4 100644 --- a/.github/workflows/release-30_create-draft.yml +++ b/.github/workflows/release-30_create-draft.yml @@ -152,7 +152,7 @@ jobs: WESTMINT_DIGEST: ${{ github.workspace}}/westmint-srtool-json/westmint-srtool-digest.json STATEMINE_DIGEST: ${{ github.workspace}}/statemine-srtool-json/statemine-srtool-digest.json STATEMINT_DIGEST: ${{ github.workspace}}/statemint-srtool-json/statemint-srtool-digest.json - BRIDE_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/bridge-hub-rococo-srtool-json/bridge-hub-rococo-srtool-digest.json + BRIDGE_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/bridge-hub-rococo-srtool-json/bridge-hub-rococo-srtool-digest.json COLLECTIVES_POLKADOT_DIGEST: ${{ github.workspace}}/collectives-polkadot-srtool-json/collectives-polkadot-srtool-digest.json ROCOCO_PARA_DIGEST: ${{ github.workspace}}/rococo-parachain-srtool-json/rococo-parachain-srtool-digest.json CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/contracts-rococo-srtool-json/contracts-rococo-srtool-digest.json @@ -168,7 +168,7 @@ jobs: ls -al $WESTMINT_DIGEST || true ls -al $STATEMINE_DIGEST || true ls -al $STATEMINT_DIGEST || true - ls -al $BRIDE_HUB_ROCOCO_DIGEST || true + ls -al $BRIDGE_HUB_ROCOCO_DIGEST || true ls -al $COLLECTIVES_POLKADOT_DIGEST || true ls -al $ROCOCO_PARA_DIGEST || true ls -al $CANVAS_KUSAMA_DIGEST || true diff --git a/parachains/runtimes/bridge-hubs/README.md b/parachains/runtimes/bridge-hubs/README.md index ea552d60a9..b446c74b08 100644 --- a/parachains/runtimes/bridge-hubs/README.md +++ b/parachains/runtimes/bridge-hubs/README.md @@ -163,6 +163,19 @@ RUST_LOG=runtime=trace,rpc=trace,bridge=trace \ **4. Relay (XCM) messages** +``` +# Rococo -> Wococo +RUST_LOG=runtime=trace,rpc=trace,bridge=trace \ + ~/local_bridge_testing/bin/substrate-relay relay-messages bridge-hub-rococo-to-bridge-hub-wococo \ + --source-host localhost \ + --source-port 8943 \ + --source-signer //Charlie \ + --target-host localhost \ + --target-port 8945 \ + --target-signer //Charlie \ + --target-transactions-mortality=4 \ + --lane 00000002 +``` TODO: --- diff --git a/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_rococo_config.rs b/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_rococo_config.rs index 8cb45f5cdf..ff382c7f5e 100644 --- a/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_rococo_config.rs +++ b/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_rococo_config.rs @@ -91,8 +91,9 @@ impl MessageBridge for WithBridgeHubWococoMessageBridge { bridged_balance: bridge_runtime_common::messages::BalanceOf>, bridged_to_this_conversion_rate_override: Option, ) -> bridge_runtime_common::messages::BalanceOf> { - log::info!("[WithBridgeHubWococoMessageBridge] bridged_balance_to_this_balance - bridged_balance: {:?}, bridged_to_this_conversion_rate_override: {:?}", bridged_balance, bridged_to_this_conversion_rate_override); - unimplemented!("TODO: WithBridgeHubWococoMessageBridge - bridged_balance_to_this_balance") + log::info!("[WithBridgeHubWococoMessageBridge] bridged_balance_to_this_balance (returns 0 balance, TODO: fix) - bridged_balance: {:?}, bridged_to_this_conversion_rate_override: {:?}", bridged_balance, bridged_to_this_conversion_rate_override); + // TODO:check-parameter - any payment? from sovereign account? + 0 } } @@ -193,14 +194,11 @@ impl messages::BridgedChainWithMessages for BridgeHubWococo { transaction: MessageTransaction>, ) -> messages::BalanceOf { log::info!( - "[BridgeHubWococo::BridgedChainWithMessages] transaction_payment - transaction: {:?}", + "[BridgeHubWococo::BridgedChainWithMessages] transaction_payment (returns 0 balance, TODO: fix) - transaction: {:?}", transaction ); // TODO:check-parameter - any payment? from sovereign account? - unimplemented!( - "[BridgeHubWococo/BridgedChainWithMessages] transaction_payment - transaction: {:?}", - transaction - ) + 0 } } @@ -243,13 +241,10 @@ impl ThisChainWithMessages for BridgeHubRococo { transaction: MessageTransaction>, ) -> messages::BalanceOf { log::info!( - "[BridgeHubRococo::ThisChainWithMessages] transaction_payment - transaction: {:?}", + "[BridgeHubRococo::ThisChainWithMessages] transaction_payment (returns 0 balance, TODO: fix) - transaction: {:?}", transaction ); // TODO:check-parameter - any payment? from sovereign account? - unimplemented!( - "[BridgeHubRococo/ThisChainWithMessages] transaction_payment - transaction: {:?}", - transaction - ) + 0 } } diff --git a/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_wococo_config.rs b/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_wococo_config.rs index d8c874b072..02df957458 100644 --- a/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_wococo_config.rs +++ b/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_hub_wococo_config.rs @@ -91,8 +91,9 @@ impl MessageBridge for WithBridgeHubRococoMessageBridge { bridged_balance: bridge_runtime_common::messages::BalanceOf>, bridged_to_this_conversion_rate_override: Option, ) -> bridge_runtime_common::messages::BalanceOf> { - log::info!("[WithBridgeHubRococoMessageBridge] bridged_balance_to_this_balance - bridged_balance: {:?}, bridged_to_this_conversion_rate_override: {:?}", bridged_balance, bridged_to_this_conversion_rate_override); - unimplemented!("TODO: WithBridgeHubRococoMessageBridge - bridged_balance_to_this_balance") + log::info!("[WithBridgeHubRococoMessageBridge] bridged_balance_to_this_balance (returns 0 balance, TODO: fix) - bridged_balance: {:?}, bridged_to_this_conversion_rate_override: {:?}", bridged_balance, bridged_to_this_conversion_rate_override); + // TODO:check-parameter - any payment? from sovereign account? + 0 } } @@ -193,14 +194,11 @@ impl messages::BridgedChainWithMessages for BridgeHubRococo { transaction: MessageTransaction>, ) -> messages::BalanceOf { log::info!( - "[BridgeHubRococo::BridgedChainWithMessages] transaction_payment - transaction: {:?}", + "[BridgeHubRococo::BridgedChainWithMessages] transaction_payment (returns 0 balance, TODO: fix) - transaction: {:?}", transaction ); // TODO:check-parameter - any payment? from sovereign account? - unimplemented!( - "[BridgeHubRococo/BridgedChainWithMessages] transaction_payment - transaction: {:?}", - transaction - ) + 0 } } @@ -243,13 +241,10 @@ impl ThisChainWithMessages for BridgeHubWococo { transaction: MessageTransaction>, ) -> messages::BalanceOf { log::info!( - "[BridgeHubWococo::ThisChainWithMessages] transaction_payment - transaction: {:?}", + "[BridgeHubWococo::ThisChainWithMessages] transaction_payment (returns 0 balance, TODO: fix) - transaction: {:?}", transaction ); // TODO:check-parameter - any payment? from sovereign account? - unimplemented!( - "[BridgeHubWococo/ThisChainWithMessages] transaction_payment - transaction: {:?}", - transaction - ) + 0 } } diff --git a/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs index 66e3686cf6..9e7f48b565 100644 --- a/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs +++ b/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs @@ -28,6 +28,7 @@ pub mod bridge_hub_wococo_config; mod weights; pub mod xcm_config; +use codec::Decode; use bridge_common_config::*; use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use smallvec::smallvec; @@ -247,6 +248,8 @@ pub mod runtime_api { use super::{BlockNumber, Hash}; bp_runtime::decl_bridge_finality_runtime_apis!(rococo); bp_runtime::decl_bridge_finality_runtime_apis!(wococo); + bp_runtime::decl_bridge_finality_runtime_apis!(bridge_hub_rococo); + bp_runtime::decl_bridge_finality_runtime_apis!(bridge_hub_wococo); use bp_messages::{ InboundMessageDetails, LaneId, MessageNonce, MessagePayload, OutboundMessageDetails, @@ -811,6 +814,23 @@ impl_runtime_apis! { } } + + impl runtime_api::BridgeHubRococoFinalityApi for Runtime { + fn best_finalized() -> Option> { + let encoded_head = BridgeRococoParachain::best_parachain_head(bp_bridge_hub_rococo::BRIDGE_HUB_ROCOCO_PARACHAIN_ID.into())?; + let head = bp_bridge_hub_rococo::Header::decode(&mut &encoded_head.0[..]).ok()?; + Some(head.id()) + } + } + + impl runtime_api::BridgeHubWococoFinalityApi for Runtime { + fn best_finalized() -> Option> { + let encoded_head = BridgeWococoParachain::best_parachain_head(bp_bridge_hub_wococo::BRIDGE_HUB_WOCOCO_PARACHAIN_ID.into())?; + let head = bp_bridge_hub_wococo::Header::decode(&mut &encoded_head.0[..]).ok()?; + Some(head.id()) + } + } + // This exposed by BridgeHubRococo impl runtime_api::ToBridgeHubWococoOutboundLaneApi for Runtime { fn estimate_message_delivery_and_dispatch_fee(