From 7b75c2b9c875d6012c8b8e0068c7f6268c4d8aaf Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Tue, 27 Sep 2022 17:10:51 +0800 Subject: [PATCH 01/10] add bridge message for pangolin_parachain_alpha --- .../pangolin/src/bridges_message/mod.rs | 3 + .../pangolin_parachain_alpha.rs | 282 ++++++++++++++++++ 2 files changed, 285 insertions(+) create mode 100644 node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs diff --git a/node/runtime/pangolin/src/bridges_message/mod.rs b/node/runtime/pangolin/src/bridges_message/mod.rs index 5aae779952..ea3d0b21b6 100644 --- a/node/runtime/pangolin/src/bridges_message/mod.rs +++ b/node/runtime/pangolin/src/bridges_message/mod.rs @@ -20,4 +20,7 @@ pub mod pangoro; pub use pangoro as bm_pangoro; pub mod pangolin_parachain; +pub mod pangolin_parachain_alpha; + pub use pangolin_parachain as bm_pangolin_parachain; +pub use pangolin_parachain_alpha as bm_pangolin_parachain_alpha; diff --git a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs new file mode 100644 index 0000000000..40c83d502a --- /dev/null +++ b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs @@ -0,0 +1,282 @@ +// This file is part of Darwinia. +// +// Copyright (C) 2018-2022 Darwinia Network +// SPDX-License-Identifier: GPL-3.0 +// +// Darwinia is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Darwinia is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Darwinia. If not, see . + +// --- crates.io --- +use codec::{Decode, Encode}; +use scale_info::TypeInfo; +// --- paritytech --- +use frame_support::{ + weights::{DispatchClass, Weight}, + RuntimeDebug, +}; +use sp_runtime::{traits::Zero, FixedPointNumber, FixedU128}; +use sp_std::ops::RangeInclusive; +// --- darwinia-network --- +use crate::*; +use bp_messages::{ + source_chain::TargetHeaderChain, + target_chain::{ProvedMessages, SourceHeaderChain}, + InboundLaneData, LaneId, Message, MessageNonce, Parameter, +}; +use bp_rococo::parachains::ParaId; +// Modified 1 +use bp_runtime::{Chain, ChainId, PANGOLIN_CHAIN_ID, PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID}; +use bridge_runtime_common::{ + // Modified 2 + lanes::PANGOLIN_PANGOLIN_PARACHAIN_ALPHA_LANE, + messages::{ + self, + source::{self, FromBridgedChainMessagesDeliveryProof, FromThisChainMessagePayload}, + target::{ + self, FromBridgedChainEncodedMessageCall, FromBridgedChainMessageDispatch, + FromBridgedChainMessagePayload, FromBridgedChainMessagesProof, + }, + BalanceOf, BridgedChainWithMessages, ChainWithMessages, MessageBridge, MessageTransaction, + ThisChainWithMessages, + }, +}; +use drml_common_runtime::impls::FromThisChainMessageVerifier; +use pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH; + +/// Message delivery proof for Pangolin -> PangolinParachainAlpha messages. +type ToPangolinParachainAlphaMessagesDeliveryProof = + FromBridgedChainMessagesDeliveryProof; +/// Message proof for PangolinParachainAlpha -> Pangolin messages. +type FromPangolinParachainAlphaMessagesProof = + FromBridgedChainMessagesProof; + +/// Message payload for Pangolin -> PangolinParachainAlpha messages. +pub type ToPangolinParachainAlphaMessagePayload = + FromThisChainMessagePayload; +/// Message payload for PangolinParachainAlpha -> Pangolin messages. +pub type FromPangolinParachainAlphaMessagePayload = + FromBridgedChainMessagePayload; + +/// Message verifier for Pangolin -> PangolinParachain messages. +pub type ToPangolinParachainAlphaMessageVerifier = FromThisChainMessageVerifier< + WithPangolinParachainAlphaMessageBridge, + Runtime, + WithPangolinParachainAlphaFeeMarket, +>; + +/// Encoded Pangolin Call as it comes from PangolinParachainAlpha +pub type FromPangolinParachainAlphaEncodedCall = FromBridgedChainEncodedMessageCall; + +/// Call-dispatch based message dispatch for PangolinParachainAlpha -> Pangolin messages. +pub type FromPangolinParachainAlphaMessageDispatch = FromBridgedChainMessageDispatch< + WithPangolinParachainAlphaMessageBridge, + Runtime, + Ring, + WithPangolinParachainAlphaDispatch, +>; + +/// Identifier of PangolinParachainAlpha registered in the moonbase relay chain. +pub const PANGOLIN_PARACHAIN_ALPHA_ID: u32 = 2105; + +pub const INITIAL_PANGOLIN_PARACHAIN_ALPHA_TO_PANGOLIN_CONVERSION_RATE: FixedU128 = + FixedU128::from_inner(FixedU128::DIV); + +frame_support::parameter_types! { + /// PangolinParachainAlpha to Pangolin conversion rate. Initially we trate both tokens as equal. + pub storage PangolinParachainAlphaToPangolinConversionRate: FixedU128 = INITIAL_PANGOLIN_PARACHAIN_ALPHA_TO_PANGOLIN_CONVERSION_RATE; +} + +#[derive(Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug, TypeInfo)] +pub enum PangolinToPangolinParachainAlphaParameter { + /// The conversion formula we use is: `PangolinTokens = PangolinParachainAlphaTokens * + /// conversion_rate`. + PangolinParachainAlphaToPangolinConversionRate(FixedU128), +} +impl Parameter for PangolinToPangolinParachainAlphaParameter { + fn save(&self) { + match *self { + PangolinToPangolinParachainAlphaParameter::PangolinParachainAlphaToPangolinConversionRate( + ref conversion_rate, + ) => PangolinParachainAlphaToPangolinConversionRate::set(conversion_rate), + } + } +} + +/// Pangolin <-> PangolinParachainAlpha message bridge. +#[derive(Clone, Copy, RuntimeDebug)] +pub struct WithPangolinParachainAlphaMessageBridge; +impl MessageBridge for WithPangolinParachainAlphaMessageBridge { + type BridgedChain = PangolinParachainAlpha; + type ThisChain = Pangolin; + + const BRIDGED_CHAIN_ID: ChainId = PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID; + const BRIDGED_MESSAGES_PALLET_NAME: &'static str = + bp_pangolin::WITH_PANGOLIN_MESSAGES_PALLET_NAME; + const RELAYER_FEE_PERCENT: u32 = 10; + const THIS_CHAIN_ID: ChainId = PANGOLIN_CHAIN_ID; + + fn bridged_balance_to_this_balance( + bridged_balance: BalanceOf, + ) -> BalanceOf { + PangolinParachainAlphaToPangolinConversionRate::get().saturating_mul_int(bridged_balance) + } +} + +/// Pangolin chain from message lane point of view. +#[derive(Clone, Copy, RuntimeDebug)] +pub struct Pangolin; +impl ChainWithMessages for Pangolin { + type AccountId = bp_pangolin::AccountId; + type Balance = bp_pangolin::Balance; + type Hash = bp_pangolin::Hash; + type Signature = bp_pangolin::Signature; + type Signer = bp_pangolin::AccountPublic; + type Weight = Weight; +} +impl ThisChainWithMessages for Pangolin { + type Call = Call; + + // Modified 3 + fn is_outbound_lane_enabled(lane: &LaneId) -> bool { + *lane == PANGOLIN_PANGOLIN_PARACHAIN_ALPHA_LANE + } + + fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { + MessageNonce::MAX + } + + fn estimate_delivery_confirmation_transaction() -> MessageTransaction { + let inbound_data_size = InboundLaneData::::encoded_size_hint( + bp_pangolin::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + 1, + 1, + ) + .unwrap_or(u32::MAX); + + MessageTransaction { + dispatch_weight: bp_pangolin::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT, + size: inbound_data_size + .saturating_add(bp_pangolin::EXTRA_STORAGE_PROOF_SIZE) + .saturating_add(bp_pangolin::TX_EXTRA_BYTES), + } + } + + fn transaction_payment(transaction: MessageTransaction) -> Self::Balance { + // in our testnets, both per-byte fee and weight-to-fee are 1:1 + messages::transaction_payment( + RuntimeBlockWeights::get().get(DispatchClass::Normal).base_extrinsic, + 1, + FixedU128::zero(), + |weight| weight as _, + transaction, + ) + } +} + +#[derive(Clone, Copy, RuntimeDebug)] +pub struct PangolinParachainAlpha; +impl ChainWithMessages for PangolinParachainAlpha { + type AccountId = bp_pangolin_parachain::AccountId; + type Balance = bp_pangolin_parachain::Balance; + type Hash = bp_pangolin_parachain::Hash; + type Signature = bp_pangolin_parachain::Signature; + type Signer = bp_pangolin_parachain::AccountPublic; + type Weight = Weight; +} +impl BridgedChainWithMessages for PangolinParachainAlpha { + fn maximal_extrinsic_size() -> u32 { + bp_pangolin_parachain::PangolinParachain::max_extrinsic_size() + } + + fn message_weight_limits(_message_payload: &[u8]) -> RangeInclusive { + let upper_limit = target::maximal_incoming_message_dispatch_weight( + bp_pangolin_parachain::PangolinParachain::max_extrinsic_weight(), + ); + 0..=upper_limit + } + + fn estimate_delivery_transaction( + message_payload: &[u8], + include_pay_dispatch_fee_cost: bool, + message_dispatch_weight: Weight, + ) -> MessageTransaction { + let message_payload_len = u32::try_from(message_payload.len()).unwrap_or(u32::MAX); + let extra_bytes_in_payload = Weight::from(message_payload_len) + .saturating_sub(EXPECTED_DEFAULT_MESSAGE_LENGTH.into()); + + MessageTransaction { + dispatch_weight: extra_bytes_in_payload + .saturating_mul(bp_pangolin::ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT) + .saturating_add(bp_pangolin::DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT) + .saturating_add(message_dispatch_weight) + .saturating_sub(if include_pay_dispatch_fee_cost { + 0 + } else { + bp_pangolin::PAY_INBOUND_DISPATCH_FEE_WEIGHT + }), + size: message_payload_len + .saturating_add(bp_pangolin::EXTRA_STORAGE_PROOF_SIZE) + .saturating_add(bp_pangolin::TX_EXTRA_BYTES), + } + } + + fn transaction_payment(transaction: MessageTransaction) -> Self::Balance { + // in our testnets, both per-byte fee and weight-to-fee are 1:1 + messages::transaction_payment( + bp_pangolin_parachain::RuntimeBlockWeights::get() + .get(DispatchClass::Normal) + .base_extrinsic, + 1, + FixedU128::zero(), + |weight| weight as _, + transaction, + ) + } +} +impl TargetHeaderChain::AccountId> + for PangolinParachainAlpha +{ + type Error = &'static str; + type MessagesDeliveryProof = ToPangolinParachainAlphaMessagesDeliveryProof; + + fn verify_message(payload: &ToPangolinParachainAlphaMessagePayload) -> Result<(), Self::Error> { + source::verify_chain_message::(payload) + } + + fn verify_messages_delivery_proof( + proof: Self::MessagesDeliveryProof, + ) -> Result<(LaneId, InboundLaneData), Self::Error> { + source::verify_messages_delivery_proof_from_parachain::< + WithPangolinParachainAlphaMessageBridge, + bp_pangolin_parachain::Header, + Runtime, + WithRococoParachainsInstance, + >(ParaId(PANGOLIN_PARACHAIN_ALPHA_ID), proof) + } +} +impl SourceHeaderChain<::Balance> for PangolinParachainAlpha { + type Error = &'static str; + type MessagesProof = FromPangolinParachainAlphaMessagesProof; + + fn verify_messages_proof( + proof: Self::MessagesProof, + messages_count: u32, + ) -> Result::Balance>>, Self::Error> { + target::verify_messages_proof_from_parachain::< + WithPangolinParachainAlphaMessageBridge, + bp_pangolin_parachain::Header, + Runtime, + WithRococoParachainsInstance, + >(ParaId(PANGOLIN_PARACHAIN_ALPHA_ID), proof, messages_count) + } +} From 3f6ab2745449f50636871fd18ed59aa1d3bcef5f Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 10:10:54 +0800 Subject: [PATCH 02/10] update pallets related to alpha bridge --- node/runtime/pangolin/src/lib.rs | 7 +++++ .../pangolin/src/pallets/bridge_dispatch.rs | 14 ++++++++- .../pangolin/src/pallets/bridge_grandpa.rs | 8 ++++- .../pangolin/src/pallets/bridge_messages.rs | 31 +++++++++++++++++-- .../pangolin/src/pallets/bridge_parachains.rs | 7 ++++- .../pangolin/src/pallets/fee_market.rs | 19 +++++++++++- 6 files changed, 80 insertions(+), 6 deletions(-) diff --git a/node/runtime/pangolin/src/lib.rs b/node/runtime/pangolin/src/lib.rs index 1fe06b744b..36fe4624fa 100644 --- a/node/runtime/pangolin/src/lib.rs +++ b/node/runtime/pangolin/src/lib.rs @@ -244,6 +244,13 @@ frame_support::construct_runtime! { PangolinParachainFeeMarket: pallet_fee_market::::{Pallet, Call, Storage, Event} = 64, TransactionPause: module_transaction_pause::{Pallet, Call, Storage, Event} = 54, + // pangolin <> pangolin parachain alpha bridge + BridgeMoonbaseRelayGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Storage} = 67 + BridgeMoonbaseRelayParachains: pallet_bridge_parachains::::{Pallet, Call, Storage} = 68 + BridgePangolinParachainAlphaDispatch: pallet_bridge_dispatch::::{Pallet, Event} = 69, + BridgePangolinParachainAlphaMessages: pallet_bridge_messages::::{Pallet, Call, Storage, Event} = 70, + PangolinParachainAlphaFeeMarket: pallet_fee_market::::{Pallet, Call, Storage, Event} = 71, + // Substrate2SubstrateIssuing: from_substrate_issuing::{Pallet, Call, Storage, Config, Event} = 49, ToPangolinParachainBacking: to_parachain_backing::{Pallet, Call, Storage, Config, Event} = 65, } diff --git a/node/runtime/pangolin/src/pallets/bridge_dispatch.rs b/node/runtime/pangolin/src/pallets/bridge_dispatch.rs index 8cb22fbc51..f275cf507b 100644 --- a/node/runtime/pangolin/src/pallets/bridge_dispatch.rs +++ b/node/runtime/pangolin/src/pallets/bridge_dispatch.rs @@ -1,5 +1,5 @@ pub use pallet_bridge_dispatch::{ - Instance1 as WithPangoroDispatch, Instance2 as WithPangolinParachainDispatch, + Instance1 as WithPangoroDispatch, Instance2 as WithPangolinParachainDispatch, Instance3 as WithPangolinParachainAlphaDispatch }; // --- paritytech --- @@ -125,3 +125,15 @@ impl Config for Runtime { type TargetChainAccountPublic = bp_pangolin::AccountPublic; type TargetChainSignature = bp_pangolin::Signature; } +impl Config for Runtime { + type AccountIdConverter = bp_pangolin::AccountIdConverter; + type BridgeMessageId = (LaneId, MessageNonce); + type Call = Call; + type CallValidator = CallValidator; + type EncodedCall = bm_pangolin_parachain_alpha::FromPangolinParachainAlphaEncodedCall; + type Event = Event; + type IntoDispatchOrigin = IntoDispatchOrigin; + type SourceChainAccountId = bp_pangolin_parachain::AccountId; + type TargetChainAccountPublic = bp_pangolin::AccountPublic; + type TargetChainSignature = bp_pangolin::Signature; +} diff --git a/node/runtime/pangolin/src/pallets/bridge_grandpa.rs b/node/runtime/pangolin/src/pallets/bridge_grandpa.rs index 3a33825957..db53d82701 100644 --- a/node/runtime/pangolin/src/pallets/bridge_grandpa.rs +++ b/node/runtime/pangolin/src/pallets/bridge_grandpa.rs @@ -1,4 +1,4 @@ -pub use pallet_bridge_grandpa::{Instance1 as WithPangoroGrandpa, Instance2 as WithRococoGrandpa}; +pub use pallet_bridge_grandpa::{Instance1 as WithPangoroGrandpa, Instance2 as WithRococoGrandpa, Intance3 as WithMoonbaseRelayGrandpa}; // --- paritytech --- use pallet_bridge_grandpa::Config; @@ -35,3 +35,9 @@ impl Config for Runtime { type MaxRequests = MaxRequests; type WeightInfo = RococoGrandpaWeightInfo; } +impl Config for Runtime { + type BridgedChain = bp_rococo::Rococo; + type HeadersToKeep = RococoHeadersToKeep; + type MaxRequests = MaxRequests; + type WeightInfo = RococoGrandpaWeightInfo; +} diff --git a/node/runtime/pangolin/src/pallets/bridge_messages.rs b/node/runtime/pangolin/src/pallets/bridge_messages.rs index 22bb67047d..e2ca5f4a34 100644 --- a/node/runtime/pangolin/src/pallets/bridge_messages.rs +++ b/node/runtime/pangolin/src/pallets/bridge_messages.rs @@ -1,11 +1,11 @@ pub use pallet_bridge_messages::{ - Instance1 as WithPangoroMessages, Instance2 as WithPangolinParachainMessages, + Instance1 as WithPangoroMessages, Instance2 as WithPangolinParachainMessages, Instance3 as WithPangolinParachainAlphaMessages }; // --- darwinia-network --- use crate::*; use bp_messages::MessageNonce; -use bp_runtime::{ChainId, PANGOLIN_PARACHAIN_CHAIN_ID, PANGORO_CHAIN_ID}; +use bp_runtime::{ChainId, PANGOLIN_PARACHAIN_CHAIN_ID, PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID, PANGORO_CHAIN_ID}; use darwinia_support::evm::{ConcatConverter, DeriveSubstrateAddress}; use pallet_bridge_messages::Config; use pallet_fee_market::s2s::{ @@ -81,3 +81,30 @@ impl Config for Runtime { type TargetHeaderChain = bm_pangolin_parachain::PangolinParachain; type WeightInfo = (); } +impl Config for Runtime { + type AccountIdConverter = bp_pangolin::AccountIdConverter; + type BridgedChainId = PangolinParachainAlphaChainId; + type Event = Event; + type InboundMessageFee = bp_pangolin_parachain::Balance; + type InboundPayload = bm_pangolin_parachain_alpha::FromPangolinParachainAlphaMessagePayload; + type InboundRelayer = bp_pangolin_parachain::AccountId; + type LaneMessageVerifier = bm_pangolin_parachain_alpha::ToPangolinParachainAlphaMessageVerifier; + type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; + type MaxUnconfirmedMessagesAtInboundLane = PangolinParachainMaxUnconfirmedMessagesAtInboundLane; + type MaxUnrewardedRelayerEntriesAtInboundLane = + PangolinParachainMaxUnrewardedRelayerEntriesAtInboundLane; + type MessageDeliveryAndDispatchPayment = + FeeMarketPayment; + type MessageDispatch = bm_pangolin_parachain_alpha::FromPangolinParachainAlphaMessageDispatch; + type OnDeliveryConfirmed = ( + ToPangolinParachainBacking, + FeeMarketMessageConfirmedHandler, + ); + type OnMessageAccepted = FeeMarketMessageAcceptedHandler; + type OutboundMessageFee = bp_pangolin::Balance; + type OutboundPayload = bm_pangolin_parachain_alpha::ToPangolinParachainAlphaMessagePayload; + type Parameter = bm_pangolin_parachain_alpha::PangolinToPangolinParachainAlphaParameter; + type SourceHeaderChain = bm_pangolin_parachain_alpha::PangolinParachainAlpha; + type TargetHeaderChain = bm_pangolin_parachain_alpha::PangolinParachainAlpha; + type WeightInfo = (); +} \ No newline at end of file diff --git a/node/runtime/pangolin/src/pallets/bridge_parachains.rs b/node/runtime/pangolin/src/pallets/bridge_parachains.rs index 20567a0d0b..1c27157843 100644 --- a/node/runtime/pangolin/src/pallets/bridge_parachains.rs +++ b/node/runtime/pangolin/src/pallets/bridge_parachains.rs @@ -1,4 +1,4 @@ -pub use pallet_bridge_parachains::Instance1 as WithRococoParachainsInstance; +pub use pallet_bridge_parachains::{Instance1 as WithRococoParachainsInstance, Instance2 as WithMoonbaseRelayParachainsInstance}; // --- darwinia-network --- use crate::*; @@ -13,3 +13,8 @@ impl Config for Runtime { type HeadsToKeep = RococoHeadersToKeep; type ParasPalletName = PangolinParasPalletName; } +impl Config for Runtime { + type BridgesGrandpaPalletInstance = WithMoonbaseRelayGrandpa; + type HeadsToKeep = RococoHeadersToKeep; + type ParasPalletName = PangolinParasPalletName; +} diff --git a/node/runtime/pangolin/src/pallets/fee_market.rs b/node/runtime/pangolin/src/pallets/fee_market.rs index a61b00aac8..343cea5324 100644 --- a/node/runtime/pangolin/src/pallets/fee_market.rs +++ b/node/runtime/pangolin/src/pallets/fee_market.rs @@ -1,5 +1,5 @@ pub use pallet_fee_market::{ - Instance1 as WithPangoroFeeMarket, Instance2 as WithPangolinParachainFeeMarket, + Instance1 as WithPangoroFeeMarket, Instance2 as WithPangolinParachainFeeMarket, Instance3 as WithPangolinParachainAlphaFeeMarket }; // --- core --- @@ -50,6 +50,8 @@ frame_support::parameter_types! { pub const PangoroFeeMarketLockId: LockIdentifier = *b"da/feelf"; // Pangolin Parachain configurations. pub const PangolinParachainFeeMarketLockId: LockIdentifier = *b"da/feepa"; + // Pangolin Parachain Alpha configurations. + pub const PangolinParachainAlphaFeeMarketLockId: LockIdentifier = *b"da/feeph"; } impl Config for Runtime { @@ -82,3 +84,18 @@ impl Config for Runtime { type TreasuryPalletId = TreasuryPalletId; type WeightInfo = PangolinParachainWeightInfo; } +impl Config for Runtime { + type AssignedRelayerSlashRatio = AssignedRelayerSlashRatio; + type CollateralPerOrder = CollateralPerOrder; + type ConfirmRelayersRewardRatio = ConfirmRelayersRewardRatio; + type Currency = Ring; + type Event = Event; + type GuardRelayersRewardRatio = GuardRelayersRewardRatio; + type LockId = PangolinParachainAlphaFeeMarketLockId; + type MessageRelayersRewardRatio = MessageRelayersRewardRatio; + type MinimumRelayFee = MinimumRelayFee; + type Slasher = FeeMarketSlasher; + type Slot = Slot; + type TreasuryPalletId = TreasuryPalletId; + type WeightInfo = PangolinParachainWeightInfo; +} From 321c092cf85861ba691514944a35b62eb15b2fab Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 11:29:38 +0800 Subject: [PATCH 03/10] Fix comiple --- node/runtime/pangolin/src/lib.rs | 4 ++-- node/runtime/pangolin/src/pallets/bridge_grandpa.rs | 2 +- node/runtime/pangolin/src/pallets/bridge_messages.rs | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/node/runtime/pangolin/src/lib.rs b/node/runtime/pangolin/src/lib.rs index 36fe4624fa..bdedbbe9bd 100644 --- a/node/runtime/pangolin/src/lib.rs +++ b/node/runtime/pangolin/src/lib.rs @@ -245,8 +245,8 @@ frame_support::construct_runtime! { TransactionPause: module_transaction_pause::{Pallet, Call, Storage, Event} = 54, // pangolin <> pangolin parachain alpha bridge - BridgeMoonbaseRelayGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Storage} = 67 - BridgeMoonbaseRelayParachains: pallet_bridge_parachains::::{Pallet, Call, Storage} = 68 + BridgeMoonbaseRelayGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Storage} = 67, + BridgeMoonbaseRelayParachains: pallet_bridge_parachains::::{Pallet, Call, Storage} = 68, BridgePangolinParachainAlphaDispatch: pallet_bridge_dispatch::::{Pallet, Event} = 69, BridgePangolinParachainAlphaMessages: pallet_bridge_messages::::{Pallet, Call, Storage, Event} = 70, PangolinParachainAlphaFeeMarket: pallet_fee_market::::{Pallet, Call, Storage, Event} = 71, diff --git a/node/runtime/pangolin/src/pallets/bridge_grandpa.rs b/node/runtime/pangolin/src/pallets/bridge_grandpa.rs index db53d82701..06403003b3 100644 --- a/node/runtime/pangolin/src/pallets/bridge_grandpa.rs +++ b/node/runtime/pangolin/src/pallets/bridge_grandpa.rs @@ -1,4 +1,4 @@ -pub use pallet_bridge_grandpa::{Instance1 as WithPangoroGrandpa, Instance2 as WithRococoGrandpa, Intance3 as WithMoonbaseRelayGrandpa}; +pub use pallet_bridge_grandpa::{Instance1 as WithPangoroGrandpa, Instance2 as WithRococoGrandpa, Instance3 as WithMoonbaseRelayGrandpa}; // --- paritytech --- use pallet_bridge_grandpa::Config; diff --git a/node/runtime/pangolin/src/pallets/bridge_messages.rs b/node/runtime/pangolin/src/pallets/bridge_messages.rs index e2ca5f4a34..fd3edbca71 100644 --- a/node/runtime/pangolin/src/pallets/bridge_messages.rs +++ b/node/runtime/pangolin/src/pallets/bridge_messages.rs @@ -25,6 +25,7 @@ frame_support::parameter_types! { bp_pangoro::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX; // Pangolin Parachain configurations. pub const PangolinParachainChainId: ChainId = PANGOLIN_PARACHAIN_CHAIN_ID; + pub const PangolinParachainAlphaChainId: ChainId = PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID; pub const PangolinParachainMaxUnconfirmedMessagesAtInboundLane: MessageNonce = bp_pangolin_parachain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX; pub const PangolinParachainMaxUnrewardedRelayerEntriesAtInboundLane: MessageNonce = From 49768b715399fb5aa444a86642ecd9e972c38a04 Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 11:31:15 +0800 Subject: [PATCH 04/10] format --- .../bridges_message/pangolin_parachain_alpha.rs | 10 +++++----- .../pangolin/src/pallets/bridge_dispatch.rs | 3 ++- .../pangolin/src/pallets/bridge_grandpa.rs | 5 ++++- .../pangolin/src/pallets/bridge_messages.rs | 16 ++++++++++------ .../pangolin/src/pallets/bridge_parachains.rs | 4 +++- node/runtime/pangolin/src/pallets/fee_market.rs | 3 ++- 6 files changed, 26 insertions(+), 15 deletions(-) diff --git a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs index 40c83d502a..ad78a53412 100644 --- a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs +++ b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs @@ -34,10 +34,8 @@ use bp_messages::{ InboundLaneData, LaneId, Message, MessageNonce, Parameter, }; use bp_rococo::parachains::ParaId; -// Modified 1 use bp_runtime::{Chain, ChainId, PANGOLIN_CHAIN_ID, PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID}; use bridge_runtime_common::{ - // Modified 2 lanes::PANGOLIN_PANGOLIN_PARACHAIN_ALPHA_LANE, messages::{ self, @@ -146,7 +144,6 @@ impl ChainWithMessages for Pangolin { impl ThisChainWithMessages for Pangolin { type Call = Call; - // Modified 3 fn is_outbound_lane_enabled(lane: &LaneId) -> bool { *lane == PANGOLIN_PANGOLIN_PARACHAIN_ALPHA_LANE } @@ -243,8 +240,11 @@ impl BridgedChainWithMessages for PangolinParachainAlpha { ) } } -impl TargetHeaderChain::AccountId> - for PangolinParachainAlpha +impl + TargetHeaderChain< + ToPangolinParachainAlphaMessagePayload, + ::AccountId, + > for PangolinParachainAlpha { type Error = &'static str; type MessagesDeliveryProof = ToPangolinParachainAlphaMessagesDeliveryProof; diff --git a/node/runtime/pangolin/src/pallets/bridge_dispatch.rs b/node/runtime/pangolin/src/pallets/bridge_dispatch.rs index f275cf507b..cdeb5585ed 100644 --- a/node/runtime/pangolin/src/pallets/bridge_dispatch.rs +++ b/node/runtime/pangolin/src/pallets/bridge_dispatch.rs @@ -1,5 +1,6 @@ pub use pallet_bridge_dispatch::{ - Instance1 as WithPangoroDispatch, Instance2 as WithPangolinParachainDispatch, Instance3 as WithPangolinParachainAlphaDispatch + Instance1 as WithPangoroDispatch, Instance2 as WithPangolinParachainDispatch, + Instance3 as WithPangolinParachainAlphaDispatch, }; // --- paritytech --- diff --git a/node/runtime/pangolin/src/pallets/bridge_grandpa.rs b/node/runtime/pangolin/src/pallets/bridge_grandpa.rs index 06403003b3..9b8668cf91 100644 --- a/node/runtime/pangolin/src/pallets/bridge_grandpa.rs +++ b/node/runtime/pangolin/src/pallets/bridge_grandpa.rs @@ -1,4 +1,7 @@ -pub use pallet_bridge_grandpa::{Instance1 as WithPangoroGrandpa, Instance2 as WithRococoGrandpa, Instance3 as WithMoonbaseRelayGrandpa}; +pub use pallet_bridge_grandpa::{ + Instance1 as WithPangoroGrandpa, Instance2 as WithRococoGrandpa, + Instance3 as WithMoonbaseRelayGrandpa, +}; // --- paritytech --- use pallet_bridge_grandpa::Config; diff --git a/node/runtime/pangolin/src/pallets/bridge_messages.rs b/node/runtime/pangolin/src/pallets/bridge_messages.rs index fd3edbca71..e915a59948 100644 --- a/node/runtime/pangolin/src/pallets/bridge_messages.rs +++ b/node/runtime/pangolin/src/pallets/bridge_messages.rs @@ -1,11 +1,14 @@ pub use pallet_bridge_messages::{ - Instance1 as WithPangoroMessages, Instance2 as WithPangolinParachainMessages, Instance3 as WithPangolinParachainAlphaMessages + Instance1 as WithPangoroMessages, Instance2 as WithPangolinParachainMessages, + Instance3 as WithPangolinParachainAlphaMessages, }; // --- darwinia-network --- use crate::*; use bp_messages::MessageNonce; -use bp_runtime::{ChainId, PANGOLIN_PARACHAIN_CHAIN_ID, PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID, PANGORO_CHAIN_ID}; +use bp_runtime::{ + ChainId, PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID, PANGOLIN_PARACHAIN_CHAIN_ID, PANGORO_CHAIN_ID, +}; use darwinia_support::evm::{ConcatConverter, DeriveSubstrateAddress}; use pallet_bridge_messages::Config; use pallet_fee_market::s2s::{ @@ -93,19 +96,20 @@ impl Config for Runtime { type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; type MaxUnconfirmedMessagesAtInboundLane = PangolinParachainMaxUnconfirmedMessagesAtInboundLane; type MaxUnrewardedRelayerEntriesAtInboundLane = - PangolinParachainMaxUnrewardedRelayerEntriesAtInboundLane; + PangolinParachainMaxUnrewardedRelayerEntriesAtInboundLane; type MessageDeliveryAndDispatchPayment = - FeeMarketPayment; + FeeMarketPayment; type MessageDispatch = bm_pangolin_parachain_alpha::FromPangolinParachainAlphaMessageDispatch; type OnDeliveryConfirmed = ( ToPangolinParachainBacking, FeeMarketMessageConfirmedHandler, ); - type OnMessageAccepted = FeeMarketMessageAcceptedHandler; + type OnMessageAccepted = + FeeMarketMessageAcceptedHandler; type OutboundMessageFee = bp_pangolin::Balance; type OutboundPayload = bm_pangolin_parachain_alpha::ToPangolinParachainAlphaMessagePayload; type Parameter = bm_pangolin_parachain_alpha::PangolinToPangolinParachainAlphaParameter; type SourceHeaderChain = bm_pangolin_parachain_alpha::PangolinParachainAlpha; type TargetHeaderChain = bm_pangolin_parachain_alpha::PangolinParachainAlpha; type WeightInfo = (); -} \ No newline at end of file +} diff --git a/node/runtime/pangolin/src/pallets/bridge_parachains.rs b/node/runtime/pangolin/src/pallets/bridge_parachains.rs index 1c27157843..df73e1d54a 100644 --- a/node/runtime/pangolin/src/pallets/bridge_parachains.rs +++ b/node/runtime/pangolin/src/pallets/bridge_parachains.rs @@ -1,4 +1,6 @@ -pub use pallet_bridge_parachains::{Instance1 as WithRococoParachainsInstance, Instance2 as WithMoonbaseRelayParachainsInstance}; +pub use pallet_bridge_parachains::{ + Instance1 as WithRococoParachainsInstance, Instance2 as WithMoonbaseRelayParachainsInstance, +}; // --- darwinia-network --- use crate::*; diff --git a/node/runtime/pangolin/src/pallets/fee_market.rs b/node/runtime/pangolin/src/pallets/fee_market.rs index 343cea5324..b69c06e5ea 100644 --- a/node/runtime/pangolin/src/pallets/fee_market.rs +++ b/node/runtime/pangolin/src/pallets/fee_market.rs @@ -1,5 +1,6 @@ pub use pallet_fee_market::{ - Instance1 as WithPangoroFeeMarket, Instance2 as WithPangolinParachainFeeMarket, Instance3 as WithPangolinParachainAlphaFeeMarket + Instance1 as WithPangoroFeeMarket, Instance2 as WithPangolinParachainFeeMarket, + Instance3 as WithPangolinParachainAlphaFeeMarket, }; // --- core --- From 8c0c886ba7a738a85e047c0e9e9abe7d59068e07 Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 11:36:33 +0800 Subject: [PATCH 05/10] resolve conflicts --- node/runtime/pangolin/src/pallets/bridge_messages.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/node/runtime/pangolin/src/pallets/bridge_messages.rs b/node/runtime/pangolin/src/pallets/bridge_messages.rs index e915a59948..dc26cee10b 100644 --- a/node/runtime/pangolin/src/pallets/bridge_messages.rs +++ b/node/runtime/pangolin/src/pallets/bridge_messages.rs @@ -9,7 +9,6 @@ use bp_messages::MessageNonce; use bp_runtime::{ ChainId, PANGOLIN_PARACHAIN_ALPHA_CHAIN_ID, PANGOLIN_PARACHAIN_CHAIN_ID, PANGORO_CHAIN_ID, }; -use darwinia_support::evm::{ConcatConverter, DeriveSubstrateAddress}; use pallet_bridge_messages::Config; use pallet_fee_market::s2s::{ FeeMarketMessageAcceptedHandler, FeeMarketMessageConfirmedHandler, FeeMarketPayment, From 905a5d63df9cb40c23cda20319b199154a19e95c Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 15:24:27 +0800 Subject: [PATCH 06/10] update pallet id --- node/runtime/pangolin/src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/node/runtime/pangolin/src/lib.rs b/node/runtime/pangolin/src/lib.rs index d3a8a4169c..6dd0afeb6b 100644 --- a/node/runtime/pangolin/src/lib.rs +++ b/node/runtime/pangolin/src/lib.rs @@ -248,11 +248,11 @@ frame_support::construct_runtime! { TransactionPause: module_transaction_pause::{Pallet, Call, Storage, Event} = 54, // pangolin <> pangolin parachain alpha bridge - BridgeMoonbaseRelayGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Storage} = 67, - BridgeMoonbaseRelayParachains: pallet_bridge_parachains::::{Pallet, Call, Storage} = 68, - BridgePangolinParachainAlphaDispatch: pallet_bridge_dispatch::::{Pallet, Event} = 69, - BridgePangolinParachainAlphaMessages: pallet_bridge_messages::::{Pallet, Call, Storage, Event} = 70, - PangolinParachainAlphaFeeMarket: pallet_fee_market::::{Pallet, Call, Storage, Event} = 71, + BridgeMoonbaseRelayGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Storage} = 68, + BridgeMoonbaseRelayParachains: pallet_bridge_parachains::::{Pallet, Call, Storage} = 69, + BridgePangolinParachainAlphaDispatch: pallet_bridge_dispatch::::{Pallet, Event} = 70, + BridgePangolinParachainAlphaMessages: pallet_bridge_messages::::{Pallet, Call, Storage, Event} = 71, + PangolinParachainAlphaFeeMarket: pallet_fee_market::::{Pallet, Call, Storage, Event} = 72, // Substrate2SubstrateIssuing: from_substrate_issuing::{Pallet, Call, Storage, Config, Event} = 49, ToPangolinParachainBacking: to_parachain_backing::{Pallet, Call, Storage, Config, Event} = 65, From 0894b8b1a741f7e9c5169b870f0d4a07a856455b Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 15:42:45 +0800 Subject: [PATCH 07/10] fix review --- node/runtime/pangolin/src/pallets/bridge_messages.rs | 2 +- node/runtime/pangolin/src/pallets/bridge_parachains.rs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/node/runtime/pangolin/src/pallets/bridge_messages.rs b/node/runtime/pangolin/src/pallets/bridge_messages.rs index b278bce371..6c4cb340ad 100644 --- a/node/runtime/pangolin/src/pallets/bridge_messages.rs +++ b/node/runtime/pangolin/src/pallets/bridge_messages.rs @@ -94,7 +94,7 @@ impl Config for Runtime { type MaxUnrewardedRelayerEntriesAtInboundLane = PangolinParachainMaxUnrewardedRelayerEntriesAtInboundLane; type MessageDeliveryAndDispatchPayment = - FeeMarketPayment; + FeeMarketPayment; type MessageDispatch = bm_pangolin_parachain_alpha::FromPangolinParachainAlphaMessageDispatch; type OnDeliveryConfirmed = ( ToPangolinParachainBacking, diff --git a/node/runtime/pangolin/src/pallets/bridge_parachains.rs b/node/runtime/pangolin/src/pallets/bridge_parachains.rs index 8e242f0f78..f3ffe2e374 100644 --- a/node/runtime/pangolin/src/pallets/bridge_parachains.rs +++ b/node/runtime/pangolin/src/pallets/bridge_parachains.rs @@ -13,5 +13,4 @@ impl Config for Runtime { impl Config for Runtime { type BridgesGrandpaPalletInstance = WithMoonbaseRelayGrandpa; type HeadsToKeep = RococoHeadersToKeep; - type ParasPalletName = PangolinParasPalletName; } From 1d799735a18a00368acab9c710b2dff666018daa Mon Sep 17 00:00:00 2001 From: Guantong <04637@163.com> Date: Wed, 28 Sep 2022 15:59:25 +0800 Subject: [PATCH 08/10] fix compile --- .../pangolin_parachain_alpha.rs | 27 +++---------------- .../pangolin/src/pallets/bridge_messages.rs | 2 +- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs index ad78a53412..5c345e91b0 100644 --- a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs +++ b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs @@ -44,7 +44,7 @@ use bridge_runtime_common::{ self, FromBridgedChainEncodedMessageCall, FromBridgedChainMessageDispatch, FromBridgedChainMessagePayload, FromBridgedChainMessagesProof, }, - BalanceOf, BridgedChainWithMessages, ChainWithMessages, MessageBridge, MessageTransaction, + BridgedChainWithMessages, ChainWithMessages, MessageBridge, MessageTransaction, ThisChainWithMessages, }, }; @@ -122,12 +122,6 @@ impl MessageBridge for WithPangolinParachainAlphaMessageBridge { bp_pangolin::WITH_PANGOLIN_MESSAGES_PALLET_NAME; const RELAYER_FEE_PERCENT: u32 = 10; const THIS_CHAIN_ID: ChainId = PANGOLIN_CHAIN_ID; - - fn bridged_balance_to_this_balance( - bridged_balance: BalanceOf, - ) -> BalanceOf { - PangolinParachainAlphaToPangolinConversionRate::get().saturating_mul_int(bridged_balance) - } } /// Pangolin chain from message lane point of view. @@ -143,8 +137,9 @@ impl ChainWithMessages for Pangolin { } impl ThisChainWithMessages for Pangolin { type Call = Call; + type Origin = Origin; - fn is_outbound_lane_enabled(lane: &LaneId) -> bool { + fn is_message_accepted(_send_origin: &Self::Origin, lane: &LaneId) -> bool { *lane == PANGOLIN_PANGOLIN_PARACHAIN_ALPHA_LANE } @@ -152,22 +147,6 @@ impl ThisChainWithMessages for Pangolin { MessageNonce::MAX } - fn estimate_delivery_confirmation_transaction() -> MessageTransaction { - let inbound_data_size = InboundLaneData::::encoded_size_hint( - bp_pangolin::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, - 1, - 1, - ) - .unwrap_or(u32::MAX); - - MessageTransaction { - dispatch_weight: bp_pangolin::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT, - size: inbound_data_size - .saturating_add(bp_pangolin::EXTRA_STORAGE_PROOF_SIZE) - .saturating_add(bp_pangolin::TX_EXTRA_BYTES), - } - } - fn transaction_payment(transaction: MessageTransaction) -> Self::Balance { // in our testnets, both per-byte fee and weight-to-fee are 1:1 messages::transaction_payment( diff --git a/node/runtime/pangolin/src/pallets/bridge_messages.rs b/node/runtime/pangolin/src/pallets/bridge_messages.rs index 6c4cb340ad..29c31c8adf 100644 --- a/node/runtime/pangolin/src/pallets/bridge_messages.rs +++ b/node/runtime/pangolin/src/pallets/bridge_messages.rs @@ -94,7 +94,7 @@ impl Config for Runtime { type MaxUnrewardedRelayerEntriesAtInboundLane = PangolinParachainMaxUnrewardedRelayerEntriesAtInboundLane; type MessageDeliveryAndDispatchPayment = - FeeMarketPayment; + FeeMarketPayment; type MessageDispatch = bm_pangolin_parachain_alpha::FromPangolinParachainAlphaMessageDispatch; type OnDeliveryConfirmed = ( ToPangolinParachainBacking, From 0f7ece4ff3872e01ae80aa1b5d40ec2acbe8d42c Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Fri, 30 Sep 2022 10:23:42 +0800 Subject: [PATCH 09/10] Remove outdate code --- .../pangolin_parachain_alpha.rs | 38 ------------------- 1 file changed, 38 deletions(-) diff --git a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs index 5c345e91b0..a0d277f31b 100644 --- a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs +++ b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs @@ -180,44 +180,6 @@ impl BridgedChainWithMessages for PangolinParachainAlpha { ); 0..=upper_limit } - - fn estimate_delivery_transaction( - message_payload: &[u8], - include_pay_dispatch_fee_cost: bool, - message_dispatch_weight: Weight, - ) -> MessageTransaction { - let message_payload_len = u32::try_from(message_payload.len()).unwrap_or(u32::MAX); - let extra_bytes_in_payload = Weight::from(message_payload_len) - .saturating_sub(EXPECTED_DEFAULT_MESSAGE_LENGTH.into()); - - MessageTransaction { - dispatch_weight: extra_bytes_in_payload - .saturating_mul(bp_pangolin::ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT) - .saturating_add(bp_pangolin::DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT) - .saturating_add(message_dispatch_weight) - .saturating_sub(if include_pay_dispatch_fee_cost { - 0 - } else { - bp_pangolin::PAY_INBOUND_DISPATCH_FEE_WEIGHT - }), - size: message_payload_len - .saturating_add(bp_pangolin::EXTRA_STORAGE_PROOF_SIZE) - .saturating_add(bp_pangolin::TX_EXTRA_BYTES), - } - } - - fn transaction_payment(transaction: MessageTransaction) -> Self::Balance { - // in our testnets, both per-byte fee and weight-to-fee are 1:1 - messages::transaction_payment( - bp_pangolin_parachain::RuntimeBlockWeights::get() - .get(DispatchClass::Normal) - .base_extrinsic, - 1, - FixedU128::zero(), - |weight| weight as _, - transaction, - ) - } } impl TargetHeaderChain< From 00f180c9279767b27a82d54c95342364c354953f Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Fri, 30 Sep 2022 10:32:29 +0800 Subject: [PATCH 10/10] Fixes --- Cargo.lock | 2 +- .../pangolin_parachain_alpha.rs | 29 +++++-------------- .../pangolin/src/pallets/fee_market.rs | 2 +- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b7e85e7c6..6f9aa4c8f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10264,7 +10264,7 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "rand 0.8.5", "static_assertions", ] diff --git a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs index a0d277f31b..7de52a9a47 100644 --- a/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs +++ b/node/runtime/pangolin/src/bridges_message/pangolin_parachain_alpha.rs @@ -20,11 +20,8 @@ use codec::{Decode, Encode}; use scale_info::TypeInfo; // --- paritytech --- -use frame_support::{ - weights::{DispatchClass, Weight}, - RuntimeDebug, -}; -use sp_runtime::{traits::Zero, FixedPointNumber, FixedU128}; +use frame_support::{weights::Weight, RuntimeDebug}; +use sp_runtime::{FixedPointNumber, FixedU128}; use sp_std::ops::RangeInclusive; // --- darwinia-network --- use crate::*; @@ -38,18 +35,17 @@ use bp_runtime::{Chain, ChainId, PANGOLIN_CHAIN_ID, PANGOLIN_PARACHAIN_ALPHA_CHA use bridge_runtime_common::{ lanes::PANGOLIN_PANGOLIN_PARACHAIN_ALPHA_LANE, messages::{ - self, - source::{self, FromBridgedChainMessagesDeliveryProof, FromThisChainMessagePayload}, + source::{ + self, FromBridgedChainMessagesDeliveryProof, FromThisChainMessagePayload, + FromThisChainMessageVerifier, + }, target::{ self, FromBridgedChainEncodedMessageCall, FromBridgedChainMessageDispatch, FromBridgedChainMessagePayload, FromBridgedChainMessagesProof, }, - BridgedChainWithMessages, ChainWithMessages, MessageBridge, MessageTransaction, - ThisChainWithMessages, + BridgedChainWithMessages, ChainWithMessages, MessageBridge, ThisChainWithMessages, }, }; -use drml_common_runtime::impls::FromThisChainMessageVerifier; -use pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH; /// Message delivery proof for Pangolin -> PangolinParachainAlpha messages. type ToPangolinParachainAlphaMessagesDeliveryProof = @@ -146,17 +142,6 @@ impl ThisChainWithMessages for Pangolin { fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { MessageNonce::MAX } - - fn transaction_payment(transaction: MessageTransaction) -> Self::Balance { - // in our testnets, both per-byte fee and weight-to-fee are 1:1 - messages::transaction_payment( - RuntimeBlockWeights::get().get(DispatchClass::Normal).base_extrinsic, - 1, - FixedU128::zero(), - |weight| weight as _, - transaction, - ) - } } #[derive(Clone, Copy, RuntimeDebug)] diff --git a/node/runtime/pangolin/src/pallets/fee_market.rs b/node/runtime/pangolin/src/pallets/fee_market.rs index a592bf2607..9a8b6ce5cf 100644 --- a/node/runtime/pangolin/src/pallets/fee_market.rs +++ b/node/runtime/pangolin/src/pallets/fee_market.rs @@ -90,8 +90,8 @@ impl Config for Runtime { type CollateralPerOrder = CollateralPerOrder; type ConfirmRelayersRewardRatio = ConfirmRelayersRewardRatio; type Currency = Ring; + type DutyRelayersRewardRatio = DutyRelayersRewardRatio; type Event = Event; - type GuardRelayersRewardRatio = GuardRelayersRewardRatio; type LockId = PangolinParachainAlphaFeeMarketLockId; type MessageRelayersRewardRatio = MessageRelayersRewardRatio; type MinimumRelayFee = MinimumRelayFee;