Skip to content

Commit

Permalink
Add option to only relay free headers to substrate-relay (#2884)
Browse files Browse the repository at this point in the history
* added FreeHeadersInterval to pallet-bridge-grandpa configuration

* added is_free_execution_expected parameter to the submit_finality_proof_ex + check it from the transaction extension

* move transaction extensions to a separate folder

* move grandpa call result check from RefundTransactionExtensionAdapter to RefundBridgedGrandpaMessages

* added RefundBridgedMessages to refund and bump priority of standalone messages transactions

* check_obsolete_submit_finality_proof may now boost transaction priority (this is not used yet - see next commit)

* added CheckAndBoostBridgeGrandpaTransactions that checks whether bridge GRANDPA transactions are obsolete and, if not, it may apply priority boost to

* relayer may be slashed to explicit account

* slash registered relayer if it has submitted failed GRANDPA transaction

* allow accepting some parachain headers for free

* added FreeParachainUpdateForFreeRelayHeader

* fix benchmarks compilation

* added WeightInfoExt for pallet-bridge-grandpa to include extra wight coming from CheckAndBoostBridgeGrandpaTransactions

* added free_headers_interval to the (runtime) FinalityApi of the chain

* added --only-free-headers CLI parameter (not used yet) to finality and complex relay

* actually use HeadersToRelay::Free in finality-relay

* actually support only-free-headers mode in parachains relay

* removed inactual comment (free_source_headers_interval is cached at relay level)

* added comment re free-headers-only support in on-demand parachains relay

* added --only-free-headers support to standalone parachains relay

* fixed dependency in runtime-codegen

* update RBH and WBH runtimes + ask for free execution if we are running in HeadersToRelay::Free mode

* add missing standalone RBH<>WBH finality relay

* also refund for submitting initial parachain head

* make FreeHeadersRemaining an Option => we know that when we are outside of tx body, it is `None` and otherwise it is `Some`

* add some traces to relay

* add more traces to pallets

* check for reorgs in signed ext for parachains module

* fix benchmarks compilation

* free interval instead of fixed free headers

* updated relays for new free headers criteria

* fixed trace

* CannotAcceptMoreFreeHeaders -> FreeHeadersLimitExceded

* additional_call_result_check -> check_call_result_ex

* is_granda_call_succeeded -> is_grandpa_call_successful

* move tx priority boost from check_obsolete_submit_finality_proof to extension

* lost changes

* dec counter when importing new para header

* limit maximal "free" parachain head size

* added grandpa_and_parachain_pallets_share_free_headers_counter test

* with free intervals (instead of fixed free headers) we need to check `improved_by` from extension code

* fix test name

* added CheckAndBoostBridgeParachainsTransactions to boost parachain transactions priority

* check parachain id in CheckAndBoostBridgeParachainsTransactions

* use submit_parachain_head_call_ex in tests

* removed commented code

* changed condition for consistency

* include overweight from runtime signed extensions into submit_parachain_heads call weight

* fixed comment

* removed obsolete code comment

* added important comment + test

* some fixes

* fix no-std compile

* again fix lost change

* use submit_parachain_heads_ex for Rococo<>Westend bridge

* fix for mandatory + interval check in ext

* deleted moved files (merge conflict)

* update polkadot-sdk refs + fix compilation

* removed another moved file

* bump chain versions

* bump relayer version

* lock up
  • Loading branch information
svyatonik committed Apr 25, 2024
1 parent f14e95c commit 2573d65
Show file tree
Hide file tree
Showing 22 changed files with 270 additions and 150 deletions.
251 changes: 129 additions & 122 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions relay-clients/client-bridge-hub-kusama/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ impl Chain for BridgeHubKusama {
const NAME: &'static str = "BridgeHubKusama";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_bridge_hub_kusama::BEST_FINALIZED_BRIDGE_HUB_KUSAMA_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_bridge_hub_kusama::FREE_HEADERS_INTERVAL_FOR_BRIDGE_HUB_KUSAMA_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;

type SignedBlock = bp_bridge_hub_kusama::SignedBlock;
Expand Down
2 changes: 2 additions & 0 deletions relay-clients/client-bridge-hub-polkadot/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ impl Chain for BridgeHubPolkadot {
const NAME: &'static str = "BridgeHubPolkadot";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_bridge_hub_polkadot::BEST_FINALIZED_BRIDGE_HUB_POLKADOT_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_bridge_hub_polkadot::FREE_HEADERS_INTERVAL_FOR_BRIDGE_HUB_POLKADOT_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;

type SignedBlock = bp_bridge_hub_polkadot::SignedBlock;
Expand Down
58 changes: 45 additions & 13 deletions relay-clients/client-bridge-hub-rococo/src/codegen_runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ pub mod api {
),
#[codec(index = 83)]
EthereumSystem(runtime_types::snowbridge_pallet_system::pallet::Call),
#[codec(index = 250)]
#[codec(index = 175)]
MessageQueue(runtime_types::pallet_message_queue::pallet::Call),
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand Down Expand Up @@ -379,7 +379,7 @@ pub mod api {
),
#[codec(index = 83)]
EthereumSystem(runtime_types::snowbridge_pallet_system::pallet::Error),
#[codec(index = 250)]
#[codec(index = 175)]
MessageQueue(runtime_types::pallet_message_queue::pallet::Error),
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand Down Expand Up @@ -432,7 +432,7 @@ pub mod api {
),
#[codec(index = 83)]
EthereumSystem(runtime_types::snowbridge_pallet_system::pallet::Event),
#[codec(index = 250)]
#[codec(index = 175)]
MessageQueue(runtime_types::pallet_message_queue::pallet::Event),
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand All @@ -444,6 +444,18 @@ pub mod api {
}
pub mod bridge_runtime_common {
use super::runtime_types;
pub mod extensions {
use super::runtime_types;
pub mod refund_relayer_extension {
use super::runtime_types;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundBridgedGrandpaMessages;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundBridgedMessages;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundTransactionExtensionAdapter<_0>(pub _0);
}
}
pub mod messages_xcm_extension {
use super::runtime_types;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand All @@ -456,15 +468,6 @@ pub mod api {
NotDispatched,
}
}
pub mod refund_relayer_extension {
use super::runtime_types;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundBridgedGrandpaMessages;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundBridgedParachainMessages;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundTransactionExtensionAdapter<_0>(pub _0);
}
}
pub mod cumulus_pallet_parachain_system {
use super::runtime_types;
Expand Down Expand Up @@ -859,8 +862,10 @@ pub mod api {
#[codec(index = 5)]
CallFiltered,
#[codec(index = 6)]
NothingAuthorized,
MultiBlockMigrationsOngoing,
#[codec(index = 7)]
NothingAuthorized,
#[codec(index = 8)]
Unauthorized,
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand Down Expand Up @@ -1192,6 +1197,7 @@ pub mod api {
>,
>,
current_set_id: ::core::primitive::u64,
is_free_execution_expected: ::core::primitive::bool,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand Down Expand Up @@ -1241,6 +1247,7 @@ pub mod api {
>,
>,
current_set_id: ::core::primitive::u64,
is_free_execution_expected: ::core::primitive::bool,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand All @@ -1263,6 +1270,10 @@ pub mod api {
BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
#[codec(index = 8)]
InvalidAuthoritySetId,
#[codec(index = 9)]
FreeHeadersLimitExceded,
#[codec(index = 10)]
BelowFreeHeaderInterval,
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Error2 {
Expand All @@ -1284,6 +1295,10 @@ pub mod api {
BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
#[codec(index = 8)]
InvalidAuthoritySetId,
#[codec(index = 9)]
FreeHeadersLimitExceded,
#[codec(index = 10)]
BelowFreeHeaderInterval,
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Event {
Expand Down Expand Up @@ -1399,6 +1414,16 @@ pub mod api {
set_operating_mode {
operating_mode: runtime_types::bp_runtime::BasicOperatingMode,
},
#[codec(index = 3)]
submit_parachain_heads_ex {
at_relay_block: (::core::primitive::u32, ::subxt::utils::H256),
parachains: ::std::vec::Vec<(
::bp_polkadot_core::parachains::ParaId,
::subxt::utils::H256,
)>,
parachain_heads_proof: ::bp_polkadot_core::parachains::ParaHeadsProof,
is_free_execution_expected: ::core::primitive::bool,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Error {
Expand Down Expand Up @@ -2063,6 +2088,11 @@ pub mod api {
fee_asset_item: ::core::primitive::u32,
weight_limit: runtime_types::xcm::v3::WeightLimit,
},
#[codec(index = 12)]
claim_assets {
assets: ::std::boxed::Box<runtime_types::xcm::VersionedAssets>,
beneficiary: ::std::boxed::Box<runtime_types::xcm::VersionedLocation>,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Error {
Expand Down Expand Up @@ -2251,6 +2281,8 @@ pub mod api {
origin: runtime_types::staging_xcm::v4::location::Location,
assets: runtime_types::xcm::VersionedAssets,
},
#[codec(index = 23)]
VersionMigrationFinished { version: ::core::primitive::u32 },
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Origin {
Expand Down
4 changes: 3 additions & 1 deletion relay-clients/client-bridge-hub-rococo/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ impl Chain for BridgeHubRococo {
const NAME: &'static str = "BridgeHubRococo";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_bridge_hub_rococo::BEST_FINALIZED_BRIDGE_HUB_ROCOCO_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_bridge_hub_rococo::FREE_HEADERS_INTERVAL_FOR_BRIDGE_HUB_ROCOCO_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;

type SignedBlock = bp_bridge_hub_rococo::SignedBlock;
Expand Down Expand Up @@ -125,5 +127,5 @@ impl ChainWithMessages for BridgeHubRococo {

impl ChainWithRuntimeVersion for BridgeHubRococo {
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
Some(SimpleRuntimeVersion { spec_version: 1_009_000, transaction_version: 4 });
Some(SimpleRuntimeVersion { spec_version: 1_010_000, transaction_version: 4 });
}
43 changes: 35 additions & 8 deletions relay-clients/client-bridge-hub-westend/src/codegen_runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,16 @@ pub mod api {
}
pub mod bridge_runtime_common {
use super::runtime_types;
pub mod extensions {
use super::runtime_types;
pub mod refund_relayer_extension {
use super::runtime_types;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundBridgedMessages;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundTransactionExtensionAdapter<_0>(pub _0);
}
}
pub mod messages_xcm_extension {
use super::runtime_types;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand All @@ -402,13 +412,6 @@ pub mod api {
NotDispatched,
}
}
pub mod refund_relayer_extension {
use super::runtime_types;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundBridgedParachainMessages;
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub struct RefundTransactionExtensionAdapter<_0>(pub _0);
}
}
pub mod cumulus_pallet_parachain_system {
use super::runtime_types;
Expand Down Expand Up @@ -803,8 +806,10 @@ pub mod api {
#[codec(index = 5)]
CallFiltered,
#[codec(index = 6)]
NothingAuthorized,
MultiBlockMigrationsOngoing,
#[codec(index = 7)]
NothingAuthorized,
#[codec(index = 8)]
Unauthorized,
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand Down Expand Up @@ -1136,6 +1141,7 @@ pub mod api {
>,
>,
current_set_id: ::core::primitive::u64,
is_free_execution_expected: ::core::primitive::bool,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
Expand All @@ -1158,6 +1164,10 @@ pub mod api {
BridgeModule(runtime_types::bp_runtime::OwnedBridgeModuleError),
#[codec(index = 8)]
InvalidAuthoritySetId,
#[codec(index = 9)]
FreeHeadersLimitExceded,
#[codec(index = 10)]
BelowFreeHeaderInterval,
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Event {
Expand Down Expand Up @@ -1239,6 +1249,16 @@ pub mod api {
set_operating_mode {
operating_mode: runtime_types::bp_runtime::BasicOperatingMode,
},
#[codec(index = 3)]
submit_parachain_heads_ex {
at_relay_block: (::core::primitive::u32, ::subxt::utils::H256),
parachains: ::std::vec::Vec<(
::bp_polkadot_core::parachains::ParaId,
::subxt::utils::H256,
)>,
parachain_heads_proof: ::bp_polkadot_core::parachains::ParaHeadsProof,
is_free_execution_expected: ::core::primitive::bool,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Error {
Expand Down Expand Up @@ -1903,6 +1923,11 @@ pub mod api {
fee_asset_item: ::core::primitive::u32,
weight_limit: runtime_types::xcm::v3::WeightLimit,
},
#[codec(index = 12)]
claim_assets {
assets: ::std::boxed::Box<runtime_types::xcm::VersionedAssets>,
beneficiary: ::std::boxed::Box<runtime_types::xcm::VersionedLocation>,
},
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Error {
Expand Down Expand Up @@ -2091,6 +2116,8 @@ pub mod api {
origin: runtime_types::staging_xcm::v4::location::Location,
assets: runtime_types::xcm::VersionedAssets,
},
#[codec(index = 23)]
VersionMigrationFinished { version: ::core::primitive::u32 },
}
#[derive(:: codec :: Decode, :: codec :: Encode, Clone, Debug, PartialEq)]
pub enum Origin {
Expand Down
4 changes: 3 additions & 1 deletion relay-clients/client-bridge-hub-westend/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ impl Chain for BridgeHubWestend {
const NAME: &'static str = "BridgeHubWestend";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_bridge_hub_westend::BEST_FINALIZED_BRIDGE_HUB_WESTEND_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_bridge_hub_westend::FREE_HEADERS_INTERVAL_FOR_BRIDGE_HUB_WESTEND_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = AVERAGE_BLOCK_INTERVAL;

type SignedBlock = bp_bridge_hub_westend::SignedBlock;
Expand Down Expand Up @@ -123,5 +125,5 @@ impl ChainWithMessages for BridgeHubWestend {

impl ChainWithRuntimeVersion for BridgeHubWestend {
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
Some(SimpleRuntimeVersion { spec_version: 1_009_000, transaction_version: 4 });
Some(SimpleRuntimeVersion { spec_version: 1_010_000, transaction_version: 4 });
}
4 changes: 4 additions & 0 deletions relay-clients/client-kusama/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ impl Chain for Kusama {
const NAME: &'static str = "Kusama";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_kusama::BEST_FINALIZED_KUSAMA_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_kusama::FREE_HEADERS_INTERVAL_FOR_KUSAMA_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6);

type SignedBlock = bp_kusama::SignedBlock;
Expand All @@ -79,6 +81,8 @@ impl ChainWithBalances for Kusama {

impl RelayChain for Kusama {
const PARAS_PALLET_NAME: &'static str = bp_kusama::PARAS_PALLET_NAME;
const WITH_CHAIN_BRIDGE_PARACHAINS_PALLET_NAME: &'static str =
bp_kusama::WITH_KUSAMA_BRIDGE_PARACHAINS_PALLET_NAME;
}

impl ChainWithTransactions for Kusama {
Expand Down
2 changes: 2 additions & 0 deletions relay-clients/client-polkadot-bulletin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ impl Chain for PolkadotBulletin {
const NAME: &'static str = "PolkadotBulletin";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_polkadot_bulletin::BEST_FINALIZED_POLKADOT_BULLETIN_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_polkadot_bulletin::FREE_HEADERS_INTERVAL_FOR_POLKADOT_BULLETIN_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6);

type SignedBlock = bp_polkadot_bulletin::SignedBlock;
Expand Down
4 changes: 4 additions & 0 deletions relay-clients/client-polkadot/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ impl Chain for Polkadot {
const NAME: &'static str = "Polkadot";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_polkadot::BEST_FINALIZED_POLKADOT_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_polkadot::FREE_HEADERS_INTERVAL_FOR_POLKADOT_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6);

type SignedBlock = bp_polkadot::SignedBlock;
Expand All @@ -79,6 +81,8 @@ impl ChainWithBalances for Polkadot {

impl RelayChain for Polkadot {
const PARAS_PALLET_NAME: &'static str = bp_polkadot::PARAS_PALLET_NAME;
const WITH_CHAIN_BRIDGE_PARACHAINS_PALLET_NAME: &'static str =
bp_polkadot::WITH_POLKADOT_BRIDGE_PARACHAINS_PALLET_NAME;
}

impl ChainWithTransactions for Polkadot {
Expand Down
6 changes: 5 additions & 1 deletion relay-clients/client-rococo/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ impl Chain for Rococo {
const NAME: &'static str = "Rococo";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_rococo::FREE_HEADERS_INTERVAL_FOR_ROCOCO_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6);

type SignedBlock = bp_rococo::SignedBlock;
Expand All @@ -79,6 +81,8 @@ impl ChainWithBalances for Rococo {

impl RelayChain for Rococo {
const PARAS_PALLET_NAME: &'static str = bp_rococo::PARAS_PALLET_NAME;
const WITH_CHAIN_BRIDGE_PARACHAINS_PALLET_NAME: &'static str =
bp_rococo::WITH_ROCOCO_BRIDGE_PARACHAINS_PALLET_NAME;
}

impl ChainWithTransactions for Rococo {
Expand Down Expand Up @@ -118,5 +122,5 @@ impl ChainWithTransactions for Rococo {

impl ChainWithRuntimeVersion for Rococo {
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
Some(SimpleRuntimeVersion { spec_version: 1_009_000, transaction_version: 24 });
Some(SimpleRuntimeVersion { spec_version: 1_010_000, transaction_version: 24 });
}
6 changes: 5 additions & 1 deletion relay-clients/client-westend/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ impl Chain for Westend {
const NAME: &'static str = "Westend";
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
bp_westend::BEST_FINALIZED_WESTEND_HEADER_METHOD;
const FREE_HEADERS_INTERVAL_METHOD: &'static str =
bp_westend::FREE_HEADERS_INTERVAL_FOR_WESTEND_METHOD;
const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6);

type SignedBlock = bp_westend::SignedBlock;
Expand All @@ -73,6 +75,8 @@ impl ChainWithGrandpa for Westend {

impl RelayChain for Westend {
const PARAS_PALLET_NAME: &'static str = bp_westend::PARAS_PALLET_NAME;
const WITH_CHAIN_BRIDGE_PARACHAINS_PALLET_NAME: &'static str =
bp_westend::WITH_WESTEND_BRIDGE_PARACHAINS_PALLET_NAME;
}

impl ChainWithBalances for Westend {
Expand Down Expand Up @@ -118,5 +122,5 @@ impl ChainWithTransactions for Westend {

impl ChainWithRuntimeVersion for Westend {
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
Some(SimpleRuntimeVersion { spec_version: 1_009_000, transaction_version: 24 });
Some(SimpleRuntimeVersion { spec_version: 1_010_000, transaction_version: 24 });
}
Loading

0 comments on commit 2573d65

Please sign in to comment.