feat: Rebrand Polkadot/Substrate references to PezkuwiChain
This commit systematically rebrands various references from Parity Technologies' Polkadot/Substrate ecosystem to PezkuwiChain within the kurdistan-sdk. Key changes include: - Updated external repository URLs (zombienet-sdk, parity-db, parity-scale-codec, wasm-instrument) to point to pezkuwichain forks. - Modified internal documentation and code comments to reflect PezkuwiChain naming and structure. - Replaced direct references to with or specific paths within the for XCM, Pezkuwi, and other modules. - Cleaned up deprecated issue and PR references in various and files, particularly in and modules. - Adjusted image and logo URLs in documentation to point to PezkuwiChain assets. - Removed or rephrased comments related to external Polkadot/Substrate PRs and issues. This is a significant step towards fully customizing the SDK for the PezkuwiChain ecosystem.
This commit is contained in:
+7
-7
@@ -2,10 +2,10 @@
|
||||
|
||||
This is a collection of components for building bridges.
|
||||
|
||||
These components include Substrate pallets for syncing headers, passing arbitrary messages, as well as libraries for
|
||||
These components include Bizinikiwi pallets for syncing headers, passing arbitrary messages, as well as libraries for
|
||||
building relayers to provide cross-chain communication capabilities.
|
||||
|
||||
Three bridge nodes are also available. The nodes can be used to run test networks which bridge other Substrate chains.
|
||||
Three bridge nodes are also available. The nodes can be used to run test networks which bridge other Bizinikiwi chains.
|
||||
|
||||
🚧 The bridges are currently under construction - a hardhat is recommended beyond this point 🚧
|
||||
|
||||
@@ -56,14 +56,14 @@ docker run --rm -it -w /shellhere/parity-bridges-common \
|
||||
If you want to reproduce other steps of CI process you can use the following
|
||||
[guide](https://github.com/paritytech/scripts#reproduce-ci-locally).
|
||||
|
||||
If you need more information about setting up your development environment [Substrate's Installation
|
||||
If you need more information about setting up your development environment [Bizinikiwi's Installation
|
||||
page](https://docs.pezkuwichain.io/main-docs/install/) is a good resource.
|
||||
|
||||
## High-Level Architecture
|
||||
|
||||
This repo has support for bridging foreign chains together using a combination of Substrate pallets and external
|
||||
This repo has support for bridging foreign chains together using a combination of Bizinikiwi pallets and external
|
||||
processes called relayers. A bridge chain is one that is able to follow the consensus of a foreign chain independently.
|
||||
For example, consider the case below where we want to bridge two Substrate based chains.
|
||||
For example, consider the case below where we want to bridge two Bizinikiwi based chains.
|
||||
|
||||
```
|
||||
+---------------+ +---------------+
|
||||
@@ -94,7 +94,7 @@ Here's an overview of how the project is laid out. The main bits are the `bin`,
|
||||
messages between chains.
|
||||
|
||||
```
|
||||
├── modules // Substrate Runtime Modules (a.k.a Pallets)
|
||||
├── modules // Bizinikiwi Runtime Modules (a.k.a Pallets)
|
||||
│ ├── beefy // On-Chain BEEFY Light Client (in progress)
|
||||
│ ├── grandpa // On-Chain GRANDPA Light Client
|
||||
│ ├── messages // Cross Chain Message Passing
|
||||
@@ -113,4 +113,4 @@ messages between chains.
|
||||
|
||||
Apart from live pezkuwichain <> zagros bridge, you may spin up local networks and test see how it works locally. More
|
||||
details may be found in
|
||||
[this document](https://github.com/pezkuwichain/pezkuwi-sdk/tree/master//cumulus/parachains/runtimes/bridge-hubs/README.md).
|
||||
[this document](https://github.com/pezkuwichain/pezkuwi-sdk/tree/master//pezcumulus/parachains/runtimes/bridge-hubs/README.md).
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "bridge-runtime-common"
|
||||
version = "0.7.0"
|
||||
description = "Common types and functions that may be used by substrate-based runtimes of all bridged chains"
|
||||
description = "Common types and functions that may be used by bizinikiwi-based runtimes of all bridged chains"
|
||||
authors.workspace = true
|
||||
edition.workspace = true
|
||||
repository.workspace = true
|
||||
@@ -24,33 +24,33 @@ bp-pezkuwi-core = { workspace = true }
|
||||
bp-relayers = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
bp-teyrchains = { workspace = true }
|
||||
pallet-bridge-grandpa = { workspace = true }
|
||||
pallet-bridge-messages = { workspace = true }
|
||||
pallet-bridge-relayers = { workspace = true }
|
||||
pallet-bridge-teyrchains = { workspace = true }
|
||||
pezpallet-bridge-grandpa = { workspace = true }
|
||||
pezpallet-bridge-messages = { workspace = true }
|
||||
pezpallet-bridge-relayers = { workspace = true }
|
||||
pezpallet-bridge-teyrchains = { workspace = true }
|
||||
|
||||
# Substrate dependencies
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
pallet-transaction-payment = { workspace = true }
|
||||
pallet-utility = { workspace = true }
|
||||
sp-io = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
sp-trie = { optional = true, workspace = true }
|
||||
sp-weights = { workspace = true }
|
||||
# Bizinikiwi dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezpallet-transaction-payment = { workspace = true }
|
||||
pezpallet-utility = { workspace = true }
|
||||
pezsp-io = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
pezsp-trie = { optional = true, workspace = true }
|
||||
pezsp-weights = { workspace = true }
|
||||
|
||||
# Pezkuwi dependencies
|
||||
xcm = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-test-utils = { workspace = true }
|
||||
pallet-balances = { workspace = true, default-features = true }
|
||||
pallet-bridge-messages = { features = [
|
||||
pezpallet-balances = { workspace = true, default-features = true }
|
||||
pezpallet-bridge-messages = { features = [
|
||||
"std",
|
||||
"test-helpers",
|
||||
], workspace = true }
|
||||
sp-core = { workspace = true, default-features = true }
|
||||
pezsp-core = { workspace = true, default-features = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -63,20 +63,20 @@ std = [
|
||||
"bp-test-utils/std",
|
||||
"bp-teyrchains/std",
|
||||
"codec/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pallet-bridge-grandpa/std",
|
||||
"pallet-bridge-messages/std",
|
||||
"pallet-bridge-relayers/std",
|
||||
"pallet-bridge-teyrchains/std",
|
||||
"pallet-transaction-payment/std",
|
||||
"pallet-utility/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezpallet-bridge-grandpa/std",
|
||||
"pezpallet-bridge-messages/std",
|
||||
"pezpallet-bridge-relayers/std",
|
||||
"pezpallet-bridge-teyrchains/std",
|
||||
"pezpallet-transaction-payment/std",
|
||||
"pezpallet-utility/std",
|
||||
"scale-info/std",
|
||||
"sp-io/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"sp-trie/std",
|
||||
"sp-weights/std",
|
||||
"pezsp-io/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"pezsp-trie/std",
|
||||
"pezsp-weights/std",
|
||||
"tracing/std",
|
||||
"tuplex/std",
|
||||
"xcm/std",
|
||||
@@ -90,21 +90,21 @@ runtime-benchmarks = [
|
||||
"bp-runtime/test-helpers",
|
||||
"bp-test-utils/runtime-benchmarks",
|
||||
"bp-teyrchains/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pallet-balances/runtime-benchmarks",
|
||||
"pallet-bridge-grandpa/runtime-benchmarks",
|
||||
"pallet-bridge-messages/runtime-benchmarks",
|
||||
"pallet-bridge-messages/test-helpers",
|
||||
"pallet-bridge-relayers/runtime-benchmarks",
|
||||
"pallet-bridge-teyrchains/runtime-benchmarks",
|
||||
"pallet-transaction-payment/runtime-benchmarks",
|
||||
"pallet-utility/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"sp-trie",
|
||||
"sp-trie?/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezpallet-balances/runtime-benchmarks",
|
||||
"pezpallet-bridge-grandpa/runtime-benchmarks",
|
||||
"pezpallet-bridge-messages/runtime-benchmarks",
|
||||
"pezpallet-bridge-messages/test-helpers",
|
||||
"pezpallet-bridge-relayers/runtime-benchmarks",
|
||||
"pezpallet-bridge-teyrchains/runtime-benchmarks",
|
||||
"pezpallet-transaction-payment/runtime-benchmarks",
|
||||
"pezpallet-utility/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
"pezsp-trie",
|
||||
"pezsp-trie?/runtime-benchmarks",
|
||||
"xcm/runtime-benchmarks",
|
||||
]
|
||||
integrity-test = ["static_assertions"]
|
||||
test-helpers = ["bp-runtime/test-helpers", "sp-trie"]
|
||||
test-helpers = ["bp-runtime/test-helpers", "pezsp-trie"]
|
||||
|
||||
@@ -15,23 +15,23 @@
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Transaction extension that rejects bridge-related transactions, that include
|
||||
//! obsolete (duplicated) data or do not pass some additional pallet-specific
|
||||
//! obsolete (duplicated) data or do not pass some additional pezpallet-specific
|
||||
//! checks.
|
||||
|
||||
use bp_relayers::ExplicitOrAccountParams;
|
||||
use bp_runtime::Teyrchain;
|
||||
use bp_teyrchains::SubmitTeyrchainHeadsInfo;
|
||||
use pallet_bridge_grandpa::{
|
||||
use pezpallet_bridge_grandpa::{
|
||||
BridgedBlockNumber, CallSubType as GrandpaCallSubType, SubmitFinalityProofHelper,
|
||||
};
|
||||
use pallet_bridge_messages::CallSubType as MessagesCallSubType;
|
||||
use pallet_bridge_relayers::Pallet as RelayersPallet;
|
||||
use pallet_bridge_teyrchains::{CallSubType as TeyrchainsCallSubtype, SubmitTeyrchainHeadsHelper};
|
||||
use sp_runtime::{
|
||||
use pezpallet_bridge_messages::CallSubType as MessagesCallSubType;
|
||||
use pezpallet_bridge_relayers::Pallet as RelayersPallet;
|
||||
use pezpallet_bridge_teyrchains::{CallSubType as TeyrchainsCallSubtype, SubmitTeyrchainHeadsHelper};
|
||||
use pezsp_runtime::{
|
||||
traits::{Get, UniqueSaturatedInto},
|
||||
transaction_validity::{TransactionPriority, TransactionValidity, ValidTransactionBuilder},
|
||||
};
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
// Re-export to avoid include tuplex dependency everywhere.
|
||||
#[doc(hidden)]
|
||||
@@ -68,7 +68,7 @@ impl<T, I: 'static, Priority: Get<TransactionPriority>, SlashAccount: Get<T::Acc
|
||||
BridgeRuntimeFilterCall<T::AccountId, T::RuntimeCall>
|
||||
for CheckAndBoostBridgeGrandpaTransactions<T, I, Priority, SlashAccount>
|
||||
where
|
||||
T: pallet_bridge_relayers::Config + pallet_bridge_grandpa::Config<I>,
|
||||
T: pezpallet_bridge_relayers::Config + pezpallet_bridge_grandpa::Config<I>,
|
||||
T::RuntimeCall: GrandpaCallSubType<T, I>,
|
||||
{
|
||||
// bridged header number, bundled in transaction
|
||||
@@ -139,7 +139,7 @@ impl<
|
||||
> BridgeRuntimeFilterCall<T::AccountId, T::RuntimeCall>
|
||||
for CheckAndBoostBridgeTeyrchainsTransactions<T, TeyrchainsInstance, Para, Priority, SlashAccount>
|
||||
where
|
||||
T: pallet_bridge_relayers::Config + pallet_bridge_teyrchains::Config<TeyrchainsInstance>,
|
||||
T: pezpallet_bridge_relayers::Config + pezpallet_bridge_teyrchains::Config<TeyrchainsInstance>,
|
||||
TeyrchainsInstance: 'static,
|
||||
Para: Teyrchain,
|
||||
T::RuntimeCall: TeyrchainsCallSubtype<T, TeyrchainsInstance>,
|
||||
@@ -188,9 +188,9 @@ where
|
||||
}
|
||||
|
||||
impl<T, I: 'static> BridgeRuntimeFilterCall<T::AccountId, T::RuntimeCall>
|
||||
for pallet_bridge_grandpa::Pallet<T, I>
|
||||
for pezpallet_bridge_grandpa::Pallet<T, I>
|
||||
where
|
||||
T: pallet_bridge_grandpa::Config<I>,
|
||||
T: pezpallet_bridge_grandpa::Config<I>,
|
||||
T::RuntimeCall: GrandpaCallSubType<T, I>,
|
||||
{
|
||||
type ToPostDispatch = ();
|
||||
@@ -204,9 +204,9 @@ where
|
||||
}
|
||||
|
||||
impl<T, I: 'static> BridgeRuntimeFilterCall<T::AccountId, T::RuntimeCall>
|
||||
for pallet_bridge_teyrchains::Pallet<T, I>
|
||||
for pezpallet_bridge_teyrchains::Pallet<T, I>
|
||||
where
|
||||
T: pallet_bridge_teyrchains::Config<I>,
|
||||
T: pezpallet_bridge_teyrchains::Config<I>,
|
||||
T::RuntimeCall: TeyrchainsCallSubtype<T, I>,
|
||||
{
|
||||
type ToPostDispatch = ();
|
||||
@@ -219,8 +219,8 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: pallet_bridge_messages::Config<I>, I: 'static>
|
||||
BridgeRuntimeFilterCall<T::AccountId, T::RuntimeCall> for pallet_bridge_messages::Pallet<T, I>
|
||||
impl<T: pezpallet_bridge_messages::Config<I>, I: 'static>
|
||||
BridgeRuntimeFilterCall<T::AccountId, T::RuntimeCall> for pezpallet_bridge_messages::Pallet<T, I>
|
||||
where
|
||||
T::RuntimeCall: MessagesCallSubType<T, I>,
|
||||
{
|
||||
@@ -240,7 +240,7 @@ fn compute_priority_boost<T, N, Priority>(
|
||||
improved_by: N,
|
||||
) -> TransactionPriority
|
||||
where
|
||||
T: pallet_bridge_relayers::Config,
|
||||
T: pezpallet_bridge_relayers::Config,
|
||||
N: UniqueSaturatedInto<TransactionPriority>,
|
||||
Priority: Get<TransactionPriority>,
|
||||
{
|
||||
@@ -271,9 +271,9 @@ where
|
||||
#[macro_export]
|
||||
macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
|
||||
($call:ty, $account_id:ty, $($filter_call:ty),*) => {
|
||||
#[derive(Clone, codec::Decode, codec::DecodeWithMemTracking, Default, codec::Encode, Eq, PartialEq, sp_runtime::RuntimeDebug, scale_info::TypeInfo)]
|
||||
#[derive(Clone, codec::Decode, codec::DecodeWithMemTracking, Default, codec::Encode, Eq, PartialEq, pezsp_runtime::RuntimeDebug, scale_info::TypeInfo)]
|
||||
pub struct BridgeRejectObsoleteHeadersAndMessages;
|
||||
impl sp_runtime::traits::TransactionExtension<$call> for BridgeRejectObsoleteHeadersAndMessages {
|
||||
impl pezsp_runtime::traits::TransactionExtension<$call> for BridgeRejectObsoleteHeadersAndMessages {
|
||||
const IDENTIFIER: &'static str = "BridgeRejectObsoleteHeadersAndMessages";
|
||||
type Implicit = ();
|
||||
type Val = Option<(
|
||||
@@ -287,35 +287,35 @@ macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
|
||||
)>;
|
||||
type Pre = Self::Val;
|
||||
|
||||
fn weight(&self, _: &$call) -> frame_support::pallet_prelude::Weight {
|
||||
frame_support::pallet_prelude::Weight::zero()
|
||||
fn weight(&self, _: &$call) -> pezframe_support::pezpallet_prelude::Weight {
|
||||
pezframe_support::pezpallet_prelude::Weight::zero()
|
||||
}
|
||||
|
||||
fn validate(
|
||||
&self,
|
||||
origin: <$call as sp_runtime::traits::Dispatchable>::RuntimeOrigin,
|
||||
origin: <$call as pezsp_runtime::traits::Dispatchable>::RuntimeOrigin,
|
||||
call: &$call,
|
||||
_info: &sp_runtime::traits::DispatchInfoOf<$call>,
|
||||
_info: &pezsp_runtime::traits::DispatchInfoOf<$call>,
|
||||
_len: usize,
|
||||
_self_implicit: Self::Implicit,
|
||||
_inherited_implication: &impl codec::Encode,
|
||||
_source: sp_runtime::transaction_validity::TransactionSource,
|
||||
_source: pezsp_runtime::transaction_validity::TransactionSource,
|
||||
) -> Result<
|
||||
(
|
||||
sp_runtime::transaction_validity::ValidTransaction,
|
||||
pezsp_runtime::transaction_validity::ValidTransaction,
|
||||
Self::Val,
|
||||
<$call as sp_runtime::traits::Dispatchable>::RuntimeOrigin,
|
||||
), sp_runtime::transaction_validity::TransactionValidityError
|
||||
<$call as pezsp_runtime::traits::Dispatchable>::RuntimeOrigin,
|
||||
), pezsp_runtime::transaction_validity::TransactionValidityError
|
||||
> {
|
||||
use $crate::extensions::__private::tuplex::PushBack;
|
||||
use sp_runtime::traits::AsSystemOriginSigner;
|
||||
use pezsp_runtime::traits::AsSystemOriginSigner;
|
||||
|
||||
let Some(who) = origin.as_system_origin_signer() else {
|
||||
return Ok((Default::default(), None, origin));
|
||||
};
|
||||
|
||||
let to_post_dispatch = ();
|
||||
let tx_validity = sp_runtime::transaction_validity::ValidTransaction::default();
|
||||
let tx_validity = pezsp_runtime::transaction_validity::ValidTransaction::default();
|
||||
$(
|
||||
let (from_validate, call_filter_validity) = <
|
||||
$filter_call as
|
||||
@@ -332,26 +332,26 @@ macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
|
||||
fn prepare(
|
||||
self,
|
||||
val: Self::Val,
|
||||
_origin: &<$call as sp_runtime::traits::Dispatchable>::RuntimeOrigin,
|
||||
_origin: &<$call as pezsp_runtime::traits::Dispatchable>::RuntimeOrigin,
|
||||
_call: &$call,
|
||||
_info: &sp_runtime::traits::DispatchInfoOf<$call>,
|
||||
_info: &pezsp_runtime::traits::DispatchInfoOf<$call>,
|
||||
_len: usize,
|
||||
) -> Result<Self::Pre, sp_runtime::transaction_validity::TransactionValidityError> {
|
||||
) -> Result<Self::Pre, pezsp_runtime::transaction_validity::TransactionValidityError> {
|
||||
Ok(val)
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn post_dispatch_details(
|
||||
to_post_dispatch: Self::Pre,
|
||||
info: &sp_runtime::traits::DispatchInfoOf<$call>,
|
||||
post_info: &sp_runtime::traits::PostDispatchInfoOf<$call>,
|
||||
info: &pezsp_runtime::traits::DispatchInfoOf<$call>,
|
||||
post_info: &pezsp_runtime::traits::PostDispatchInfoOf<$call>,
|
||||
len: usize,
|
||||
result: &sp_runtime::DispatchResult,
|
||||
) -> Result<frame_support::pallet_prelude::Weight, sp_runtime::transaction_validity::TransactionValidityError> {
|
||||
result: &pezsp_runtime::DispatchResult,
|
||||
) -> Result<pezframe_support::pezpallet_prelude::Weight, pezsp_runtime::transaction_validity::TransactionValidityError> {
|
||||
use $crate::extensions::__private::tuplex::PopFront;
|
||||
|
||||
let Some((relayer, to_post_dispatch)) = to_post_dispatch else {
|
||||
return Ok(frame_support::pallet_prelude::Weight::zero())
|
||||
return Ok(pezframe_support::pezpallet_prelude::Weight::zero())
|
||||
};
|
||||
|
||||
let has_failed = result.is_err();
|
||||
@@ -364,7 +364,7 @@ macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
|
||||
$call,
|
||||
>>::post_dispatch(&relayer, has_failed, item);
|
||||
)*
|
||||
Ok(frame_support::pallet_prelude::Weight::zero())
|
||||
Ok(pezframe_support::pezpallet_prelude::Weight::zero())
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -382,11 +382,11 @@ mod tests {
|
||||
use bp_test_utils::{make_default_justification, test_keyring, TEST_GRANDPA_SET_ID};
|
||||
use bp_teyrchains::{BestParaHeadHash, ParaInfo};
|
||||
use codec::{Decode, Encode, MaxEncodedLen};
|
||||
use frame_support::{assert_err, assert_ok, traits::fungible::Mutate};
|
||||
use pallet_bridge_grandpa::{Call as GrandpaCall, StoredAuthoritySet};
|
||||
use pallet_bridge_teyrchains::Call as TeyrchainsCall;
|
||||
use pezframe_support::{assert_err, assert_ok, traits::fungible::Mutate};
|
||||
use pezpallet_bridge_grandpa::{Call as GrandpaCall, StoredAuthoritySet};
|
||||
use pezpallet_bridge_teyrchains::Call as TeyrchainsCall;
|
||||
use scale_info::TypeInfo;
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
traits::{
|
||||
parameter_types, AsSystemOriginSigner, AsTransactionAuthorizedOrigin, ConstU64,
|
||||
DispatchTransaction, Header as _, TransactionExtension,
|
||||
@@ -436,7 +436,7 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
impl sp_runtime::traits::Dispatchable for MockCall {
|
||||
impl pezsp_runtime::traits::Dispatchable for MockCall {
|
||||
type RuntimeOrigin = MockOrigin;
|
||||
type Config = ();
|
||||
type Info = ();
|
||||
@@ -445,7 +445,7 @@ mod tests {
|
||||
fn dispatch(
|
||||
self,
|
||||
_origin: Self::RuntimeOrigin,
|
||||
) -> sp_runtime::DispatchResultWithInfo<Self::PostInfo> {
|
||||
) -> pezsp_runtime::DispatchResultWithInfo<Self::PostInfo> {
|
||||
unimplemented!()
|
||||
}
|
||||
}
|
||||
@@ -453,11 +453,11 @@ mod tests {
|
||||
pub struct FirstFilterCall;
|
||||
impl FirstFilterCall {
|
||||
fn post_dispatch_called_with(success: bool) {
|
||||
frame_support::storage::unhashed::put(&[1], &success);
|
||||
pezframe_support::storage::unhashed::put(&[1], &success);
|
||||
}
|
||||
|
||||
fn verify_post_dispatch_called_with(success: bool) {
|
||||
assert_eq!(frame_support::storage::unhashed::get::<bool>(&[1]), Some(success));
|
||||
assert_eq!(pezframe_support::storage::unhashed::get::<bool>(&[1]), Some(success));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -481,11 +481,11 @@ mod tests {
|
||||
|
||||
impl SecondFilterCall {
|
||||
fn post_dispatch_called_with(success: bool) {
|
||||
frame_support::storage::unhashed::put(&[2], &success);
|
||||
pezframe_support::storage::unhashed::put(&[2], &success);
|
||||
}
|
||||
|
||||
fn verify_post_dispatch_called_with(success: bool) {
|
||||
assert_eq!(frame_support::storage::unhashed::get::<bool>(&[2]), Some(success));
|
||||
assert_eq!(pezframe_support::storage::unhashed::get::<bool>(&[2]), Some(success));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -532,11 +532,11 @@ mod tests {
|
||||
) {
|
||||
let authorities = test_keyring().into_iter().map(|(a, w)| (a.into(), w)).collect();
|
||||
let best_relay_header = HeaderId(best_relay_header_number, BridgedChainHash::default());
|
||||
pallet_bridge_grandpa::CurrentAuthoritySet::<TestRuntime>::put(
|
||||
pezpallet_bridge_grandpa::CurrentAuthoritySet::<TestRuntime>::put(
|
||||
StoredAuthoritySet::try_new(authorities, TEST_GRANDPA_SET_ID).unwrap(),
|
||||
);
|
||||
pallet_bridge_grandpa::BestFinalized::<TestRuntime>::put(best_relay_header);
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
pezpallet_bridge_grandpa::BestFinalized::<TestRuntime>::put(best_relay_header);
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
best_relay_header.hash(),
|
||||
bp_test_utils::test_header::<BridgedChainHeader>(0).build(),
|
||||
);
|
||||
@@ -549,16 +549,16 @@ mod tests {
|
||||
},
|
||||
next_imported_hash_position: 0,
|
||||
};
|
||||
pallet_bridge_teyrchains::ParasInfo::<TestRuntime>::insert(para_id, para_info);
|
||||
pezpallet_bridge_teyrchains::ParasInfo::<TestRuntime>::insert(para_id, para_info);
|
||||
|
||||
let lane_id = test_lane_id();
|
||||
let in_lane_data =
|
||||
InboundLaneData { last_confirmed_nonce: best_message, ..Default::default() };
|
||||
pallet_bridge_messages::InboundLanes::<TestRuntime>::insert(lane_id, in_lane_data);
|
||||
pezpallet_bridge_messages::InboundLanes::<TestRuntime>::insert(lane_id, in_lane_data);
|
||||
|
||||
let out_lane_data =
|
||||
OutboundLaneData { latest_received_nonce: best_message, ..Default::default() };
|
||||
pallet_bridge_messages::OutboundLanes::<TestRuntime>::insert(lane_id, out_lane_data);
|
||||
pezpallet_bridge_messages::OutboundLanes::<TestRuntime>::insert(lane_id, out_lane_data);
|
||||
|
||||
Balances::mint_into(&delivery_rewards_account(), ExistentialDeposit::get()).unwrap();
|
||||
Balances::mint_into(&confirmation_rewards_account(), ExistentialDeposit::get()).unwrap();
|
||||
@@ -694,7 +694,7 @@ mod tests {
|
||||
});
|
||||
}
|
||||
|
||||
frame_support::parameter_types! {
|
||||
pezframe_support::parameter_types! {
|
||||
pub SlashDestination: ThisChainAccountId = 42;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ use bp_header_chain::ChainWithGrandpa;
|
||||
use bp_messages::{ChainWithMessages, InboundLaneData, MessageNonce};
|
||||
use bp_runtime::{AccountIdOf, Chain};
|
||||
use codec::Encode;
|
||||
use frame_support::{storage::generator::StorageValue, traits::Get, weights::Weight};
|
||||
use frame_system::limits;
|
||||
use pallet_bridge_messages::{ThisChainOf, WeightInfoExt as _};
|
||||
use pezframe_support::{storage::generator::StorageValue, traits::Get, weights::Weight};
|
||||
use pezframe_system::limits;
|
||||
use pezpallet_bridge_messages::{ThisChainOf, WeightInfoExt as _};
|
||||
|
||||
// Re-export to avoid include all dependencies everywhere.
|
||||
#[doc(hidden)]
|
||||
@@ -39,7 +39,7 @@ pub mod __private {
|
||||
macro_rules! assert_chain_types(
|
||||
( runtime: $r:path, this_chain: $this:path ) => {
|
||||
{
|
||||
use frame_system::{Config as SystemConfig, pallet_prelude::{BlockNumberFor, HeaderFor}};
|
||||
use pezframe_system::{Config as SystemConfig, pezpallet_prelude::{BlockNumberFor, HeaderFor}};
|
||||
use $crate::integrity::__private::static_assertions::assert_type_eq_all;
|
||||
|
||||
// if one of asserts fail, then either bridge isn't configured properly (or alternatively - non-standard
|
||||
@@ -71,7 +71,7 @@ macro_rules! assert_bridge_messages_pallet_types(
|
||||
use $crate::integrity::__private::static_assertions::assert_type_eq_all;
|
||||
use bp_messages::ChainWithMessages;
|
||||
use bp_runtime::Chain;
|
||||
use pallet_bridge_messages::Config as BridgeMessagesConfig;
|
||||
use pezpallet_bridge_messages::Config as BridgeMessagesConfig;
|
||||
|
||||
// if one of asserts fail, then either bridge isn't configured properly (or alternatively - non-standard
|
||||
// configuration is used), or something has broke existing configuration (meaning that all bridged chains
|
||||
@@ -126,7 +126,7 @@ pub struct AssertChainConstants {
|
||||
/// 2) block size limits are matching.
|
||||
pub fn assert_chain_constants<R>(params: AssertChainConstants)
|
||||
where
|
||||
R: frame_system::Config,
|
||||
R: pezframe_system::Config,
|
||||
{
|
||||
// we don't check runtime version here, because in our case we'll be building relay from one
|
||||
// repo and runtime will live in another repo, along with outdated relay version. To avoid
|
||||
@@ -157,7 +157,7 @@ where
|
||||
/// Test that the constants, used in GRANDPA pallet configuration are valid.
|
||||
pub fn assert_bridge_grandpa_pallet_constants<R, GI>()
|
||||
where
|
||||
R: pallet_bridge_grandpa::Config<GI>,
|
||||
R: pezpallet_bridge_grandpa::Config<GI>,
|
||||
GI: 'static,
|
||||
{
|
||||
assert!(
|
||||
@@ -170,18 +170,18 @@ where
|
||||
/// Test that the constants, used in messages pallet configuration are valid.
|
||||
pub fn assert_bridge_messages_pallet_constants<R, MI>()
|
||||
where
|
||||
R: pallet_bridge_messages::Config<MI>,
|
||||
R: pezpallet_bridge_messages::Config<MI>,
|
||||
MI: 'static,
|
||||
{
|
||||
assert!(
|
||||
pallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX
|
||||
<= pallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
|
||||
pezpallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX
|
||||
<= pezpallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
|
||||
"MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX ({}) of {:?} is larger than \
|
||||
its MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX ({}). This makes \
|
||||
no sense",
|
||||
pallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
|
||||
pallet_bridge_messages::BridgedChainOf::<R, MI>::ID,
|
||||
pallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
|
||||
pezpallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
|
||||
pezpallet_bridge_messages::BridgedChainOf::<R, MI>::ID,
|
||||
pezpallet_bridge_messages::BridgedChainOf::<R, MI>::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -197,12 +197,12 @@ struct AssertBridgeGrandpaPalletNames<'a> {
|
||||
/// from chain primitives crates.
|
||||
fn assert_bridge_grandpa_pallet_names<R, GI>(params: AssertBridgeGrandpaPalletNames)
|
||||
where
|
||||
R: pallet_bridge_grandpa::Config<GI>,
|
||||
R: pezpallet_bridge_grandpa::Config<GI>,
|
||||
GI: 'static,
|
||||
{
|
||||
// check that the bridge GRANDPA pallet has required name
|
||||
assert_eq!(
|
||||
pallet_bridge_grandpa::PalletOwner::<R, GI>::storage_value_final_key().to_vec(),
|
||||
pezpallet_bridge_grandpa::PalletOwner::<R, GI>::storage_value_final_key().to_vec(),
|
||||
bp_runtime::storage_value_key(
|
||||
params.with_bridged_chain_grandpa_pallet_name,
|
||||
"PalletOwner",
|
||||
@@ -210,7 +210,7 @@ where
|
||||
.0,
|
||||
);
|
||||
assert_eq!(
|
||||
pallet_bridge_grandpa::PalletOperatingMode::<R, GI>::storage_value_final_key().to_vec(),
|
||||
pezpallet_bridge_grandpa::PalletOperatingMode::<R, GI>::storage_value_final_key().to_vec(),
|
||||
bp_runtime::storage_value_key(
|
||||
params.with_bridged_chain_grandpa_pallet_name,
|
||||
"PalletOperatingMode",
|
||||
@@ -231,12 +231,12 @@ struct AssertBridgeMessagesPalletNames<'a> {
|
||||
/// from chain primitives crates.
|
||||
fn assert_bridge_messages_pallet_names<R, MI>(params: AssertBridgeMessagesPalletNames)
|
||||
where
|
||||
R: pallet_bridge_messages::Config<MI>,
|
||||
R: pezpallet_bridge_messages::Config<MI>,
|
||||
MI: 'static,
|
||||
{
|
||||
// check that the bridge messages pallet has required name
|
||||
assert_eq!(
|
||||
pallet_bridge_messages::PalletOwner::<R, MI>::storage_value_final_key().to_vec(),
|
||||
pezpallet_bridge_messages::PalletOwner::<R, MI>::storage_value_final_key().to_vec(),
|
||||
bp_runtime::storage_value_key(
|
||||
params.with_bridged_chain_messages_pallet_name,
|
||||
"PalletOwner",
|
||||
@@ -244,7 +244,7 @@ where
|
||||
.0,
|
||||
);
|
||||
assert_eq!(
|
||||
pallet_bridge_messages::PalletOperatingMode::<R, MI>::storage_value_final_key().to_vec(),
|
||||
pezpallet_bridge_messages::PalletOperatingMode::<R, MI>::storage_value_final_key().to_vec(),
|
||||
bp_runtime::storage_value_key(
|
||||
params.with_bridged_chain_messages_pallet_name,
|
||||
"PalletOperatingMode",
|
||||
@@ -265,9 +265,9 @@ pub struct AssertCompleteBridgeConstants {
|
||||
pub fn assert_complete_with_relay_chain_bridge_constants<R, GI, MI>(
|
||||
params: AssertCompleteBridgeConstants,
|
||||
) where
|
||||
R: frame_system::Config
|
||||
+ pallet_bridge_grandpa::Config<GI>
|
||||
+ pallet_bridge_messages::Config<MI>,
|
||||
R: pezframe_system::Config
|
||||
+ pezpallet_bridge_grandpa::Config<GI>
|
||||
+ pezpallet_bridge_messages::Config<MI>,
|
||||
GI: 'static,
|
||||
MI: 'static,
|
||||
{
|
||||
@@ -276,11 +276,11 @@ pub fn assert_complete_with_relay_chain_bridge_constants<R, GI, MI>(
|
||||
assert_bridge_messages_pallet_constants::<R, MI>();
|
||||
assert_bridge_grandpa_pallet_names::<R, GI>(AssertBridgeGrandpaPalletNames {
|
||||
with_bridged_chain_grandpa_pallet_name:
|
||||
<R as pallet_bridge_grandpa::Config<GI>>::BridgedChain::WITH_CHAIN_GRANDPA_PALLET_NAME,
|
||||
<R as pezpallet_bridge_grandpa::Config<GI>>::BridgedChain::WITH_CHAIN_GRANDPA_PALLET_NAME,
|
||||
});
|
||||
assert_bridge_messages_pallet_names::<R, MI>(AssertBridgeMessagesPalletNames {
|
||||
with_bridged_chain_messages_pallet_name:
|
||||
<R as pallet_bridge_messages::Config<MI>>::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
|
||||
<R as pezpallet_bridge_messages::Config<MI>>::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -289,10 +289,10 @@ pub fn assert_complete_with_relay_chain_bridge_constants<R, GI, MI>(
|
||||
pub fn assert_complete_with_teyrchain_bridge_constants<R, PI, MI>(
|
||||
params: AssertCompleteBridgeConstants,
|
||||
) where
|
||||
R: frame_system::Config
|
||||
+ pallet_bridge_teyrchains::Config<PI>
|
||||
+ pallet_bridge_messages::Config<MI>,
|
||||
<R as pallet_bridge_teyrchains::BoundedBridgeGrandpaConfig<R::BridgesGrandpaPalletInstance>>::BridgedRelayChain: ChainWithGrandpa,
|
||||
R: pezframe_system::Config
|
||||
+ pezpallet_bridge_teyrchains::Config<PI>
|
||||
+ pezpallet_bridge_messages::Config<MI>,
|
||||
<R as pezpallet_bridge_teyrchains::BoundedBridgeGrandpaConfig<R::BridgesGrandpaPalletInstance>>::BridgedRelayChain: ChainWithGrandpa,
|
||||
PI: 'static,
|
||||
MI: 'static,
|
||||
{
|
||||
@@ -302,14 +302,14 @@ pub fn assert_complete_with_teyrchain_bridge_constants<R, PI, MI>(
|
||||
assert_bridge_grandpa_pallet_names::<R, R::BridgesGrandpaPalletInstance>(
|
||||
AssertBridgeGrandpaPalletNames {
|
||||
with_bridged_chain_grandpa_pallet_name:
|
||||
<<R as pallet_bridge_teyrchains::BoundedBridgeGrandpaConfig<
|
||||
<<R as pezpallet_bridge_teyrchains::BoundedBridgeGrandpaConfig<
|
||||
R::BridgesGrandpaPalletInstance,
|
||||
>>::BridgedRelayChain>::WITH_CHAIN_GRANDPA_PALLET_NAME,
|
||||
},
|
||||
);
|
||||
assert_bridge_messages_pallet_names::<R, MI>(AssertBridgeMessagesPalletNames {
|
||||
with_bridged_chain_messages_pallet_name:
|
||||
<R as pallet_bridge_messages::Config<MI>>::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
|
||||
<R as pezpallet_bridge_messages::Config<MI>>::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -317,21 +317,21 @@ pub fn assert_complete_with_teyrchain_bridge_constants<R, PI, MI>(
|
||||
/// messages pallets deployed).
|
||||
pub fn assert_standalone_messages_bridge_constants<R, MI>(params: AssertCompleteBridgeConstants)
|
||||
where
|
||||
R: frame_system::Config + pallet_bridge_messages::Config<MI>,
|
||||
R: pezframe_system::Config + pezpallet_bridge_messages::Config<MI>,
|
||||
MI: 'static,
|
||||
{
|
||||
assert_chain_constants::<R>(params.this_chain_constants);
|
||||
assert_bridge_messages_pallet_constants::<R, MI>();
|
||||
assert_bridge_messages_pallet_names::<R, MI>(AssertBridgeMessagesPalletNames {
|
||||
with_bridged_chain_messages_pallet_name:
|
||||
<R as pallet_bridge_messages::Config<MI>>::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
|
||||
<R as pezpallet_bridge_messages::Config<MI>>::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
|
||||
});
|
||||
}
|
||||
|
||||
/// Check that the message lane weights are correct.
|
||||
pub fn check_message_lane_weights<
|
||||
C: ChainWithMessages,
|
||||
T: frame_system::Config + pallet_bridge_messages::Config<MessagesPalletInstance>,
|
||||
T: pezframe_system::Config + pezpallet_bridge_messages::Config<MessagesPalletInstance>,
|
||||
MessagesPalletInstance: 'static,
|
||||
>(
|
||||
bridged_chain_extra_storage_proof_size: u32,
|
||||
@@ -343,13 +343,13 @@ pub fn check_message_lane_weights<
|
||||
// in other words: pass true for all known production chains
|
||||
runtime_includes_refund_extension: bool,
|
||||
) {
|
||||
type Weights<T, MI> = <T as pallet_bridge_messages::Config<MI>>::WeightInfo;
|
||||
type Weights<T, MI> = <T as pezpallet_bridge_messages::Config<MI>>::WeightInfo;
|
||||
|
||||
// check basic weight assumptions
|
||||
pallet_bridge_messages::ensure_weights_are_correct::<Weights<T, MessagesPalletInstance>>();
|
||||
pezpallet_bridge_messages::ensure_weights_are_correct::<Weights<T, MessagesPalletInstance>>();
|
||||
|
||||
// check that the maximal message dispatch weight is below hardcoded limit
|
||||
pallet_bridge_messages::ensure_maximal_message_dispatch::<Weights<T, MessagesPalletInstance>>(
|
||||
pezpallet_bridge_messages::ensure_maximal_message_dispatch::<Weights<T, MessagesPalletInstance>>(
|
||||
C::maximal_incoming_message_size(),
|
||||
C::maximal_incoming_message_dispatch_weight(),
|
||||
);
|
||||
@@ -357,7 +357,7 @@ pub fn check_message_lane_weights<
|
||||
// check that weights allow us to receive messages
|
||||
let max_incoming_message_proof_size =
|
||||
bridged_chain_extra_storage_proof_size.saturating_add(C::maximal_incoming_message_size());
|
||||
pallet_bridge_messages::ensure_able_to_receive_message::<Weights<T, MessagesPalletInstance>>(
|
||||
pezpallet_bridge_messages::ensure_able_to_receive_message::<Weights<T, MessagesPalletInstance>>(
|
||||
C::max_extrinsic_size(),
|
||||
C::max_extrinsic_weight(),
|
||||
max_incoming_message_proof_size,
|
||||
@@ -370,7 +370,7 @@ pub fn check_message_lane_weights<
|
||||
>::encoded_size_hint_u32(
|
||||
this_chain_max_unrewarded_relayers as _
|
||||
);
|
||||
pallet_bridge_messages::ensure_able_to_receive_confirmation::<Weights<T, MessagesPalletInstance>>(
|
||||
pezpallet_bridge_messages::ensure_able_to_receive_confirmation::<Weights<T, MessagesPalletInstance>>(
|
||||
C::max_extrinsic_size(),
|
||||
C::max_extrinsic_weight(),
|
||||
max_incoming_inbound_lane_data_proof_size,
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
//! Helpers for implementing various message-related runtime API methods.
|
||||
|
||||
use bp_messages::{InboundMessageDetails, MessageNonce, MessagePayload, OutboundMessageDetails};
|
||||
use sp_std::vec::Vec;
|
||||
use pezsp_std::vec::Vec;
|
||||
|
||||
/// Implementation of the `To*OutboundLaneApi::message_details`.
|
||||
pub fn outbound_message_details<Runtime, MessagesPalletInstance>(
|
||||
@@ -26,18 +26,18 @@ pub fn outbound_message_details<Runtime, MessagesPalletInstance>(
|
||||
end: MessageNonce,
|
||||
) -> Vec<OutboundMessageDetails>
|
||||
where
|
||||
Runtime: pallet_bridge_messages::Config<MessagesPalletInstance>,
|
||||
Runtime: pezpallet_bridge_messages::Config<MessagesPalletInstance>,
|
||||
MessagesPalletInstance: 'static,
|
||||
{
|
||||
(begin..=end)
|
||||
.filter_map(|nonce| {
|
||||
let message_data =
|
||||
pallet_bridge_messages::Pallet::<Runtime, MessagesPalletInstance>::outbound_message_data(lane, nonce)?;
|
||||
pezpallet_bridge_messages::Pallet::<Runtime, MessagesPalletInstance>::outbound_message_data(lane, nonce)?;
|
||||
Some(OutboundMessageDetails {
|
||||
nonce,
|
||||
// dispatch message weight is always zero at the source chain, since we're paying for
|
||||
// dispatch at the target chain
|
||||
dispatch_weight: frame_support::weights::Weight::zero(),
|
||||
dispatch_weight: pezframe_support::weights::Weight::zero(),
|
||||
size: message_data.len() as _,
|
||||
})
|
||||
})
|
||||
@@ -50,13 +50,13 @@ pub fn inbound_message_details<Runtime, MessagesPalletInstance>(
|
||||
messages: Vec<(MessagePayload, OutboundMessageDetails)>,
|
||||
) -> Vec<InboundMessageDetails>
|
||||
where
|
||||
Runtime: pallet_bridge_messages::Config<MessagesPalletInstance>,
|
||||
Runtime: pezpallet_bridge_messages::Config<MessagesPalletInstance>,
|
||||
MessagesPalletInstance: 'static,
|
||||
{
|
||||
messages
|
||||
.into_iter()
|
||||
.map(|(payload, details)| {
|
||||
pallet_bridge_messages::Pallet::<Runtime, MessagesPalletInstance>::inbound_message_data(
|
||||
pezpallet_bridge_messages::Pallet::<Runtime, MessagesPalletInstance>::inbound_message_data(
|
||||
lane, payload, details,
|
||||
)
|
||||
})
|
||||
|
||||
@@ -26,8 +26,8 @@ use bp_messages::{
|
||||
use bp_pezkuwi_core::teyrchains::ParaHash;
|
||||
use bp_runtime::{AccountIdOf, Chain, HashOf, Teyrchain};
|
||||
use codec::Encode;
|
||||
use frame_support::weights::Weight;
|
||||
use pallet_bridge_messages::{
|
||||
use pezframe_support::weights::Weight;
|
||||
use pezpallet_bridge_messages::{
|
||||
benchmarking::{MessageDeliveryProofParams, MessageProofParams},
|
||||
messages_generation::{
|
||||
encode_all_messages, encode_lane_data, prepare_message_delivery_storage_proof,
|
||||
@@ -35,8 +35,8 @@ use pallet_bridge_messages::{
|
||||
},
|
||||
BridgedChainOf, LaneIdOf, ThisChainOf,
|
||||
};
|
||||
use sp_runtime::traits::{Header, Zero};
|
||||
use sp_std::prelude::*;
|
||||
use pezsp_runtime::traits::{Header, Zero};
|
||||
use pezsp_std::prelude::*;
|
||||
use xcm::latest::prelude::*;
|
||||
|
||||
/// Prepare inbound bridge message according to given message proof parameters.
|
||||
@@ -75,10 +75,10 @@ pub fn prepare_message_proof_from_grandpa_chain<R, FI, MI>(
|
||||
message_generator: impl Fn(usize) -> MessagePayload,
|
||||
) -> (FromBridgedChainMessagesProof<HashOf<BridgedChainOf<R, MI>>, LaneIdOf<R, MI>>, Weight)
|
||||
where
|
||||
R: pallet_bridge_grandpa::Config<FI, BridgedChain = BridgedChainOf<R, MI>>
|
||||
+ pallet_bridge_messages::Config<
|
||||
R: pezpallet_bridge_grandpa::Config<FI, BridgedChain = BridgedChainOf<R, MI>>
|
||||
+ pezpallet_bridge_messages::Config<
|
||||
MI,
|
||||
BridgedHeaderChain = pallet_bridge_grandpa::Pallet<R, FI>,
|
||||
BridgedHeaderChain = pezpallet_bridge_grandpa::Pallet<R, FI>,
|
||||
>,
|
||||
FI: 'static,
|
||||
MI: 'static,
|
||||
@@ -128,7 +128,7 @@ pub fn prepare_message_proof_from_teyrchain<R, PI, MI>(
|
||||
message_generator: impl Fn(usize) -> MessagePayload,
|
||||
) -> (FromBridgedChainMessagesProof<HashOf<BridgedChainOf<R, MI>>, LaneIdOf<R, MI>>, Weight)
|
||||
where
|
||||
R: pallet_bridge_teyrchains::Config<PI> + pallet_bridge_messages::Config<MI>,
|
||||
R: pezpallet_bridge_teyrchains::Config<PI> + pezpallet_bridge_messages::Config<MI>,
|
||||
PI: 'static,
|
||||
MI: 'static,
|
||||
BridgedChainOf<R, MI>: Chain<Hash = ParaHash> + Teyrchain,
|
||||
@@ -175,10 +175,10 @@ pub fn prepare_message_delivery_proof_from_grandpa_chain<R, FI, MI>(
|
||||
params: MessageDeliveryProofParams<AccountIdOf<ThisChainOf<R, MI>>, LaneIdOf<R, MI>>,
|
||||
) -> FromBridgedChainMessagesDeliveryProof<HashOf<BridgedChainOf<R, MI>>, LaneIdOf<R, MI>>
|
||||
where
|
||||
R: pallet_bridge_grandpa::Config<FI, BridgedChain = BridgedChainOf<R, MI>>
|
||||
+ pallet_bridge_messages::Config<
|
||||
R: pezpallet_bridge_grandpa::Config<FI, BridgedChain = BridgedChainOf<R, MI>>
|
||||
+ pezpallet_bridge_messages::Config<
|
||||
MI,
|
||||
BridgedHeaderChain = pallet_bridge_grandpa::Pallet<R, FI>,
|
||||
BridgedHeaderChain = pezpallet_bridge_grandpa::Pallet<R, FI>,
|
||||
>,
|
||||
FI: 'static,
|
||||
MI: 'static,
|
||||
@@ -210,7 +210,7 @@ pub fn prepare_message_delivery_proof_from_teyrchain<R, PI, MI>(
|
||||
params: MessageDeliveryProofParams<AccountIdOf<ThisChainOf<R, MI>>, LaneIdOf<R, MI>>,
|
||||
) -> FromBridgedChainMessagesDeliveryProof<HashOf<BridgedChainOf<R, MI>>, LaneIdOf<R, MI>>
|
||||
where
|
||||
R: pallet_bridge_teyrchains::Config<PI> + pallet_bridge_messages::Config<MI>,
|
||||
R: pezpallet_bridge_teyrchains::Config<PI> + pezpallet_bridge_messages::Config<MI>,
|
||||
PI: 'static,
|
||||
MI: 'static,
|
||||
BridgedChainOf<R, MI>: Chain<Hash = ParaHash> + Teyrchain,
|
||||
@@ -239,7 +239,7 @@ pub(crate) fn insert_header_to_grandpa_pallet<R, GI>(
|
||||
state_root: bp_runtime::HashOf<R::BridgedChain>,
|
||||
) -> (bp_runtime::BlockNumberOf<R::BridgedChain>, bp_runtime::HashOf<R::BridgedChain>)
|
||||
where
|
||||
R: pallet_bridge_grandpa::Config<GI>,
|
||||
R: pezpallet_bridge_grandpa::Config<GI>,
|
||||
GI: 'static,
|
||||
R::BridgedChain: bp_runtime::Chain,
|
||||
{
|
||||
@@ -252,7 +252,7 @@ where
|
||||
Default::default(),
|
||||
);
|
||||
let bridged_header_hash = bridged_header.hash();
|
||||
pallet_bridge_grandpa::initialize_for_benchmarks::<R, GI>(bridged_header);
|
||||
pezpallet_bridge_grandpa::initialize_for_benchmarks::<R, GI>(bridged_header);
|
||||
(bridged_block_number, bridged_header_hash)
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ pub(crate) fn insert_header_to_teyrchains_pallet<R, PI, PC>(
|
||||
state_root: bp_runtime::HashOf<PC>,
|
||||
) -> (bp_runtime::BlockNumberOf<PC>, bp_runtime::HashOf<PC>)
|
||||
where
|
||||
R: pallet_bridge_teyrchains::Config<PI>,
|
||||
R: pezpallet_bridge_teyrchains::Config<PI>,
|
||||
PI: 'static,
|
||||
PC: Chain<Hash = ParaHash> + Teyrchain,
|
||||
{
|
||||
@@ -274,7 +274,7 @@ where
|
||||
Default::default(),
|
||||
);
|
||||
let bridged_header_hash = bridged_header.hash();
|
||||
pallet_bridge_teyrchains::initialize_for_benchmarks::<R, PI, PC>(bridged_header);
|
||||
pezpallet_bridge_teyrchains::initialize_for_benchmarks::<R, PI, PC>(bridged_header);
|
||||
(bridged_block_number, bridged_header_hash)
|
||||
}
|
||||
|
||||
|
||||
@@ -27,12 +27,12 @@ use bp_relayers::{PayRewardFromAccount, RewardsAccountParams};
|
||||
use bp_runtime::{messages::MessageDispatchResult, Chain, ChainId, Teyrchain};
|
||||
use bp_teyrchains::SingleParaStoredHeaderDataBuilder;
|
||||
use codec::Encode;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
derive_impl, parameter_types,
|
||||
weights::{ConstantMultiplier, IdentityFee, RuntimeDbWeight, Weight},
|
||||
};
|
||||
use pallet_transaction_payment::Multiplier;
|
||||
use sp_runtime::{
|
||||
use pezpallet_transaction_payment::Multiplier;
|
||||
use pezsp_runtime::{
|
||||
testing::H256,
|
||||
traits::{BlakeTwo256, ConstU32, ConstU64, ConstU8},
|
||||
FixedPointNumber, Perquintill, StateVersion,
|
||||
@@ -51,9 +51,9 @@ pub type ThisChainHasher = BlakeTwo256;
|
||||
/// Runtime call at `ThisChain`.
|
||||
pub type ThisChainRuntimeCall = RuntimeCall;
|
||||
/// Header of `ThisChain`.
|
||||
pub type ThisChainHeader = sp_runtime::generic::Header<ThisChainBlockNumber, ThisChainHasher>;
|
||||
pub type ThisChainHeader = pezsp_runtime::generic::Header<ThisChainBlockNumber, ThisChainHasher>;
|
||||
/// Block of `ThisChain`.
|
||||
pub type ThisChainBlock = frame_system::mocking::MockBlockU32<TestRuntime>;
|
||||
pub type ThisChainBlock = pezframe_system::mocking::MockBlockU32<TestRuntime>;
|
||||
|
||||
/// Account identifier at the `BridgedChain`.
|
||||
pub type BridgedChainAccountId = u128;
|
||||
@@ -67,7 +67,7 @@ pub type BridgedChainHash = H256;
|
||||
pub type BridgedChainHasher = BlakeTwo256;
|
||||
/// Header of the `BridgedChain`.
|
||||
pub type BridgedChainHeader =
|
||||
sp_runtime::generic::Header<BridgedChainBlockNumber, BridgedChainHasher>;
|
||||
pezsp_runtime::generic::Header<BridgedChainBlockNumber, BridgedChainHasher>;
|
||||
|
||||
/// Rewards payment procedure.
|
||||
pub type TestPaymentProcedure =
|
||||
@@ -75,7 +75,7 @@ pub type TestPaymentProcedure =
|
||||
/// Stake that we are using in tests.
|
||||
pub type TestStake = ConstU64<5_000>;
|
||||
/// Stake and slash mechanism to use in tests.
|
||||
pub type TestStakeAndSlash = pallet_bridge_relayers::StakeAndSlashNamed<
|
||||
pub type TestStakeAndSlash = pezpallet_bridge_relayers::StakeAndSlashNamed<
|
||||
ThisChainAccountId,
|
||||
ThisChainBlockNumber,
|
||||
Balances,
|
||||
@@ -98,17 +98,17 @@ pub const TEST_BRIDGED_CHAIN_ID: ChainId = *b"brdg";
|
||||
/// Maximal extrinsic size at the `BridgedChain`.
|
||||
pub const BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE: u32 = 1024;
|
||||
|
||||
frame_support::construct_runtime! {
|
||||
pezframe_support::construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Utility: pallet_utility,
|
||||
Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>},
|
||||
TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event<T>},
|
||||
BridgeRelayers: pallet_bridge_relayers::{Pallet, Call, Storage, Event<T>},
|
||||
BridgeGrandpa: pallet_bridge_grandpa::{Pallet, Call, Storage, Event<T>},
|
||||
BridgeTeyrchains: pallet_bridge_teyrchains::{Pallet, Call, Storage, Event<T>},
|
||||
BridgeMessages: pallet_bridge_messages::{Pallet, Call, Storage, Event<T>, Config<T>},
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Utility: pezpallet_utility,
|
||||
Balances: pezpallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>},
|
||||
TransactionPayment: pezpallet_transaction_payment::{Pallet, Storage, Event<T>},
|
||||
BridgeRelayers: pezpallet_bridge_relayers::{Pallet, Call, Storage, Event<T>},
|
||||
BridgeGrandpa: pezpallet_bridge_grandpa::{Pallet, Call, Storage, Event<T>},
|
||||
BridgeTeyrchains: pezpallet_bridge_teyrchains::{Pallet, Call, Storage, Event<T>},
|
||||
BridgeMessages: pezpallet_bridge_messages::{Pallet, Call, Storage, Event<T>, Config<T>},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,39 +126,39 @@ parameter_types! {
|
||||
pub const TransactionByteFee: ThisChainBalance = 1;
|
||||
pub AdjustmentVariable: Multiplier = Multiplier::saturating_from_rational(3, 100_000);
|
||||
pub MinimumMultiplier: Multiplier = Multiplier::saturating_from_rational(1, 1_000_000u128);
|
||||
pub MaximumMultiplier: Multiplier = sp_runtime::traits::Bounded::max_value();
|
||||
pub MaximumMultiplier: Multiplier = pezsp_runtime::traits::Bounded::max_value();
|
||||
pub const ReserveId: [u8; 8] = *b"brdgrlrs";
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Hash = ThisChainHash;
|
||||
type Hashing = ThisChainHasher;
|
||||
type AccountId = ThisChainAccountId;
|
||||
type Block = ThisChainBlock;
|
||||
type AccountData = pallet_balances::AccountData<ThisChainBalance>;
|
||||
type AccountData = pezpallet_balances::AccountData<ThisChainBalance>;
|
||||
}
|
||||
|
||||
impl pallet_utility::Config for TestRuntime {
|
||||
impl pezpallet_utility::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type RuntimeCall = RuntimeCall;
|
||||
type PalletsOrigin = OriginCaller;
|
||||
type WeightInfo = ();
|
||||
}
|
||||
|
||||
#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pallet_balances::Config for TestRuntime {
|
||||
#[derive_impl(pezpallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pezpallet_balances::Config for TestRuntime {
|
||||
type ReserveIdentifier = [u8; 8];
|
||||
type AccountStore = System;
|
||||
}
|
||||
|
||||
#[derive_impl(pallet_transaction_payment::config_preludes::TestDefaultConfig)]
|
||||
impl pallet_transaction_payment::Config for TestRuntime {
|
||||
type OnChargeTransaction = pallet_transaction_payment::FungibleAdapter<Balances, ()>;
|
||||
#[derive_impl(pezpallet_transaction_payment::config_preludes::TestDefaultConfig)]
|
||||
impl pezpallet_transaction_payment::Config for TestRuntime {
|
||||
type OnChargeTransaction = pezpallet_transaction_payment::FungibleAdapter<Balances, ()>;
|
||||
type OperationalFeeMultiplier = ConstU8<5>;
|
||||
type WeightToFee = IdentityFee<ThisChainBalance>;
|
||||
type LengthToFee = ConstantMultiplier<ThisChainBalance, TransactionByteFee>;
|
||||
type FeeMultiplierUpdate = pallet_transaction_payment::TargetedFeeAdjustment<
|
||||
type FeeMultiplierUpdate = pezpallet_transaction_payment::TargetedFeeAdjustment<
|
||||
TestRuntime,
|
||||
TargetBlockFullness,
|
||||
AdjustmentVariable,
|
||||
@@ -167,16 +167,16 @@ impl pallet_transaction_payment::Config for TestRuntime {
|
||||
>;
|
||||
}
|
||||
|
||||
impl pallet_bridge_grandpa::Config for TestRuntime {
|
||||
impl pezpallet_bridge_grandpa::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgedChain = BridgedUnderlyingChain;
|
||||
type MaxFreeHeadersPerBlock = ConstU32<4>;
|
||||
type FreeHeadersInterval = ConstU32<1_024>;
|
||||
type HeadersToKeep = ConstU32<8>;
|
||||
type WeightInfo = pallet_bridge_grandpa::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_grandpa::weights::BridgeWeight<TestRuntime>;
|
||||
}
|
||||
|
||||
impl pallet_bridge_teyrchains::Config for TestRuntime {
|
||||
impl pezpallet_bridge_teyrchains::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgesGrandpaPalletInstance = ();
|
||||
type ParasPalletName = BridgedParasPalletName;
|
||||
@@ -184,20 +184,20 @@ impl pallet_bridge_teyrchains::Config for TestRuntime {
|
||||
SingleParaStoredHeaderDataBuilder<BridgedUnderlyingTeyrchain>;
|
||||
type HeadsToKeep = ConstU32<8>;
|
||||
type MaxParaHeadDataSize = ConstU32<1024>;
|
||||
type WeightInfo = pallet_bridge_teyrchains::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_teyrchains::weights::BridgeWeight<TestRuntime>;
|
||||
type OnNewHead = ();
|
||||
}
|
||||
|
||||
impl pallet_bridge_messages::Config for TestRuntime {
|
||||
impl pezpallet_bridge_messages::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type WeightInfo = pallet_bridge_messages::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_messages::weights::BridgeWeight<TestRuntime>;
|
||||
|
||||
type OutboundPayload = Vec<u8>;
|
||||
type InboundPayload = Vec<u8>;
|
||||
type LaneId = TestLaneIdType;
|
||||
|
||||
type DeliveryPayments = ();
|
||||
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
|
||||
type DeliveryConfirmationPayments = pezpallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
|
||||
TestRuntime,
|
||||
(),
|
||||
(),
|
||||
@@ -212,10 +212,10 @@ impl pallet_bridge_messages::Config for TestRuntime {
|
||||
type BridgedHeaderChain = BridgeGrandpa;
|
||||
}
|
||||
|
||||
impl pallet_bridge_relayers::Config for TestRuntime {
|
||||
impl pezpallet_bridge_relayers::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type RewardBalance = RewardBalance;
|
||||
type Reward = RewardsAccountParams<pallet_bridge_messages::LaneIdOf<TestRuntime, ()>>;
|
||||
type Reward = RewardsAccountParams<pezpallet_bridge_messages::LaneIdOf<TestRuntime, ()>>;
|
||||
type PaymentProcedure = TestPaymentProcedure;
|
||||
type StakeAndSlash = TestStakeAndSlash;
|
||||
type Balance = ThisChainBalance;
|
||||
@@ -227,7 +227,7 @@ pub struct DummyMessageDispatch;
|
||||
|
||||
impl DummyMessageDispatch {
|
||||
pub fn deactivate(lane: TestLaneIdType) {
|
||||
frame_support::storage::unhashed::put(&(b"inactive", lane).encode()[..], &false);
|
||||
pezframe_support::storage::unhashed::put(&(b"inactive", lane).encode()[..], &false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ impl MessageDispatch for DummyMessageDispatch {
|
||||
type LaneId = TestLaneIdType;
|
||||
|
||||
fn is_active(lane: Self::LaneId) -> bool {
|
||||
frame_support::storage::unhashed::take::<bool>(&(b"inactive", lane).encode()[..]) !=
|
||||
pezframe_support::storage::unhashed::take::<bool>(&(b"inactive", lane).encode()[..]) !=
|
||||
Some(false)
|
||||
}
|
||||
|
||||
@@ -267,7 +267,7 @@ impl Chain for ThisUnderlyingChain {
|
||||
type AccountId = ThisChainAccountId;
|
||||
type Balance = ThisChainBalance;
|
||||
type Nonce = u32;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -302,7 +302,7 @@ impl Chain for BridgedUnderlyingChain {
|
||||
type AccountId = BridgedChainAccountId;
|
||||
type Balance = BridgedChainBalance;
|
||||
type Nonce = u32;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -338,7 +338,7 @@ impl Chain for BridgedUnderlyingTeyrchain {
|
||||
type AccountId = BridgedChainAccountId;
|
||||
type Balance = BridgedChainBalance;
|
||||
type Nonce = u32;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -357,5 +357,5 @@ impl Teyrchain for BridgedUnderlyingTeyrchain {
|
||||
|
||||
/// Run test within test externalities.
|
||||
pub fn run_test(test: impl FnOnce()) {
|
||||
sp_io::TestExternalities::new(Default::default()).execute_with(test)
|
||||
pezsp_io::TestExternalities::new(Default::default()).execute_with(test)
|
||||
}
|
||||
|
||||
@@ -26,9 +26,9 @@ use bp_teyrchains::{
|
||||
teyrchain_head_storage_key_at_source, RelayBlockHash, RelayBlockHasher, RelayBlockNumber,
|
||||
};
|
||||
use codec::Encode;
|
||||
use frame_support::traits::Get;
|
||||
use sp_std::prelude::*;
|
||||
use sp_trie::{trie_types::TrieDBMutBuilderV1, LayoutV1, MemoryDB, TrieMut};
|
||||
use pezframe_support::traits::Get;
|
||||
use pezsp_std::prelude::*;
|
||||
use pezsp_trie::{trie_types::TrieDBMutBuilderV1, LayoutV1, MemoryDB, TrieMut};
|
||||
|
||||
/// Prepare proof of messages for the `receive_messages_proof` call.
|
||||
///
|
||||
@@ -40,10 +40,10 @@ pub fn prepare_teyrchain_heads_proof<R, PI>(
|
||||
proof_params: UnverifiedStorageProofParams,
|
||||
) -> (RelayBlockNumber, RelayBlockHash, ParaHeadsProof, Vec<(ParaId, ParaHash)>)
|
||||
where
|
||||
R: pallet_bridge_teyrchains::Config<PI>
|
||||
+ pallet_bridge_grandpa::Config<R::BridgesGrandpaPalletInstance>,
|
||||
R: pezpallet_bridge_teyrchains::Config<PI>
|
||||
+ pezpallet_bridge_grandpa::Config<R::BridgesGrandpaPalletInstance>,
|
||||
PI: 'static,
|
||||
<R as pallet_bridge_grandpa::Config<R::BridgesGrandpaPalletInstance>>::BridgedChain:
|
||||
<R as pezpallet_bridge_grandpa::Config<R::BridgesGrandpaPalletInstance>>::BridgedChain:
|
||||
Chain<BlockNumber = RelayBlockNumber, Hash = RelayBlockHash>,
|
||||
{
|
||||
let teyrchain_head = ParaHead(vec![0u8; teyrchain_head_size as usize]);
|
||||
|
||||
+13
-13
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "bp-bridge-hub-cumulus"
|
||||
name = "bp-bridge-hub-pezcumulus"
|
||||
description = "Primitives for BridgeHub teyrchain runtimes."
|
||||
version = "0.7.0"
|
||||
authors.workspace = true
|
||||
@@ -19,11 +19,11 @@ bp-messages = { workspace = true }
|
||||
bp-pezkuwi-core = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Based Dependencies
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-api = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Based Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-api = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
teyrchains-common = { workspace = true }
|
||||
|
||||
# Pezkuwi Dependencies
|
||||
@@ -35,20 +35,20 @@ std = [
|
||||
"bp-messages/std",
|
||||
"bp-pezkuwi-core/std",
|
||||
"bp-runtime/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezkuwi-primitives/std",
|
||||
"sp-api/std",
|
||||
"sp-std/std",
|
||||
"pezsp-api/std",
|
||||
"pezsp-std/std",
|
||||
"teyrchains-common/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"bp-messages/runtime-benchmarks",
|
||||
"bp-pezkuwi-core/runtime-benchmarks",
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezkuwi-primitives/runtime-benchmarks",
|
||||
"sp-api/runtime-benchmarks",
|
||||
"pezsp-api/runtime-benchmarks",
|
||||
"teyrchains-common/runtime-benchmarks",
|
||||
]
|
||||
+12
-12
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Primitives of all Cumulus-based bridge hubs.
|
||||
//! Primitives of all Pezcumulus-based bridge hubs.
|
||||
|
||||
#![warn(missing_docs)]
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
@@ -35,16 +35,16 @@ use bp_pezkuwi_core::SuffixedCommonTransactionExtension;
|
||||
use bp_runtime::extensions::{
|
||||
BridgeRejectObsoleteHeadersAndMessages, RefundBridgedTeyrchainMessagesSchema,
|
||||
};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
dispatch::DispatchClass,
|
||||
parameter_types,
|
||||
sp_runtime::{MultiAddress, MultiSigner},
|
||||
pezsp_runtime::{MultiAddress, MultiSigner},
|
||||
weights::constants,
|
||||
};
|
||||
use frame_system::limits;
|
||||
use sp_std::time::Duration;
|
||||
use pezframe_system::limits;
|
||||
use pezsp_std::time::Duration;
|
||||
|
||||
/// Average block time for Cumulus-based teyrchains
|
||||
/// Average block time for Pezcumulus-based teyrchains
|
||||
pub const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_millis(SLOT_DURATION);
|
||||
|
||||
/// Maximal asset hub header size.
|
||||
@@ -54,7 +54,7 @@ pub const MAX_ASSET_HUB_HEADER_SIZE: u32 = 4_096;
|
||||
pub const MAX_BRIDGE_HUB_HEADER_SIZE: u32 = 4_096;
|
||||
|
||||
parameter_types! {
|
||||
/// Size limit of the Cumulus-based bridge hub blocks.
|
||||
/// Size limit of the Pezcumulus-based bridge hub blocks.
|
||||
pub BlockLength: limits::BlockLength = limits::BlockLength::max_with_normal_ratio(
|
||||
5 * 1024 * 1024,
|
||||
NORMAL_DISPATCH_RATIO,
|
||||
@@ -67,7 +67,7 @@ parameter_types! {
|
||||
pub const ExtrinsicBaseWeight: Weight = Weight::from_parts(constants::WEIGHT_REF_TIME_PER_NANOS, 0)
|
||||
.saturating_mul(125_000);
|
||||
|
||||
/// Weight limit of the Cumulus-based bridge hub blocks.
|
||||
/// Weight limit of the Pezcumulus-based bridge hub blocks.
|
||||
pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder()
|
||||
.base_block(BlockExecutionWeight::get())
|
||||
.for_class(DispatchClass::all(), |weights| {
|
||||
@@ -87,7 +87,7 @@ parameter_types! {
|
||||
.avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)
|
||||
.build_or_panic();
|
||||
|
||||
/// Weight limit of the Cumulus-based bridge hub blocks when async backing is enabled.
|
||||
/// Weight limit of the Pezcumulus-based bridge hub blocks when async backing is enabled.
|
||||
pub BlockWeightsForAsyncBacking: limits::BlockWeights = limits::BlockWeights::builder()
|
||||
.base_block(BlockExecutionWeight::get())
|
||||
.for_class(DispatchClass::all(), |weights| {
|
||||
@@ -116,7 +116,7 @@ pub type Address = MultiAddress<AccountId, ()>;
|
||||
|
||||
// Note about selecting values of two following constants:
|
||||
//
|
||||
// Normal transactions have limit of 75% of 1/2 second weight for Cumulus teyrchains. Let's keep
|
||||
// Normal transactions have limit of 75% of 1/2 second weight for Pezcumulus teyrchains. Let's keep
|
||||
// some reserve for the rest of stuff there => let's select values that fit in 50% of maximal limit.
|
||||
//
|
||||
// Using current constants, the limit would be:
|
||||
@@ -137,12 +137,12 @@ pub type Address = MultiAddress<AccountId, ()>;
|
||||
// assumptions, or something will change, it shall be caught by the
|
||||
// `ensure_able_to_receive_confirmation` test.
|
||||
|
||||
/// Maximal number of unrewarded relayer entries at inbound lane for Cumulus-based teyrchains.
|
||||
/// Maximal number of unrewarded relayer entries at inbound lane for Pezcumulus-based teyrchains.
|
||||
/// Note: this value is security-relevant, decreasing it should not be done without careful
|
||||
/// analysis (like the one above).
|
||||
pub const MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX: MessageNonce = 1024;
|
||||
|
||||
/// Maximal number of unconfirmed messages at inbound lane for Cumulus-based teyrchains.
|
||||
/// Maximal number of unconfirmed messages at inbound lane for Pezcumulus-based teyrchains.
|
||||
/// Note: this value is security-relevant, decreasing it should not be done without careful
|
||||
/// analysis (like the one above).
|
||||
pub const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce = 4096;
|
||||
@@ -23,12 +23,12 @@ bp-messages = { workspace = true }
|
||||
bp-pezkuwi-core = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Based Dependencies
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-api = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Based Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-api = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -38,20 +38,20 @@ std = [
|
||||
"bp-pezkuwi-core/std",
|
||||
"bp-runtime/std",
|
||||
"codec/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"scale-info/std",
|
||||
"sp-api/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-api/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"bp-header-chain/runtime-benchmarks",
|
||||
"bp-messages/runtime-benchmarks",
|
||||
"bp-pezkuwi-core/runtime-benchmarks",
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"sp-api/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezsp-api/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
|
||||
@@ -30,14 +30,14 @@ use bp_runtime::{
|
||||
Chain, ChainId, TransactionEra,
|
||||
};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
dispatch::DispatchClass,
|
||||
parameter_types,
|
||||
weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight},
|
||||
};
|
||||
use frame_system::limits;
|
||||
use pezframe_system::limits;
|
||||
use scale_info::TypeInfo;
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
impl_tx_ext_default, traits::Dispatchable, transaction_validity::TransactionValidityError,
|
||||
Perbill, StateVersion,
|
||||
};
|
||||
@@ -63,14 +63,14 @@ pub const WITH_PEZKUWI_BULLETIN_MESSAGES_PALLET_NAME: &str = "BridgePezkuwiBulle
|
||||
// percentage of the block for data storage.
|
||||
const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(90);
|
||||
|
||||
// Re following constants - we are using the same values at Cumulus teyrchains. They are limited
|
||||
// Re following constants - we are using the same values at Pezcumulus teyrchains. They are limited
|
||||
// by the maximal transaction weight/size. Since block limits at Bulletin Chain are larger than
|
||||
// at the Cumulus Bridge Hubs, we could reuse the same values.
|
||||
// at the Pezcumulus Bridge Hubs, we could reuse the same values.
|
||||
|
||||
/// Maximal number of unrewarded relayer entries at inbound lane for Cumulus-based teyrchains.
|
||||
/// Maximal number of unrewarded relayer entries at inbound lane for Pezcumulus-based teyrchains.
|
||||
pub const MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX: MessageNonce = 1024;
|
||||
|
||||
/// Maximal number of unconfirmed messages at inbound lane for Cumulus-based teyrchains.
|
||||
/// Maximal number of unconfirmed messages at inbound lane for Pezcumulus-based teyrchains.
|
||||
pub const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce = 4096;
|
||||
|
||||
/// This signed extension is used to ensure that the chain transactions are signed by proper
|
||||
@@ -94,16 +94,16 @@ pub type TransactionExtensionSchema = GenericTransactionExtension<(
|
||||
#[derive(Encode, Decode, DecodeWithMemTracking, Debug, PartialEq, Eq, Clone, TypeInfo)]
|
||||
pub struct TransactionExtension(TransactionExtensionSchema);
|
||||
|
||||
impl<C> sp_runtime::traits::TransactionExtension<C> for TransactionExtension
|
||||
impl<C> pezsp_runtime::traits::TransactionExtension<C> for TransactionExtension
|
||||
where
|
||||
C: Dispatchable,
|
||||
{
|
||||
const IDENTIFIER: &'static str = "Not needed.";
|
||||
type Implicit =
|
||||
<TransactionExtensionSchema as sp_runtime::traits::TransactionExtension<C>>::Implicit;
|
||||
<TransactionExtensionSchema as pezsp_runtime::traits::TransactionExtension<C>>::Implicit;
|
||||
|
||||
fn implicit(&self) -> Result<Self::Implicit, TransactionValidityError> {
|
||||
<TransactionExtensionSchema as sp_runtime::traits::TransactionExtension<C>>::implicit(
|
||||
<TransactionExtensionSchema as pezsp_runtime::traits::TransactionExtension<C>>::implicit(
|
||||
&self.0,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ Kusama Bridge](./pezkuwi-kusama-bridge-overview.md).
|
||||
|
||||
## Purpose
|
||||
|
||||
This repo contains all components required to build a trustless connection between standalone Substrate chains, that are
|
||||
This repo contains all components required to build a trustless connection between standalone Bizinikiwi chains, that are
|
||||
using GRANDPA finality, their teyrchains or any combination of those. On top of this connection, we offer a messaging
|
||||
pallet that provides means to organize messages exchange.
|
||||
|
||||
@@ -181,4 +181,4 @@ may perform its job. If on-demand relay is a teyrchain finality relay, it also r
|
||||
which is used to relay required relay chain headers.
|
||||
|
||||
More: [Complex Relay Sequence Diagram](./complex-relay.html),
|
||||
[code](../relays/bin-substrate/src/cli/relay_headers_and_messages/).
|
||||
[code](../relays/bin-bizinikiwi/src/cli/relay_headers_and_messages/).
|
||||
|
||||
@@ -61,7 +61,7 @@ is the relayer, which is following our rules:
|
||||
pays the full cost of the transaction;
|
||||
|
||||
- we compensate the cost of message delivery and all required finality calls, if they are part of the same
|
||||
[`frame_utility::batch_all`](https://github.com/paritytech/substrate/blob/891d6a5c870ab88521183facafc811a203bb6541/frame/utility/src/lib.rs#L326)
|
||||
[`frame_utility::batch_all`](https://github.com/paritytech/bizinikiwi/blob/891d6a5c870ab88521183facafc811a203bb6541/frame/utility/src/lib.rs#L326)
|
||||
transaction. Of course, the calls inside the batch must be linked - e.g. the submitted teyrchain head must be used to
|
||||
prove messages. Relay header must be used to prove teyrchain head finality. If one of calls fails, or if they are not
|
||||
linked together, the relayer pays the full transaction cost.
|
||||
@@ -126,6 +126,6 @@ bridge transactions with obsolete data from including into the block. We are rej
|
||||
- transactions, that are confirming delivery of already confirmed messages. If at least one of confirmations is new, the
|
||||
transaction is not rejected;
|
||||
|
||||
- [`frame_utility::batch_all`](https://github.com/paritytech/substrate/blob/891d6a5c870ab88521183facafc811a203bb6541/frame/utility/src/lib.rs#L326)
|
||||
- [`frame_utility::batch_all`](https://github.com/paritytech/bizinikiwi/blob/891d6a5c870ab88521183facafc811a203bb6541/frame/utility/src/lib.rs#L326)
|
||||
transactions, that have both finality and message delivery calls. All restrictions from the [Compensating the Cost of
|
||||
Message Delivery Transactions](#compensating-the-cost-of-message-delivery-transactions) are applied.
|
||||
|
||||
@@ -68,7 +68,7 @@ by lurking in the code.
|
||||
We also have the WiP prototype of relayers coordination protocol, where relayers will get some guarantee
|
||||
that their transactions will be prioritized over other relayers transactions at their assigned slots.
|
||||
That is planned for the future version of bridge and the progress is
|
||||
[tracked here](https://github.com/paritytech/parity-bridges-common/issues/2486).
|
||||
[tracked here](https://github.com/pezkuwichain/kurdistan-sdk/issues/85).
|
||||
|
||||
</details>
|
||||
|
||||
@@ -256,7 +256,7 @@ image reference and source files, required to build relayer manually.
|
||||
|
||||
Once you have the docker image, update variables and run the following script:
|
||||
```sh
|
||||
export DOCKER_IMAGE=<image-of-substrate-relay>
|
||||
export DOCKER_IMAGE=<image-of-bizinikiwi-relay>
|
||||
|
||||
export PEZKUWICHAIN_HOST=<pezkuwichain-ws-rpc-host-here>
|
||||
export PEZKUWICHAIN_PORT=<pezkuwichain-ws-rpc-port-here>
|
||||
@@ -326,7 +326,7 @@ docker run \
|
||||
..
|
||||
$DOCKER_IMAGE \
|
||||
relay-headers-and-messages bridge-hub-pezkuwichain-bridge-hub-zagros \
|
||||
--prometheus-host 0.0.0.0 \ # tell `substrate-relay` binary to accept Prometheus endpoint
|
||||
--prometheus-host 0.0.0.0 \ # tell `bizinikiwi-relay` binary to accept Prometheus endpoint
|
||||
# connections from everywhere
|
||||
..
|
||||
```
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "pallet-bridge-beefy"
|
||||
name = "pezpallet-bridge-beefy"
|
||||
version = "0.1.0"
|
||||
description = "Module implementing BEEFY on-chain light client used for bridging consensus of substrate-based chains."
|
||||
description = "Module implementing BEEFY on-chain light client used for bridging consensus of bizinikiwi-based chains."
|
||||
authors.workspace = true
|
||||
edition.workspace = true
|
||||
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
|
||||
@@ -21,21 +21,21 @@ tracing = { workspace = true }
|
||||
bp-beefy = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-core = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-core = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-test-utils = { workspace = true, default-features = true }
|
||||
mmr-lib = { workspace = true, default-features = true }
|
||||
pallet-beefy-mmr = { workspace = true, default-features = true }
|
||||
pallet-mmr = { workspace = true, default-features = true }
|
||||
pezpallet-beefy-mmr = { workspace = true, default-features = true }
|
||||
pezpallet-mmr = { workspace = true, default-features = true }
|
||||
rand = { workspace = true, default-features = true }
|
||||
sp-consensus-beefy = { workspace = true, default-features = true }
|
||||
sp-io = { workspace = true, default-features = true }
|
||||
pezsp-consensus-beefy = { workspace = true, default-features = true }
|
||||
pezsp-io = { workspace = true, default-features = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -43,31 +43,31 @@ std = [
|
||||
"bp-beefy/std",
|
||||
"bp-runtime/std",
|
||||
"codec/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"scale-info/std",
|
||||
"serde/std",
|
||||
"sp-core/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"tracing/std",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"pallet-beefy-mmr/try-runtime",
|
||||
"pallet-mmr/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezpallet-beefy-mmr/try-runtime",
|
||||
"pezpallet-mmr/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"bp-beefy/runtime-benchmarks",
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-test-utils/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pallet-beefy-mmr/runtime-benchmarks",
|
||||
"pallet-mmr/runtime-benchmarks",
|
||||
"sp-consensus-beefy/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezpallet-beefy-mmr/runtime-benchmarks",
|
||||
"pezpallet-mmr/runtime-benchmarks",
|
||||
"pezsp-consensus-beefy/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
//! BEEFY bridge pallet.
|
||||
//!
|
||||
//! This pallet is an on-chain BEEFY light client for Substrate-based chains that are using the
|
||||
//! following pallets bundle: `pallet-mmr`, `pallet-beefy` and `pallet-beefy-mmr`.
|
||||
//! This pallet is an on-chain BEEFY light client for Bizinikiwi-based chains that are using the
|
||||
//! following pallets bundle: `pezpallet-mmr`, `pezpallet-beefy` and `pezpallet-beefy-mmr`.
|
||||
//!
|
||||
//! The pallet is able to verify MMR leaf proofs and BEEFY commitments, so it has access
|
||||
//! to the following data of the bridged chain:
|
||||
@@ -33,7 +33,7 @@
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
|
||||
use bp_beefy::{ChainWithBeefy, InitializationData};
|
||||
use sp_std::{boxed::Box, prelude::*};
|
||||
use pezsp_std::{boxed::Box, prelude::*};
|
||||
|
||||
// Re-export in crate namespace for `construct_runtime!`
|
||||
pub use pallet::*;
|
||||
@@ -95,15 +95,15 @@ pub struct ImportedCommitmentsInfoData<BlockNumber> {
|
||||
next_block_number_index: u32,
|
||||
}
|
||||
|
||||
#[frame_support::pallet(dev_mode)]
|
||||
#[pezframe_support::pallet(dev_mode)]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use bp_runtime::{BasicOperatingMode, OwnedBridgeModule};
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use pezframe_support::pezpallet_prelude::*;
|
||||
use pezframe_system::pezpallet_prelude::*;
|
||||
|
||||
#[pallet::config]
|
||||
pub trait Config<I: 'static = ()>: frame_system::Config {
|
||||
pub trait Config<I: 'static = ()>: pezframe_system::Config {
|
||||
/// The upper bound on the number of requests allowed by the pallet.
|
||||
///
|
||||
/// A request refers to an action which writes a header to storage.
|
||||
@@ -131,7 +131,7 @@ pub mod pallet {
|
||||
|
||||
#[pallet::hooks]
|
||||
impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> {
|
||||
fn on_initialize(_n: BlockNumberFor<T>) -> frame_support::weights::Weight {
|
||||
fn on_initialize(_n: BlockNumberFor<T>) -> pezframe_support::weights::Weight {
|
||||
<RequestCount<T, I>>::mutate(|count| *count = count.saturating_sub(1));
|
||||
|
||||
Weight::from_parts(0, 0)
|
||||
@@ -328,7 +328,7 @@ pub mod pallet {
|
||||
StorageValue<_, BasicOperatingMode, ValueQuery>;
|
||||
|
||||
#[pallet::genesis_config]
|
||||
#[derive(frame_support::DefaultNoBound)]
|
||||
#[derive(pezframe_support::DefaultNoBound)]
|
||||
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
|
||||
/// Optional module owner account.
|
||||
pub owner: Option<T::AccountId>,
|
||||
@@ -417,17 +417,17 @@ mod tests {
|
||||
use super::*;
|
||||
use bp_runtime::{BasicOperatingMode, OwnedBridgeModuleError};
|
||||
use bp_test_utils::generate_owned_bridge_module_tests;
|
||||
use frame_support::{assert_noop, assert_ok, traits::Get};
|
||||
use pezframe_support::{assert_noop, assert_ok, traits::Get};
|
||||
use mock::*;
|
||||
use mock_chain::*;
|
||||
use sp_consensus_beefy::mmr::BeefyAuthoritySet;
|
||||
use sp_runtime::DispatchError;
|
||||
use pezsp_consensus_beefy::mmr::BeefyAuthoritySet;
|
||||
use pezsp_runtime::DispatchError;
|
||||
|
||||
fn next_block() {
|
||||
use frame_support::traits::OnInitialize;
|
||||
use pezframe_support::traits::OnInitialize;
|
||||
|
||||
let current_number = frame_system::Pallet::<TestRuntime>::block_number();
|
||||
frame_system::Pallet::<TestRuntime>::set_block_number(current_number + 1);
|
||||
let current_number = pezframe_system::Pallet::<TestRuntime>::block_number();
|
||||
pezframe_system::Pallet::<TestRuntime>::set_block_number(current_number + 1);
|
||||
let _ = Pallet::<TestRuntime>::on_initialize(current_number);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,17 +24,17 @@ use crate::{
|
||||
use bp_beefy::{BeefyValidatorSignatureOf, ChainWithBeefy, Commitment, MmrDataOrHash};
|
||||
use bp_runtime::{BasicOperatingMode, Chain, ChainId};
|
||||
use codec::Encode;
|
||||
use frame_support::{construct_runtime, derive_impl, weights::Weight};
|
||||
use sp_core::{sr25519::Signature, Pair};
|
||||
use sp_runtime::{
|
||||
use pezframe_support::{construct_runtime, derive_impl, weights::Weight};
|
||||
use pezsp_core::{sr25519::Signature, Pair};
|
||||
use pezsp_runtime::{
|
||||
testing::{Header, H256},
|
||||
traits::{BlakeTwo256, Hash},
|
||||
StateVersion,
|
||||
};
|
||||
|
||||
pub use sp_consensus_beefy::ecdsa_crypto::{AuthorityId as BeefyId, Pair as BeefyPair};
|
||||
use sp_core::crypto::Wraps;
|
||||
use sp_runtime::traits::Keccak256;
|
||||
pub use pezsp_consensus_beefy::ecdsa_crypto::{AuthorityId as BeefyId, Pair as BeefyPair};
|
||||
use pezsp_core::crypto::Wraps;
|
||||
use pezsp_runtime::traits::Keccak256;
|
||||
|
||||
pub type TestAccountId = u64;
|
||||
pub type TestBridgedBlockNumber = u64;
|
||||
@@ -49,7 +49,7 @@ pub type TestBridgedMmrHashing = BridgedMmrHashing<TestRuntime, ()>;
|
||||
pub type TestBridgedMmrHash = BridgedMmrHash<TestRuntime, ()>;
|
||||
pub type TestBridgedBeefyMmrLeafExtra = BridgedBeefyMmrLeafExtra<TestRuntime, ()>;
|
||||
pub type TestBridgedMmrProof = BridgedMmrProof<TestRuntime, ()>;
|
||||
pub type TestBridgedRawMmrLeaf = sp_consensus_beefy::mmr::MmrLeaf<
|
||||
pub type TestBridgedRawMmrLeaf = pezsp_consensus_beefy::mmr::MmrLeaf<
|
||||
TestBridgedBlockNumber,
|
||||
TestBridgedBlockHash,
|
||||
TestBridgedMmrHash,
|
||||
@@ -57,25 +57,25 @@ pub type TestBridgedRawMmrLeaf = sp_consensus_beefy::mmr::MmrLeaf<
|
||||
>;
|
||||
pub type TestBridgedMmrNode = MmrDataOrHash<Keccak256, TestBridgedRawMmrLeaf>;
|
||||
|
||||
type Block = frame_system::mocking::MockBlock<TestRuntime>;
|
||||
type Block = pezframe_system::mocking::MockBlock<TestRuntime>;
|
||||
|
||||
construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Beefy: beefy::{Pallet},
|
||||
}
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Block = Block;
|
||||
}
|
||||
|
||||
impl beefy::Config for TestRuntime {
|
||||
type MaxRequests = frame_support::traits::ConstU32<16>;
|
||||
type MaxRequests = pezframe_support::traits::ConstU32<16>;
|
||||
type BridgedChain = TestBridgedChain;
|
||||
type CommitmentsToKeep = frame_support::traits::ConstU32<16>;
|
||||
type CommitmentsToKeep = pezframe_support::traits::ConstU32<16>;
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -87,7 +87,7 @@ impl Chain for TestBridgedChain {
|
||||
type BlockNumber = TestBridgedBlockNumber;
|
||||
type Hash = H256;
|
||||
type Hasher = BlakeTwo256;
|
||||
type Header = sp_runtime::testing::Header;
|
||||
type Header = pezsp_runtime::testing::Header;
|
||||
|
||||
type AccountId = TestAccountId;
|
||||
type Balance = u64;
|
||||
@@ -110,12 +110,12 @@ impl ChainWithBeefy for TestBridgedChain {
|
||||
type MmrHash = <Keccak256 as Hash>::Output;
|
||||
type BeefyMmrLeafExtra = ();
|
||||
type AuthorityId = BeefyId;
|
||||
type AuthorityIdToMerkleLeaf = pallet_beefy_mmr::BeefyEcdsaToEthereum;
|
||||
type AuthorityIdToMerkleLeaf = pezpallet_beefy_mmr::BeefyEcdsaToEthereum;
|
||||
}
|
||||
|
||||
/// Run test within test runtime.
|
||||
pub fn run_test<T>(test: impl FnOnce() -> T) -> T {
|
||||
sp_io::TestExternalities::new(Default::default()).execute_with(test)
|
||||
pezsp_io::TestExternalities::new(Default::default()).execute_with(test)
|
||||
}
|
||||
|
||||
/// Initialize pallet and run test.
|
||||
@@ -141,7 +141,7 @@ pub fn run_test_with_initialize<T>(initial_validators_count: u32, test: impl FnO
|
||||
/// Import given commitment.
|
||||
pub fn import_commitment(
|
||||
header: crate::mock_chain::HeaderAndCommitment,
|
||||
) -> sp_runtime::DispatchResult {
|
||||
) -> pezsp_runtime::DispatchResult {
|
||||
crate::Pallet::<TestRuntime>::submit_commitment(
|
||||
RuntimeOrigin::signed(1),
|
||||
header
|
||||
|
||||
@@ -28,11 +28,11 @@ use crate::{
|
||||
|
||||
use bp_beefy::{BeefyPayload, Commitment, ValidatorSetId, MMR_ROOT_PAYLOAD_ID};
|
||||
use codec::Encode;
|
||||
use pallet_mmr::NodeIndex;
|
||||
use pezpallet_mmr::NodeIndex;
|
||||
use rand::Rng;
|
||||
use sp_consensus_beefy::mmr::{BeefyNextAuthoritySet, MmrLeafVersion};
|
||||
use sp_core::Pair;
|
||||
use sp_runtime::traits::{Hash, Header as HeaderT};
|
||||
use pezsp_consensus_beefy::mmr::{BeefyNextAuthoritySet, MmrLeafVersion};
|
||||
use pezsp_core::Pair;
|
||||
use pezsp_runtime::traits::{Hash, Header as HeaderT};
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
@@ -190,7 +190,7 @@ impl HeaderBuilder {
|
||||
next_validator_keys.iter().map(|pair| pair.public()).collect::<Vec<_>>();
|
||||
let next_validators_mmr_root =
|
||||
get_authorities_mmr_root::<TestRuntime, (), _>(next_validators.iter());
|
||||
let leaf = sp_consensus_beefy::mmr::MmrLeaf {
|
||||
let leaf = pezsp_consensus_beefy::mmr::MmrLeaf {
|
||||
version: MmrLeafVersion::new(1, 0),
|
||||
parent_number_and_hash: (header.number().saturating_sub(1), *header.parent_hash()),
|
||||
beefy_next_authority_set: BeefyNextAuthoritySet {
|
||||
|
||||
@@ -5,9 +5,9 @@ use crate::{
|
||||
};
|
||||
use bp_beefy::{merkle_root, verify_mmr_leaves_proof, BeefyAuthorityId, MmrDataOrHash};
|
||||
use codec::Encode;
|
||||
use frame_support::ensure;
|
||||
use sp_runtime::traits::{Convert, Hash};
|
||||
use sp_std::{vec, vec::Vec};
|
||||
use pezframe_support::ensure;
|
||||
use pezsp_runtime::traits::{Convert, Hash};
|
||||
use pezsp_std::{vec, vec::Vec};
|
||||
|
||||
type BridgedMmrDataOrHash<T, I> = MmrDataOrHash<BridgedMmrHashing<T, I>, BridgedBeefyMmrLeaf<T, I>>;
|
||||
/// A way to encode validator id to the BEEFY merkle tree leaf.
|
||||
@@ -161,8 +161,8 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::{mock::*, mock_chain::*, *};
|
||||
use bp_beefy::{BeefyPayload, MMR_ROOT_PAYLOAD_ID};
|
||||
use frame_support::{assert_noop, assert_ok};
|
||||
use sp_consensus_beefy::ValidatorSet;
|
||||
use pezframe_support::{assert_noop, assert_ok};
|
||||
use pezsp_consensus_beefy::ValidatorSet;
|
||||
|
||||
#[test]
|
||||
fn submit_commitment_checks_metadata() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "pallet-bridge-grandpa"
|
||||
name = "pezpallet-bridge-grandpa"
|
||||
version = "0.7.0"
|
||||
description = "Module implementing GRANDPA on-chain light client used for bridging consensus of substrate-based chains."
|
||||
description = "Module implementing GRANDPA on-chain light client used for bridging consensus of bizinikiwi-based chains."
|
||||
authors.workspace = true
|
||||
edition.workspace = true
|
||||
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
|
||||
@@ -21,21 +21,21 @@ tracing = { workspace = true }
|
||||
bp-header-chain = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-consensus-grandpa = { features = ["serde"], workspace = true }
|
||||
sp-runtime = { features = ["serde"], workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-consensus-grandpa = { features = ["serde"], workspace = true }
|
||||
pezsp-runtime = { features = ["serde"], workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
# Optional Benchmarking Dependencies
|
||||
bp-test-utils = { optional = true, workspace = true }
|
||||
frame-benchmarking = { optional = true, workspace = true }
|
||||
pezframe-benchmarking = { optional = true, workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-runtime = { features = ["test-helpers"], workspace = true }
|
||||
sp-core = { workspace = true, default-features = true }
|
||||
sp-io = { workspace = true, default-features = true }
|
||||
pezsp-core = { workspace = true, default-features = true }
|
||||
pezsp-io = { workspace = true, default-features = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -44,13 +44,13 @@ std = [
|
||||
"bp-runtime/std",
|
||||
"bp-test-utils/std",
|
||||
"codec/std",
|
||||
"frame-benchmarking/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pezframe-benchmarking/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"scale-info/std",
|
||||
"sp-consensus-grandpa/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-consensus-grandpa/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"tracing/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
@@ -58,15 +58,15 @@ runtime-benchmarks = [
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-test-utils",
|
||||
"bp-test-utils?/runtime-benchmarks",
|
||||
"frame-benchmarking/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"sp-consensus-grandpa/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-benchmarking/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezsp-consensus-grandpa/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
The bridge GRANDPA pallet is a light client for the GRANDPA finality gadget, running at the bridged chain.
|
||||
It may import headers and their GRANDPA finality proofs (justifications) of the bridged chain. Imported
|
||||
headers then may be used to verify storage proofs by other pallets. This makes the bridge GRANDPA pallet
|
||||
a basic pallet of all bridges with Substrate-based chains. It is used by all bridge types (bridge between
|
||||
a basic pallet of all bridges with Bizinikiwi-based chains. It is used by all bridge types (bridge between
|
||||
standalone chains, between teyrchains and any combination of those) and is used by other bridge pallets.
|
||||
It is used by the teyrchains light client (bridge teyrchains pallet) and by messages pallet.
|
||||
|
||||
@@ -12,10 +12,10 @@ It is used by the teyrchains light client (bridge teyrchains pallet) and by mess
|
||||
You can find detailed information on GRANDPA, by exploring its [repository](https://github.com/paritytech/finality-grandpa).
|
||||
Here is the minimal required GRANDPA information to understand how pallet works.
|
||||
|
||||
Any Substrate chain may use different block authorship algorithms (like BABE or Aura) to determine block producers and
|
||||
Any Bizinikiwi chain may use different block authorship algorithms (like BABE or Aura) to determine block producers and
|
||||
generate blocks. This has nothing common with finality, though - the task of block authorship is to coordinate
|
||||
blocks generation. Any block may be reverted (if there's a fork) if it is not finalized. The finality solution
|
||||
for (standalone) Substrate-based chains is the GRANDPA finality gadget. If some block is finalized by the gadget, it
|
||||
for (standalone) Bizinikiwi-based chains is the GRANDPA finality gadget. If some block is finalized by the gadget, it
|
||||
can't be reverted.
|
||||
|
||||
In GRANDPA, there are validators, identified by their public keys. They select some generated block and produce
|
||||
|
||||
@@ -48,11 +48,11 @@ use bp_test_utils::{
|
||||
accounts, make_justification_for_header, JustificationGeneratorParams, TEST_GRANDPA_ROUND,
|
||||
TEST_GRANDPA_SET_ID,
|
||||
};
|
||||
use frame_benchmarking::{benchmarks_instance_pallet, whitelisted_caller};
|
||||
use frame_system::RawOrigin;
|
||||
use sp_consensus_grandpa::AuthorityId;
|
||||
use sp_runtime::traits::{One, Zero};
|
||||
use sp_std::vec::Vec;
|
||||
use pezframe_benchmarking::{benchmarks_instance_pallet, whitelisted_caller};
|
||||
use pezframe_system::RawOrigin;
|
||||
use pezsp_consensus_grandpa::AuthorityId;
|
||||
use pezsp_runtime::traits::{One, Zero};
|
||||
use pezsp_std::vec::Vec;
|
||||
|
||||
/// The maximum number of vote ancestries to include in a justification.
|
||||
///
|
||||
@@ -71,7 +71,7 @@ const MAX_VOTE_ANCESTRIES_RANGE_END: u32 =
|
||||
fn precommits_range_end<T: Config<I>, I: 'static>() -> u32 {
|
||||
let max_bridged_authorities = T::BridgedChain::MAX_AUTHORITIES_COUNT;
|
||||
let max_bridged_authorities = if max_bridged_authorities > 128 {
|
||||
sp_std::cmp::max(128, max_bridged_authorities / 5)
|
||||
pezsp_std::cmp::max(128, max_bridged_authorities / 5)
|
||||
} else {
|
||||
max_bridged_authorities
|
||||
};
|
||||
|
||||
@@ -23,18 +23,18 @@ use bp_header_chain::{
|
||||
SubmitFinalityProofInfo,
|
||||
};
|
||||
use bp_runtime::{BlockNumberOf, Chain, OwnedBridgeModule};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
dispatch::CallableCallFor,
|
||||
traits::{Get, IsSubType},
|
||||
weights::Weight,
|
||||
};
|
||||
use sp_consensus_grandpa::SetId;
|
||||
use sp_runtime::{
|
||||
use pezsp_consensus_grandpa::SetId;
|
||||
use pezsp_runtime::{
|
||||
traits::{CheckedSub, Header, Zero},
|
||||
transaction_validity::{InvalidTransaction, TransactionValidityError},
|
||||
RuntimeDebug, SaturatedConversion,
|
||||
};
|
||||
use sp_std::fmt::Debug;
|
||||
use pezsp_std::fmt::Debug;
|
||||
|
||||
/// Verified `SubmitFinalityProofInfo<N>`.
|
||||
#[derive(Copy, Clone, PartialEq, RuntimeDebug)]
|
||||
@@ -48,7 +48,7 @@ pub struct VerifiedSubmitFinalityProofInfo<N: Debug> {
|
||||
|
||||
/// Helper struct that provides methods for working with the `SubmitFinalityProof` call.
|
||||
pub struct SubmitFinalityProofHelper<T: Config<I>, I: 'static> {
|
||||
_phantom_data: sp_std::marker::PhantomData<(T, I)>,
|
||||
_phantom_data: pezsp_std::marker::PhantomData<(T, I)>,
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> SubmitFinalityProofHelper<T, I> {
|
||||
@@ -314,8 +314,8 @@ mod tests {
|
||||
TEST_GRANDPA_SET_ID,
|
||||
};
|
||||
use codec::Encode;
|
||||
use frame_support::weights::Weight;
|
||||
use sp_runtime::{testing::DigestItem, traits::Header as _, SaturatedConversion};
|
||||
use pezframe_support::weights::Weight;
|
||||
use pezsp_runtime::{testing::DigestItem, traits::Header as _, SaturatedConversion};
|
||||
|
||||
fn validate_block_submit(num: TestNumber) -> bool {
|
||||
let bridge_grandpa_call = crate::Call::<TestRuntime, ()>::submit_finality_proof_ex {
|
||||
@@ -332,7 +332,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn sync_to_header_10() {
|
||||
let header10_hash = sp_core::H256::default();
|
||||
let header10_hash = pezsp_core::H256::default();
|
||||
BestFinalized::<TestRuntime, ()>::put(HeaderId(10, header10_hash));
|
||||
}
|
||||
|
||||
@@ -489,7 +489,7 @@ mod tests {
|
||||
// when `improved_by` is less than the free interval
|
||||
BestFinalized::<TestRuntime, ()>::put(HeaderId(
|
||||
100 - FreeHeadersInterval::get() as u64 + 1,
|
||||
sp_core::H256::default(),
|
||||
pezsp_core::H256::default(),
|
||||
));
|
||||
assert!(RuntimeCall::check_obsolete_submit_finality_proof(&RuntimeCall::Grandpa(
|
||||
bridge_grandpa_call.clone(),
|
||||
@@ -499,7 +499,7 @@ mod tests {
|
||||
// when `improved_by` is equal to the free interval
|
||||
BestFinalized::<TestRuntime, ()>::put(HeaderId(
|
||||
100 - FreeHeadersInterval::get() as u64,
|
||||
sp_core::H256::default(),
|
||||
pezsp_core::H256::default(),
|
||||
));
|
||||
assert!(RuntimeCall::check_obsolete_submit_finality_proof(&RuntimeCall::Grandpa(
|
||||
bridge_grandpa_call.clone(),
|
||||
@@ -509,7 +509,7 @@ mod tests {
|
||||
// when `improved_by` is larger than the free interval
|
||||
BestFinalized::<TestRuntime, ()>::put(HeaderId(
|
||||
100 - FreeHeadersInterval::get() as u64 - 1,
|
||||
sp_core::H256::default(),
|
||||
pezsp_core::H256::default(),
|
||||
));
|
||||
assert!(RuntimeCall::check_obsolete_submit_finality_proof(&RuntimeCall::Grandpa(
|
||||
bridge_grandpa_call.clone(),
|
||||
@@ -518,15 +518,15 @@ mod tests {
|
||||
|
||||
// when `improved_by` is less than the free interval BUT it is a mandatory header
|
||||
let mut mandatory_header = test_header(100);
|
||||
let consensus_log = sp_consensus_grandpa::ConsensusLog::<TestNumber>::ScheduledChange(
|
||||
sp_consensus_grandpa::ScheduledChange {
|
||||
let consensus_log = pezsp_consensus_grandpa::ConsensusLog::<TestNumber>::ScheduledChange(
|
||||
pezsp_consensus_grandpa::ScheduledChange {
|
||||
next_authorities: bp_test_utils::authority_list(),
|
||||
delay: 0,
|
||||
},
|
||||
);
|
||||
mandatory_header.digest = sp_runtime::Digest {
|
||||
mandatory_header.digest = pezsp_runtime::Digest {
|
||||
logs: vec![DigestItem::Consensus(
|
||||
sp_consensus_grandpa::GRANDPA_ENGINE_ID,
|
||||
pezsp_consensus_grandpa::GRANDPA_ENGINE_ID,
|
||||
consensus_log.encode(),
|
||||
)],
|
||||
};
|
||||
@@ -543,7 +543,7 @@ mod tests {
|
||||
};
|
||||
BestFinalized::<TestRuntime, ()>::put(HeaderId(
|
||||
100 - FreeHeadersInterval::get() as u64 + 1,
|
||||
sp_core::H256::default(),
|
||||
pezsp_core::H256::default(),
|
||||
));
|
||||
assert!(RuntimeCall::check_obsolete_submit_finality_proof(&RuntimeCall::Grandpa(
|
||||
bridge_grandpa_call.clone(),
|
||||
@@ -712,7 +712,7 @@ mod tests {
|
||||
fn check_obsolete_submit_finality_proof_ignores_other_calls() {
|
||||
run_test(|| {
|
||||
let call =
|
||||
RuntimeCall::System(frame_system::Call::<TestRuntime>::remark { remark: vec![42] });
|
||||
RuntimeCall::System(pezframe_system::Call::<TestRuntime>::remark { remark: vec![42] });
|
||||
|
||||
assert_eq!(RuntimeCall::check_obsolete_submit_finality_proof(&call), Ok(None));
|
||||
})
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Substrate GRANDPA Pallet
|
||||
//! Bizinikiwi GRANDPA Pallet
|
||||
//!
|
||||
//! This pallet is an on-chain GRANDPA light client for Substrate based chains.
|
||||
//! This pallet is an on-chain GRANDPA light client for Bizinikiwi based chains.
|
||||
//!
|
||||
//! This pallet achieves this by trustlessly verifying GRANDPA finality proofs on-chain. Once
|
||||
//! verified, finalized headers are stored in the pallet, thereby creating a sparse header chain.
|
||||
@@ -43,13 +43,13 @@ use bp_header_chain::{
|
||||
StoredHeaderGrandpaInfo,
|
||||
};
|
||||
use bp_runtime::{BlockNumberOf, HashOf, HasherOf, HeaderId, HeaderOf, OwnedBridgeModule};
|
||||
use frame_support::{dispatch::PostDispatchInfo, ensure, DefaultNoBound};
|
||||
use sp_consensus_grandpa::{AuthorityList, SetId};
|
||||
use sp_runtime::{
|
||||
use pezframe_support::{dispatch::PostDispatchInfo, ensure, DefaultNoBound};
|
||||
use pezsp_consensus_grandpa::{AuthorityList, SetId};
|
||||
use pezsp_runtime::{
|
||||
traits::{Header as HeaderT, Zero},
|
||||
SaturatedConversion,
|
||||
};
|
||||
use sp_std::{boxed::Box, prelude::*};
|
||||
use pezsp_std::{boxed::Box, prelude::*};
|
||||
|
||||
mod call_ext;
|
||||
#[cfg(test)]
|
||||
@@ -88,19 +88,19 @@ pub type BridgedHeader<T, I> = HeaderOf<<T as Config<I>>::BridgedChain>;
|
||||
pub type BridgedStoredHeaderData<T, I> =
|
||||
StoredHeaderData<BridgedBlockNumber<T, I>, BridgedBlockHash<T, I>>;
|
||||
|
||||
#[frame_support::pallet]
|
||||
#[pezframe_support::pallet]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use bp_runtime::BasicOperatingMode;
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use pezframe_support::pezpallet_prelude::*;
|
||||
use pezframe_system::pezpallet_prelude::*;
|
||||
|
||||
#[pallet::config]
|
||||
pub trait Config<I: 'static = ()>: frame_system::Config {
|
||||
pub trait Config<I: 'static = ()>: pezframe_system::Config {
|
||||
/// The overarching event type.
|
||||
#[allow(deprecated)]
|
||||
type RuntimeEvent: From<Event<Self, I>>
|
||||
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
|
||||
+ IsType<<Self as pezframe_system::Config>::RuntimeEvent>;
|
||||
|
||||
/// The chain we are bridging to here.
|
||||
type BridgedChain: ChainWithGrandpa;
|
||||
@@ -285,7 +285,7 @@ pub mod pallet {
|
||||
origin: OriginFor<T>,
|
||||
finality_target: Box<BridgedHeader<T, I>>,
|
||||
justification: GrandpaJustification<BridgedHeader<T, I>>,
|
||||
current_set_id: sp_consensus_grandpa::SetId,
|
||||
current_set_id: pezsp_consensus_grandpa::SetId,
|
||||
_is_free_execution_expected: bool,
|
||||
) -> DispatchResultWithPostInfo {
|
||||
Self::ensure_not_halted().map_err(Error::<T, I>::BridgeModule)?;
|
||||
@@ -610,7 +610,7 @@ pub mod pallet {
|
||||
/// Returned value will indicate if a change was enacted or not.
|
||||
pub(crate) fn try_enact_authority_change<T: Config<I>, I: 'static>(
|
||||
header: &BridgedHeader<T, I>,
|
||||
current_set_id: sp_consensus_grandpa::SetId,
|
||||
current_set_id: pezsp_consensus_grandpa::SetId,
|
||||
) -> Result<Option<AuthoritySet>, DispatchError> {
|
||||
// We don't support forced changes - at that point governance intervention is required.
|
||||
ensure!(
|
||||
@@ -678,7 +678,7 @@ pub mod pallet {
|
||||
hash: BridgedBlockHash<T, I>,
|
||||
number: BridgedBlockNumber<T, I>,
|
||||
authority_set: bp_header_chain::AuthoritySet,
|
||||
) -> Result<(), sp_runtime::DispatchError> {
|
||||
) -> Result<(), pezsp_runtime::DispatchError> {
|
||||
use bp_header_chain::justification::verify_justification;
|
||||
|
||||
Ok(verify_justification::<BridgedHeader<T, I>>(
|
||||
@@ -783,11 +783,11 @@ pub mod pallet {
|
||||
|
||||
impl<T: Config<I>, I: 'static> Pallet<T, I>
|
||||
where
|
||||
<T as frame_system::Config>::RuntimeEvent: TryInto<Event<T, I>>,
|
||||
<T as pezframe_system::Config>::RuntimeEvent: TryInto<Event<T, I>>,
|
||||
{
|
||||
/// Get the GRANDPA justifications accepted in the current block.
|
||||
pub fn synced_headers_grandpa_info() -> Vec<StoredHeaderGrandpaInfo<BridgedHeader<T, I>>> {
|
||||
frame_system::Pallet::<T>::read_events_no_consensus()
|
||||
pezframe_system::Pallet::<T>::read_events_no_consensus()
|
||||
.filter_map(|event| {
|
||||
let Event::<T, I>::UpdatedBestFinalizedHeader { grandpa_info, .. } =
|
||||
event.event.try_into().ok()?;
|
||||
@@ -808,12 +808,12 @@ impl<T: Config<I>, I: 'static> HeaderChain<BridgedChain<T, I>> for GrandpaChainH
|
||||
}
|
||||
}
|
||||
|
||||
/// (Re)initialize bridge with given header for using it in `pallet-bridge-messages` benchmarks.
|
||||
/// (Re)initialize bridge with given header for using it in `pezpallet-bridge-messages` benchmarks.
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
pub fn initialize_for_benchmarks<T: Config<I>, I: 'static>(header: BridgedHeader<T, I>) {
|
||||
initialize_bridge::<T, I>(InitializationData {
|
||||
header: Box::new(header),
|
||||
authority_list: sp_std::vec::Vec::new(), /* we don't verify any proofs in external
|
||||
authority_list: pezsp_std::vec::Vec::new(), /* we don't verify any proofs in external
|
||||
* benchmarks */
|
||||
set_id: 0,
|
||||
operating_mode: bp_runtime::BasicOperatingMode::Normal,
|
||||
@@ -843,17 +843,17 @@ mod tests {
|
||||
TEST_GRANDPA_SET_ID,
|
||||
};
|
||||
use codec::Encode;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
assert_err, assert_noop, assert_ok,
|
||||
dispatch::{Pays, PostDispatchInfo},
|
||||
storage::generator::StorageValue,
|
||||
};
|
||||
use frame_system::{EventRecord, Phase};
|
||||
use sp_consensus_grandpa::{ConsensusLog, GRANDPA_ENGINE_ID};
|
||||
use sp_core::Get;
|
||||
use sp_runtime::{Digest, DigestItem, DispatchError};
|
||||
use pezframe_system::{EventRecord, Phase};
|
||||
use pezsp_consensus_grandpa::{ConsensusLog, GRANDPA_ENGINE_ID};
|
||||
use pezsp_core::Get;
|
||||
use pezsp_runtime::{Digest, DigestItem, DispatchError};
|
||||
|
||||
fn initialize_substrate_bridge() {
|
||||
fn initialize_bizinikiwi_bridge() {
|
||||
System::set_block_number(1);
|
||||
System::reset_events();
|
||||
|
||||
@@ -864,7 +864,7 @@ mod tests {
|
||||
origin: RuntimeOrigin,
|
||||
) -> Result<
|
||||
InitializationData<TestHeader>,
|
||||
sp_runtime::DispatchErrorWithPostInfo<PostDispatchInfo>,
|
||||
pezsp_runtime::DispatchErrorWithPostInfo<PostDispatchInfo>,
|
||||
> {
|
||||
let genesis = test_header(0);
|
||||
|
||||
@@ -878,7 +878,7 @@ mod tests {
|
||||
Pallet::<TestRuntime>::initialize(origin, init_data.clone()).map(|_| init_data)
|
||||
}
|
||||
|
||||
fn submit_finality_proof(header: u8) -> frame_support::dispatch::DispatchResultWithPostInfo {
|
||||
fn submit_finality_proof(header: u8) -> pezframe_support::dispatch::DispatchResultWithPostInfo {
|
||||
let header = test_header(header.into());
|
||||
let justification = make_default_justification(&header);
|
||||
|
||||
@@ -894,7 +894,7 @@ mod tests {
|
||||
fn submit_finality_proof_with_set_id(
|
||||
header: u8,
|
||||
set_id: u64,
|
||||
) -> frame_support::dispatch::DispatchResultWithPostInfo {
|
||||
) -> pezframe_support::dispatch::DispatchResultWithPostInfo {
|
||||
let header = test_header(header.into());
|
||||
let justification = make_justification_for_header(JustificationGeneratorParams {
|
||||
header: header.clone(),
|
||||
@@ -914,12 +914,12 @@ mod tests {
|
||||
fn submit_mandatory_finality_proof(
|
||||
number: u8,
|
||||
set_id: u64,
|
||||
) -> frame_support::dispatch::DispatchResultWithPostInfo {
|
||||
) -> pezframe_support::dispatch::DispatchResultWithPostInfo {
|
||||
let mut header = test_header(number.into());
|
||||
// to ease tests that are using `submit_mandatory_finality_proof`, we'll be using the
|
||||
// same set for all sessions
|
||||
let consensus_log =
|
||||
ConsensusLog::<TestNumber>::ScheduledChange(sp_consensus_grandpa::ScheduledChange {
|
||||
ConsensusLog::<TestNumber>::ScheduledChange(pezsp_consensus_grandpa::ScheduledChange {
|
||||
next_authorities: authority_list(),
|
||||
delay: 0,
|
||||
});
|
||||
@@ -941,16 +941,16 @@ mod tests {
|
||||
}
|
||||
|
||||
fn next_block() {
|
||||
use frame_support::traits::OnInitialize;
|
||||
use pezframe_support::traits::OnInitialize;
|
||||
|
||||
let current_number = frame_system::Pallet::<TestRuntime>::block_number();
|
||||
frame_system::Pallet::<TestRuntime>::set_block_number(current_number + 1);
|
||||
let current_number = pezframe_system::Pallet::<TestRuntime>::block_number();
|
||||
pezframe_system::Pallet::<TestRuntime>::set_block_number(current_number + 1);
|
||||
let _ = Pallet::<TestRuntime>::on_initialize(current_number);
|
||||
}
|
||||
|
||||
fn change_log(delay: u64) -> Digest {
|
||||
let consensus_log =
|
||||
ConsensusLog::<TestNumber>::ScheduledChange(sp_consensus_grandpa::ScheduledChange {
|
||||
ConsensusLog::<TestNumber>::ScheduledChange(pezsp_consensus_grandpa::ScheduledChange {
|
||||
next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)],
|
||||
delay,
|
||||
});
|
||||
@@ -961,7 +961,7 @@ mod tests {
|
||||
fn forced_change_log(delay: u64) -> Digest {
|
||||
let consensus_log = ConsensusLog::<TestNumber>::ForcedChange(
|
||||
delay,
|
||||
sp_consensus_grandpa::ScheduledChange {
|
||||
pezsp_consensus_grandpa::ScheduledChange {
|
||||
next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)],
|
||||
delay,
|
||||
},
|
||||
@@ -972,7 +972,7 @@ mod tests {
|
||||
|
||||
fn many_authorities_log() -> Digest {
|
||||
let consensus_log =
|
||||
ConsensusLog::<TestNumber>::ScheduledChange(sp_consensus_grandpa::ScheduledChange {
|
||||
ConsensusLog::<TestNumber>::ScheduledChange(pezsp_consensus_grandpa::ScheduledChange {
|
||||
next_authorities: std::iter::repeat((ALICE.into(), 1))
|
||||
.take(MAX_BRIDGED_AUTHORITIES as usize + 1)
|
||||
.collect(),
|
||||
@@ -1020,7 +1020,7 @@ mod tests {
|
||||
#[test]
|
||||
fn init_can_only_initialize_pallet_once() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
assert_noop!(
|
||||
init_with_origin(RuntimeOrigin::root()),
|
||||
<Error<TestRuntime>>::AlreadyInitialized
|
||||
@@ -1049,9 +1049,9 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pallet_rejects_transactions_if_halted() {
|
||||
fn pezpallet_rejects_transactions_if_halted() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
assert_ok!(Pallet::<TestRuntime>::set_operating_mode(
|
||||
RuntimeOrigin::root(),
|
||||
@@ -1071,7 +1071,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pallet_rejects_header_if_not_initialized_yet() {
|
||||
fn pezpallet_rejects_header_if_not_initialized_yet() {
|
||||
run_test(|| {
|
||||
assert_noop!(submit_finality_proof(1), Error::<TestRuntime>::NotInitialized);
|
||||
});
|
||||
@@ -1080,7 +1080,7 @@ mod tests {
|
||||
#[test]
|
||||
fn successfully_imports_header_with_valid_finality() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let header_number = 1;
|
||||
let header = test_header(header_number.into());
|
||||
@@ -1093,7 +1093,7 @@ mod tests {
|
||||
|
||||
let result = submit_finality_proof(header_number);
|
||||
assert_ok!(result);
|
||||
assert_eq!(result.unwrap().pays_fee, frame_support::dispatch::Pays::Yes);
|
||||
assert_eq!(result.unwrap().pays_fee, pezframe_support::dispatch::Pays::Yes);
|
||||
// our test config assumes 2048 max authorities and we are just using couple
|
||||
let pre_dispatch_proof_size = pre_dispatch_weight.proof_size();
|
||||
let actual_proof_size = result.unwrap().actual_weight.unwrap().proof_size();
|
||||
@@ -1135,7 +1135,7 @@ mod tests {
|
||||
#[test]
|
||||
fn rejects_justification_that_skips_authority_set_transition() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let header = test_header(1);
|
||||
|
||||
@@ -1172,7 +1172,7 @@ mod tests {
|
||||
#[test]
|
||||
fn does_not_import_header_with_invalid_finality_proof() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let header = test_header(1);
|
||||
let mut justification = make_default_justification(&header);
|
||||
@@ -1225,7 +1225,7 @@ mod tests {
|
||||
#[test]
|
||||
fn importing_header_ensures_that_chain_is_extended() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
assert_ok!(submit_finality_proof(4));
|
||||
assert_err!(submit_finality_proof(3), Error::<TestRuntime>::OldHeader);
|
||||
@@ -1236,7 +1236,7 @@ mod tests {
|
||||
#[test]
|
||||
fn importing_header_enacts_new_authority_set() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let next_set_id = 2;
|
||||
let next_authorities = vec![(ALICE.into(), 1), (BOB.into(), 1)];
|
||||
@@ -1258,7 +1258,7 @@ mod tests {
|
||||
false,
|
||||
);
|
||||
assert_ok!(result);
|
||||
assert_eq!(result.unwrap().pays_fee, frame_support::dispatch::Pays::No);
|
||||
assert_eq!(result.unwrap().pays_fee, pezframe_support::dispatch::Pays::No);
|
||||
|
||||
// Make sure that our header is the best finalized
|
||||
assert_eq!(<BestFinalized<TestRuntime>>::get().unwrap().1, header.hash());
|
||||
@@ -1304,7 +1304,7 @@ mod tests {
|
||||
#[test]
|
||||
fn relayer_pays_tx_fee_when_submitting_huge_mandatory_header() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
// let's prepare a huge authorities change header, which is definitely above size limits
|
||||
let mut header = test_header(2);
|
||||
@@ -1322,7 +1322,7 @@ mod tests {
|
||||
false,
|
||||
);
|
||||
assert_ok!(result);
|
||||
assert_eq!(result.unwrap().pays_fee, frame_support::dispatch::Pays::Yes);
|
||||
assert_eq!(result.unwrap().pays_fee, pezframe_support::dispatch::Pays::Yes);
|
||||
|
||||
// Make sure that our header is the best finalized
|
||||
assert_eq!(<BestFinalized<TestRuntime>>::get().unwrap().1, header.hash());
|
||||
@@ -1333,7 +1333,7 @@ mod tests {
|
||||
#[test]
|
||||
fn relayer_pays_tx_fee_when_submitting_justification_with_long_ancestry_votes() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
// let's prepare a huge authorities change header, which is definitely above weight
|
||||
// limits
|
||||
@@ -1355,7 +1355,7 @@ mod tests {
|
||||
false,
|
||||
);
|
||||
assert_ok!(result);
|
||||
assert_eq!(result.unwrap().pays_fee, frame_support::dispatch::Pays::Yes);
|
||||
assert_eq!(result.unwrap().pays_fee, pezframe_support::dispatch::Pays::Yes);
|
||||
|
||||
// Make sure that our header is the best finalized
|
||||
assert_eq!(<BestFinalized<TestRuntime>>::get().unwrap().1, header.hash());
|
||||
@@ -1366,7 +1366,7 @@ mod tests {
|
||||
#[test]
|
||||
fn importing_header_rejects_header_with_scheduled_change_delay() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
// Need to update the header digest to indicate that our header signals an authority set
|
||||
// change. However, the change doesn't happen until the next block.
|
||||
@@ -1393,7 +1393,7 @@ mod tests {
|
||||
#[test]
|
||||
fn importing_header_rejects_header_with_forced_changes() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
// Need to update the header digest to indicate that it signals a forced authority set
|
||||
// change.
|
||||
@@ -1420,7 +1420,7 @@ mod tests {
|
||||
#[test]
|
||||
fn importing_header_rejects_header_with_too_many_authorities() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
// Need to update the header digest to indicate that our header signals an authority set
|
||||
// change. However, the change doesn't happen until the next block.
|
||||
@@ -1477,7 +1477,7 @@ mod tests {
|
||||
#[test]
|
||||
fn rate_limiter_disallows_free_imports_once_limit_is_hit_in_single_block() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let result = submit_mandatory_finality_proof(1, 1);
|
||||
assert_eq!(result.expect("call failed").pays_fee, Pays::No);
|
||||
@@ -1508,7 +1508,7 @@ mod tests {
|
||||
)
|
||||
};
|
||||
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
for _ in 0..<TestRuntime as Config>::MaxFreeHeadersPerBlock::get() + 1 {
|
||||
assert_err!(submit_invalid_request(), <Error<TestRuntime>>::InvalidJustification);
|
||||
@@ -1529,7 +1529,7 @@ mod tests {
|
||||
#[test]
|
||||
fn rate_limiter_allows_request_after_new_block_has_started() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let result = submit_mandatory_finality_proof(1, 1);
|
||||
assert_eq!(result.expect("call failed").pays_fee, Pays::No);
|
||||
@@ -1556,7 +1556,7 @@ mod tests {
|
||||
#[test]
|
||||
fn rate_limiter_ignores_non_mandatory_headers() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let result = submit_finality_proof(1);
|
||||
assert_eq!(result.expect("call failed").pays_fee, Pays::Yes);
|
||||
@@ -1581,7 +1581,7 @@ mod tests {
|
||||
#[test]
|
||||
fn may_import_non_mandatory_header_for_free() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
// set best finalized to `100`
|
||||
const BEST: u8 = 12;
|
||||
@@ -1639,7 +1639,7 @@ mod tests {
|
||||
#[test]
|
||||
fn should_prune_headers_over_headers_to_keep_parameter() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
assert_ok!(submit_finality_proof(1));
|
||||
let first_header_hash = Pallet::<TestRuntime>::best_finalized().unwrap().hash();
|
||||
next_block();
|
||||
@@ -1666,7 +1666,7 @@ mod tests {
|
||||
fn storage_keys_computed_properly() {
|
||||
assert_eq!(
|
||||
PalletOperatingMode::<TestRuntime>::storage_value_final_key().to_vec(),
|
||||
bp_header_chain::storage_keys::pallet_operating_mode_key("Grandpa").0,
|
||||
bp_header_chain::storage_keys::pezpallet_operating_mode_key("Grandpa").0,
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
@@ -1721,7 +1721,7 @@ mod tests {
|
||||
#[test]
|
||||
fn submit_finality_proof_requires_signed_origin() {
|
||||
run_test(|| {
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
|
||||
let header = test_header(1);
|
||||
let justification = make_default_justification(&header);
|
||||
@@ -1765,7 +1765,7 @@ mod tests {
|
||||
.collect();
|
||||
|
||||
// initialize and import several headers
|
||||
initialize_substrate_bridge();
|
||||
initialize_bizinikiwi_bridge();
|
||||
assert_ok!(submit_finality_proof(30));
|
||||
|
||||
// wrong origin => error
|
||||
|
||||
@@ -19,17 +19,17 @@
|
||||
|
||||
use bp_header_chain::ChainWithGrandpa;
|
||||
use bp_runtime::{Chain, ChainId};
|
||||
use frame_support::{
|
||||
construct_runtime, derive_impl, parameter_types, sp_runtime::StateVersion, traits::Hooks,
|
||||
use pezframe_support::{
|
||||
construct_runtime, derive_impl, parameter_types, pezsp_runtime::StateVersion, traits::Hooks,
|
||||
weights::Weight,
|
||||
};
|
||||
use sp_core::sr25519::Signature;
|
||||
use pezsp_core::sr25519::Signature;
|
||||
|
||||
pub type AccountId = u64;
|
||||
pub type TestHeader = sp_runtime::testing::Header;
|
||||
pub type TestHeader = pezsp_runtime::testing::Header;
|
||||
pub type TestNumber = u64;
|
||||
|
||||
type Block = frame_system::mocking::MockBlock<TestRuntime>;
|
||||
type Block = pezframe_system::mocking::MockBlock<TestRuntime>;
|
||||
|
||||
pub const MAX_BRIDGED_AUTHORITIES: u32 = 5;
|
||||
|
||||
@@ -38,13 +38,13 @@ use crate as grandpa;
|
||||
construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Grandpa: grandpa::{Pallet, Call, Event<T>},
|
||||
}
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Block = Block;
|
||||
}
|
||||
|
||||
@@ -69,9 +69,9 @@ pub struct TestBridgedChain;
|
||||
impl Chain for TestBridgedChain {
|
||||
const ID: ChainId = *b"tbch";
|
||||
|
||||
type BlockNumber = frame_system::pallet_prelude::BlockNumberFor<TestRuntime>;
|
||||
type Hash = <TestRuntime as frame_system::Config>::Hash;
|
||||
type Hasher = <TestRuntime as frame_system::Config>::Hashing;
|
||||
type BlockNumber = pezframe_system::pezpallet_prelude::BlockNumberFor<TestRuntime>;
|
||||
type Hash = <TestRuntime as pezframe_system::Config>::Hash;
|
||||
type Hasher = <TestRuntime as pezframe_system::Config>::Hashing;
|
||||
type Header = TestHeader;
|
||||
|
||||
type AccountId = AccountId;
|
||||
@@ -98,8 +98,8 @@ impl ChainWithGrandpa for TestBridgedChain {
|
||||
}
|
||||
|
||||
/// Return test externalities to use in tests.
|
||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||
sp_io::TestExternalities::new(Default::default())
|
||||
pub fn new_test_ext() -> pezsp_io::TestExternalities {
|
||||
pezsp_io::TestExternalities::new(Default::default())
|
||||
}
|
||||
|
||||
/// Return test within default test externalities context.
|
||||
|
||||
@@ -20,10 +20,10 @@ use crate::{Config, Error};
|
||||
|
||||
use bp_header_chain::{AuthoritySet, ChainWithGrandpa};
|
||||
use codec::{Decode, Encode, MaxEncodedLen};
|
||||
use frame_support::{traits::Get, BoundedVec, CloneNoBound, RuntimeDebugNoBound};
|
||||
use pezframe_support::{traits::Get, BoundedVec, CloneNoBound, RuntimeDebugNoBound};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_consensus_grandpa::{AuthorityId, AuthorityList, AuthorityWeight, SetId};
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_consensus_grandpa::{AuthorityId, AuthorityList, AuthorityWeight, SetId};
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// A bounded list of Grandpa authorities with associated weights.
|
||||
pub type StoredAuthorityList<MaxBridgedAuthorities> =
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Autogenerated weights for pallet_bridge_grandpa
|
||||
//! Autogenerated weights for pezpallet_bridge_grandpa
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE BIZINIKIWI BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2023-03-02, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! WORST CASE MAP SIZE: `1000000`
|
||||
//! HOSTNAME: `covid`, CPU: `11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz`
|
||||
@@ -29,7 +29,7 @@
|
||||
// --chain=dev
|
||||
// --steps=50
|
||||
// --repeat=20
|
||||
// --pallet=pallet_bridge_grandpa
|
||||
// --pallet=pezpallet_bridge_grandpa
|
||||
// --extrinsic=*
|
||||
// --execution=wasm
|
||||
// --wasm-execution=Compiled
|
||||
@@ -42,23 +42,23 @@
|
||||
#![allow(unused_imports)]
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::Get,
|
||||
weights::{constants::RocksDbWeight, Weight},
|
||||
};
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// Weight functions needed for pallet_bridge_grandpa.
|
||||
/// Weight functions needed for pezpallet_bridge_grandpa.
|
||||
pub trait WeightInfo {
|
||||
fn submit_finality_proof(p: u32, v: u32) -> Weight;
|
||||
fn force_set_pallet_state() -> Weight;
|
||||
}
|
||||
|
||||
/// Weights for `pallet_bridge_grandpa` that are generated using one of the Bridge testnets.
|
||||
/// Weights for `pezpallet_bridge_grandpa` that are generated using one of the Bridge testnets.
|
||||
///
|
||||
/// Those weights are test only and must never be used in production.
|
||||
pub struct BridgeWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
/// Storage: BridgeUnknownGrandpa PalletOperatingMode (r:1 w:0)
|
||||
///
|
||||
/// Proof: BridgeUnknownGrandpa PalletOperatingMode (max_values: Some(1), max_size: Some(1),
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
use crate::weights::{BridgeWeight, WeightInfo};
|
||||
|
||||
use frame_support::weights::Weight;
|
||||
use pezframe_support::weights::Weight;
|
||||
|
||||
/// Extended weight info.
|
||||
pub trait WeightInfoExt: WeightInfo {
|
||||
@@ -28,7 +28,7 @@ pub trait WeightInfoExt: WeightInfo {
|
||||
//
|
||||
// 2) slash relayer if he submits an invalid transaction.
|
||||
//
|
||||
// We read and update storage values of other pallets (`pallet-bridge-relayers` and
|
||||
// We read and update storage values of other pallets (`pezpallet-bridge-relayers` and
|
||||
// balances/assets pallet). So we need to add this weight to the weight of our call.
|
||||
// Hence two following methods.
|
||||
|
||||
@@ -45,7 +45,7 @@ pub trait WeightInfoExt: WeightInfo {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: frame_system::Config> WeightInfoExt for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfoExt for BridgeWeight<T> {
|
||||
fn submit_finality_proof_overhead_from_runtime() -> Weight {
|
||||
Weight::zero()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "pallet-bridge-messages"
|
||||
name = "pezpallet-bridge-messages"
|
||||
description = "Module that allows bridged chains to exchange messages using lane concept."
|
||||
version = "0.7.0"
|
||||
authors.workspace = true
|
||||
@@ -20,21 +20,21 @@ bp-header-chain = { workspace = true }
|
||||
bp-messages = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-benchmarking = { optional = true, workspace = true }
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
sp-trie = { optional = true, workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-benchmarking = { optional = true, workspace = true }
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
pezsp-trie = { optional = true, workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-runtime = { features = ["test-helpers"], workspace = true }
|
||||
bp-test-utils = { workspace = true }
|
||||
pallet-balances = { workspace = true }
|
||||
pallet-bridge-grandpa = { workspace = true }
|
||||
sp-core = { workspace = true }
|
||||
sp-io = { workspace = true }
|
||||
pezpallet-balances = { workspace = true }
|
||||
pezpallet-bridge-grandpa = { workspace = true }
|
||||
pezsp-core = { workspace = true }
|
||||
pezsp-io = { workspace = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -44,17 +44,17 @@ std = [
|
||||
"bp-runtime/std",
|
||||
"bp-test-utils/std",
|
||||
"codec/std",
|
||||
"frame-benchmarking/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pallet-balances/std",
|
||||
"pallet-bridge-grandpa/std",
|
||||
"pezframe-benchmarking/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezpallet-balances/std",
|
||||
"pezpallet-bridge-grandpa/std",
|
||||
"scale-info/std",
|
||||
"sp-core/std",
|
||||
"sp-io/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"sp-trie/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-io/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"pezsp-trie/std",
|
||||
"tracing/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
@@ -63,20 +63,20 @@ runtime-benchmarks = [
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-runtime/test-helpers",
|
||||
"bp-test-utils/runtime-benchmarks",
|
||||
"frame-benchmarking/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pallet-balances/runtime-benchmarks",
|
||||
"pallet-bridge-grandpa/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"sp-trie?/runtime-benchmarks",
|
||||
"pezframe-benchmarking/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezpallet-balances/runtime-benchmarks",
|
||||
"pezpallet-bridge-grandpa/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
"pezsp-trie?/runtime-benchmarks",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"pallet-balances/try-runtime",
|
||||
"pallet-bridge-grandpa/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezpallet-balances/try-runtime",
|
||||
"pezpallet-bridge-grandpa/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
test-helpers = ["bp-runtime/test-helpers", "sp-trie"]
|
||||
test-helpers = ["bp-runtime/test-helpers", "pezsp-trie"]
|
||||
|
||||
@@ -80,11 +80,11 @@ chain" and the other chain as "bridged chain".
|
||||
|
||||
Messages module doesn't simply accept transactions that are claiming that the bridged chain has some updated data for
|
||||
us. Instead of this, the module assumes that the bridged chain is able to prove that updated data in some way. The proof
|
||||
is abstracted from the module and may be of any kind. In our Substrate-to-Substrate bridge we're using runtime storage
|
||||
proofs. Other bridges may use transaction proofs, Substrate header digests or anything else that may be proved.
|
||||
is abstracted from the module and may be of any kind. In our Bizinikiwi-to-Bizinikiwi bridge we're using runtime storage
|
||||
proofs. Other bridges may use transaction proofs, Bizinikiwi header digests or anything else that may be proved.
|
||||
|
||||
**IMPORTANT NOTE**: everything below in this chapter describes details of the messages module configuration. But if
|
||||
you're interested in well-probed and relatively easy integration of two Substrate-based chains, you may want to look at
|
||||
you're interested in well-probed and relatively easy integration of two Bizinikiwi-based chains, you may want to look at
|
||||
the [bridge-runtime-common](../../bin/runtime-common/) crate. This crate is providing a lot of helpers for integration,
|
||||
which may be directly used from within your runtime. Then if you'll decide to change something in this scheme, get back
|
||||
here for detailed information.
|
||||
@@ -124,7 +124,7 @@ dispatch weight of the message before dispatch is called.
|
||||
|
||||
The last type is the `pallet_bridge_messages::Config::DeliveryConfirmationPayments`. When confirmation
|
||||
transaction is received, we call the `pay_reward()` method, passing the range of delivered messages.
|
||||
You may use the [`pallet-bridge-relayers`](../relayers/) pallet and its
|
||||
You may use the [`pezpallet-bridge-relayers`](../relayers/) pallet and its
|
||||
[`DeliveryConfirmationPaymentsAdapter`](../relayers/src/payment_adapter.rs) adapter as a possible
|
||||
implementation. It allows you to pay fixed reward for relaying the message and some of its portion
|
||||
for confirming delivery.
|
||||
@@ -162,7 +162,7 @@ confirmed message needs to be read. So there's another
|
||||
for that.
|
||||
|
||||
When choosing values for these parameters, you must also keep in mind that if proof in your scheme
|
||||
is based on finality of headers (and it is the most obvious option for Substrate-based chains with
|
||||
is based on finality of headers (and it is the most obvious option for Bizinikiwi-based chains with
|
||||
finality notion), then choosing too small values for these parameters may cause significant delays
|
||||
in message delivery. That's because there are too many actors involved in this scheme: 1) authorities
|
||||
that are finalizing headers of the target chain need to finalize header with non-empty map; 2) the
|
||||
|
||||
@@ -31,11 +31,11 @@ use bp_messages::{
|
||||
};
|
||||
use bp_runtime::{AccountIdOf, HashOf, UnverifiedStorageProofParams};
|
||||
use codec::Decode;
|
||||
use frame_benchmarking::{account, v2::*};
|
||||
use frame_support::weights::Weight;
|
||||
use frame_system::RawOrigin;
|
||||
use sp_runtime::{traits::TrailingZeroInput, BoundedVec};
|
||||
use sp_std::{ops::RangeInclusive, prelude::*};
|
||||
use pezframe_benchmarking::{account, v2::*};
|
||||
use pezframe_support::weights::Weight;
|
||||
use pezframe_system::RawOrigin;
|
||||
use pezsp_runtime::{traits::TrailingZeroInput, BoundedVec};
|
||||
use pezsp_std::{ops::RangeInclusive, prelude::*};
|
||||
|
||||
const SEED: u32 = 0;
|
||||
|
||||
@@ -143,7 +143,7 @@ struct ReceiveMessagesProofSetup<T: Config<I>, I: 'static> {
|
||||
relayer_id_on_src: AccountIdOf<BridgedChainOf<T, I>>,
|
||||
relayer_id_on_tgt: T::AccountId,
|
||||
msgs_count: u32,
|
||||
_phantom_data: sp_std::marker::PhantomData<I>,
|
||||
_phantom_data: pezsp_std::marker::PhantomData<I>,
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> ReceiveMessagesProofSetup<T, I> {
|
||||
|
||||
@@ -24,12 +24,12 @@ use bp_messages::{
|
||||
UnrewardedRelayerOccupation,
|
||||
};
|
||||
use bp_runtime::{AccountIdOf, OwnedBridgeModule};
|
||||
use frame_support::{dispatch::CallableCallFor, traits::IsSubType};
|
||||
use sp_runtime::transaction_validity::TransactionValidity;
|
||||
use pezframe_support::{dispatch::CallableCallFor, traits::IsSubType};
|
||||
use pezsp_runtime::transaction_validity::TransactionValidity;
|
||||
|
||||
/// Helper struct that provides methods for working with a call supported by `MessagesCallInfo`.
|
||||
pub struct CallHelper<T: Config<I>, I: 'static> {
|
||||
_phantom_data: sp_std::marker::PhantomData<(T, I)>,
|
||||
_phantom_data: pezsp_std::marker::PhantomData<(T, I)>,
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> CallHelper<T, I> {
|
||||
@@ -70,7 +70,7 @@ impl<T: Config<I>, I: 'static> CallHelper<T, I> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Trait representing a call that is a sub type of `pallet_bridge_messages::Call`.
|
||||
/// Trait representing a call that is a sub type of `pezpallet_bridge_messages::Call`.
|
||||
pub trait CallSubType<T: Config<I, RuntimeCall = Self>, I: 'static>:
|
||||
IsSubType<CallableCallFor<Pallet<T, I>, T>>
|
||||
{
|
||||
@@ -112,7 +112,7 @@ pub trait CallSubType<T: Config<I, RuntimeCall = Self>, I: 'static>:
|
||||
|
||||
impl<
|
||||
Call: IsSubType<CallableCallFor<Pallet<T, I>, T>>,
|
||||
T: frame_system::Config<RuntimeCall = Call> + Config<I>,
|
||||
T: pezframe_system::Config<RuntimeCall = Call> + Config<I>,
|
||||
I: 'static,
|
||||
> CallSubType<T, I> for T::RuntimeCall
|
||||
{
|
||||
@@ -195,7 +195,7 @@ impl<
|
||||
"Rejecting messages transaction on halted pallet"
|
||||
);
|
||||
|
||||
return sp_runtime::transaction_validity::InvalidTransaction::Call.into();
|
||||
return pezsp_runtime::transaction_validity::InvalidTransaction::Call.into();
|
||||
},
|
||||
Some(MessagesCallInfo::ReceiveMessagesProof(proof_info))
|
||||
if proof_info
|
||||
@@ -207,7 +207,7 @@ impl<
|
||||
"Rejecting obsolete messages delivery transaction"
|
||||
);
|
||||
|
||||
return sp_runtime::transaction_validity::InvalidTransaction::Stale.into();
|
||||
return pezsp_runtime::transaction_validity::InvalidTransaction::Stale.into();
|
||||
},
|
||||
Some(MessagesCallInfo::ReceiveMessagesDeliveryProof(proof_info))
|
||||
if proof_info.is_obsolete() =>
|
||||
@@ -218,12 +218,12 @@ impl<
|
||||
"Rejecting obsolete messages confirmation transaction"
|
||||
);
|
||||
|
||||
return sp_runtime::transaction_validity::InvalidTransaction::Stale.into();
|
||||
return pezsp_runtime::transaction_validity::InvalidTransaction::Stale.into();
|
||||
},
|
||||
_ => {},
|
||||
}
|
||||
|
||||
Ok(sp_runtime::transaction_validity::ValidTransaction::default())
|
||||
Ok(pezsp_runtime::transaction_validity::ValidTransaction::default())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -253,7 +253,7 @@ mod tests {
|
||||
target_chain::FromBridgedChainMessagesProof, DeliveredMessages, InboundLaneData, LaneState,
|
||||
OutboundLaneData, UnrewardedRelayer, UnrewardedRelayersState,
|
||||
};
|
||||
use sp_std::ops::RangeInclusive;
|
||||
use pezsp_std::ops::RangeInclusive;
|
||||
|
||||
fn fill_unrewarded_relayers() {
|
||||
let mut inbound_lane_state = InboundLanes::<TestRuntime>::get(test_lane_id()).unwrap();
|
||||
@@ -296,7 +296,7 @@ mod tests {
|
||||
RuntimeCall::Messages(crate::Call::<TestRuntime, ()>::receive_messages_proof {
|
||||
relayer_id_at_bridged_chain: 42,
|
||||
messages_count: nonces_end.checked_sub(nonces_start).map(|x| x + 1).unwrap_or(0) as u32,
|
||||
dispatch_weight: frame_support::weights::Weight::zero(),
|
||||
dispatch_weight: pezframe_support::weights::Weight::zero(),
|
||||
proof: Box::new(FromBridgedChainMessagesProof {
|
||||
bridged_header_hash: Default::default(),
|
||||
storage_proof: Default::default(),
|
||||
@@ -310,7 +310,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn run_test<T>(test: impl Fn() -> T) -> T {
|
||||
sp_io::TestExternalities::new(Default::default()).execute_with(|| {
|
||||
pezsp_io::TestExternalities::new(Default::default()).execute_with(|| {
|
||||
InboundLanes::<TestRuntime>::insert(test_lane_id(), InboundLaneData::opened());
|
||||
OutboundLanes::<TestRuntime>::insert(test_lane_id(), OutboundLaneData::opened());
|
||||
test()
|
||||
|
||||
@@ -26,8 +26,8 @@ use bp_messages::{
|
||||
use bp_runtime::AccountIdOf;
|
||||
use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
|
||||
use scale_info::{Type, TypeInfo};
|
||||
use sp_runtime::RuntimeDebug;
|
||||
use sp_std::prelude::PartialEq;
|
||||
use pezsp_runtime::RuntimeDebug;
|
||||
use pezsp_std::prelude::PartialEq;
|
||||
|
||||
/// Inbound lane storage.
|
||||
pub trait InboundLaneStorage {
|
||||
@@ -63,7 +63,7 @@ pub struct StoredInboundLaneData<T: Config<I>, I: 'static>(
|
||||
pub InboundLaneData<AccountIdOf<BridgedChainOf<T, I>>>,
|
||||
);
|
||||
|
||||
impl<T: Config<I>, I: 'static> sp_std::ops::Deref for StoredInboundLaneData<T, I> {
|
||||
impl<T: Config<I>, I: 'static> pezsp_std::ops::Deref for StoredInboundLaneData<T, I> {
|
||||
type Target = InboundLaneData<AccountIdOf<BridgedChainOf<T, I>>>;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
@@ -71,7 +71,7 @@ impl<T: Config<I>, I: 'static> sp_std::ops::Deref for StoredInboundLaneData<T, I
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> sp_std::ops::DerefMut for StoredInboundLaneData<T, I> {
|
||||
impl<T: Config<I>, I: 'static> pezsp_std::ops::DerefMut for StoredInboundLaneData<T, I> {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.0
|
||||
}
|
||||
|
||||
@@ -26,9 +26,9 @@ use bp_messages::{
|
||||
};
|
||||
use bp_runtime::AccountIdOf;
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode, MaxEncodedLen};
|
||||
use frame_support::{ensure, sp_runtime::RuntimeDebug, PalletError};
|
||||
use pezframe_support::{ensure, pezsp_runtime::RuntimeDebug, PalletError};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// Lanes manager errors.
|
||||
#[derive(
|
||||
@@ -156,7 +156,7 @@ impl<T: Config<I>, I: 'static> RuntimeInboundLaneStorage<T, I> {
|
||||
// apart from the explicit closure, the lane may be unable to receive any messages.
|
||||
// Right now we do an additional check here, but it may be done later (e.g. by
|
||||
// explicitly closing the lane and reopening it from
|
||||
// `pallet-xcm-bridge-hub::on-initialize`)
|
||||
// `pezpallet-xcm-bridge-hub::on-initialize`)
|
||||
//
|
||||
// The fact that we only check it here, means that the `MessageDispatch` may switch
|
||||
// to inactive state during some message dispatch in the middle of message delivery
|
||||
|
||||
@@ -69,8 +69,8 @@ use bp_runtime::{
|
||||
Size,
|
||||
};
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::{dispatch::PostDispatchInfo, ensure, fail, traits::Get, DefaultNoBound};
|
||||
use sp_std::{marker::PhantomData, prelude::*};
|
||||
use pezframe_support::{dispatch::PostDispatchInfo, ensure, fail, traits::Get, DefaultNoBound};
|
||||
use pezsp_std::{marker::PhantomData, prelude::*};
|
||||
|
||||
mod call_ext;
|
||||
mod inbound_lane;
|
||||
@@ -94,22 +94,22 @@ pub use tests::*;
|
||||
/// The target that will be used when publishing logs related to this pallet.
|
||||
pub const LOG_TARGET: &str = "runtime::bridge-messages";
|
||||
|
||||
#[frame_support::pallet]
|
||||
#[pezframe_support::pallet]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use bp_messages::{LaneIdType, ReceivedMessages, ReceptionResult};
|
||||
use bp_runtime::RangeInclusiveExt;
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use pezframe_support::pezpallet_prelude::*;
|
||||
use pezframe_system::pezpallet_prelude::*;
|
||||
|
||||
#[pallet::config]
|
||||
pub trait Config<I: 'static = ()>: frame_system::Config {
|
||||
pub trait Config<I: 'static = ()>: pezframe_system::Config {
|
||||
// General types
|
||||
|
||||
/// The overarching event type.
|
||||
#[allow(deprecated)]
|
||||
type RuntimeEvent: From<Event<Self, I>>
|
||||
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
|
||||
+ IsType<<Self as pezframe_system::Config>::RuntimeEvent>;
|
||||
/// Benchmarks results from runtime we're plugged into.
|
||||
type WeightInfo: WeightInfoExt;
|
||||
|
||||
@@ -411,11 +411,11 @@ pub mod pallet {
|
||||
);
|
||||
|
||||
// update relayers state with actual numbers to compute actual weight below
|
||||
relayers_state.unrewarded_relayer_entries = sp_std::cmp::min(
|
||||
relayers_state.unrewarded_relayer_entries = pezsp_std::cmp::min(
|
||||
relayers_state.unrewarded_relayer_entries,
|
||||
actually_rewarded_relayers,
|
||||
);
|
||||
relayers_state.total_messages = sp_std::cmp::min(
|
||||
relayers_state.total_messages = pezsp_std::cmp::min(
|
||||
relayers_state.total_messages,
|
||||
received_range.checked_len().unwrap_or(MessageNonce::MAX),
|
||||
);
|
||||
@@ -516,7 +516,7 @@ pub mod pallet {
|
||||
pub type PalletOperatingMode<T: Config<I>, I: 'static = ()> =
|
||||
StorageValue<_, MessagesOperatingMode, ValueQuery>;
|
||||
|
||||
// TODO: https://github.com/paritytech/parity-bridges-common/pull/2213: let's limit number of
|
||||
// TODO: https://github.com/pezkuwichain/kurdistan-sdk/issues/89: let's limit number of
|
||||
// possible opened lanes && use it to constraint maps below
|
||||
|
||||
/// Map of lane id => inbound lane data.
|
||||
@@ -549,7 +549,7 @@ pub mod pallet {
|
||||
pub opened_lanes: Vec<T::LaneId>,
|
||||
/// Dummy marker.
|
||||
#[serde(skip)]
|
||||
pub _phantom: sp_std::marker::PhantomData<I>,
|
||||
pub _phantom: pezsp_std::marker::PhantomData<I>,
|
||||
}
|
||||
|
||||
#[pallet::genesis_build]
|
||||
@@ -570,7 +570,7 @@ pub mod pallet {
|
||||
#[pallet::hooks]
|
||||
impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> {
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn try_state(_n: BlockNumberFor<T>) -> Result<(), sp_runtime::TryRuntimeError> {
|
||||
fn try_state(_n: BlockNumberFor<T>) -> Result<(), pezsp_runtime::TryRuntimeError> {
|
||||
Self::do_try_state()
|
||||
}
|
||||
}
|
||||
@@ -615,14 +615,14 @@ pub mod pallet {
|
||||
#[cfg(any(feature = "try-runtime", test))]
|
||||
impl<T: Config<I>, I: 'static> Pallet<T, I> {
|
||||
/// Ensure the correctness of the state of this pallet.
|
||||
pub fn do_try_state() -> Result<(), sp_runtime::TryRuntimeError> {
|
||||
pub fn do_try_state() -> Result<(), pezsp_runtime::TryRuntimeError> {
|
||||
Self::do_try_state_for_outbound_lanes()
|
||||
}
|
||||
|
||||
/// Ensure the correctness of the state of outbound lanes.
|
||||
pub fn do_try_state_for_outbound_lanes() -> Result<(), sp_runtime::TryRuntimeError> {
|
||||
use sp_runtime::traits::One;
|
||||
use sp_std::vec::Vec;
|
||||
pub fn do_try_state_for_outbound_lanes() -> Result<(), pezsp_runtime::TryRuntimeError> {
|
||||
use pezsp_runtime::traits::One;
|
||||
use pezsp_std::vec::Vec;
|
||||
|
||||
// collect unpruned lanes
|
||||
let mut unpruned_lanes = Vec::new();
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
//! A module that is responsible for migration of storage.
|
||||
|
||||
use crate::{Config, Pallet};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::{Get, StorageVersion},
|
||||
weights::Weight,
|
||||
};
|
||||
@@ -33,7 +33,7 @@ pub mod v0 {
|
||||
use bp_messages::{MessageNonce, UnrewardedRelayer};
|
||||
use bp_runtime::AccountIdOf;
|
||||
use codec::{Decode, Encode};
|
||||
use sp_std::collections::vec_deque::VecDeque;
|
||||
use pezsp_std::collections::vec_deque::VecDeque;
|
||||
|
||||
#[derive(Encode, Decode, Clone, PartialEq, Eq)]
|
||||
pub(crate) struct StoredInboundLaneData<T: Config<I>, I: 'static>(
|
||||
@@ -60,8 +60,8 @@ pub mod v1 {
|
||||
InboundLaneData, InboundLanes, OutboundLaneData, OutboundLanes, StoredInboundLaneData,
|
||||
};
|
||||
use bp_messages::LaneState;
|
||||
use frame_support::traits::UncheckedOnRuntimeUpgrade;
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezframe_support::traits::UncheckedOnRuntimeUpgrade;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// Migrates the pallet storage to v1.
|
||||
pub struct UncheckedMigrationV0ToV1<T, I>(PhantomData<(T, I)>);
|
||||
@@ -98,7 +98,7 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn pre_upgrade() -> Result<sp_std::vec::Vec<u8>, sp_runtime::DispatchError> {
|
||||
fn pre_upgrade() -> Result<pezsp_std::vec::Vec<u8>, pezsp_runtime::DispatchError> {
|
||||
use codec::Encode;
|
||||
|
||||
let number_of_inbound_to_migrate = InboundLanes::<T, I>::iter_keys().count();
|
||||
@@ -107,7 +107,7 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn post_upgrade(state: sp_std::vec::Vec<u8>) -> Result<(), sp_runtime::DispatchError> {
|
||||
fn post_upgrade(state: pezsp_std::vec::Vec<u8>) -> Result<(), pezsp_runtime::DispatchError> {
|
||||
use codec::Decode;
|
||||
const LOG_TARGET: &str = "runtime::bridge-messages-migration";
|
||||
|
||||
@@ -119,11 +119,11 @@ pub mod v1 {
|
||||
tracing::info!(target: LOG_TARGET, %number_of_inbound_to_migrate, "post-upgrade expects inbound lanes to have been migrated.");
|
||||
tracing::info!(target: LOG_TARGET, %number_of_outbound_to_migrate, "post-upgrade expects outbound lanes to have been migrated.");
|
||||
|
||||
frame_support::ensure!(
|
||||
pezframe_support::ensure!(
|
||||
number_of_inbound_to_migrate as usize == number_of_inbound,
|
||||
"must migrate all `InboundLanes`."
|
||||
);
|
||||
frame_support::ensure!(
|
||||
pezframe_support::ensure!(
|
||||
number_of_outbound_to_migrate as usize == number_of_outbound,
|
||||
"must migrate all `OutboundLanes`."
|
||||
);
|
||||
@@ -134,13 +134,13 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
/// [`UncheckedMigrationV0ToV1`] wrapped in a
|
||||
/// [`VersionedMigration`](frame_support::migrations::VersionedMigration), ensuring the
|
||||
/// [`VersionedMigration`](pezframe_support::migrations::VersionedMigration), ensuring the
|
||||
/// migration is only performed when on-chain version is 0.
|
||||
pub type MigrationToV1<T, I> = frame_support::migrations::VersionedMigration<
|
||||
pub type MigrationToV1<T, I> = pezframe_support::migrations::VersionedMigration<
|
||||
0,
|
||||
1,
|
||||
UncheckedMigrationV0ToV1<T, I>,
|
||||
Pallet<T, I>,
|
||||
<T as frame_system::Config>::DbWeight,
|
||||
<T as pezframe_system::Config>::DbWeight,
|
||||
>;
|
||||
}
|
||||
|
||||
@@ -23,10 +23,10 @@ use bp_messages::{
|
||||
UnrewardedRelayer,
|
||||
};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode};
|
||||
use frame_support::{traits::Get, BoundedVec, PalletError};
|
||||
use pezframe_support::{traits::Get, BoundedVec, PalletError};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_runtime::RuntimeDebug;
|
||||
use sp_std::{collections::vec_deque::VecDeque, marker::PhantomData, ops::RangeInclusive};
|
||||
use pezsp_runtime::RuntimeDebug;
|
||||
use pezsp_std::{collections::vec_deque::VecDeque, marker::PhantomData, ops::RangeInclusive};
|
||||
|
||||
/// Outbound lane storage.
|
||||
pub trait OutboundLaneStorage {
|
||||
@@ -233,7 +233,7 @@ mod tests {
|
||||
TestRuntime, REGULAR_PAYLOAD,
|
||||
},
|
||||
};
|
||||
use sp_std::ops::RangeInclusive;
|
||||
use pezsp_std::ops::RangeInclusive;
|
||||
|
||||
fn unrewarded_relayers(
|
||||
nonces: RangeInclusive<MessageNonce>,
|
||||
|
||||
@@ -29,11 +29,11 @@ use bp_runtime::{
|
||||
HashOf, HasherOf, RangeInclusiveExt, RawStorageProof, StorageProofChecker, StorageProofError,
|
||||
};
|
||||
use codec::Decode;
|
||||
use sp_std::vec::Vec;
|
||||
use pezsp_std::vec::Vec;
|
||||
|
||||
/// 'Parsed' message delivery proof - inbound lane id and its state.
|
||||
pub(crate) type ParsedMessagesDeliveryProofFromBridgedChain<T, I> =
|
||||
(<T as Config<I>>::LaneId, InboundLaneData<<T as frame_system::Config>::AccountId>);
|
||||
(<T as Config<I>>::LaneId, InboundLaneData<<T as pezframe_system::Config>::AccountId>);
|
||||
|
||||
/// Verify proof of Bridged -> This chain messages.
|
||||
///
|
||||
@@ -171,7 +171,7 @@ type MessagesStorageProofAdapter<T, I> = StorageProofCheckerAdapter<T, I>;
|
||||
/// A `StorageProofAdapter` implementation for raw storage proofs.
|
||||
struct StorageProofCheckerAdapter<T: Config<I>, I: 'static> {
|
||||
storage: StorageProofChecker<HasherOf<BridgedChainOf<T, I>>>,
|
||||
_dummy: sp_std::marker::PhantomData<(T, I)>,
|
||||
_dummy: pezsp_std::marker::PhantomData<(T, I)>,
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> StorageProofCheckerAdapter<T, I> {
|
||||
@@ -220,7 +220,7 @@ mod tests {
|
||||
use bp_messages::LaneState;
|
||||
use bp_runtime::{HeaderId, StorageProofError};
|
||||
use codec::Encode;
|
||||
use sp_runtime::traits::Header;
|
||||
use pezsp_runtime::traits::Header;
|
||||
|
||||
fn using_messages_proof<R>(
|
||||
nonces_end: MessageNonce,
|
||||
@@ -244,7 +244,7 @@ mod tests {
|
||||
add_unused_key,
|
||||
);
|
||||
|
||||
sp_io::TestExternalities::new(Default::default()).execute_with(move || {
|
||||
pezsp_io::TestExternalities::new(Default::default()).execute_with(move || {
|
||||
let bridged_header = BridgedChainHeader::new(
|
||||
0,
|
||||
Default::default(),
|
||||
@@ -254,11 +254,11 @@ mod tests {
|
||||
);
|
||||
let bridged_header_hash = bridged_header.hash();
|
||||
|
||||
pallet_bridge_grandpa::BestFinalized::<TestRuntime>::put(HeaderId(
|
||||
pezpallet_bridge_grandpa::BestFinalized::<TestRuntime>::put(HeaderId(
|
||||
0,
|
||||
bridged_header_hash,
|
||||
));
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
bridged_header_hash,
|
||||
bridged_header.build(),
|
||||
);
|
||||
@@ -316,8 +316,8 @@ mod tests {
|
||||
false,
|
||||
|proof| {
|
||||
let bridged_header_hash =
|
||||
pallet_bridge_grandpa::BestFinalized::<TestRuntime>::get().unwrap().1;
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::remove(
|
||||
pezpallet_bridge_grandpa::BestFinalized::<TestRuntime>::get().unwrap().1;
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::remove(
|
||||
bridged_header_hash,
|
||||
);
|
||||
verify_messages_proof::<TestRuntime, ()>(proof, 10)
|
||||
@@ -339,8 +339,8 @@ mod tests {
|
||||
false,
|
||||
|proof| {
|
||||
let bridged_header_hash =
|
||||
pallet_bridge_grandpa::BestFinalized::<TestRuntime>::get().unwrap().1;
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
pezpallet_bridge_grandpa::BestFinalized::<TestRuntime>::get().unwrap().1;
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
bridged_header_hash,
|
||||
BridgedChainHeader::new(
|
||||
0,
|
||||
|
||||
@@ -25,8 +25,8 @@ use bp_runtime::{
|
||||
RawStorageProof, UnverifiedStorageProofParams,
|
||||
};
|
||||
use codec::Encode;
|
||||
use sp_std::{ops::RangeInclusive, prelude::*};
|
||||
use sp_trie::{trie_types::TrieDBMutBuilderV1, LayoutV1, MemoryDB, TrieMut};
|
||||
use pezsp_std::{ops::RangeInclusive, prelude::*};
|
||||
use pezsp_trie::{trie_types::TrieDBMutBuilderV1, LayoutV1, MemoryDB, TrieMut};
|
||||
|
||||
/// Dummy message generation function.
|
||||
pub fn generate_dummy_message(_: MessageNonce) -> MessagePayload {
|
||||
|
||||
@@ -43,14 +43,14 @@ use bp_runtime::{
|
||||
messages::MessageDispatchResult, Chain, ChainId, Size, UnverifiedStorageProofParams,
|
||||
};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
derive_impl,
|
||||
weights::{constants::RocksDbWeight, Weight},
|
||||
};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_core::H256;
|
||||
use sp_runtime::{
|
||||
testing::Header as SubstrateHeader,
|
||||
use pezsp_core::H256;
|
||||
use pezsp_runtime::{
|
||||
testing::Header as BizinikiwiHeader,
|
||||
traits::{BlakeTwo256, ConstU32},
|
||||
BuildStorage, StateVersion,
|
||||
};
|
||||
@@ -84,11 +84,11 @@ impl Chain for ThisChain {
|
||||
type BlockNumber = u64;
|
||||
type Hash = H256;
|
||||
type Hasher = BlakeTwo256;
|
||||
type Header = SubstrateHeader;
|
||||
type Header = BizinikiwiHeader;
|
||||
type AccountId = AccountId;
|
||||
type Balance = Balance;
|
||||
type Nonce = u64;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
fn max_extrinsic_size() -> u32 {
|
||||
@@ -109,7 +109,7 @@ impl ChainWithMessages for ThisChain {
|
||||
pub struct BridgedChain;
|
||||
|
||||
pub type BridgedHeaderHash = H256;
|
||||
pub type BridgedChainHeader = SubstrateHeader;
|
||||
pub type BridgedChainHeader = BizinikiwiHeader;
|
||||
|
||||
impl Chain for BridgedChain {
|
||||
const ID: ChainId = *b"tbch";
|
||||
@@ -121,7 +121,7 @@ impl Chain for BridgedChain {
|
||||
type AccountId = TestRelayer;
|
||||
type Balance = Balance;
|
||||
type Nonce = u64;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
fn max_extrinsic_size() -> u32 {
|
||||
@@ -147,41 +147,41 @@ impl ChainWithMessages for BridgedChain {
|
||||
const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce = 128;
|
||||
}
|
||||
|
||||
type Block = frame_system::mocking::MockBlock<TestRuntime>;
|
||||
type Block = pezframe_system::mocking::MockBlock<TestRuntime>;
|
||||
|
||||
use crate as pallet_bridge_messages;
|
||||
use crate as pezpallet_bridge_messages;
|
||||
|
||||
frame_support::construct_runtime! {
|
||||
pezframe_support::construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Balances: pallet_balances::{Pallet, Call, Event<T>},
|
||||
BridgedChainGrandpa: pallet_bridge_grandpa::{Pallet, Call, Event<T>},
|
||||
Messages: pallet_bridge_messages::{Pallet, Call, Event<T>},
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Balances: pezpallet_balances::{Pallet, Call, Event<T>},
|
||||
BridgedChainGrandpa: pezpallet_bridge_grandpa::{Pallet, Call, Event<T>},
|
||||
Messages: pezpallet_bridge_messages::{Pallet, Call, Event<T>},
|
||||
}
|
||||
}
|
||||
|
||||
pub type DbWeight = RocksDbWeight;
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Block = Block;
|
||||
type AccountData = pallet_balances::AccountData<Balance>;
|
||||
type AccountData = pezpallet_balances::AccountData<Balance>;
|
||||
type DbWeight = DbWeight;
|
||||
}
|
||||
|
||||
#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pallet_balances::Config for TestRuntime {
|
||||
#[derive_impl(pezpallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pezpallet_balances::Config for TestRuntime {
|
||||
type AccountStore = System;
|
||||
}
|
||||
|
||||
impl pallet_bridge_grandpa::Config for TestRuntime {
|
||||
impl pezpallet_bridge_grandpa::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgedChain = BridgedChain;
|
||||
type MaxFreeHeadersPerBlock = ConstU32<4>;
|
||||
type FreeHeadersInterval = ConstU32<1_024>;
|
||||
type HeadersToKeep = ConstU32<8>;
|
||||
type WeightInfo = pallet_bridge_grandpa::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_grandpa::weights::BridgeWeight<TestRuntime>;
|
||||
}
|
||||
|
||||
/// weights of messages pallet calls we use in tests.
|
||||
@@ -288,7 +288,7 @@ impl TestDeliveryPayments {
|
||||
/// cleared after the call.
|
||||
pub fn is_reward_paid(relayer: AccountId) -> bool {
|
||||
let key = (b":delivery-relayer-reward:", relayer).encode();
|
||||
frame_support::storage::unhashed::take::<bool>(&key).is_some()
|
||||
pezframe_support::storage::unhashed::take::<bool>(&key).is_some()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@ impl DeliveryPayments<AccountId> for TestDeliveryPayments {
|
||||
_actual_weight: Weight,
|
||||
) {
|
||||
let key = (b":delivery-relayer-reward:", relayer).encode();
|
||||
frame_support::storage::unhashed::put(&key, &true);
|
||||
pezframe_support::storage::unhashed::put(&key, &true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,7 +315,7 @@ impl TestDeliveryConfirmationPayments {
|
||||
/// cleared after the call.
|
||||
pub fn is_reward_paid(relayer: AccountId, fee: TestMessageFee) -> bool {
|
||||
let key = (b":relayer-reward:", relayer, fee).encode();
|
||||
frame_support::storage::unhashed::take::<bool>(&key).is_some()
|
||||
pezframe_support::storage::unhashed::take::<bool>(&key).is_some()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,7 +332,7 @@ impl DeliveryConfirmationPayments<AccountId, TestLaneIdType> for TestDeliveryCon
|
||||
let rewarded_relayers = relayers_rewards.len();
|
||||
for (relayer, reward) in &relayers_rewards {
|
||||
let key = (b":relayer-reward:", relayer, reward).encode();
|
||||
frame_support::storage::unhashed::put(&key, &true);
|
||||
pezframe_support::storage::unhashed::put(&key, &true);
|
||||
}
|
||||
|
||||
rewarded_relayers as _
|
||||
@@ -354,8 +354,8 @@ impl TestMessageDispatch {
|
||||
|
||||
pub fn emulate_enqueued_message(lane: TestLaneIdType) {
|
||||
let key = (b"dispatched", lane).encode();
|
||||
let dispatched = frame_support::storage::unhashed::get_or_default::<MessageNonce>(&key[..]);
|
||||
frame_support::storage::unhashed::put(&key[..], &(dispatched + 1));
|
||||
let dispatched = pezframe_support::storage::unhashed::get_or_default::<MessageNonce>(&key[..]);
|
||||
pezframe_support::storage::unhashed::put(&key[..], &(dispatched + 1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -365,7 +365,7 @@ impl MessageDispatch for TestMessageDispatch {
|
||||
type LaneId = TestLaneIdType;
|
||||
|
||||
fn is_active(lane: Self::LaneId) -> bool {
|
||||
frame_support::storage::unhashed::get_or_default::<MessageNonce>(
|
||||
pezframe_support::storage::unhashed::get_or_default::<MessageNonce>(
|
||||
&(b"dispatched", lane).encode()[..],
|
||||
) <= BridgedChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX
|
||||
}
|
||||
@@ -395,13 +395,13 @@ pub struct TestOnMessagesDelivered;
|
||||
|
||||
impl TestOnMessagesDelivered {
|
||||
pub fn call_arguments() -> Option<(TestLaneIdType, MessageNonce)> {
|
||||
frame_support::storage::unhashed::get(b"TestOnMessagesDelivered.OnMessagesDelivered")
|
||||
pezframe_support::storage::unhashed::get(b"TestOnMessagesDelivered.OnMessagesDelivered")
|
||||
}
|
||||
}
|
||||
|
||||
impl OnMessagesDelivered<TestLaneIdType> for TestOnMessagesDelivered {
|
||||
fn on_messages_delivered(lane: TestLaneIdType, enqueued_messages: MessageNonce) {
|
||||
frame_support::storage::unhashed::put(
|
||||
pezframe_support::storage::unhashed::put(
|
||||
b"TestOnMessagesDelivered.OnMessagesDelivered",
|
||||
&(lane, enqueued_messages),
|
||||
);
|
||||
@@ -459,15 +459,15 @@ pub fn inbound_unrewarded_relayers_state(lane: TestLaneIdType) -> UnrewardedRela
|
||||
}
|
||||
|
||||
/// Return test externalities to use in tests.
|
||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||
let mut t = frame_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap();
|
||||
pallet_balances::GenesisConfig::<TestRuntime> {
|
||||
pub fn new_test_ext() -> pezsp_io::TestExternalities {
|
||||
let mut t = pezframe_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap();
|
||||
pezpallet_balances::GenesisConfig::<TestRuntime> {
|
||||
balances: vec![(ENDOWED_ACCOUNT, 1_000_000)],
|
||||
..Default::default()
|
||||
}
|
||||
.assimilate_storage(&mut t)
|
||||
.unwrap();
|
||||
sp_io::TestExternalities::new(t)
|
||||
pezsp_io::TestExternalities::new(t)
|
||||
}
|
||||
|
||||
/// Run pallet test.
|
||||
@@ -515,7 +515,7 @@ pub fn prepare_messages_proof(
|
||||
|
||||
// let's now insert bridged chain header into the storage
|
||||
let bridged_header_hash = Default::default();
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
bridged_header_hash,
|
||||
StoredHeaderData { number: 0, state_root: storage_root },
|
||||
);
|
||||
@@ -548,7 +548,7 @@ pub fn prepare_messages_delivery_proof(
|
||||
|
||||
// let's now insert bridged chain header into the storage
|
||||
let bridged_header_hash = Default::default();
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
bridged_header_hash,
|
||||
StoredHeaderData { number: 0, state_root: storage_root },
|
||||
);
|
||||
|
||||
@@ -21,6 +21,6 @@
|
||||
#[cfg(test)]
|
||||
pub(crate) mod mock;
|
||||
#[cfg(test)]
|
||||
mod pallet_tests;
|
||||
mod pezpallet_tests;
|
||||
|
||||
pub mod messages_generation;
|
||||
|
||||
@@ -37,14 +37,14 @@ use bp_messages::{
|
||||
use bp_runtime::{BasicOperatingMode, PreComputedSize, RangeInclusiveExt, Size};
|
||||
use bp_test_utils::generate_owned_bridge_module_tests;
|
||||
use codec::Encode;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
assert_err, assert_noop, assert_ok,
|
||||
dispatch::Pays,
|
||||
storage::generator::{StorageMap, StorageValue},
|
||||
weights::Weight,
|
||||
};
|
||||
use frame_system::{EventRecord, Pallet as System, Phase};
|
||||
use sp_runtime::{BoundedVec, DispatchError};
|
||||
use pezframe_system::{EventRecord, Pallet as System, Phase};
|
||||
use pezsp_runtime::{BoundedVec, DispatchError};
|
||||
|
||||
fn get_ready_for_events() {
|
||||
System::<TestRuntime>::set_block_number(1);
|
||||
@@ -117,7 +117,7 @@ fn receive_messages_delivery_proof() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pallet_rejects_transactions_if_halted() {
|
||||
fn pezpallet_rejects_transactions_if_halted() {
|
||||
run_test(|| {
|
||||
// send message first to be able to check that delivery_proof fails later
|
||||
send_regular_message(test_lane_id());
|
||||
@@ -187,7 +187,7 @@ fn receive_messages_fails_if_dispatcher_is_inactive() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pallet_rejects_new_messages_in_rejecting_outbound_messages_operating_mode() {
|
||||
fn pezpallet_rejects_new_messages_in_rejecting_outbound_messages_operating_mode() {
|
||||
run_test(|| {
|
||||
// send message first to be able to check that delivery_proof fails later
|
||||
send_regular_message(test_lane_id());
|
||||
@@ -1222,7 +1222,7 @@ fn do_try_state_for_outbound_lanes_works() {
|
||||
);
|
||||
assert_err!(
|
||||
Pallet::<TestRuntime>::do_try_state(),
|
||||
sp_runtime::TryRuntimeError::Other("Found unpruned lanes!")
|
||||
pezsp_runtime::TryRuntimeError::Other("Found unpruned lanes!")
|
||||
);
|
||||
|
||||
// remove message for nonce 1
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Autogenerated weights for pallet_bridge_messages
|
||||
//! Autogenerated weights for pezpallet_bridge_messages
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE BIZINIKIWI BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2023-06-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! WORST CASE MAP SIZE: `1000000`
|
||||
//! HOSTNAME: `serban-ROG-Zephyrus`, CPU: `12th Gen Intel(R) Core(TM) i7-12700H`
|
||||
@@ -29,7 +29,7 @@
|
||||
// --chain=dev
|
||||
// --steps=50
|
||||
// --repeat=20
|
||||
// --pallet=pallet_bridge_messages
|
||||
// --pallet=pezpallet_bridge_messages
|
||||
// --extrinsic=*
|
||||
// --execution=wasm
|
||||
// --wasm-execution=Compiled
|
||||
@@ -42,13 +42,13 @@
|
||||
#![allow(unused_imports)]
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::Get,
|
||||
weights::{constants::RocksDbWeight, Weight},
|
||||
};
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// Weight functions needed for pallet_bridge_messages.
|
||||
/// Weight functions needed for pezpallet_bridge_messages.
|
||||
pub trait WeightInfo {
|
||||
fn receive_single_message_proof() -> Weight;
|
||||
fn receive_n_messages_proof(n: u32) -> Weight;
|
||||
@@ -60,11 +60,11 @@ pub trait WeightInfo {
|
||||
fn receive_single_n_bytes_message_proof_with_dispatch(n: u32) -> Weight;
|
||||
}
|
||||
|
||||
/// Weights for `pallet_bridge_messages` that are generated using one of the Bridge testnets.
|
||||
/// Weights for `pezpallet_bridge_messages` that are generated using one of the Bridge testnets.
|
||||
///
|
||||
/// Those weights are test only and must never be used in production.
|
||||
pub struct BridgeWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
/// Storage: BridgeUnknownMessages PalletOperatingMode (r:1 w:0)
|
||||
///
|
||||
/// Proof: BridgeUnknownMessages PalletOperatingMode (max_values: Some(1), max_size: Some(2),
|
||||
|
||||
@@ -20,7 +20,7 @@ use crate::weights::WeightInfo;
|
||||
|
||||
use bp_messages::{MessageNonce, UnrewardedRelayersState};
|
||||
use bp_runtime::{PreComputedSize, Size};
|
||||
use frame_support::weights::Weight;
|
||||
use pezframe_support::weights::Weight;
|
||||
|
||||
/// Size of the message being delivered in benchmarks.
|
||||
pub const EXPECTED_DEFAULT_MESSAGE_LENGTH: u32 = 128;
|
||||
@@ -284,7 +284,7 @@ pub trait WeightInfoExt: WeightInfo {
|
||||
// storage values that are read during the call. So we may ignore the weight of this check.
|
||||
//
|
||||
// However, during (2) we read and update storage values of other pallets
|
||||
// (`pallet-bridge-relayers` and balances/assets pallet). So we need to add this weight to the
|
||||
// (`pezpallet-bridge-relayers` and balances/assets pallet). So we need to add this weight to the
|
||||
// weight of our call. Hence two following methods.
|
||||
|
||||
/// Extra weight that is added to the `receive_messages_proof` call weight by signed extensions
|
||||
@@ -444,7 +444,7 @@ impl WeightInfoExt for () {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: frame_system::Config> WeightInfoExt for crate::weights::BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfoExt for crate::weights::BridgeWeight<T> {
|
||||
fn expected_extra_storage_proof_size() -> u32 {
|
||||
EXTRA_STORAGE_PROOF_SIZE
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "pallet-bridge-relayers"
|
||||
name = "pezpallet-bridge-relayers"
|
||||
description = "Module used to store relayer rewards and coordinate relayers set."
|
||||
version = "0.7.0"
|
||||
authors.workspace = true
|
||||
@@ -20,26 +20,26 @@ bp-header-chain = { workspace = true }
|
||||
bp-messages = { workspace = true }
|
||||
bp-relayers = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
pallet-bridge-grandpa = { workspace = true }
|
||||
pallet-bridge-messages = { workspace = true }
|
||||
pallet-bridge-teyrchains = { workspace = true }
|
||||
pezpallet-bridge-grandpa = { workspace = true }
|
||||
pezpallet-bridge-messages = { workspace = true }
|
||||
pezpallet-bridge-teyrchains = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-benchmarking = { optional = true, workspace = true }
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
pallet-transaction-payment = { workspace = true }
|
||||
sp-arithmetic = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-benchmarking = { optional = true, workspace = true }
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezpallet-transaction-payment = { workspace = true }
|
||||
pezsp-arithmetic = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-pezkuwi-core = { workspace = true }
|
||||
bp-test-utils = { workspace = true }
|
||||
bp-teyrchains = { workspace = true }
|
||||
pallet-balances = { workspace = true, default-features = true }
|
||||
pallet-utility = { workspace = true }
|
||||
sp-core = { workspace = true }
|
||||
sp-io = { workspace = true }
|
||||
pezpallet-balances = { workspace = true, default-features = true }
|
||||
pezpallet-utility = { workspace = true }
|
||||
pezsp-core = { workspace = true }
|
||||
pezsp-io = { workspace = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -52,19 +52,19 @@ std = [
|
||||
"bp-test-utils/std",
|
||||
"bp-teyrchains/std",
|
||||
"codec/std",
|
||||
"frame-benchmarking/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pallet-bridge-grandpa/std",
|
||||
"pallet-bridge-messages/std",
|
||||
"pallet-bridge-teyrchains/std",
|
||||
"pallet-transaction-payment/std",
|
||||
"pallet-utility/std",
|
||||
"pezframe-benchmarking/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezpallet-bridge-grandpa/std",
|
||||
"pezpallet-bridge-messages/std",
|
||||
"pezpallet-bridge-teyrchains/std",
|
||||
"pezpallet-transaction-payment/std",
|
||||
"pezpallet-utility/std",
|
||||
"scale-info/std",
|
||||
"sp-arithmetic/std",
|
||||
"sp-core/std",
|
||||
"sp-io/std",
|
||||
"sp-runtime/std",
|
||||
"pezsp-arithmetic/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-io/std",
|
||||
"pezsp-runtime/std",
|
||||
"tracing/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
@@ -75,27 +75,27 @@ runtime-benchmarks = [
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-test-utils/runtime-benchmarks",
|
||||
"bp-teyrchains/runtime-benchmarks",
|
||||
"frame-benchmarking/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pallet-balances/runtime-benchmarks",
|
||||
"pallet-bridge-grandpa/runtime-benchmarks",
|
||||
"pallet-bridge-messages/runtime-benchmarks",
|
||||
"pallet-bridge-teyrchains/runtime-benchmarks",
|
||||
"pallet-transaction-payment/runtime-benchmarks",
|
||||
"pallet-utility/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-benchmarking/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezpallet-balances/runtime-benchmarks",
|
||||
"pezpallet-bridge-grandpa/runtime-benchmarks",
|
||||
"pezpallet-bridge-messages/runtime-benchmarks",
|
||||
"pezpallet-bridge-teyrchains/runtime-benchmarks",
|
||||
"pezpallet-transaction-payment/runtime-benchmarks",
|
||||
"pezpallet-utility/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"pallet-balances/try-runtime",
|
||||
"pallet-bridge-grandpa/try-runtime",
|
||||
"pallet-bridge-messages/try-runtime",
|
||||
"pallet-bridge-teyrchains/try-runtime",
|
||||
"pallet-transaction-payment/try-runtime",
|
||||
"pallet-utility/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezpallet-balances/try-runtime",
|
||||
"pezpallet-bridge-grandpa/try-runtime",
|
||||
"pezpallet-bridge-messages/try-runtime",
|
||||
"pezpallet-bridge-teyrchains/try-runtime",
|
||||
"pezpallet-transaction-payment/try-runtime",
|
||||
"pezpallet-utility/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
integrity-test = []
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
|
||||
use crate::*;
|
||||
|
||||
use frame_benchmarking::v2::*;
|
||||
use frame_support::{assert_ok, weights::Weight};
|
||||
use frame_system::RawOrigin;
|
||||
use sp_runtime::traits::One;
|
||||
use pezframe_benchmarking::v2::*;
|
||||
use pezframe_support::{assert_ok, weights::Weight};
|
||||
use pezframe_system::RawOrigin;
|
||||
use pezsp_runtime::traits::One;
|
||||
|
||||
/// Reward amount that is (hopefully) is larger than existential deposit across all chains.
|
||||
const REWARD_AMOUNT: u32 = u32::MAX;
|
||||
@@ -47,12 +47,12 @@ pub trait Config<I: 'static = ()>: crate::Config<I> {
|
||||
fn assert_last_event<T: Config<I>, I: 'static>(
|
||||
generic_event: <T as pallet::Config<I>>::RuntimeEvent,
|
||||
) {
|
||||
frame_system::Pallet::<T>::assert_last_event(generic_event.into());
|
||||
pezframe_system::Pallet::<T>::assert_last_event(generic_event.into());
|
||||
}
|
||||
|
||||
#[instance_benchmarks(
|
||||
where
|
||||
BeneficiaryOf<T, I>: From<<T as frame_system::Config>::AccountId>,
|
||||
BeneficiaryOf<T, I>: From<<T as pezframe_system::Config>::AccountId>,
|
||||
)]
|
||||
mod benchmarks {
|
||||
use super::*;
|
||||
@@ -116,7 +116,7 @@ mod benchmarks {
|
||||
#[benchmark]
|
||||
fn register() {
|
||||
let relayer: T::AccountId = whitelisted_caller();
|
||||
let valid_till = frame_system::Pallet::<T>::block_number()
|
||||
let valid_till = pezframe_system::Pallet::<T>::block_number()
|
||||
.saturating_add(crate::Pallet::<T, I>::required_registration_lease())
|
||||
.saturating_add(One::one())
|
||||
.saturating_add(One::one());
|
||||
@@ -131,14 +131,14 @@ mod benchmarks {
|
||||
#[benchmark]
|
||||
fn deregister() {
|
||||
let relayer: T::AccountId = whitelisted_caller();
|
||||
let valid_till = frame_system::Pallet::<T>::block_number()
|
||||
let valid_till = pezframe_system::Pallet::<T>::block_number()
|
||||
.saturating_add(crate::Pallet::<T, I>::required_registration_lease())
|
||||
.saturating_add(One::one())
|
||||
.saturating_add(One::one());
|
||||
T::deposit_account(relayer.clone(), crate::Pallet::<T, I>::required_stake());
|
||||
crate::Pallet::<T, I>::register(RawOrigin::Signed(relayer.clone()).into(), valid_till)
|
||||
.unwrap();
|
||||
frame_system::Pallet::<T>::set_block_number(valid_till.saturating_add(One::one()));
|
||||
pezframe_system::Pallet::<T>::set_block_number(valid_till.saturating_add(One::one()));
|
||||
|
||||
#[extrinsic_call]
|
||||
_(RawOrigin::Signed(relayer.clone()));
|
||||
@@ -153,7 +153,7 @@ mod benchmarks {
|
||||
fn slash_and_deregister() {
|
||||
// prepare and register relayer account
|
||||
let relayer: T::AccountId = whitelisted_caller();
|
||||
let valid_till = frame_system::Pallet::<T>::block_number()
|
||||
let valid_till = pezframe_system::Pallet::<T>::block_number()
|
||||
.saturating_add(crate::Pallet::<T, I>::required_registration_lease())
|
||||
.saturating_add(One::one())
|
||||
.saturating_add(One::one());
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Adapter that allows using `pallet-bridge-relayers` as a signed extension in the
|
||||
//! Adapter that allows using `pezpallet-bridge-relayers` as a signed extension in the
|
||||
//! bridge with remote GRANDPA chain.
|
||||
|
||||
use crate::{
|
||||
@@ -24,16 +24,16 @@ use crate::{
|
||||
use bp_relayers::{BatchCallUnpacker, ExtensionCallData, ExtensionCallInfo, ExtensionConfig};
|
||||
use bp_runtime::{Chain, StaticStrProvider};
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::dispatch::{DispatchInfo, PostDispatchInfo};
|
||||
use frame_system::Config as SystemConfig;
|
||||
use pallet_bridge_grandpa::{
|
||||
use pezframe_support::dispatch::{DispatchInfo, PostDispatchInfo};
|
||||
use pezframe_system::Config as SystemConfig;
|
||||
use pezpallet_bridge_grandpa::{
|
||||
CallSubType as BridgeGrandpaCallSubtype, Config as BridgeGrandpaConfig,
|
||||
SubmitFinalityProofHelper,
|
||||
};
|
||||
use pallet_bridge_messages::{
|
||||
use pezpallet_bridge_messages::{
|
||||
CallSubType as BridgeMessagesCallSubType, Config as BridgeMessagesConfig, LaneIdOf,
|
||||
};
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
traits::{Dispatchable, Get},
|
||||
transaction_validity::{TransactionPriority, TransactionValidityError},
|
||||
Saturating,
|
||||
@@ -50,11 +50,11 @@ pub struct WithGrandpaChainExtensionConfig<
|
||||
Runtime,
|
||||
// batch call unpacker
|
||||
BatchCallUnpacker,
|
||||
// instance of the `pallet-bridge-grandpa`, tracked by this extension
|
||||
// instance of the `pezpallet-bridge-grandpa`, tracked by this extension
|
||||
BridgeGrandpaPalletInstance,
|
||||
// instance of BridgedChain `pallet-bridge-messages`, tracked by this extension
|
||||
// instance of BridgedChain `pezpallet-bridge-messages`, tracked by this extension
|
||||
BridgeMessagesPalletInstance,
|
||||
// instance of `pallet-bridge-relayers`, tracked by this extension
|
||||
// instance of `pezpallet-bridge-relayers`, tracked by this extension
|
||||
BridgeRelayersPalletInstance,
|
||||
// message delivery transaction priority boost for every additional message
|
||||
PriorityBoostPerMessage,
|
||||
@@ -75,7 +75,7 @@ impl<ID, R, BCU, GI, MI, RI, P> ExtensionConfig
|
||||
where
|
||||
ID: StaticStrProvider,
|
||||
R: BridgeRelayersConfig<RI>
|
||||
+ BridgeMessagesConfig<MI, BridgedChain = pallet_bridge_grandpa::BridgedChain<R, GI>>
|
||||
+ BridgeMessagesConfig<MI, BridgedChain = pezpallet_bridge_grandpa::BridgedChain<R, GI>>
|
||||
+ BridgeGrandpaConfig<GI>,
|
||||
BCU: BatchCallUnpacker<R>,
|
||||
GI: 'static,
|
||||
@@ -91,7 +91,7 @@ where
|
||||
type BridgeMessagesPalletInstance = MI;
|
||||
type BridgeRelayersPalletInstance = RI;
|
||||
type PriorityBoostPerMessage = P;
|
||||
type RemoteGrandpaChainBlockNumber = pallet_bridge_grandpa::BridgedBlockNumber<R, GI>;
|
||||
type RemoteGrandpaChainBlockNumber = pezpallet_bridge_grandpa::BridgedBlockNumber<R, GI>;
|
||||
type LaneId = LaneIdOf<R, Self::BridgeMessagesPalletInstance>;
|
||||
|
||||
fn parse_and_check_for_obsolete_call(
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Adapter that allows using `pallet-bridge-relayers` as a signed extension in the
|
||||
//! Adapter that allows using `pezpallet-bridge-relayers` as a signed extension in the
|
||||
//! bridge with any remote chain. This adapter does not refund any finality transactions.
|
||||
|
||||
use crate::{extension::verify_messages_call_succeeded, Config as BridgeRelayersConfig};
|
||||
@@ -22,11 +22,11 @@ use crate::{extension::verify_messages_call_succeeded, Config as BridgeRelayersC
|
||||
use bp_relayers::{ExtensionCallData, ExtensionCallInfo, ExtensionConfig};
|
||||
use bp_runtime::StaticStrProvider;
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::dispatch::{DispatchInfo, PostDispatchInfo};
|
||||
use pallet_bridge_messages::{
|
||||
use pezframe_support::dispatch::{DispatchInfo, PostDispatchInfo};
|
||||
use pezpallet_bridge_messages::{
|
||||
CallSubType as BridgeMessagesCallSubType, Config as BridgeMessagesConfig, LaneIdOf,
|
||||
};
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
traits::{Dispatchable, Get},
|
||||
transaction_validity::{TransactionPriority, TransactionValidityError},
|
||||
};
|
||||
@@ -43,11 +43,11 @@ pub struct WithMessagesExtensionConfig<
|
||||
PhantomData<(
|
||||
// signed extension identifier
|
||||
IdProvider,
|
||||
// runtime with `pallet-bridge-messages` pallet deployed
|
||||
// runtime with `pezpallet-bridge-messages` pallet deployed
|
||||
Runtime,
|
||||
// instance of BridgedChain `pallet-bridge-messages`, tracked by this extension
|
||||
// instance of BridgedChain `pezpallet-bridge-messages`, tracked by this extension
|
||||
BridgeMessagesPalletInstance,
|
||||
// instance of `pallet-bridge-relayers`, tracked by this extension
|
||||
// instance of `pezpallet-bridge-relayers`, tracked by this extension
|
||||
BridgeRelayersPalletInstance,
|
||||
// message delivery transaction priority boost for every additional message
|
||||
PriorityBoostPerMessage,
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Signed extension, built around `pallet-bridge-relayers`. It is able to:
|
||||
//! Signed extension, built around `pezpallet-bridge-relayers`. It is able to:
|
||||
//!
|
||||
//! - refund the cost of successful message delivery and confirmation transactions to the submitter
|
||||
//! by registering corresponding reward in the pallet;
|
||||
@@ -32,21 +32,21 @@ use bp_relayers::{
|
||||
use bp_runtime::{Chain, RangeInclusiveExt, StaticStrProvider};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode};
|
||||
use core::{fmt::Debug, marker::PhantomData};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
dispatch::{DispatchInfo, PostDispatchInfo},
|
||||
pallet_prelude::TransactionSource,
|
||||
pezpallet_prelude::TransactionSource,
|
||||
weights::Weight,
|
||||
CloneNoBound, DefaultNoBound, EqNoBound, PartialEqNoBound, RuntimeDebugNoBound,
|
||||
};
|
||||
use frame_system::Config as SystemConfig;
|
||||
use pallet_bridge_messages::{
|
||||
use pezframe_system::Config as SystemConfig;
|
||||
use pezpallet_bridge_messages::{
|
||||
CallHelper as MessagesCallHelper, Config as BridgeMessagesConfig, LaneIdOf,
|
||||
};
|
||||
use pallet_transaction_payment::{
|
||||
use pezpallet_transaction_payment::{
|
||||
Config as TransactionPaymentConfig, OnChargeTransaction, Pallet as TransactionPaymentPallet,
|
||||
};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
traits::{
|
||||
AsSystemOriginSigner, DispatchInfoOf, Dispatchable, PostDispatchInfoOf,
|
||||
TransactionExtension, ValidateResult, Zero,
|
||||
@@ -106,13 +106,13 @@ pub enum RelayerAccountAction<AccountId, RewardBalance, LaneId> {
|
||||
Slash(AccountId, RewardsAccountParams<LaneId>),
|
||||
}
|
||||
|
||||
/// A signed extension, built around `pallet-bridge-relayers`.
|
||||
/// A signed extension, built around `pezpallet-bridge-relayers`.
|
||||
///
|
||||
/// It may be incorporated into runtime to refund relayers for submitting correct
|
||||
/// message delivery and confirmation transactions, optionally batched with required
|
||||
/// finality proofs.
|
||||
///
|
||||
/// (Works only with `pallet-bridge-messages` and `RewardsAccountParams` as the `Reward`)
|
||||
/// (Works only with `pezpallet-bridge-messages` and `RewardsAccountParams` as the `Reward`)
|
||||
#[derive(
|
||||
DefaultNoBound,
|
||||
CloneNoBound,
|
||||
@@ -467,17 +467,17 @@ mod tests {
|
||||
use bp_runtime::{BasicOperatingMode, HeaderId, Teyrchain};
|
||||
use bp_test_utils::{make_default_justification, test_keyring, TEST_GRANDPA_SET_ID};
|
||||
use bp_teyrchains::{BestParaHeadHash, ParaInfo, SubmitTeyrchainHeadsInfo};
|
||||
use frame_support::{
|
||||
__private::sp_tracing,
|
||||
use pezframe_support::{
|
||||
__private::pezsp_tracing,
|
||||
assert_storage_noop, parameter_types,
|
||||
traits::{fungible::Mutate, ReservableCurrency},
|
||||
weights::Weight,
|
||||
};
|
||||
use pallet_bridge_grandpa::{Call as GrandpaCall, Pallet as GrandpaPallet, StoredAuthoritySet};
|
||||
use pallet_bridge_messages::{Call as MessagesCall, Pallet as MessagesPallet};
|
||||
use pallet_bridge_teyrchains::{Call as TeyrchainsCall, Pallet as TeyrchainsPallet};
|
||||
use pallet_utility::Call as UtilityCall;
|
||||
use sp_runtime::{
|
||||
use pezpallet_bridge_grandpa::{Call as GrandpaCall, Pallet as GrandpaPallet, StoredAuthoritySet};
|
||||
use pezpallet_bridge_messages::{Call as MessagesCall, Pallet as MessagesPallet};
|
||||
use pezpallet_bridge_teyrchains::{Call as TeyrchainsCall, Pallet as TeyrchainsPallet};
|
||||
use pezpallet_utility::Call as UtilityCall;
|
||||
use pezsp_runtime::{
|
||||
traits::{ConstU64, DispatchTransaction, Header as HeaderT},
|
||||
transaction_validity::{
|
||||
InvalidTransaction, TransactionSource::External, TransactionValidity, ValidTransaction,
|
||||
@@ -565,11 +565,11 @@ mod tests {
|
||||
) {
|
||||
let authorities = test_keyring().into_iter().map(|(a, w)| (a.into(), w)).collect();
|
||||
let best_relay_header = HeaderId(best_relay_header_number, BridgedChainHash::default());
|
||||
pallet_bridge_grandpa::CurrentAuthoritySet::<TestRuntime>::put(
|
||||
pezpallet_bridge_grandpa::CurrentAuthoritySet::<TestRuntime>::put(
|
||||
StoredAuthoritySet::try_new(authorities, TEST_GRANDPA_SET_ID).unwrap(),
|
||||
);
|
||||
pallet_bridge_grandpa::BestFinalized::<TestRuntime>::put(best_relay_header);
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
pezpallet_bridge_grandpa::BestFinalized::<TestRuntime>::put(best_relay_header);
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime>::insert(
|
||||
best_relay_header.hash(),
|
||||
bp_test_utils::test_header::<BridgedChainHeader>(0).build(),
|
||||
);
|
||||
@@ -582,16 +582,16 @@ mod tests {
|
||||
},
|
||||
next_imported_hash_position: 0,
|
||||
};
|
||||
pallet_bridge_teyrchains::ParasInfo::<TestRuntime>::insert(para_id, para_info);
|
||||
pezpallet_bridge_teyrchains::ParasInfo::<TestRuntime>::insert(para_id, para_info);
|
||||
|
||||
let lane_id = test_lane_id();
|
||||
let in_lane_data =
|
||||
InboundLaneData { last_confirmed_nonce: best_message, ..Default::default() };
|
||||
pallet_bridge_messages::InboundLanes::<TestRuntime>::insert(lane_id, in_lane_data);
|
||||
pezpallet_bridge_messages::InboundLanes::<TestRuntime>::insert(lane_id, in_lane_data);
|
||||
|
||||
let out_lane_data =
|
||||
OutboundLaneData { latest_received_nonce: best_message, ..Default::default() };
|
||||
pallet_bridge_messages::OutboundLanes::<TestRuntime>::insert(lane_id, out_lane_data);
|
||||
pezpallet_bridge_messages::OutboundLanes::<TestRuntime>::insert(lane_id, out_lane_data);
|
||||
|
||||
Balances::mint_into(&delivery_rewards_account(), ExistentialDeposit::get()).unwrap();
|
||||
Balances::mint_into(&confirmation_rewards_account(), ExistentialDeposit::get()).unwrap();
|
||||
@@ -670,7 +670,7 @@ mod tests {
|
||||
bridged_header_hash: Default::default(),
|
||||
storage_proof: Default::default(),
|
||||
lane: test_lane_id(),
|
||||
nonces_start: pallet_bridge_messages::InboundLanes::<TestRuntime>::get(
|
||||
nonces_start: pezpallet_bridge_messages::InboundLanes::<TestRuntime>::get(
|
||||
test_lane_id(),
|
||||
)
|
||||
.unwrap()
|
||||
@@ -1137,7 +1137,7 @@ mod tests {
|
||||
Option<PreDispatchData<ThisChainAccountId, BridgedChainBlockNumber, TestLaneIdType>>,
|
||||
TransactionValidityError,
|
||||
> {
|
||||
sp_tracing::try_init_simple();
|
||||
pezsp_tracing::try_init_simple();
|
||||
let extension: TestExtension = BridgeRelayersTransactionExtension(PhantomData);
|
||||
extension
|
||||
.validate_and_prepare(
|
||||
@@ -1189,17 +1189,17 @@ mod tests {
|
||||
fn dispatch_info() -> DispatchInfo {
|
||||
DispatchInfo {
|
||||
call_weight: Weight::from_parts(
|
||||
frame_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND,
|
||||
pezframe_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND,
|
||||
0,
|
||||
),
|
||||
extension_weight: Weight::zero(),
|
||||
class: frame_support::dispatch::DispatchClass::Normal,
|
||||
pays_fee: frame_support::dispatch::Pays::Yes,
|
||||
class: pezframe_support::dispatch::DispatchClass::Normal,
|
||||
pays_fee: pezframe_support::dispatch::Pays::Yes,
|
||||
}
|
||||
}
|
||||
|
||||
fn post_dispatch_info() -> PostDispatchInfo {
|
||||
PostDispatchInfo { actual_weight: None, pays_fee: frame_support::dispatch::Pays::Yes }
|
||||
PostDispatchInfo { actual_weight: None, pays_fee: pezframe_support::dispatch::Pays::Yes }
|
||||
}
|
||||
|
||||
fn run_post_dispatch(
|
||||
@@ -1223,7 +1223,7 @@ mod tests {
|
||||
let extra_weight = <TestRuntime as RelayersConfig>::WeightInfo::extra_weight_of_successful_receive_messages_proof_call();
|
||||
post_dispatch_info.actual_weight =
|
||||
Some(dispatch_info().call_weight.saturating_sub(extra_weight));
|
||||
pallet_transaction_payment::Pallet::<TestRuntime>::compute_actual_fee(
|
||||
pezpallet_transaction_payment::Pallet::<TestRuntime>::compute_actual_fee(
|
||||
1024,
|
||||
&dispatch_info(),
|
||||
&post_dispatch_info,
|
||||
@@ -1232,7 +1232,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn expected_confirmation_reward() -> RewardBalance {
|
||||
pallet_transaction_payment::Pallet::<TestRuntime>::compute_actual_fee(
|
||||
pezpallet_transaction_payment::Pallet::<TestRuntime>::compute_actual_fee(
|
||||
1024,
|
||||
&dispatch_info(),
|
||||
&post_dispatch_info(),
|
||||
@@ -1783,7 +1783,7 @@ mod tests {
|
||||
|
||||
let mut dispatch_info = dispatch_info();
|
||||
dispatch_info.call_weight = Weight::from_parts(
|
||||
frame_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND * 2,
|
||||
pezframe_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND * 2,
|
||||
0,
|
||||
);
|
||||
|
||||
@@ -1804,7 +1804,7 @@ mod tests {
|
||||
match pre_dispatch_data.call_info {
|
||||
ExtensionCallInfo::AllFinalityAndMsgs(ref mut info, ..) => {
|
||||
info.extra_weight.set_ref_time(
|
||||
frame_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND,
|
||||
pezframe_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND,
|
||||
);
|
||||
info.extra_size = 32;
|
||||
},
|
||||
@@ -2424,7 +2424,7 @@ mod tests {
|
||||
.into(),
|
||||
..Default::default()
|
||||
};
|
||||
pallet_bridge_messages::InboundLanes::<TestRuntime>::insert(lane_id, in_lane_data);
|
||||
pezpallet_bridge_messages::InboundLanes::<TestRuntime>::insert(lane_id, in_lane_data);
|
||||
|
||||
// now check that the priority of empty tx is the same as priority of 1-message tx
|
||||
let priority_of_zero_messages_delivery =
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
//! single message with nonce `N`, then the transaction with nonces `N..=N+100` will
|
||||
//! be rejected. This can lower bridge throughput down to one message per block.
|
||||
|
||||
use frame_support::traits::Get;
|
||||
use sp_runtime::transaction_validity::TransactionPriority;
|
||||
use pezframe_support::traits::Get;
|
||||
use pezsp_runtime::transaction_validity::TransactionPriority;
|
||||
|
||||
// reexport everything from `integrity_tests` module
|
||||
#[allow(unused_imports)]
|
||||
@@ -53,19 +53,19 @@ mod integrity_tests {
|
||||
|
||||
use bp_messages::MessageNonce;
|
||||
use bp_runtime::PreComputedSize;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
dispatch::{DispatchClass, DispatchInfo, Pays, PostDispatchInfo},
|
||||
traits::Get,
|
||||
};
|
||||
use pallet_transaction_payment::OnChargeTransaction;
|
||||
use sp_runtime::{
|
||||
use pezpallet_transaction_payment::OnChargeTransaction;
|
||||
use pezsp_runtime::{
|
||||
traits::{Dispatchable, UniqueSaturatedInto, Zero},
|
||||
transaction_validity::TransactionPriority,
|
||||
FixedPointOperand, SaturatedConversion, Saturating,
|
||||
};
|
||||
|
||||
type BalanceOf<T> =
|
||||
<<T as pallet_transaction_payment::Config>::OnChargeTransaction as OnChargeTransaction<
|
||||
<<T as pezpallet_transaction_payment::Config>::OnChargeTransaction as OnChargeTransaction<
|
||||
T,
|
||||
>>::Balance;
|
||||
|
||||
@@ -145,7 +145,7 @@ mod integrity_tests {
|
||||
use bp_header_chain::{
|
||||
max_expected_submit_finality_proof_arguments_size, ChainWithGrandpa,
|
||||
};
|
||||
use pallet_bridge_grandpa::WeightInfoExt;
|
||||
use pezpallet_bridge_grandpa::WeightInfoExt;
|
||||
|
||||
/// Ensures that the value of `PriorityBoostPerHeader` matches the value of
|
||||
/// `tip_boost_per_header`.
|
||||
@@ -158,7 +158,7 @@ mod integrity_tests {
|
||||
tip_boost_per_header: BalanceOf<Runtime>,
|
||||
) where
|
||||
Runtime:
|
||||
pallet_transaction_payment::Config + pallet_bridge_grandpa::Config<GrandpaInstance>,
|
||||
pezpallet_transaction_payment::Config + pezpallet_bridge_grandpa::Config<GrandpaInstance>,
|
||||
GrandpaInstance: 'static,
|
||||
PriorityBoostPerHeader: Get<TransactionPriority>,
|
||||
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo>,
|
||||
@@ -190,7 +190,7 @@ mod integrity_tests {
|
||||
) -> TransactionPriority
|
||||
where
|
||||
Runtime:
|
||||
pallet_transaction_payment::Config + pallet_bridge_grandpa::Config<GrandpaInstance>,
|
||||
pezpallet_transaction_payment::Config + pezpallet_bridge_grandpa::Config<GrandpaInstance>,
|
||||
GrandpaInstance: 'static,
|
||||
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo>,
|
||||
BalanceOf<Runtime>: Send + Sync + FixedPointOperand,
|
||||
@@ -206,14 +206,14 @@ mod integrity_tests {
|
||||
|
||||
// finally we are able to estimate transaction size and weight
|
||||
let transaction_size = base_tx_size.saturating_add(tx_call_size);
|
||||
let transaction_weight = <Runtime as ::pallet_bridge_grandpa::Config<
|
||||
let transaction_weight = <Runtime as ::pezpallet_bridge_grandpa::Config<
|
||||
GrandpaInstance,
|
||||
>>::WeightInfo::submit_finality_proof_weight(
|
||||
Runtime::BridgedChain::MAX_AUTHORITIES_COUNT * 2 / 3 + 1,
|
||||
Runtime::BridgedChain::REASONABLE_HEADERS_IN_JUSTIFICATION_ANCESTRY,
|
||||
);
|
||||
|
||||
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::get_priority(
|
||||
pezpallet_transaction_payment::ChargeTransactionPayment::<Runtime>::get_priority(
|
||||
&DispatchInfo {
|
||||
call_weight: transaction_weight,
|
||||
extension_weight: Default::default(),
|
||||
@@ -232,7 +232,7 @@ mod integrity_tests {
|
||||
use super::*;
|
||||
|
||||
use bp_runtime::Teyrchain;
|
||||
use pallet_bridge_teyrchains::WeightInfoExt;
|
||||
use pezpallet_bridge_teyrchains::WeightInfoExt;
|
||||
|
||||
/// Ensures that the value of `PriorityBoostPerHeader` matches the value of
|
||||
/// `tip_boost_per_header`.
|
||||
@@ -249,8 +249,8 @@ mod integrity_tests {
|
||||
>(
|
||||
tip_boost_per_header: BalanceOf<Runtime>,
|
||||
) where
|
||||
Runtime: pallet_transaction_payment::Config
|
||||
+ pallet_bridge_teyrchains::Config<TeyrchainsInstance>,
|
||||
Runtime: pezpallet_transaction_payment::Config
|
||||
+ pezpallet_bridge_teyrchains::Config<TeyrchainsInstance>,
|
||||
TeyrchainsInstance: 'static,
|
||||
Para: Teyrchain,
|
||||
PriorityBoostPerHeader: Get<TransactionPriority>,
|
||||
@@ -288,8 +288,8 @@ mod integrity_tests {
|
||||
tip: BalanceOf<Runtime>,
|
||||
) -> TransactionPriority
|
||||
where
|
||||
Runtime: pallet_transaction_payment::Config
|
||||
+ pallet_bridge_teyrchains::Config<TeyrchainsInstance>,
|
||||
Runtime: pezpallet_transaction_payment::Config
|
||||
+ pezpallet_bridge_teyrchains::Config<TeyrchainsInstance>,
|
||||
TeyrchainsInstance: 'static,
|
||||
Para: Teyrchain,
|
||||
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo>,
|
||||
@@ -300,14 +300,14 @@ mod integrity_tests {
|
||||
// all call arguments except the proof itself)
|
||||
let base_tx_size = 512;
|
||||
// let's say we are relaying largest teyrchain headers and proof takes some more bytes
|
||||
let tx_call_size = <Runtime as pallet_bridge_teyrchains::Config<
|
||||
let tx_call_size = <Runtime as pezpallet_bridge_teyrchains::Config<
|
||||
TeyrchainsInstance,
|
||||
>>::WeightInfo::expected_extra_storage_proof_size()
|
||||
.saturating_add(Para::MAX_HEADER_SIZE);
|
||||
|
||||
// finally we are able to estimate transaction size and weight
|
||||
let transaction_size = base_tx_size.saturating_add(tx_call_size);
|
||||
let transaction_weight = <Runtime as pallet_bridge_teyrchains::Config<
|
||||
let transaction_weight = <Runtime as pezpallet_bridge_teyrchains::Config<
|
||||
TeyrchainsInstance,
|
||||
>>::WeightInfo::submit_teyrchain_heads_weight(
|
||||
Runtime::DbWeight::get(),
|
||||
@@ -316,7 +316,7 @@ mod integrity_tests {
|
||||
1,
|
||||
);
|
||||
|
||||
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::get_priority(
|
||||
pezpallet_transaction_payment::ChargeTransactionPayment::<Runtime>::get_priority(
|
||||
&DispatchInfo {
|
||||
call_weight: transaction_weight,
|
||||
extension_weight: Default::default(),
|
||||
@@ -335,7 +335,7 @@ mod integrity_tests {
|
||||
use super::*;
|
||||
|
||||
use bp_messages::ChainWithMessages;
|
||||
use pallet_bridge_messages::WeightInfoExt;
|
||||
use pezpallet_bridge_messages::WeightInfoExt;
|
||||
|
||||
/// Ensures that the value of `PriorityBoostPerMessage` matches the value of
|
||||
/// `tip_boost_per_message`.
|
||||
@@ -347,8 +347,8 @@ mod integrity_tests {
|
||||
pub fn ensure_priority_boost_is_sane<Runtime, MessagesInstance, PriorityBoostPerMessage>(
|
||||
tip_boost_per_message: BalanceOf<Runtime>,
|
||||
) where
|
||||
Runtime: pallet_transaction_payment::Config
|
||||
+ pallet_bridge_messages::Config<MessagesInstance>,
|
||||
Runtime: pezpallet_transaction_payment::Config
|
||||
+ pezpallet_bridge_messages::Config<MessagesInstance>,
|
||||
MessagesInstance: 'static,
|
||||
PriorityBoostPerMessage: Get<TransactionPriority>,
|
||||
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo>,
|
||||
@@ -375,8 +375,8 @@ mod integrity_tests {
|
||||
tip: BalanceOf<Runtime>,
|
||||
) -> TransactionPriority
|
||||
where
|
||||
Runtime: pallet_transaction_payment::Config
|
||||
+ pallet_bridge_messages::Config<MessagesInstance>,
|
||||
Runtime: pezpallet_transaction_payment::Config
|
||||
+ pezpallet_bridge_messages::Config<MessagesInstance>,
|
||||
MessagesInstance: 'static,
|
||||
Runtime::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo>,
|
||||
BalanceOf<Runtime>: Send + Sync + FixedPointOperand,
|
||||
@@ -389,7 +389,7 @@ mod integrity_tests {
|
||||
// trie nodes to the proof (x0.5 because we expect some nodes to be reused)
|
||||
let estimated_message_size = 512;
|
||||
// let's say all our messages have the same dispatch weight
|
||||
let estimated_message_dispatch_weight = <Runtime as pallet_bridge_messages::Config<
|
||||
let estimated_message_dispatch_weight = <Runtime as pezpallet_bridge_messages::Config<
|
||||
MessagesInstance,
|
||||
>>::WeightInfo::message_dispatch_weight(
|
||||
estimated_message_size
|
||||
@@ -397,7 +397,7 @@ mod integrity_tests {
|
||||
// messages proof argument size is (for every message) messages size + some additional
|
||||
// trie nodes. Some of them are reused by different messages, so let's take 2/3 of
|
||||
// default "overhead" constant
|
||||
let messages_proof_size = <Runtime as pallet_bridge_messages::Config<
|
||||
let messages_proof_size = <Runtime as pezpallet_bridge_messages::Config<
|
||||
MessagesInstance,
|
||||
>>::WeightInfo::expected_extra_storage_proof_size()
|
||||
.saturating_mul(2)
|
||||
@@ -407,7 +407,7 @@ mod integrity_tests {
|
||||
|
||||
// finally we are able to estimate transaction size and weight
|
||||
let transaction_size = base_tx_size.saturating_add(messages_proof_size);
|
||||
let transaction_weight = <Runtime as pallet_bridge_messages::Config<
|
||||
let transaction_weight = <Runtime as pezpallet_bridge_messages::Config<
|
||||
MessagesInstance,
|
||||
>>::WeightInfo::receive_messages_proof_weight(
|
||||
&PreComputedSize(transaction_size as _),
|
||||
@@ -415,7 +415,7 @@ mod integrity_tests {
|
||||
estimated_message_dispatch_weight.saturating_mul(messages),
|
||||
);
|
||||
|
||||
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::get_priority(
|
||||
pezpallet_transaction_payment::ChargeTransactionPayment::<Runtime>::get_priority(
|
||||
&DispatchInfo {
|
||||
call_weight: transaction_weight,
|
||||
extension_weight: Default::default(),
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Adapter that allows using `pallet-bridge-relayers` as a signed extension in the
|
||||
//! Adapter that allows using `pezpallet-bridge-relayers` as a signed extension in the
|
||||
//! bridge with remote teyrchain.
|
||||
|
||||
use crate::{
|
||||
@@ -27,19 +27,19 @@ use crate::{
|
||||
use bp_relayers::{BatchCallUnpacker, ExtensionCallData, ExtensionCallInfo, ExtensionConfig};
|
||||
use bp_runtime::{StaticStrProvider, Teyrchain};
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::dispatch::{DispatchInfo, PostDispatchInfo};
|
||||
use frame_system::Config as SystemConfig;
|
||||
use pallet_bridge_grandpa::{
|
||||
use pezframe_support::dispatch::{DispatchInfo, PostDispatchInfo};
|
||||
use pezframe_system::Config as SystemConfig;
|
||||
use pezpallet_bridge_grandpa::{
|
||||
CallSubType as BridgeGrandpaCallSubtype, Config as BridgeGrandpaConfig,
|
||||
};
|
||||
use pallet_bridge_messages::{
|
||||
use pezpallet_bridge_messages::{
|
||||
CallSubType as BridgeMessagesCallSubType, Config as BridgeMessagesConfig, LaneIdOf,
|
||||
};
|
||||
use pallet_bridge_teyrchains::{
|
||||
use pezpallet_bridge_teyrchains::{
|
||||
CallSubType as BridgeTeyrchainsCallSubtype, Config as BridgeTeyrchainsConfig,
|
||||
SubmitTeyrchainHeadsHelper,
|
||||
};
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
traits::{Dispatchable, Get},
|
||||
transaction_validity::{TransactionPriority, TransactionValidityError},
|
||||
};
|
||||
@@ -54,11 +54,11 @@ pub struct WithTeyrchainExtensionConfig<
|
||||
Runtime,
|
||||
// batch call unpacker
|
||||
BatchCallUnpacker,
|
||||
// instance of the `pallet-bridge-teyrchains`, tracked by this extension
|
||||
// instance of the `pezpallet-bridge-teyrchains`, tracked by this extension
|
||||
BridgeTeyrchainsPalletInstance,
|
||||
// instance of BridgedChain `pallet-bridge-messages`, tracked by this extension
|
||||
// instance of BridgedChain `pezpallet-bridge-messages`, tracked by this extension
|
||||
BridgeMessagesPalletInstance,
|
||||
// instance of `pallet-bridge-relayers`, tracked by this extension
|
||||
// instance of `pezpallet-bridge-relayers`, tracked by this extension
|
||||
BridgeRelayersPalletInstance,
|
||||
// message delivery transaction priority boost for every additional message
|
||||
PriorityBoostPerMessage,
|
||||
@@ -99,7 +99,7 @@ where
|
||||
type BridgeRelayersPalletInstance = RI;
|
||||
type PriorityBoostPerMessage = P;
|
||||
type RemoteGrandpaChainBlockNumber =
|
||||
pallet_bridge_grandpa::BridgedBlockNumber<R, R::BridgesGrandpaPalletInstance>;
|
||||
pezpallet_bridge_grandpa::BridgedBlockNumber<R, R::BridgesGrandpaPalletInstance>;
|
||||
type LaneId = LaneIdOf<R, Self::BridgeMessagesPalletInstance>;
|
||||
|
||||
fn parse_and_check_for_obsolete_call(
|
||||
|
||||
@@ -25,9 +25,9 @@ pub use bp_relayers::RewardLedger;
|
||||
use bp_relayers::{PaymentProcedure, Registration, RelayerRewardsKeyProvider, StakeAndSlash};
|
||||
use bp_runtime::StorageDoubleMapKeyProvider;
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::{fail, traits::tokens::Balance};
|
||||
use sp_arithmetic::traits::{AtLeast32BitUnsigned, Zero};
|
||||
use sp_runtime::{
|
||||
use pezframe_support::{fail, traits::tokens::Balance};
|
||||
use pezsp_arithmetic::traits::{AtLeast32BitUnsigned, Zero};
|
||||
use pezsp_runtime::{
|
||||
traits::{CheckedSub, IdentifyAccount},
|
||||
Saturating,
|
||||
};
|
||||
@@ -51,32 +51,32 @@ pub mod weights;
|
||||
/// The target that will be used when publishing logs related to this pallet.
|
||||
pub const LOG_TARGET: &str = "runtime::bridge-relayers";
|
||||
|
||||
#[frame_support::pallet]
|
||||
#[pezframe_support::pallet]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use pezframe_support::pezpallet_prelude::*;
|
||||
use pezframe_system::pezpallet_prelude::*;
|
||||
|
||||
/// `RelayerRewardsKeyProvider` for given configuration.
|
||||
type RelayerRewardsKeyProviderOf<T, I> = RelayerRewardsKeyProvider<
|
||||
<T as frame_system::Config>::AccountId,
|
||||
<T as pezframe_system::Config>::AccountId,
|
||||
<T as Config<I>>::Reward,
|
||||
<T as Config<I>>::RewardBalance,
|
||||
>;
|
||||
|
||||
/// Shortcut to alternative beneficiary type for `Config::PaymentProcedure`.
|
||||
pub type BeneficiaryOf<T, I> = <<T as Config<I>>::PaymentProcedure as PaymentProcedure<
|
||||
<T as frame_system::Config>::AccountId,
|
||||
<T as pezframe_system::Config>::AccountId,
|
||||
<T as Config<I>>::Reward,
|
||||
<T as Config<I>>::RewardBalance,
|
||||
>>::Beneficiary;
|
||||
|
||||
#[pallet::config]
|
||||
pub trait Config<I: 'static = ()>: frame_system::Config {
|
||||
pub trait Config<I: 'static = ()>: pezframe_system::Config {
|
||||
/// The overarching event type.
|
||||
#[allow(deprecated)]
|
||||
type RuntimeEvent: From<Event<Self, I>>
|
||||
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
|
||||
+ IsType<<Self as pezframe_system::Config>::RuntimeEvent>;
|
||||
|
||||
/// Type of relayer reward balance.
|
||||
type RewardBalance: AtLeast32BitUnsigned + Copy + Member + Parameter + MaxEncodedLen;
|
||||
@@ -107,7 +107,7 @@ pub mod pallet {
|
||||
#[pallet::call]
|
||||
impl<T: Config<I>, I: 'static> Pallet<T, I>
|
||||
where
|
||||
BeneficiaryOf<T, I>: From<<T as frame_system::Config>::AccountId>,
|
||||
BeneficiaryOf<T, I>: From<<T as pezframe_system::Config>::AccountId>,
|
||||
{
|
||||
/// Claim accumulated rewards.
|
||||
#[pallet::call_index(0)]
|
||||
@@ -128,7 +128,7 @@ pub mod pallet {
|
||||
|
||||
// valid till must be larger than the current block number and the lease must be larger
|
||||
// than the `RequiredRegistrationLease`
|
||||
let lease = valid_till.saturating_sub(frame_system::Pallet::<T>::block_number());
|
||||
let lease = valid_till.saturating_sub(pezframe_system::Pallet::<T>::block_number());
|
||||
ensure!(
|
||||
lease > Self::required_registration_lease(),
|
||||
Error::<T, I>::InvalidRegistrationLease
|
||||
@@ -202,7 +202,7 @@ pub mod pallet {
|
||||
|
||||
// we can't deregister until `valid_till + 1`
|
||||
ensure!(
|
||||
registration.valid_till < frame_system::Pallet::<T>::block_number(),
|
||||
registration.valid_till < pezframe_system::Pallet::<T>::block_number(),
|
||||
Error::<T, I>::RegistrationIsStillActive,
|
||||
);
|
||||
|
||||
@@ -320,7 +320,7 @@ pub mod pallet {
|
||||
// registration is inactive if it ends soon
|
||||
let remaining_lease = registration
|
||||
.valid_till
|
||||
.saturating_sub(frame_system::Pallet::<T>::block_number());
|
||||
.saturating_sub(pezframe_system::Pallet::<T>::block_number());
|
||||
if remaining_lease <= Self::required_registration_lease() {
|
||||
return false;
|
||||
}
|
||||
@@ -580,9 +580,9 @@ mod tests {
|
||||
|
||||
use bp_messages::{HashedLaneId, LaneIdType};
|
||||
use bp_relayers::{RewardsAccountOwner, RewardsAccountParams};
|
||||
use frame_support::{assert_noop, assert_ok, traits::fungible::Mutate};
|
||||
use frame_system::{EventRecord, Pallet as System, Phase};
|
||||
use sp_runtime::DispatchError;
|
||||
use pezframe_support::{assert_noop, assert_ok, traits::fungible::Mutate};
|
||||
use pezframe_system::{EventRecord, Pallet as System, Phase};
|
||||
use pezsp_runtime::DispatchError;
|
||||
|
||||
fn get_ready_for_events() {
|
||||
System::<TestRuntime>::set_block_number(1);
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
//! A module that is responsible for migration of storage.
|
||||
|
||||
use alloc::vec::Vec;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::{Get, StorageVersion},
|
||||
weights::Weight,
|
||||
};
|
||||
@@ -33,9 +33,9 @@ pub mod v0 {
|
||||
use bp_runtime::{ChainId, StorageDoubleMapKeyProvider};
|
||||
use codec::{Codec, Decode, Encode, EncodeLike, MaxEncodedLen};
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::{pallet_prelude::OptionQuery, Blake2_128Concat, Identity};
|
||||
use pezframe_support::{pezpallet_prelude::OptionQuery, Blake2_128Concat, Identity};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_runtime::traits::AccountIdConversion;
|
||||
use pezsp_runtime::traits::AccountIdConversion;
|
||||
|
||||
/// Structure used to identify the account that pays a reward to the relayer.
|
||||
#[derive(Copy, Clone, Debug, Decode, Encode, Eq, PartialEq, TypeInfo, MaxEncodedLen)]
|
||||
@@ -59,7 +59,7 @@ pub mod v0 {
|
||||
}
|
||||
}
|
||||
|
||||
impl<LaneId> sp_runtime::TypeId for RewardsAccountParams<LaneId> {
|
||||
impl<LaneId> pezsp_runtime::TypeId for RewardsAccountParams<LaneId> {
|
||||
const TYPE_ID: [u8; 4] = *b"brap";
|
||||
}
|
||||
|
||||
@@ -84,12 +84,12 @@ pub mod v0 {
|
||||
}
|
||||
|
||||
pub(crate) type RelayerRewardsKeyProviderOf<T, I, LaneId> = RelayerRewardsKeyProvider<
|
||||
<T as frame_system::Config>::AccountId,
|
||||
<T as pezframe_system::Config>::AccountId,
|
||||
<T as Config<I>>::RewardBalance,
|
||||
LaneId,
|
||||
>;
|
||||
|
||||
#[frame_support::storage_alias]
|
||||
#[pezframe_support::storage_alias]
|
||||
pub(crate) type RelayerRewards<T: Config<I>, I: 'static, LaneId> = StorageDoubleMap<
|
||||
Pallet<T, I>,
|
||||
<RelayerRewardsKeyProviderOf<T, I, LaneId> as StorageDoubleMapKeyProvider>::Hasher1,
|
||||
@@ -125,10 +125,10 @@ pub mod v1 {
|
||||
use bp_runtime::StorageDoubleMapKeyProvider;
|
||||
use codec::{Codec, EncodeLike};
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::{
|
||||
pallet_prelude::OptionQuery, traits::UncheckedOnRuntimeUpgrade, Blake2_128Concat, Identity,
|
||||
use pezframe_support::{
|
||||
pezpallet_prelude::OptionQuery, traits::UncheckedOnRuntimeUpgrade, Blake2_128Concat, Identity,
|
||||
};
|
||||
use sp_arithmetic::traits::Zero;
|
||||
use pezsp_arithmetic::traits::Zero;
|
||||
|
||||
pub(crate) struct RelayerRewardsKeyProvider<AccountId, RewardBalance, LaneId>(
|
||||
PhantomData<(AccountId, RewardBalance, LaneId)>,
|
||||
@@ -151,12 +151,12 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
pub(crate) type RelayerRewardsKeyProviderOf<T, I, LaneId> = RelayerRewardsKeyProvider<
|
||||
<T as frame_system::Config>::AccountId,
|
||||
<T as pezframe_system::Config>::AccountId,
|
||||
<T as Config<I>>::RewardBalance,
|
||||
LaneId,
|
||||
>;
|
||||
|
||||
#[frame_support::storage_alias]
|
||||
#[pezframe_support::storage_alias]
|
||||
pub(crate) type RelayerRewards<T: Config<I>, I: 'static, LaneId> = StorageDoubleMap<
|
||||
Pallet<T, I>,
|
||||
<RelayerRewardsKeyProviderOf<T, I, LaneId> as StorageDoubleMapKeyProvider>::Hasher1,
|
||||
@@ -177,7 +177,7 @@ pub mod v1 {
|
||||
relayer: &T::AccountId,
|
||||
reward_balance: T::RewardBalance,
|
||||
) {
|
||||
use sp_runtime::Saturating;
|
||||
use pezsp_runtime::Saturating;
|
||||
|
||||
if reward_balance.is_zero() {
|
||||
return;
|
||||
@@ -240,10 +240,10 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn pre_upgrade() -> Result<Vec<u8>, sp_runtime::DispatchError> {
|
||||
fn pre_upgrade() -> Result<Vec<u8>, pezsp_runtime::DispatchError> {
|
||||
use codec::Encode;
|
||||
use frame_support::BoundedBTreeMap;
|
||||
use sp_runtime::traits::ConstU32;
|
||||
use pezframe_support::BoundedBTreeMap;
|
||||
use pezsp_runtime::traits::ConstU32;
|
||||
|
||||
// collect actual rewards
|
||||
let mut rewards: BoundedBTreeMap<
|
||||
@@ -268,10 +268,10 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn post_upgrade(state: Vec<u8>) -> Result<(), sp_runtime::DispatchError> {
|
||||
fn post_upgrade(state: Vec<u8>) -> Result<(), pezsp_runtime::DispatchError> {
|
||||
use codec::Decode;
|
||||
use frame_support::BoundedBTreeMap;
|
||||
use sp_runtime::traits::ConstU32;
|
||||
use pezframe_support::BoundedBTreeMap;
|
||||
use pezsp_runtime::traits::ConstU32;
|
||||
|
||||
let rewards_before: BoundedBTreeMap<
|
||||
(T::AccountId, LaneId),
|
||||
@@ -298,7 +298,7 @@ pub mod v1 {
|
||||
}
|
||||
tracing::info!(target: LOG_TARGET, ?rewards_after, "Found total migrated rewards");
|
||||
|
||||
frame_support::ensure!(
|
||||
pezframe_support::ensure!(
|
||||
rewards_before == rewards_after,
|
||||
"The rewards were not migrated correctly!."
|
||||
);
|
||||
@@ -309,14 +309,14 @@ pub mod v1 {
|
||||
}
|
||||
|
||||
/// [`UncheckedMigrationV0ToV1`] wrapped in a
|
||||
/// [`VersionedMigration`](frame_support::migrations::VersionedMigration), ensuring the
|
||||
/// [`VersionedMigration`](pezframe_support::migrations::VersionedMigration), ensuring the
|
||||
/// migration is only performed when on-chain version is 0.
|
||||
pub type MigrationToV1<T, I, LaneId> = frame_support::migrations::VersionedMigration<
|
||||
pub type MigrationToV1<T, I, LaneId> = pezframe_support::migrations::VersionedMigration<
|
||||
0,
|
||||
1,
|
||||
UncheckedMigrationV0ToV1<T, I, LaneId>,
|
||||
Pallet<T, I>,
|
||||
<T as frame_system::Config>::DbWeight,
|
||||
<T as pezframe_system::Config>::DbWeight,
|
||||
>;
|
||||
}
|
||||
|
||||
@@ -331,7 +331,7 @@ pub mod v2 {
|
||||
use bp_messages::LaneIdType;
|
||||
use bp_relayers::RewardsAccountParams;
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::traits::UncheckedOnRuntimeUpgrade;
|
||||
use pezframe_support::traits::UncheckedOnRuntimeUpgrade;
|
||||
|
||||
/// Migrates the pallet storage to v2.
|
||||
pub struct UncheckedMigrationV1ToV2<T, I, LaneId>(PhantomData<(T, I, LaneId)>);
|
||||
@@ -369,10 +369,10 @@ pub mod v2 {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn pre_upgrade() -> Result<Vec<u8>, sp_runtime::DispatchError> {
|
||||
fn pre_upgrade() -> Result<Vec<u8>, pezsp_runtime::DispatchError> {
|
||||
use codec::Encode;
|
||||
use frame_support::BoundedBTreeMap;
|
||||
use sp_runtime::traits::ConstU32;
|
||||
use pezframe_support::BoundedBTreeMap;
|
||||
use pezsp_runtime::traits::ConstU32;
|
||||
|
||||
// collect actual rewards
|
||||
let mut rewards: BoundedBTreeMap<
|
||||
@@ -398,10 +398,10 @@ pub mod v2 {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn post_upgrade(state: Vec<u8>) -> Result<(), sp_runtime::DispatchError> {
|
||||
fn post_upgrade(state: Vec<u8>) -> Result<(), pezsp_runtime::DispatchError> {
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::BoundedBTreeMap;
|
||||
use sp_runtime::traits::ConstU32;
|
||||
use pezframe_support::BoundedBTreeMap;
|
||||
use pezsp_runtime::traits::ConstU32;
|
||||
|
||||
let rewards_before: BoundedBTreeMap<
|
||||
(T::AccountId, Vec<u8>),
|
||||
@@ -428,7 +428,7 @@ pub mod v2 {
|
||||
}
|
||||
tracing::info!(target: LOG_TARGET, ?rewards_after, "Found total migrated rewards");
|
||||
|
||||
frame_support::ensure!(
|
||||
pezframe_support::ensure!(
|
||||
rewards_before == rewards_after,
|
||||
"The rewards were not migrated correctly!."
|
||||
);
|
||||
@@ -439,13 +439,13 @@ pub mod v2 {
|
||||
}
|
||||
|
||||
/// [`UncheckedMigrationV1ToV2`] wrapped in a
|
||||
/// [`VersionedMigration`](frame_support::migrations::VersionedMigration), ensuring the
|
||||
/// [`VersionedMigration`](pezframe_support::migrations::VersionedMigration), ensuring the
|
||||
/// migration is only performed when on-chain version is 1.
|
||||
pub type MigrationToV2<T, I, LaneId> = frame_support::migrations::VersionedMigration<
|
||||
pub type MigrationToV2<T, I, LaneId> = pezframe_support::migrations::VersionedMigration<
|
||||
1,
|
||||
2,
|
||||
UncheckedMigrationV1ToV2<T, I, LaneId>,
|
||||
Pallet<T, I>,
|
||||
<T as frame_system::Config>::DbWeight,
|
||||
<T as pezframe_system::Config>::DbWeight,
|
||||
>;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#![cfg(test)]
|
||||
|
||||
use crate as pallet_bridge_relayers;
|
||||
use crate as pezpallet_bridge_relayers;
|
||||
|
||||
use bp_header_chain::ChainWithGrandpa;
|
||||
use bp_messages::{
|
||||
@@ -29,14 +29,14 @@ use bp_relayers::{
|
||||
use bp_runtime::{messages::MessageDispatchResult, Chain, ChainId, Teyrchain};
|
||||
use bp_teyrchains::SingleParaStoredHeaderDataBuilder;
|
||||
use codec::Encode;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
derive_impl, parameter_types,
|
||||
traits::fungible::Mutate,
|
||||
weights::{ConstantMultiplier, IdentityFee, RuntimeDbWeight, Weight},
|
||||
};
|
||||
use pallet_transaction_payment::Multiplier;
|
||||
use sp_core::H256;
|
||||
use sp_runtime::{
|
||||
use pezpallet_transaction_payment::Multiplier;
|
||||
use pezsp_core::H256;
|
||||
use pezsp_runtime::{
|
||||
traits::{BlakeTwo256, ConstU32, ConstU64, ConstU8},
|
||||
BuildStorage, FixedPointNumber, Perquintill, StateVersion,
|
||||
};
|
||||
@@ -52,9 +52,9 @@ pub type ThisChainHash = H256;
|
||||
/// Hasher at `ThisChain`.
|
||||
pub type ThisChainHasher = BlakeTwo256;
|
||||
/// Header of `ThisChain`.
|
||||
pub type ThisChainHeader = sp_runtime::generic::Header<ThisChainBlockNumber, ThisChainHasher>;
|
||||
pub type ThisChainHeader = pezsp_runtime::generic::Header<ThisChainBlockNumber, ThisChainHasher>;
|
||||
/// Block of `ThisChain`.
|
||||
pub type ThisChainBlock = frame_system::mocking::MockBlockU32<TestRuntime>;
|
||||
pub type ThisChainBlock = pezframe_system::mocking::MockBlockU32<TestRuntime>;
|
||||
|
||||
/// Account identifier at the `BridgedChain`.
|
||||
pub type BridgedChainAccountId = u128;
|
||||
@@ -68,7 +68,7 @@ pub type BridgedChainHash = H256;
|
||||
pub type BridgedChainHasher = BlakeTwo256;
|
||||
/// Header of the `BridgedChain`.
|
||||
pub type BridgedChainHeader =
|
||||
sp_runtime::generic::Header<BridgedChainBlockNumber, BridgedChainHasher>;
|
||||
pezsp_runtime::generic::Header<BridgedChainBlockNumber, BridgedChainHasher>;
|
||||
|
||||
/// Bridged chain id used in tests.
|
||||
pub const TEST_BRIDGED_CHAIN_ID: ChainId = *b"brdg";
|
||||
@@ -97,7 +97,7 @@ impl Chain for ThisUnderlyingChain {
|
||||
type AccountId = ThisChainAccountId;
|
||||
type Balance = ThisChainBalance;
|
||||
type Nonce = u32;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -130,7 +130,7 @@ impl Chain for BridgedUnderlyingTeyrchain {
|
||||
type AccountId = BridgedChainAccountId;
|
||||
type Balance = BridgedChainBalance;
|
||||
type Nonce = u32;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -161,7 +161,7 @@ impl Teyrchain for BridgedUnderlyingTeyrchain {
|
||||
const MAX_HEADER_SIZE: u32 = 1_024;
|
||||
}
|
||||
|
||||
pub type TestStakeAndSlash = pallet_bridge_relayers::StakeAndSlashNamed<
|
||||
pub type TestStakeAndSlash = pezpallet_bridge_relayers::StakeAndSlashNamed<
|
||||
ThisChainAccountId,
|
||||
ThisChainBlockNumber,
|
||||
Balances,
|
||||
@@ -170,17 +170,17 @@ pub type TestStakeAndSlash = pallet_bridge_relayers::StakeAndSlashNamed<
|
||||
Lease,
|
||||
>;
|
||||
|
||||
frame_support::construct_runtime! {
|
||||
pezframe_support::construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system,
|
||||
Utility: pallet_utility,
|
||||
Balances: pallet_balances,
|
||||
TransactionPayment: pallet_transaction_payment,
|
||||
BridgeRelayers: pallet_bridge_relayers,
|
||||
BridgeGrandpa: pallet_bridge_grandpa,
|
||||
BridgeTeyrchains: pallet_bridge_teyrchains,
|
||||
BridgeMessages: pallet_bridge_messages,
|
||||
System: pezframe_system,
|
||||
Utility: pezpallet_utility,
|
||||
Balances: pezpallet_balances,
|
||||
TransactionPayment: pezpallet_transaction_payment,
|
||||
BridgeRelayers: pezpallet_bridge_relayers,
|
||||
BridgeGrandpa: pezpallet_bridge_grandpa,
|
||||
BridgeTeyrchains: pezpallet_bridge_teyrchains,
|
||||
BridgeMessages: pezpallet_bridge_messages,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,38 +196,38 @@ parameter_types! {
|
||||
pub const TransactionByteFee: ThisChainBalance = 1;
|
||||
pub AdjustmentVariable: Multiplier = Multiplier::saturating_from_rational(3, 100_000);
|
||||
pub MinimumMultiplier: Multiplier = Multiplier::saturating_from_rational(1, 1_000_000u128);
|
||||
pub MaximumMultiplier: Multiplier = sp_runtime::traits::Bounded::max_value();
|
||||
pub MaximumMultiplier: Multiplier = pezsp_runtime::traits::Bounded::max_value();
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Block = ThisChainBlock;
|
||||
// TODO: remove when https://github.com/paritytech/polkadot-sdk/pull/4543 merged
|
||||
// TODO: remove when https://github.com/pezkuwichain/kurdistan-sdk/issues/120 merged
|
||||
type BlockHashCount = ConstU32<10>;
|
||||
type AccountData = pallet_balances::AccountData<ThisChainBalance>;
|
||||
type AccountData = pezpallet_balances::AccountData<ThisChainBalance>;
|
||||
type DbWeight = DbWeight;
|
||||
}
|
||||
|
||||
#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pallet_balances::Config for TestRuntime {
|
||||
#[derive_impl(pezpallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pezpallet_balances::Config for TestRuntime {
|
||||
type ReserveIdentifier = [u8; 8];
|
||||
type AccountStore = System;
|
||||
}
|
||||
|
||||
impl pallet_utility::Config for TestRuntime {
|
||||
impl pezpallet_utility::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type RuntimeCall = RuntimeCall;
|
||||
type PalletsOrigin = OriginCaller;
|
||||
type WeightInfo = ();
|
||||
}
|
||||
|
||||
#[derive_impl(pallet_transaction_payment::config_preludes::TestDefaultConfig)]
|
||||
impl pallet_transaction_payment::Config for TestRuntime {
|
||||
type OnChargeTransaction = pallet_transaction_payment::FungibleAdapter<Balances, ()>;
|
||||
#[derive_impl(pezpallet_transaction_payment::config_preludes::TestDefaultConfig)]
|
||||
impl pezpallet_transaction_payment::Config for TestRuntime {
|
||||
type OnChargeTransaction = pezpallet_transaction_payment::FungibleAdapter<Balances, ()>;
|
||||
type OperationalFeeMultiplier = ConstU8<5>;
|
||||
type WeightToFee = IdentityFee<ThisChainBalance>;
|
||||
type LengthToFee = ConstantMultiplier<ThisChainBalance, TransactionByteFee>;
|
||||
type FeeMultiplierUpdate = pallet_transaction_payment::TargetedFeeAdjustment<
|
||||
type FeeMultiplierUpdate = pezpallet_transaction_payment::TargetedFeeAdjustment<
|
||||
TestRuntime,
|
||||
TargetBlockFullness,
|
||||
AdjustmentVariable,
|
||||
@@ -237,16 +237,16 @@ impl pallet_transaction_payment::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
}
|
||||
|
||||
impl pallet_bridge_grandpa::Config for TestRuntime {
|
||||
impl pezpallet_bridge_grandpa::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgedChain = BridgedUnderlyingTeyrchain;
|
||||
type MaxFreeHeadersPerBlock = ConstU32<4>;
|
||||
type FreeHeadersInterval = ConstU32<1_024>;
|
||||
type HeadersToKeep = ConstU32<8>;
|
||||
type WeightInfo = pallet_bridge_grandpa::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_grandpa::weights::BridgeWeight<TestRuntime>;
|
||||
}
|
||||
|
||||
impl pallet_bridge_teyrchains::Config for TestRuntime {
|
||||
impl pezpallet_bridge_teyrchains::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgesGrandpaPalletInstance = ();
|
||||
type ParasPalletName = BridgedParasPalletName;
|
||||
@@ -254,20 +254,20 @@ impl pallet_bridge_teyrchains::Config for TestRuntime {
|
||||
SingleParaStoredHeaderDataBuilder<BridgedUnderlyingTeyrchain>;
|
||||
type HeadsToKeep = ConstU32<8>;
|
||||
type MaxParaHeadDataSize = ConstU32<1024>;
|
||||
type WeightInfo = pallet_bridge_teyrchains::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_teyrchains::weights::BridgeWeight<TestRuntime>;
|
||||
type OnNewHead = ();
|
||||
}
|
||||
|
||||
impl pallet_bridge_messages::Config for TestRuntime {
|
||||
impl pezpallet_bridge_messages::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type WeightInfo = pallet_bridge_messages::weights::BridgeWeight<TestRuntime>;
|
||||
type WeightInfo = pezpallet_bridge_messages::weights::BridgeWeight<TestRuntime>;
|
||||
|
||||
type OutboundPayload = Vec<u8>;
|
||||
type InboundPayload = Vec<u8>;
|
||||
type LaneId = TestLaneIdType;
|
||||
|
||||
type DeliveryPayments = ();
|
||||
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
|
||||
type DeliveryConfirmationPayments = pezpallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
|
||||
TestRuntime,
|
||||
(),
|
||||
(),
|
||||
@@ -281,10 +281,10 @@ impl pallet_bridge_messages::Config for TestRuntime {
|
||||
type BridgedHeaderChain = BridgeGrandpa;
|
||||
}
|
||||
|
||||
impl pallet_bridge_relayers::Config for TestRuntime {
|
||||
impl pezpallet_bridge_relayers::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type RewardBalance = RewardBalance;
|
||||
type Reward = RewardsAccountParams<pallet_bridge_messages::LaneIdOf<TestRuntime, ()>>;
|
||||
type Reward = RewardsAccountParams<pezpallet_bridge_messages::LaneIdOf<TestRuntime, ()>>;
|
||||
type PaymentProcedure = TestPaymentProcedure;
|
||||
type StakeAndSlash = TestStakeAndSlash;
|
||||
type Balance = ThisChainBalance;
|
||||
@@ -292,7 +292,7 @@ impl pallet_bridge_relayers::Config for TestRuntime {
|
||||
}
|
||||
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
impl pallet_bridge_relayers::benchmarking::Config for TestRuntime {
|
||||
impl pezpallet_bridge_relayers::benchmarking::Config for TestRuntime {
|
||||
fn bench_reward() -> Self::Reward {
|
||||
RewardsAccountParams::new(
|
||||
TestLaneIdType::default(),
|
||||
@@ -317,7 +317,7 @@ impl pallet_bridge_relayers::benchmarking::Config for TestRuntime {
|
||||
}
|
||||
|
||||
fn deposit_account(account: Self::AccountId, balance: Self::Balance) {
|
||||
frame_support::assert_ok!(Balances::mint_into(
|
||||
pezframe_support::assert_ok!(Balances::mint_into(
|
||||
&account,
|
||||
balance.saturating_add(ExistentialDeposit::get())
|
||||
));
|
||||
@@ -370,7 +370,7 @@ pub struct DummyMessageDispatch;
|
||||
|
||||
impl DummyMessageDispatch {
|
||||
pub fn deactivate(lane: TestLaneIdType) {
|
||||
frame_support::storage::unhashed::put(&(b"inactive", lane).encode()[..], &false);
|
||||
pezframe_support::storage::unhashed::put(&(b"inactive", lane).encode()[..], &false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -380,7 +380,7 @@ impl MessageDispatch for DummyMessageDispatch {
|
||||
type LaneId = TestLaneIdType;
|
||||
|
||||
fn is_active(lane: Self::LaneId) -> bool {
|
||||
frame_support::storage::unhashed::take::<bool>(&(b"inactive", lane).encode()[..]) !=
|
||||
pezframe_support::storage::unhashed::take::<bool>(&(b"inactive", lane).encode()[..]) !=
|
||||
Some(false)
|
||||
}
|
||||
|
||||
@@ -407,9 +407,9 @@ pub fn test_reward_account_param() -> RewardsAccountParams<TestLaneIdType> {
|
||||
}
|
||||
|
||||
/// Return test externalities to use in tests.
|
||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||
let t = frame_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap();
|
||||
sp_io::TestExternalities::new(t)
|
||||
pub fn new_test_ext() -> pezsp_io::TestExternalities {
|
||||
let t = pezframe_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap();
|
||||
pezsp_io::TestExternalities::new(t)
|
||||
}
|
||||
|
||||
/// Run pallet test.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Code that allows relayers pallet to be used as a payment mechanism for
|
||||
//! the `pallet-bridge-messages` pallet using `RewardsAccountParams`.
|
||||
//! the `pezpallet-bridge-messages` pallet using `RewardsAccountParams`.
|
||||
|
||||
use crate::{Config, Pallet};
|
||||
|
||||
@@ -28,12 +28,12 @@ pub use bp_relayers::PayRewardFromAccount;
|
||||
use bp_relayers::{RewardsAccountOwner, RewardsAccountParams};
|
||||
use bp_runtime::Chain;
|
||||
use core::{marker::PhantomData, ops::RangeInclusive};
|
||||
use frame_support::{sp_runtime::SaturatedConversion, traits::Get};
|
||||
use pallet_bridge_messages::LaneIdOf;
|
||||
use sp_arithmetic::traits::{Saturating, Zero};
|
||||
use pezframe_support::{pezsp_runtime::SaturatedConversion, traits::Get};
|
||||
use pezpallet_bridge_messages::LaneIdOf;
|
||||
use pezsp_arithmetic::traits::{Saturating, Zero};
|
||||
|
||||
/// Adapter that allows relayers pallet to be used as a delivery+dispatch payment mechanism
|
||||
/// for the `pallet-bridge-messages` pallet and using `RewardsAccountParams`.
|
||||
/// for the `pezpallet-bridge-messages` pallet and using `RewardsAccountParams`.
|
||||
pub struct DeliveryConfirmationPaymentsAdapter<T, MI, RI, DeliveryReward>(
|
||||
PhantomData<(T, MI, RI, DeliveryReward)>,
|
||||
);
|
||||
@@ -41,7 +41,7 @@ pub struct DeliveryConfirmationPaymentsAdapter<T, MI, RI, DeliveryReward>(
|
||||
impl<T, MI, RI, DeliveryReward> DeliveryConfirmationPayments<T::AccountId, LaneIdOf<T, MI>>
|
||||
for DeliveryConfirmationPaymentsAdapter<T, MI, RI, DeliveryReward>
|
||||
where
|
||||
T: Config<RI> + pallet_bridge_messages::Config<MI>,
|
||||
T: Config<RI> + pezpallet_bridge_messages::Config<MI>,
|
||||
MI: 'static,
|
||||
RI: 'static,
|
||||
DeliveryReward: Get<T::RewardBalance>,
|
||||
@@ -76,7 +76,7 @@ where
|
||||
|
||||
// Update rewards to given relayers, optionally rewarding confirmation relayer.
|
||||
fn register_relayers_rewards<
|
||||
T: Config<RI> + pallet_bridge_messages::Config<MI>,
|
||||
T: Config<RI> + pezpallet_bridge_messages::Config<MI>,
|
||||
RI: 'static,
|
||||
MI: 'static,
|
||||
>(
|
||||
@@ -117,7 +117,7 @@ mod tests {
|
||||
use crate::{mock::*, RelayerRewards};
|
||||
use bp_messages::LaneIdType;
|
||||
use bp_relayers::PaymentProcedure;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
assert_ok,
|
||||
traits::fungible::{Inspect, Mutate},
|
||||
};
|
||||
@@ -178,7 +178,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn pay_reward_from_account_actually_pays_reward() {
|
||||
type Balances = pallet_balances::Pallet<TestRuntime>;
|
||||
type Balances = pezpallet_balances::Pallet<TestRuntime>;
|
||||
type PayLaneRewardFromAccount =
|
||||
PayRewardFromAccount<Balances, ThisChainAccountId, TestLaneIdType, RewardBalance>;
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
use bp_relayers::StakeAndSlash;
|
||||
use codec::Codec;
|
||||
use core::{fmt::Debug, marker::PhantomData};
|
||||
use frame_support::traits::{tokens::BalanceStatus, NamedReservableCurrency};
|
||||
use sp_runtime::{traits::Get, DispatchError, DispatchResult};
|
||||
use pezframe_support::traits::{tokens::BalanceStatus, NamedReservableCurrency};
|
||||
use pezsp_runtime::{traits::Get, DispatchError, DispatchResult};
|
||||
|
||||
/// `StakeAndSlash` that works with `NamedReservableCurrency` and uses named
|
||||
/// reservations.
|
||||
@@ -74,8 +74,8 @@ mod tests {
|
||||
use crate::mock::*;
|
||||
use bp_relayers::ExplicitOrAccountParams;
|
||||
|
||||
use frame_support::traits::fungible::Mutate;
|
||||
use sp_runtime::traits::IdentifyAccount;
|
||||
use pezframe_support::traits::fungible::Mutate;
|
||||
use pezsp_runtime::traits::IdentifyAccount;
|
||||
|
||||
fn test_stake() -> ThisChainBalance {
|
||||
Stake::get()
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Autogenerated weights for pallet_bridge_relayers
|
||||
//! Autogenerated weights for pezpallet_bridge_relayers
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE BIZINIKIWI BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2023-04-28, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! WORST CASE MAP SIZE: `1000000`
|
||||
//! HOSTNAME: `covid`, CPU: `11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz`
|
||||
@@ -29,7 +29,7 @@
|
||||
// --chain=dev
|
||||
// --steps=50
|
||||
// --repeat=20
|
||||
// --pallet=pallet_bridge_relayers
|
||||
// --pallet=pezpallet_bridge_relayers
|
||||
// --extrinsic=*
|
||||
// --execution=wasm
|
||||
// --wasm-execution=Compiled
|
||||
@@ -43,12 +43,12 @@
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use core::marker::PhantomData;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::Get,
|
||||
weights::{constants::RocksDbWeight, Weight},
|
||||
};
|
||||
|
||||
/// Weight functions needed for pallet_bridge_relayers.
|
||||
/// Weight functions needed for pezpallet_bridge_relayers.
|
||||
pub trait WeightInfo {
|
||||
fn claim_rewards() -> Weight;
|
||||
fn claim_rewards_to() -> Weight;
|
||||
@@ -58,11 +58,11 @@ pub trait WeightInfo {
|
||||
fn register_relayer_reward() -> Weight;
|
||||
}
|
||||
|
||||
/// Weights for `pallet_bridge_relayers` that are generated using one of the Bridge testnets.
|
||||
/// Weights for `pezpallet_bridge_relayers` that are generated using one of the Bridge testnets.
|
||||
///
|
||||
/// Those weights are test only and must never be used in production.
|
||||
pub struct BridgeWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
/// Storage: BridgeRelayers RelayerRewards (r:1 w:1)
|
||||
///
|
||||
/// Proof: BridgeRelayers RelayerRewards (max_values: None, max_size: Some(65), added: 2540,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
use crate::weights::WeightInfo;
|
||||
|
||||
use frame_support::pallet_prelude::Weight;
|
||||
use pezframe_support::pezpallet_prelude::Weight;
|
||||
|
||||
/// Extended weight info.
|
||||
pub trait WeightInfoExt: WeightInfo {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "pallet-bridge-teyrchains"
|
||||
name = "pezpallet-bridge-teyrchains"
|
||||
version = "0.7.0"
|
||||
description = "Module that allows bridged relay chains to exchange information on their teyrchains' heads."
|
||||
authors.workspace = true
|
||||
@@ -20,20 +20,20 @@ bp-header-chain = { workspace = true }
|
||||
bp-pezkuwi-core = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
bp-teyrchains = { workspace = true }
|
||||
pallet-bridge-grandpa = { workspace = true }
|
||||
pezpallet-bridge-grandpa = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-benchmarking = { optional = true, workspace = true }
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-benchmarking = { optional = true, workspace = true }
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-header-chain = { workspace = true, default-features = true }
|
||||
bp-test-utils = { workspace = true, default-features = true }
|
||||
sp-core = { workspace = true, default-features = true }
|
||||
sp-io = { workspace = true, default-features = true }
|
||||
pezsp-core = { workspace = true, default-features = true }
|
||||
pezsp-io = { workspace = true, default-features = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -43,13 +43,13 @@ std = [
|
||||
"bp-runtime/std",
|
||||
"bp-teyrchains/std",
|
||||
"codec/std",
|
||||
"frame-benchmarking/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pallet-bridge-grandpa/std",
|
||||
"pezframe-benchmarking/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezpallet-bridge-grandpa/std",
|
||||
"scale-info/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"tracing/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
@@ -58,16 +58,16 @@ runtime-benchmarks = [
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-test-utils/runtime-benchmarks",
|
||||
"bp-teyrchains/runtime-benchmarks",
|
||||
"frame-benchmarking/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pallet-bridge-grandpa/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-benchmarking/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezpallet-bridge-grandpa/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"pallet-bridge-grandpa/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezpallet-bridge-grandpa/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
|
||||
@@ -23,9 +23,9 @@ use crate::{
|
||||
|
||||
use bp_pezkuwi_core::teyrchains::{ParaHash, ParaHeadsProof, ParaId};
|
||||
use bp_runtime::UnverifiedStorageProofParams;
|
||||
use frame_benchmarking::{account, benchmarks_instance_pallet};
|
||||
use frame_system::RawOrigin;
|
||||
use sp_std::prelude::*;
|
||||
use pezframe_benchmarking::{account, benchmarks_instance_pallet};
|
||||
use pezframe_system::RawOrigin;
|
||||
use pezsp_std::prelude::*;
|
||||
|
||||
/// Pallet we're benchmarking here.
|
||||
pub struct Pallet<T: Config<I>, I: 'static = ()>(crate::Pallet<T, I>);
|
||||
@@ -45,7 +45,7 @@ pub trait Config<I: 'static>: crate::Config<I> {
|
||||
benchmarks_instance_pallet! {
|
||||
where_clause {
|
||||
where
|
||||
<T as pallet_bridge_grandpa::Config<T::BridgesGrandpaPalletInstance>>::BridgedChain:
|
||||
<T as pezpallet_bridge_grandpa::Config<T::BridgesGrandpaPalletInstance>>::BridgedChain:
|
||||
bp_runtime::Chain<
|
||||
BlockNumber = RelayBlockNumber,
|
||||
Hash = RelayBlockHash,
|
||||
|
||||
@@ -18,12 +18,12 @@ use crate::{Config, GrandpaPalletOf, Pallet, RelayBlockNumber};
|
||||
use bp_header_chain::HeaderChain;
|
||||
use bp_runtime::{HeaderId, OwnedBridgeModule};
|
||||
use bp_teyrchains::{BestParaHeadHash, SubmitTeyrchainHeadsInfo};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
dispatch::CallableCallFor,
|
||||
traits::{Get, IsSubType},
|
||||
};
|
||||
use pallet_bridge_grandpa::SubmitFinalityProofHelper;
|
||||
use sp_runtime::{
|
||||
use pezpallet_bridge_grandpa::SubmitFinalityProofHelper;
|
||||
use pezsp_runtime::{
|
||||
traits::Zero,
|
||||
transaction_validity::{InvalidTransaction, TransactionValidityError},
|
||||
RuntimeDebug,
|
||||
@@ -41,7 +41,7 @@ pub struct VerifiedSubmitTeyrchainHeadsInfo {
|
||||
|
||||
/// Helper struct that provides methods for working with the `SubmitTeyrchainHeads` call.
|
||||
pub struct SubmitTeyrchainHeadsHelper<T: Config<I>, I: 'static> {
|
||||
_phantom_data: sp_std::marker::PhantomData<(T, I)>,
|
||||
_phantom_data: pezsp_std::marker::PhantomData<(T, I)>,
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> SubmitTeyrchainHeadsHelper<T, I> {
|
||||
@@ -292,7 +292,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn insert_relay_block(num: RelayBlockNumber) {
|
||||
pallet_bridge_grandpa::ImportedHeaders::<TestRuntime, crate::Instance1>::insert(
|
||||
pezpallet_bridge_grandpa::ImportedHeaders::<TestRuntime, crate::Instance1>::insert(
|
||||
RelayBlockHash::from([num as u8; 32]),
|
||||
StoredHeaderData { number: num, state_root: RelayBlockHash::from([10u8; 32]) },
|
||||
);
|
||||
|
||||
@@ -34,10 +34,10 @@ use bp_teyrchains::{
|
||||
ParaInfo, ParaStoredHeaderData, RelayBlockHash, RelayBlockHasher, RelayBlockNumber,
|
||||
SubmitTeyrchainHeadsInfo,
|
||||
};
|
||||
use frame_support::{dispatch::PostDispatchInfo, DefaultNoBound};
|
||||
use pallet_bridge_grandpa::SubmitFinalityProofHelper;
|
||||
use pezframe_support::{dispatch::PostDispatchInfo, DefaultNoBound};
|
||||
use pezpallet_bridge_grandpa::SubmitFinalityProofHelper;
|
||||
use proofs::{StorageProofAdapter, TeyrchainsStorageProofAdapter};
|
||||
use sp_std::{marker::PhantomData, vec::Vec};
|
||||
use pezsp_std::{marker::PhantomData, vec::Vec};
|
||||
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
use bp_runtime::HeaderOf;
|
||||
@@ -72,7 +72,7 @@ struct UpdateTeyrchainHeadArtifacts {
|
||||
pub prune_happened: bool,
|
||||
}
|
||||
|
||||
#[frame_support::pallet]
|
||||
#[pezframe_support::pallet]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use bp_runtime::{
|
||||
@@ -83,8 +83,8 @@ pub mod pallet {
|
||||
BestParaHeadHash, ImportedParaHeadsKeyProvider, OnNewHead, ParaStoredHeaderDataBuilder,
|
||||
ParasInfoKeyProvider,
|
||||
};
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use pezframe_support::pezpallet_prelude::*;
|
||||
use pezframe_system::pezpallet_prelude::*;
|
||||
|
||||
/// Stored teyrchain head data of given teyrchains pallet.
|
||||
pub type StoredParaHeadDataOf<T, I> =
|
||||
@@ -93,7 +93,7 @@ pub mod pallet {
|
||||
pub type WeightInfoOf<T, I> = <T as Config<I>>::WeightInfo;
|
||||
/// Bridge GRANDPA pallet that is used to verify teyrchain proofs.
|
||||
pub type GrandpaPalletOf<T, I> =
|
||||
pallet_bridge_grandpa::Pallet<T, <T as Config<I>>::BridgesGrandpaPalletInstance>;
|
||||
pezpallet_bridge_grandpa::Pallet<T, <T as Config<I>>::BridgesGrandpaPalletInstance>;
|
||||
|
||||
#[pallet::event]
|
||||
#[pallet::generate_deposit(pub(super) fn deposit_event)]
|
||||
@@ -158,7 +158,7 @@ pub mod pallet {
|
||||
|
||||
/// Convenience trait for defining `BridgedChain` bounds.
|
||||
pub trait BoundedBridgeGrandpaConfig<I: 'static>:
|
||||
pallet_bridge_grandpa::Config<I, BridgedChain = Self::BridgedRelayChain>
|
||||
pezpallet_bridge_grandpa::Config<I, BridgedChain = Self::BridgedRelayChain>
|
||||
{
|
||||
/// Type of the bridged relay chain.
|
||||
type BridgedRelayChain: Chain<
|
||||
@@ -170,7 +170,7 @@ pub mod pallet {
|
||||
|
||||
impl<T, I: 'static> BoundedBridgeGrandpaConfig<I> for T
|
||||
where
|
||||
T: pallet_bridge_grandpa::Config<I>,
|
||||
T: pezpallet_bridge_grandpa::Config<I>,
|
||||
T::BridgedChain:
|
||||
Chain<BlockNumber = RelayBlockNumber, Hash = RelayBlockHash, Hasher = RelayBlockHasher>,
|
||||
{
|
||||
@@ -178,14 +178,14 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::config]
|
||||
#[pallet::disable_frame_system_supertrait_check]
|
||||
#[pallet::disable_pezframe_system_supertrait_check]
|
||||
pub trait Config<I: 'static = ()>:
|
||||
BoundedBridgeGrandpaConfig<Self::BridgesGrandpaPalletInstance>
|
||||
{
|
||||
/// The overarching event type.
|
||||
#[allow(deprecated)]
|
||||
type RuntimeEvent: From<Event<Self, I>>
|
||||
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
|
||||
+ IsType<<Self as pezframe_system::Config>::RuntimeEvent>;
|
||||
/// Benchmarks results from runtime we're plugged into.
|
||||
type WeightInfo: WeightInfoExt;
|
||||
|
||||
@@ -214,14 +214,14 @@ pub mod pallet {
|
||||
/// chain.
|
||||
///
|
||||
/// Please keep in mind that this should be the name of the `runtime_teyrchains::paras`
|
||||
/// pallet from pezkuwi repository, not the `pallet-bridge-teyrchains`.
|
||||
/// pallet from pezkuwi repository, not the `pezpallet-bridge-teyrchains`.
|
||||
#[pallet::constant]
|
||||
type ParasPalletName: Get<&'static str>;
|
||||
|
||||
/// Teyrchain head data builder.
|
||||
///
|
||||
/// We never store teyrchain heads here, since they may be too big (e.g. because of large
|
||||
/// digest items). Instead we're using the same approach as `pallet-bridge-grandpa`
|
||||
/// digest items). Instead we're using the same approach as `pezpallet-bridge-grandpa`
|
||||
/// pallet - we are only storing `bp_messages::StoredHeaderData` (number and state root),
|
||||
/// which is enough for our applications. However, we work with different teyrchains here
|
||||
/// and they can use different primitives (for block numbers and hash). So we can't store
|
||||
@@ -433,7 +433,7 @@ pub mod pallet {
|
||||
|
||||
// we'll need relay chain header to verify that teyrchains heads are always increasing.
|
||||
let (relay_block_number, relay_block_hash) = at_relay_block;
|
||||
let relay_block = pallet_bridge_grandpa::ImportedHeaders::<
|
||||
let relay_block = pezpallet_bridge_grandpa::ImportedHeaders::<
|
||||
T,
|
||||
T::BridgesGrandpaPalletInstance,
|
||||
>::get(relay_block_hash)
|
||||
@@ -583,7 +583,7 @@ pub mod pallet {
|
||||
&& SubmitFinalityProofHelper::<T, T::BridgesGrandpaPalletInstance>::has_free_header_slots();
|
||||
let pays_fee = if is_free {
|
||||
tracing::trace!(target: LOG_TARGET, "Teyrchain heads update transaction is free");
|
||||
pallet_bridge_grandpa::on_free_header_imported::<T, T::BridgesGrandpaPalletInstance>(
|
||||
pezpallet_bridge_grandpa::on_free_header_imported::<T, T::BridgesGrandpaPalletInstance>(
|
||||
);
|
||||
Pays::No
|
||||
} else {
|
||||
@@ -743,7 +743,7 @@ pub mod pallet {
|
||||
pub owner: Option<T::AccountId>,
|
||||
/// Dummy marker.
|
||||
#[serde(skip)]
|
||||
pub _phantom: sp_std::marker::PhantomData<I>,
|
||||
pub _phantom: pezsp_std::marker::PhantomData<I>,
|
||||
}
|
||||
|
||||
#[pallet::genesis_build]
|
||||
@@ -791,17 +791,17 @@ impl<T: Config<I>, I: 'static, C: Teyrchain<Hash = ParaHash>> HeaderChain<C>
|
||||
}
|
||||
}
|
||||
|
||||
/// (Re)initialize pallet with given header for using it in `pallet-bridge-messages` benchmarks.
|
||||
/// (Re)initialize pallet with given header for using it in `pezpallet-bridge-messages` benchmarks.
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
pub fn initialize_for_benchmarks<T: Config<I>, I: 'static, PC: Teyrchain<Hash = ParaHash>>(
|
||||
header: HeaderOf<PC>,
|
||||
) {
|
||||
use bp_pezkuwi_core::teyrchains::ParaHead;
|
||||
use bp_runtime::HeaderIdProvider;
|
||||
use sp_runtime::traits::Header;
|
||||
use pezsp_runtime::traits::Header;
|
||||
|
||||
let relay_head =
|
||||
pallet_bridge_grandpa::BridgedHeader::<T, T::BridgesGrandpaPalletInstance>::new(
|
||||
pezpallet_bridge_grandpa::BridgedHeader::<T, T::BridgesGrandpaPalletInstance>::new(
|
||||
0,
|
||||
Default::default(),
|
||||
Default::default(),
|
||||
@@ -812,7 +812,7 @@ pub fn initialize_for_benchmarks<T: Config<I>, I: 'static, PC: Teyrchain<Hash =
|
||||
let teyrchain_head = ParaHead(header.encode());
|
||||
let updated_head_data = T::ParaStoredHeaderDataBuilder::try_build(teyrchain, &teyrchain_head)
|
||||
.expect("failed to build stored teyrchain head in benchmarks");
|
||||
pallet_bridge_grandpa::initialize_for_benchmarks::<T, T::BridgesGrandpaPalletInstance>(
|
||||
pezpallet_bridge_grandpa::initialize_for_benchmarks::<T, T::BridgesGrandpaPalletInstance>(
|
||||
relay_head.clone(),
|
||||
);
|
||||
Pallet::<T, I>::update_teyrchain_head(
|
||||
@@ -850,25 +850,25 @@ pub(crate) mod tests {
|
||||
use bp_teyrchains::{
|
||||
BestParaHeadHash, BridgeTeyrchainCall, ImportedParaHeadsKeyProvider, ParasInfoKeyProvider,
|
||||
};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
assert_noop, assert_ok,
|
||||
dispatch::DispatchResultWithPostInfo,
|
||||
pallet_prelude::Pays,
|
||||
pezpallet_prelude::Pays,
|
||||
storage::generator::{StorageDoubleMap, StorageMap},
|
||||
traits::Get,
|
||||
weights::Weight,
|
||||
};
|
||||
use frame_system::{EventRecord, Pallet as System, Phase};
|
||||
use sp_core::Hasher;
|
||||
use sp_runtime::{traits::Header as HeaderT, DispatchError};
|
||||
use pezframe_system::{EventRecord, Pallet as System, Phase};
|
||||
use pezsp_core::Hasher;
|
||||
use pezsp_runtime::{traits::Header as HeaderT, DispatchError};
|
||||
|
||||
type BridgesGrandpaPalletInstance = pallet_bridge_grandpa::Instance1;
|
||||
type BridgesGrandpaPalletInstance = pezpallet_bridge_grandpa::Instance1;
|
||||
type WeightInfo = <TestRuntime as Config>::WeightInfo;
|
||||
type DbWeight = <TestRuntime as frame_system::Config>::DbWeight;
|
||||
type DbWeight = <TestRuntime as pezframe_system::Config>::DbWeight;
|
||||
|
||||
pub(crate) fn initialize(state_root: RelayBlockHash) -> RelayBlockHash {
|
||||
pallet_bridge_grandpa::FreeHeadersRemaining::<TestRuntime, BridgesGrandpaPalletInstance>::set(Some(100));
|
||||
pallet_bridge_grandpa::Pallet::<TestRuntime, BridgesGrandpaPalletInstance>::initialize(
|
||||
pezpallet_bridge_grandpa::FreeHeadersRemaining::<TestRuntime, BridgesGrandpaPalletInstance>::set(Some(100));
|
||||
pezpallet_bridge_grandpa::Pallet::<TestRuntime, BridgesGrandpaPalletInstance>::initialize(
|
||||
RuntimeOrigin::root(),
|
||||
bp_header_chain::InitializationData {
|
||||
header: Box::new(test_relay_header(0, state_root)),
|
||||
@@ -893,7 +893,7 @@ pub(crate) mod tests {
|
||||
let hash = header.hash();
|
||||
let justification = make_default_justification(&header);
|
||||
assert_ok!(
|
||||
pallet_bridge_grandpa::Pallet::<TestRuntime, BridgesGrandpaPalletInstance>::submit_finality_proof_ex(
|
||||
pezpallet_bridge_grandpa::Pallet::<TestRuntime, BridgesGrandpaPalletInstance>::submit_finality_proof_ex(
|
||||
RuntimeOrigin::signed(1),
|
||||
Box::new(header),
|
||||
justification.clone(),
|
||||
@@ -974,7 +974,7 @@ pub(crate) mod tests {
|
||||
}
|
||||
|
||||
fn weight_of_import_teyrchain_1_head(proof: &ParaHeadsProof, prune_expected: bool) -> Weight {
|
||||
let db_weight = <TestRuntime as frame_system::Config>::DbWeight::get();
|
||||
let db_weight = <TestRuntime as pezframe_system::Config>::DbWeight::get();
|
||||
WeightInfoOf::<TestRuntime, ()>::submit_teyrchain_heads_weight(db_weight, proof, 1)
|
||||
.saturating_sub(if prune_expected {
|
||||
Weight::zero()
|
||||
@@ -1180,7 +1180,7 @@ pub(crate) mod tests {
|
||||
EventRecord {
|
||||
phase: Phase::Initialization,
|
||||
event: TestEvent::Grandpa1(
|
||||
pallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
pezpallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
number: 1,
|
||||
hash: relay_1_hash,
|
||||
grandpa_info: StoredHeaderGrandpaInfo {
|
||||
@@ -1321,7 +1321,7 @@ pub(crate) mod tests {
|
||||
EventRecord {
|
||||
phase: Phase::Initialization,
|
||||
event: TestEvent::Grandpa1(
|
||||
pallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
pezpallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
number: 1,
|
||||
hash: relay_1_hash,
|
||||
grandpa_info: StoredHeaderGrandpaInfo {
|
||||
@@ -1374,7 +1374,7 @@ pub(crate) mod tests {
|
||||
EventRecord {
|
||||
phase: Phase::Initialization,
|
||||
event: TestEvent::Grandpa1(
|
||||
pallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
pezpallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
number: 1,
|
||||
hash: relay_1_hash,
|
||||
grandpa_info: StoredHeaderGrandpaInfo {
|
||||
@@ -1415,7 +1415,7 @@ pub(crate) mod tests {
|
||||
EventRecord {
|
||||
phase: Phase::Initialization,
|
||||
event: TestEvent::Grandpa1(
|
||||
pallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
pezpallet_bridge_grandpa::Event::UpdatedBestFinalizedHeader {
|
||||
number: 1,
|
||||
hash: relay_1_hash,
|
||||
grandpa_info: StoredHeaderGrandpaInfo {
|
||||
@@ -1842,7 +1842,7 @@ pub(crate) mod tests {
|
||||
initialize(Default::default());
|
||||
// set free headers limit to `4`
|
||||
let mut free_headers_remaining = 4;
|
||||
pallet_bridge_grandpa::FreeHeadersRemaining::<TestRuntime, BridgesGrandpaPalletInstance>::set(
|
||||
pezpallet_bridge_grandpa::FreeHeadersRemaining::<TestRuntime, BridgesGrandpaPalletInstance>::set(
|
||||
Some(free_headers_remaining),
|
||||
);
|
||||
// import free GRANDPA and teyrchain headers
|
||||
@@ -1855,7 +1855,7 @@ pub(crate) mod tests {
|
||||
relay_block_number = relay_block_number + FreeHeadersInterval::get();
|
||||
proceed(relay_block_number, state_root);
|
||||
assert_eq!(
|
||||
pallet_bridge_grandpa::FreeHeadersRemaining::<
|
||||
pezpallet_bridge_grandpa::FreeHeadersRemaining::<
|
||||
TestRuntime,
|
||||
BridgesGrandpaPalletInstance,
|
||||
>::get(),
|
||||
@@ -1870,7 +1870,7 @@ pub(crate) mod tests {
|
||||
proof,
|
||||
),);
|
||||
assert_eq!(
|
||||
pallet_bridge_grandpa::FreeHeadersRemaining::<
|
||||
pezpallet_bridge_grandpa::FreeHeadersRemaining::<
|
||||
TestRuntime,
|
||||
BridgesGrandpaPalletInstance,
|
||||
>::get(),
|
||||
@@ -1882,7 +1882,7 @@ pub(crate) mod tests {
|
||||
let (state_root, proof, teyrchains) =
|
||||
prepare_teyrchain_heads_proof::<RegularTeyrchainHeader>(vec![(2, head_data(2, 7))]);
|
||||
relay_block_number = relay_block_number + FreeHeadersInterval::get();
|
||||
let result = pallet_bridge_grandpa::Pallet::<TestRuntime, BridgesGrandpaPalletInstance>::submit_finality_proof_ex(
|
||||
let result = pezpallet_bridge_grandpa::Pallet::<TestRuntime, BridgesGrandpaPalletInstance>::submit_finality_proof_ex(
|
||||
RuntimeOrigin::signed(1),
|
||||
Box::new(test_relay_header(relay_block_number, state_root)),
|
||||
make_default_justification(&test_relay_header(relay_block_number, state_root)),
|
||||
@@ -1899,7 +1899,7 @@ pub(crate) mod tests {
|
||||
);
|
||||
assert_eq!(result.unwrap().pays_fee, Pays::Yes);
|
||||
assert_eq!(
|
||||
pallet_bridge_grandpa::FreeHeadersRemaining::<
|
||||
pezpallet_bridge_grandpa::FreeHeadersRemaining::<
|
||||
TestRuntime,
|
||||
BridgesGrandpaPalletInstance,
|
||||
>::get(),
|
||||
|
||||
@@ -17,23 +17,23 @@
|
||||
use bp_header_chain::ChainWithGrandpa;
|
||||
use bp_pezkuwi_core::teyrchains::ParaId;
|
||||
use bp_runtime::{Chain, ChainId, Teyrchain};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
construct_runtime, derive_impl, parameter_types, traits::ConstU32, weights::Weight,
|
||||
};
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
testing::H256,
|
||||
traits::{BlakeTwo256, Header as HeaderT},
|
||||
MultiSignature, StateVersion,
|
||||
};
|
||||
|
||||
use crate as pallet_bridge_teyrchains;
|
||||
use crate as pezpallet_bridge_teyrchains;
|
||||
|
||||
pub type AccountId = u64;
|
||||
|
||||
pub type RelayBlockHeader =
|
||||
sp_runtime::generic::Header<crate::RelayBlockNumber, crate::RelayBlockHasher>;
|
||||
pezsp_runtime::generic::Header<crate::RelayBlockNumber, crate::RelayBlockHasher>;
|
||||
|
||||
type Block = frame_system::mocking::MockBlock<TestRuntime>;
|
||||
type Block = pezframe_system::mocking::MockBlock<TestRuntime>;
|
||||
|
||||
pub const PARAS_PALLET_NAME: &str = "Paras";
|
||||
pub const UNTRACKED_TEYRCHAIN_ID: u32 = 10;
|
||||
@@ -42,9 +42,9 @@ pub const MAXIMAL_TEYRCHAIN_HEAD_DATA_SIZE: u32 = 1 + 8 + 32;
|
||||
// total teyrchains that we use in tests
|
||||
pub const TOTAL_TEYRCHAINS: u32 = 4;
|
||||
|
||||
pub type RegularTeyrchainHeader = sp_runtime::testing::Header;
|
||||
pub type RegularTeyrchainHeader = pezsp_runtime::testing::Header;
|
||||
pub type RegularTeyrchainHasher = BlakeTwo256;
|
||||
pub type BigTeyrchainHeader = sp_runtime::generic::Header<u128, BlakeTwo256>;
|
||||
pub type BigTeyrchainHeader = pezsp_runtime::generic::Header<u128, BlakeTwo256>;
|
||||
|
||||
pub struct Teyrchain1;
|
||||
|
||||
@@ -166,15 +166,15 @@ impl Teyrchain for BigTeyrchain {
|
||||
construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Grandpa1: pallet_bridge_grandpa::<Instance1>::{Pallet, Event<T>},
|
||||
Grandpa2: pallet_bridge_grandpa::<Instance2>::{Pallet, Event<T>},
|
||||
Teyrchains: pallet_bridge_teyrchains::{Call, Pallet, Event<T>},
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Grandpa1: pezpallet_bridge_grandpa::<Instance1>::{Pallet, Event<T>},
|
||||
Grandpa2: pezpallet_bridge_grandpa::<Instance2>::{Pallet, Event<T>},
|
||||
Teyrchains: pezpallet_bridge_teyrchains::{Call, Pallet, Event<T>},
|
||||
}
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Block = Block;
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ parameter_types! {
|
||||
pub const FreeHeadersInterval: u32 = 15;
|
||||
}
|
||||
|
||||
impl pallet_bridge_grandpa::Config<pallet_bridge_grandpa::Instance1> for TestRuntime {
|
||||
impl pezpallet_bridge_grandpa::Config<pezpallet_bridge_grandpa::Instance1> for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgedChain = TestBridgedChain;
|
||||
type MaxFreeHeadersPerBlock = ConstU32<2>;
|
||||
@@ -192,7 +192,7 @@ impl pallet_bridge_grandpa::Config<pallet_bridge_grandpa::Instance1> for TestRun
|
||||
type WeightInfo = ();
|
||||
}
|
||||
|
||||
impl pallet_bridge_grandpa::Config<pallet_bridge_grandpa::Instance2> for TestRuntime {
|
||||
impl pezpallet_bridge_grandpa::Config<pezpallet_bridge_grandpa::Instance2> for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type BridgedChain = TestBridgedChain;
|
||||
type MaxFreeHeadersPerBlock = ConstU32<2>;
|
||||
@@ -207,10 +207,10 @@ parameter_types! {
|
||||
pub GetTenFirstTeyrchains: Vec<ParaId> = (0..10).map(ParaId).collect();
|
||||
}
|
||||
|
||||
impl pallet_bridge_teyrchains::Config for TestRuntime {
|
||||
impl pezpallet_bridge_teyrchains::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type WeightInfo = ();
|
||||
type BridgesGrandpaPalletInstance = pallet_bridge_grandpa::Instance1;
|
||||
type BridgesGrandpaPalletInstance = pezpallet_bridge_grandpa::Instance1;
|
||||
type ParasPalletName = ParasPalletName;
|
||||
type ParaStoredHeaderDataBuilder = (Teyrchain1, Teyrchain2, Teyrchain3, BigTeyrchain);
|
||||
type HeadsToKeep = HeadsToKeep;
|
||||
@@ -219,7 +219,7 @@ impl pallet_bridge_teyrchains::Config for TestRuntime {
|
||||
}
|
||||
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
impl pallet_bridge_teyrchains::benchmarking::Config<()> for TestRuntime {
|
||||
impl pezpallet_bridge_teyrchains::benchmarking::Config<()> for TestRuntime {
|
||||
fn teyrchains() -> Vec<ParaId> {
|
||||
vec![
|
||||
ParaId(Teyrchain1::TEYRCHAIN_ID),
|
||||
@@ -263,7 +263,7 @@ impl Chain for TestBridgedChain {
|
||||
type AccountId = AccountId;
|
||||
type Balance = u32;
|
||||
type Nonce = u32;
|
||||
type Signature = sp_runtime::testing::TestSignature;
|
||||
type Signature = pezsp_runtime::testing::TestSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -285,8 +285,8 @@ impl ChainWithGrandpa for TestBridgedChain {
|
||||
}
|
||||
|
||||
/// Return test externalities to use in tests.
|
||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||
sp_io::TestExternalities::new(Default::default())
|
||||
pub fn new_test_ext() -> pezsp_io::TestExternalities {
|
||||
pezsp_io::TestExternalities::new(Default::default())
|
||||
}
|
||||
|
||||
/// Run pallet test.
|
||||
|
||||
@@ -22,7 +22,7 @@ use bp_pezkuwi_core::teyrchains::{ParaHead, ParaId};
|
||||
use bp_runtime::{RawStorageProof, StorageProofChecker, StorageProofError};
|
||||
use bp_teyrchains::teyrchain_head_storage_key_at_source;
|
||||
use codec::Decode;
|
||||
use frame_support::traits::Get;
|
||||
use pezframe_support::traits::Get;
|
||||
|
||||
/// Abstraction over storage proof manipulation, hiding implementation details of actual storage
|
||||
/// proofs.
|
||||
@@ -53,7 +53,7 @@ pub type TeyrchainsStorageProofAdapter<T, I> = RawStorageProofAdapter<T, I>;
|
||||
/// A `StorageProofAdapter` implementation for raw storage proofs.
|
||||
pub struct RawStorageProofAdapter<T: Config<I>, I: 'static> {
|
||||
storage: StorageProofChecker<RelayBlockHasher>,
|
||||
_dummy: sp_std::marker::PhantomData<(T, I)>,
|
||||
_dummy: pezsp_std::marker::PhantomData<(T, I)>,
|
||||
}
|
||||
|
||||
impl<T: Config<I>, I: 'static> RawStorageProofAdapter<T, I> {
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Autogenerated weights for pallet_bridge_teyrchains
|
||||
//! Autogenerated weights for pezpallet_bridge_teyrchains
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE BIZINIKIWI BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2023-06-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! WORST CASE MAP SIZE: `1000000`
|
||||
//! HOSTNAME: `serban-ROG-Zephyrus`, CPU: `12th Gen Intel(R) Core(TM) i7-12700H`
|
||||
@@ -29,7 +29,7 @@
|
||||
// --chain=dev
|
||||
// --steps=50
|
||||
// --repeat=20
|
||||
// --pallet=pallet_bridge_teyrchains
|
||||
// --pallet=pezpallet_bridge_teyrchains
|
||||
// --extrinsic=*
|
||||
// --execution=wasm
|
||||
// --wasm-execution=Compiled
|
||||
@@ -42,24 +42,24 @@
|
||||
#![allow(unused_imports)]
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::Get,
|
||||
weights::{constants::RocksDbWeight, Weight},
|
||||
};
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// Weight functions needed for pallet_bridge_teyrchains.
|
||||
/// Weight functions needed for pezpallet_bridge_teyrchains.
|
||||
pub trait WeightInfo {
|
||||
fn submit_teyrchain_heads_with_n_teyrchains(p: u32) -> Weight;
|
||||
fn submit_teyrchain_heads_with_1kb_proof() -> Weight;
|
||||
fn submit_teyrchain_heads_with_16kb_proof() -> Weight;
|
||||
}
|
||||
|
||||
/// Weights for `pallet_bridge_teyrchains` that are generated using one of the Bridge testnets.
|
||||
/// Weights for `pezpallet_bridge_teyrchains` that are generated using one of the Bridge testnets.
|
||||
///
|
||||
/// Those weights are test only and must never be used in production.
|
||||
pub struct BridgeWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
/// Storage: BridgeUnknownTeyrchains PalletOperatingMode (r:1 w:0)
|
||||
///
|
||||
/// Proof: BridgeUnknownTeyrchains PalletOperatingMode (max_values: Some(1), max_size: Some(1),
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
use crate::weights::{BridgeWeight, WeightInfo};
|
||||
|
||||
use bp_runtime::Size;
|
||||
use frame_support::weights::{RuntimeDbWeight, Weight};
|
||||
use pezframe_support::weights::{RuntimeDbWeight, Weight};
|
||||
|
||||
/// Size of the regular teyrchain head.
|
||||
///
|
||||
@@ -42,7 +42,7 @@ pub trait WeightInfoExt: WeightInfo {
|
||||
//
|
||||
// 2) slash relayer if he submits an invalid transaction.
|
||||
//
|
||||
// We read and update storage values of other pallets (`pallet-bridge-relayers` and
|
||||
// We read and update storage values of other pallets (`pezpallet-bridge-relayers` and
|
||||
// balances/assets pallet). So we need to add this weight to the weight of our call.
|
||||
// Hence two following methods.
|
||||
|
||||
@@ -121,7 +121,7 @@ impl WeightInfoExt for () {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: frame_system::Config> WeightInfoExt for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfoExt for BridgeWeight<T> {
|
||||
fn submit_teyrchain_heads_overhead_from_runtime() -> Weight {
|
||||
Weight::zero()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "pallet-xcm-bridge-hub-router"
|
||||
name = "pezpallet-xcm-bridge-hub-router"
|
||||
description = "Bridge hub interface for sibling/parent chains with dynamic fees support."
|
||||
version = "0.5.0"
|
||||
authors.workspace = true
|
||||
@@ -18,13 +18,13 @@ tracing = { workspace = true }
|
||||
# Bridge dependencies
|
||||
bp-xcm-bridge-hub-router = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-benchmarking = { optional = true, workspace = true }
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-core = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-benchmarking = { optional = true, workspace = true }
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-core = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
# Pezkuwi Dependencies
|
||||
pezkuwi-runtime-teyrchains = { workspace = true }
|
||||
@@ -32,39 +32,39 @@ xcm = { workspace = true }
|
||||
xcm-builder = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
sp-io = { workspace = true, default-features = true }
|
||||
pezsp-io = { workspace = true, default-features = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
std = [
|
||||
"bp-xcm-bridge-hub-router/std",
|
||||
"codec/std",
|
||||
"frame-benchmarking/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pezframe-benchmarking/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezkuwi-runtime-teyrchains/std",
|
||||
"scale-info/std",
|
||||
"sp-core/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"tracing/std",
|
||||
"xcm-builder/std",
|
||||
"xcm/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"bp-xcm-bridge-hub-router/runtime-benchmarks",
|
||||
"frame-benchmarking/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pezframe-benchmarking/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezkuwi-runtime-teyrchains/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
"xcm-builder/runtime-benchmarks",
|
||||
"xcm/runtime-benchmarks",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezkuwi-runtime-teyrchains/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
#![cfg(feature = "runtime-benchmarks")]
|
||||
|
||||
use crate::{Bridge, BridgeState, Call};
|
||||
use frame_benchmarking::{benchmarks_instance_pallet, BenchmarkError};
|
||||
use frame_support::traits::{EnsureOrigin, Get, Hooks, UnfilteredDispatchable};
|
||||
use pezframe_benchmarking::{benchmarks_instance_pallet, BenchmarkError};
|
||||
use pezframe_support::traits::{EnsureOrigin, Get, Hooks, UnfilteredDispatchable};
|
||||
use pezkuwi_runtime_teyrchains::FeeTracker;
|
||||
use sp_runtime::{traits::Zero, Saturating};
|
||||
use pezsp_runtime::{traits::Zero, Saturating};
|
||||
use xcm::prelude::*;
|
||||
|
||||
/// Pallet we're benchmarking here.
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
//! this chain.
|
||||
//!
|
||||
//! **A note on terminology**: when we mention the bridge hub here, we mean the chain that
|
||||
//! has the messages pallet deployed (`pallet-bridge-grandpa`, `pallet-bridge-messages`,
|
||||
//! `pallet-xcm-bridge-hub`, ...). It may be the system bridge hub teyrchain or any other
|
||||
//! has the messages pallet deployed (`pezpallet-bridge-grandpa`, `pezpallet-bridge-messages`,
|
||||
//! `pezpallet-xcm-bridge-hub`, ...). It may be the system bridge hub teyrchain or any other
|
||||
//! chain.
|
||||
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
@@ -33,11 +33,11 @@
|
||||
use bp_xcm_bridge_hub_router::MINIMAL_DELIVERY_FEE_FACTOR;
|
||||
pub use bp_xcm_bridge_hub_router::{BridgeState, XcmChannelStatusProvider};
|
||||
use codec::Encode;
|
||||
use frame_support::traits::Get;
|
||||
use pezframe_support::traits::Get;
|
||||
use pezkuwi_runtime_teyrchains::FeeTracker;
|
||||
use sp_core::H256;
|
||||
use sp_runtime::{FixedPointNumber, FixedU128};
|
||||
use sp_std::vec::Vec;
|
||||
use pezsp_core::H256;
|
||||
use pezsp_runtime::{FixedPointNumber, FixedU128};
|
||||
use pezsp_std::vec::Vec;
|
||||
use xcm::prelude::*;
|
||||
use xcm_builder::{ExporterFor, InspectMessageQueues, SovereignPaidRemoteExporter};
|
||||
|
||||
@@ -63,18 +63,18 @@ pub const HARD_MESSAGE_SIZE_LIMIT: u32 = 32 * 1024;
|
||||
/// bridge hub teyrchain.
|
||||
pub const LOG_TARGET: &str = "xcm::bridge-hub-router";
|
||||
|
||||
#[frame_support::pallet]
|
||||
#[pezframe_support::pallet]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use pezframe_support::pezpallet_prelude::*;
|
||||
use pezframe_system::pezpallet_prelude::*;
|
||||
|
||||
#[pallet::config]
|
||||
pub trait Config<I: 'static = ()>: frame_system::Config {
|
||||
pub trait Config<I: 'static = ()>: pezframe_system::Config {
|
||||
/// The overarching event type.
|
||||
#[allow(deprecated)]
|
||||
type RuntimeEvent: From<Event<Self, I>>
|
||||
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
|
||||
+ IsType<<Self as pezframe_system::Config>::RuntimeEvent>;
|
||||
/// Benchmarks results from runtime we're plugged into.
|
||||
type WeightInfo: WeightInfo;
|
||||
|
||||
@@ -445,12 +445,12 @@ impl<T: Config<I>, I: 'static> FeeTracker for Pallet<T, I> {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use frame_support::assert_ok;
|
||||
use pezframe_support::assert_ok;
|
||||
use mock::*;
|
||||
|
||||
use frame_support::traits::Hooks;
|
||||
use frame_system::{EventRecord, Phase};
|
||||
use sp_runtime::traits::One;
|
||||
use pezframe_support::traits::Hooks;
|
||||
use pezframe_system::{EventRecord, Phase};
|
||||
use pezsp_runtime::traits::One;
|
||||
|
||||
fn congested_bridge(delivery_fee_factor: FixedU128) -> BridgeState {
|
||||
BridgeState { is_congested: true, delivery_fee_factor }
|
||||
|
||||
@@ -16,20 +16,20 @@
|
||||
|
||||
#![cfg(test)]
|
||||
|
||||
use crate as pallet_xcm_bridge_hub_router;
|
||||
use crate as pezpallet_xcm_bridge_hub_router;
|
||||
|
||||
use bp_xcm_bridge_hub_router::XcmChannelStatusProvider;
|
||||
use codec::Encode;
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
construct_runtime, derive_impl, parameter_types,
|
||||
traits::{Contains, Equals},
|
||||
};
|
||||
use sp_runtime::{traits::ConstU128, BuildStorage};
|
||||
use sp_std::cell::RefCell;
|
||||
use pezsp_runtime::{traits::ConstU128, BuildStorage};
|
||||
use pezsp_std::cell::RefCell;
|
||||
use xcm::prelude::*;
|
||||
use xcm_builder::{InspectMessageQueues, NetworkExportTable, NetworkExportTableItem};
|
||||
|
||||
type Block = frame_system::mocking::MockBlock<TestRuntime>;
|
||||
type Block = pezframe_system::mocking::MockBlock<TestRuntime>;
|
||||
|
||||
/// HRMP fee.
|
||||
pub const HRMP_FEE: u128 = 500;
|
||||
@@ -41,8 +41,8 @@ pub const BYTE_FEE: u128 = 1_000;
|
||||
construct_runtime! {
|
||||
pub enum TestRuntime
|
||||
{
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
XcmBridgeHubRouter: pallet_xcm_bridge_hub_router::{Pallet, Storage, Event<T>},
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
XcmBridgeHubRouter: pezpallet_xcm_bridge_hub_router::{Pallet, Storage, Event<T>},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,12 +64,12 @@ parameter_types! {
|
||||
pub UnknownXcmVersionForRoutableLocation: Location = Location::new(2, [GlobalConsensus(BridgedNetworkId::get()), Teyrchain(9999)]);
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type Block = Block;
|
||||
}
|
||||
|
||||
impl pallet_xcm_bridge_hub_router::Config<()> for TestRuntime {
|
||||
impl pezpallet_xcm_bridge_hub_router::Config<()> for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type WeightInfo = ();
|
||||
|
||||
@@ -80,7 +80,7 @@ impl pallet_xcm_bridge_hub_router::Config<()> for TestRuntime {
|
||||
type DestinationVersion =
|
||||
LatestOrNoneForLocationVersionChecker<Equals<UnknownXcmVersionForRoutableLocation>>;
|
||||
|
||||
type BridgeHubOrigin = frame_system::EnsureRoot<u64>;
|
||||
type BridgeHubOrigin = pezframe_system::EnsureRoot<u64>;
|
||||
type ToBridgeHubSender = TestToBridgeHubSender;
|
||||
type LocalXcmChannelManager = TestLocalXcmChannelManager;
|
||||
|
||||
@@ -88,7 +88,7 @@ impl pallet_xcm_bridge_hub_router::Config<()> for TestRuntime {
|
||||
type FeeAsset = BridgeFeeAsset;
|
||||
}
|
||||
|
||||
pub struct LatestOrNoneForLocationVersionChecker<Location>(sp_std::marker::PhantomData<Location>);
|
||||
pub struct LatestOrNoneForLocationVersionChecker<Location>(pezsp_std::marker::PhantomData<Location>);
|
||||
impl<LocationValue: Contains<Location>> GetVersion
|
||||
for LatestOrNoneForLocationVersionChecker<LocationValue>
|
||||
{
|
||||
@@ -155,7 +155,7 @@ pub struct TestLocalXcmChannelManager;
|
||||
|
||||
impl TestLocalXcmChannelManager {
|
||||
pub fn make_congested(with: &Location) {
|
||||
frame_support::storage::unhashed::put(
|
||||
pezframe_support::storage::unhashed::put(
|
||||
&(b"TestLocalXcmChannelManager.Congested", with).encode()[..],
|
||||
&true,
|
||||
);
|
||||
@@ -164,16 +164,16 @@ impl TestLocalXcmChannelManager {
|
||||
|
||||
impl XcmChannelStatusProvider for TestLocalXcmChannelManager {
|
||||
fn is_congested(with: &Location) -> bool {
|
||||
frame_support::storage::unhashed::get_or_default(
|
||||
pezframe_support::storage::unhashed::get_or_default(
|
||||
&(b"TestLocalXcmChannelManager.Congested", with).encode()[..],
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/// Return test externalities to use in tests.
|
||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||
let t = frame_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap();
|
||||
sp_io::TestExternalities::new(t)
|
||||
pub fn new_test_ext() -> pezsp_io::TestExternalities {
|
||||
let t = pezframe_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap();
|
||||
pezsp_io::TestExternalities::new(t)
|
||||
}
|
||||
|
||||
/// Run pallet test.
|
||||
@@ -187,5 +187,5 @@ pub fn run_test<T>(test: impl FnOnce() -> T) -> T {
|
||||
}
|
||||
|
||||
pub(crate) fn fake_message_hash<T>(message: &Xcm<T>) -> XcmHash {
|
||||
message.using_encoded(sp_io::hashing::blake2_256)
|
||||
message.using_encoded(pezsp_io::hashing::blake2_256)
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Autogenerated weights for pallet_xcm_bridge_hub_router
|
||||
//! Autogenerated weights for pezpallet_xcm_bridge_hub_router
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE BIZINIKIWI BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2023-08-03, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! WORST CASE MAP SIZE: `1000000`
|
||||
//! HOSTNAME: `covid`, CPU: `11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz`
|
||||
@@ -29,7 +29,7 @@
|
||||
// --chain=dev
|
||||
// --steps=50
|
||||
// --repeat=20
|
||||
// --pallet=pallet_xcm_bridge_hub_router
|
||||
// --pallet=pezpallet_xcm_bridge_hub_router
|
||||
// --extrinsic=*
|
||||
// --execution=wasm
|
||||
// --wasm-execution=Compiled
|
||||
@@ -42,24 +42,24 @@
|
||||
#![allow(unused_imports)]
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::Get,
|
||||
weights::{constants::RocksDbWeight, Weight},
|
||||
};
|
||||
use sp_std::marker::PhantomData;
|
||||
use pezsp_std::marker::PhantomData;
|
||||
|
||||
/// Weight functions needed for pallet_xcm_bridge_hub_router.
|
||||
/// Weight functions needed for pezpallet_xcm_bridge_hub_router.
|
||||
pub trait WeightInfo {
|
||||
fn on_initialize_when_non_congested() -> Weight;
|
||||
fn on_initialize_when_congested() -> Weight;
|
||||
fn report_bridge_status() -> Weight;
|
||||
}
|
||||
|
||||
/// Weights for `pallet_xcm_bridge_hub_router` that are generated using one of the Bridge testnets.
|
||||
/// Weights for `pezpallet_xcm_bridge_hub_router` that are generated using one of the Bridge testnets.
|
||||
///
|
||||
/// Those weights are test only and must never be used in production.
|
||||
pub struct BridgeWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
impl<T: pezframe_system::Config> WeightInfo for BridgeWeight<T> {
|
||||
///
|
||||
/// Storage: `XcmBridgeHubRouter::DeliveryFeeFactor` (r:1 w:1)
|
||||
///
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "pallet-xcm-bridge-hub"
|
||||
name = "pezpallet-xcm-bridge-hub"
|
||||
description = "Module that adds dynamic bridges/lanes support to XCM infrastructure at the bridge hub."
|
||||
version = "0.2.0"
|
||||
authors.workspace = true
|
||||
@@ -19,14 +19,14 @@ tracing = { workspace = true }
|
||||
bp-messages = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
bp-xcm-bridge-hub = { workspace = true }
|
||||
pallet-bridge-messages = { workspace = true }
|
||||
pezpallet-bridge-messages = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-support = { workspace = true }
|
||||
frame-system = { workspace = true }
|
||||
sp-core = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezframe-system = { workspace = true }
|
||||
pezsp-core = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
# Pezkuwi Dependencies
|
||||
xcm = { workspace = true }
|
||||
@@ -36,10 +36,10 @@ xcm-executor = { workspace = true }
|
||||
[dev-dependencies]
|
||||
bp-header-chain = { workspace = true }
|
||||
bp-xcm-bridge-hub-router = { workspace = true }
|
||||
pallet-balances = { workspace = true }
|
||||
pallet-xcm-bridge-hub-router = { workspace = true }
|
||||
pezpallet-balances = { workspace = true }
|
||||
pezpallet-xcm-bridge-hub-router = { workspace = true }
|
||||
pezkuwi-teyrchain-primitives = { workspace = true }
|
||||
sp-io = { workspace = true }
|
||||
pezsp-io = { workspace = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -50,17 +50,17 @@ std = [
|
||||
"bp-xcm-bridge-hub-router/std",
|
||||
"bp-xcm-bridge-hub/std",
|
||||
"codec/std",
|
||||
"frame-support/std",
|
||||
"frame-system/std",
|
||||
"pallet-balances/std",
|
||||
"pallet-bridge-messages/std",
|
||||
"pallet-xcm-bridge-hub-router/std",
|
||||
"pezframe-support/std",
|
||||
"pezframe-system/std",
|
||||
"pezpallet-balances/std",
|
||||
"pezpallet-bridge-messages/std",
|
||||
"pezpallet-xcm-bridge-hub-router/std",
|
||||
"pezkuwi-teyrchain-primitives/std",
|
||||
"scale-info/std",
|
||||
"sp-core/std",
|
||||
"sp-io/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-io/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
"tracing/std",
|
||||
"xcm-builder/std",
|
||||
"xcm-executor/std",
|
||||
@@ -72,23 +72,23 @@ runtime-benchmarks = [
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-xcm-bridge-hub-router/runtime-benchmarks",
|
||||
"bp-xcm-bridge-hub/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"frame-system/runtime-benchmarks",
|
||||
"pallet-balances/runtime-benchmarks",
|
||||
"pallet-bridge-messages/runtime-benchmarks",
|
||||
"pallet-xcm-bridge-hub-router/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezframe-system/runtime-benchmarks",
|
||||
"pezpallet-balances/runtime-benchmarks",
|
||||
"pezpallet-bridge-messages/runtime-benchmarks",
|
||||
"pezpallet-xcm-bridge-hub-router/runtime-benchmarks",
|
||||
"pezkuwi-teyrchain-primitives/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
"xcm-builder/runtime-benchmarks",
|
||||
"xcm-executor/runtime-benchmarks",
|
||||
"xcm/runtime-benchmarks",
|
||||
]
|
||||
try-runtime = [
|
||||
"frame-support/try-runtime",
|
||||
"frame-system/try-runtime",
|
||||
"pallet-balances/try-runtime",
|
||||
"pallet-bridge-messages/try-runtime",
|
||||
"pallet-xcm-bridge-hub-router/try-runtime",
|
||||
"sp-runtime/try-runtime",
|
||||
"pezframe-support/try-runtime",
|
||||
"pezframe-system/try-runtime",
|
||||
"pezpallet-balances/try-runtime",
|
||||
"pezpallet-bridge-messages/try-runtime",
|
||||
"pezpallet-xcm-bridge-hub-router/try-runtime",
|
||||
"pezsp-runtime/try-runtime",
|
||||
]
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! The code that allows to use the pallet (`pallet-xcm-bridge-hub`) as inbound
|
||||
//! The code that allows to use the pallet (`pezpallet-xcm-bridge-hub`) as inbound
|
||||
//! bridge messages dispatcher. Internally, it just forwards inbound blob to the
|
||||
//! XCM-level blob dispatcher, which pushes message to some other queue (e.g.
|
||||
//! to HRMP queue with the sibling target chain).
|
||||
@@ -27,10 +27,10 @@ use bp_messages::target_chain::{DispatchMessage, MessageDispatch};
|
||||
use bp_runtime::messages::MessageDispatchResult;
|
||||
use bp_xcm_bridge_hub::{LocalXcmChannelManager, XcmAsPlainPayload};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode};
|
||||
use frame_support::{weights::Weight, CloneNoBound, EqNoBound, PartialEqNoBound};
|
||||
use pallet_bridge_messages::{Config as BridgeMessagesConfig, WeightInfoExt};
|
||||
use pezframe_support::{weights::Weight, CloneNoBound, EqNoBound, PartialEqNoBound};
|
||||
use pezpallet_bridge_messages::{Config as BridgeMessagesConfig, WeightInfoExt};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_runtime::SaturatedConversion;
|
||||
use pezsp_runtime::SaturatedConversion;
|
||||
use xcm::prelude::*;
|
||||
use xcm_builder::{DispatchBlob, DispatchBlobError};
|
||||
|
||||
@@ -136,8 +136,8 @@ mod tests {
|
||||
|
||||
use bp_messages::{target_chain::DispatchMessageData, LaneIdType, MessageKey};
|
||||
use bp_xcm_bridge_hub::{Bridge, BridgeLocations, BridgeState};
|
||||
use frame_support::assert_ok;
|
||||
use pallet_bridge_messages::InboundLaneStorage;
|
||||
use pezframe_support::assert_ok;
|
||||
use pezpallet_bridge_messages::InboundLaneStorage;
|
||||
use xcm_executor::traits::ConvertLocation;
|
||||
|
||||
fn bridge() -> (Box<BridgeLocations>, TestLaneIdType) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! The code that allows to use the pallet (`pallet-xcm-bridge-hub`) as XCM message
|
||||
//! The code that allows to use the pallet (`pezpallet-xcm-bridge-hub`) as XCM message
|
||||
//! exporter at the sending bridge hub. Internally, it just enqueues outbound blob
|
||||
//! in the messages pallet queue.
|
||||
//!
|
||||
@@ -29,8 +29,8 @@ use bp_messages::{
|
||||
MessageNonce,
|
||||
};
|
||||
use bp_xcm_bridge_hub::{BridgeId, BridgeState, LocalXcmChannelManager, XcmAsPlainPayload};
|
||||
use frame_support::{ensure, traits::Get};
|
||||
use pallet_bridge_messages::{
|
||||
use pezframe_support::{ensure, traits::Get};
|
||||
use pezpallet_bridge_messages::{
|
||||
Config as BridgeMessagesConfig, Error, Pallet as BridgeMessagesPallet,
|
||||
};
|
||||
use xcm::prelude::*;
|
||||
@@ -225,7 +225,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: https://github.com/paritytech/parity-bridges-common/issues/2006 we either need fishermens
|
||||
// TODO: https://github.com/pezkuwichain/kurdistan-sdk/issues/83 we either need fishermens
|
||||
// to watch this rule violation (suspended, but keep sending new messages), or we need a
|
||||
// hard limit for that like other XCM queues have
|
||||
|
||||
@@ -373,8 +373,8 @@ mod tests {
|
||||
|
||||
use bp_runtime::RangeInclusiveExt;
|
||||
use bp_xcm_bridge_hub::{Bridge, BridgeLocations, BridgeState};
|
||||
use frame_support::{assert_ok, traits::EnsureOrigin};
|
||||
use pallet_bridge_messages::InboundLaneStorage;
|
||||
use pezframe_support::{assert_ok, traits::EnsureOrigin};
|
||||
use pezpallet_bridge_messages::InboundLaneStorage;
|
||||
use xcm_builder::{NetworkExportTable, UnpaidRemoteExporter};
|
||||
use xcm_executor::traits::{export_xcm, ConvertLocation};
|
||||
|
||||
@@ -663,7 +663,7 @@ mod tests {
|
||||
|
||||
// check before - no messages
|
||||
assert_eq!(
|
||||
pallet_bridge_messages::Pallet::<TestRuntime, ()>::outbound_lane_data(
|
||||
pezpallet_bridge_messages::Pallet::<TestRuntime, ()>::outbound_lane_data(
|
||||
expected_lane_id
|
||||
)
|
||||
.unwrap()
|
||||
@@ -685,7 +685,7 @@ mod tests {
|
||||
// we need to set `UniversalLocation` for `sibling_teyrchain_origin` for
|
||||
// `XcmOverBridgeWrappedWithExportMessageRouterInstance`.
|
||||
ExportMessageOriginUniversalLocation::set(Some(SiblingUniversalLocation::get()));
|
||||
// send `ExportMessage(message)` by `pallet_xcm_bridge_hub_router`.
|
||||
// send `ExportMessage(message)` by `pezpallet_xcm_bridge_hub_router`.
|
||||
ExecuteXcmOverSendXcm::set_origin_for_execute(SiblingLocation::get());
|
||||
assert_ok!(send_xcm::<XcmOverBridgeWrappedWithExportMessageRouter>(
|
||||
dest.clone(),
|
||||
@@ -694,7 +694,7 @@ mod tests {
|
||||
|
||||
// check after - a message ready to be relayed
|
||||
assert_eq!(
|
||||
pallet_bridge_messages::Pallet::<TestRuntime, ()>::outbound_lane_data(
|
||||
pezpallet_bridge_messages::Pallet::<TestRuntime, ()>::outbound_lane_data(
|
||||
expected_lane_id
|
||||
)
|
||||
.unwrap()
|
||||
@@ -804,8 +804,8 @@ mod tests {
|
||||
// valid routable destination
|
||||
let dest = Location::new(2, BridgedUniversalDestination::get());
|
||||
|
||||
fn router_bridge_state() -> pallet_xcm_bridge_hub_router::BridgeState {
|
||||
pallet_xcm_bridge_hub_router::Bridge::<
|
||||
fn router_bridge_state() -> pezpallet_xcm_bridge_hub_router::BridgeState {
|
||||
pezpallet_xcm_bridge_hub_router::Bridge::<
|
||||
TestRuntime,
|
||||
XcmOverBridgeWrappedWithExportMessageRouterInstance,
|
||||
>::get()
|
||||
@@ -835,7 +835,7 @@ mod tests {
|
||||
|
||||
// make bridges congested with sending too much messages
|
||||
for _ in 1..(OUTBOUND_LANE_CONGESTED_THRESHOLD + 2) {
|
||||
// send `ExportMessage(message)` by `pallet_xcm_bridge_hub_router`.
|
||||
// send `ExportMessage(message)` by `pezpallet_xcm_bridge_hub_router`.
|
||||
ExecuteXcmOverSendXcm::set_origin_for_execute(origin_as_location.clone());
|
||||
assert_ok!(send_xcm::<XcmOverBridgeWrappedWithExportMessageRouter>(
|
||||
dest.clone(),
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
//! open and close bridges between local (to this pallet location) and remote XCM
|
||||
//! destinations.
|
||||
//!
|
||||
//! The `pallet_xcm_bridge_hub` pallet is used to manage (open, close) bridges between chains from
|
||||
//! The `pezpallet_xcm_bridge_hub` pallet is used to manage (open, close) bridges between chains from
|
||||
//! different consensuses. The new extrinsics `fn open_bridge` and `fn close_bridge` are introduced.
|
||||
//! Other chains can manage channels with different bridged global consensuses.
|
||||
//!
|
||||
//! # Concept of `lane` and `LaneId`
|
||||
//!
|
||||
//! There is another `pallet_bridge_messages` pallet that handles inbound/outbound lanes for
|
||||
//! There is another `pezpallet_bridge_messages` pallet that handles inbound/outbound lanes for
|
||||
//! messages. Each lane is a unique connection between two chains from different consensuses and is
|
||||
//! identified by `LaneId`. `LaneId` is generated once when a new bridge is requested by `fn
|
||||
//! open_bridge`. It is generated by `BridgeLocations::calculate_lane_id` based on the following
|
||||
@@ -48,7 +48,7 @@
|
||||
//!
|
||||
//! # Concept of `bridge` and `BridgeId`
|
||||
//!
|
||||
//! The `pallet_xcm_bridge_hub` pallet needs to store some metadata about opened bridges. The bridge
|
||||
//! The `pezpallet_xcm_bridge_hub` pallet needs to store some metadata about opened bridges. The bridge
|
||||
//! (or bridge metadata) is stored under the `BridgeId` key.
|
||||
//!
|
||||
//! `BridgeId` is generated from `bridge_origin_relative_location` and
|
||||
@@ -71,8 +71,8 @@
|
||||
//!
|
||||
//! # How to Open a Bridge?
|
||||
//!
|
||||
//! The `pallet_xcm_bridge_hub` pallet has the extrinsic `fn open_bridge` and an important
|
||||
//! configuration `pallet_xcm_bridge_hub::Config::OpenBridgeOrigin`, which translates the call's
|
||||
//! The `pezpallet_xcm_bridge_hub` pallet has the extrinsic `fn open_bridge` and an important
|
||||
//! configuration `pezpallet_xcm_bridge_hub::Config::OpenBridgeOrigin`, which translates the call's
|
||||
//! origin to the XCM `Location` and converts it to the `bridge_origin_universal_location`. With the
|
||||
//! current setup, this origin/location is expected to be either the relay chain or a sibling
|
||||
//! teyrchain as one side of the bridge. Another parameter is
|
||||
@@ -149,11 +149,11 @@ use bp_xcm_bridge_hub::BridgeLocationsError;
|
||||
pub use bp_xcm_bridge_hub::{
|
||||
Bridge, BridgeId, BridgeLocations, BridgeState, LocalXcmChannelManager,
|
||||
};
|
||||
use frame_support::{traits::fungible::MutateHold, DefaultNoBound};
|
||||
use frame_system::Config as SystemConfig;
|
||||
use pallet_bridge_messages::{Config as BridgeMessagesConfig, LanesManagerError};
|
||||
use sp_runtime::traits::Zero;
|
||||
use sp_std::{boxed::Box, vec::Vec};
|
||||
use pezframe_support::{traits::fungible::MutateHold, DefaultNoBound};
|
||||
use pezframe_system::Config as SystemConfig;
|
||||
use pezpallet_bridge_messages::{Config as BridgeMessagesConfig, LanesManagerError};
|
||||
use pezsp_runtime::traits::Zero;
|
||||
use pezsp_std::{boxed::Box, vec::Vec};
|
||||
use xcm::prelude::*;
|
||||
use xcm_builder::DispatchBlob;
|
||||
use xcm_executor::traits::ConvertLocation;
|
||||
@@ -171,14 +171,14 @@ mod mock;
|
||||
/// The target that will be used when publishing logs related to this pallet.
|
||||
pub const LOG_TARGET: &str = "runtime::bridge-xcm";
|
||||
|
||||
#[frame_support::pallet]
|
||||
#[pezframe_support::pallet]
|
||||
pub mod pallet {
|
||||
use super::*;
|
||||
use frame_support::{
|
||||
pallet_prelude::*,
|
||||
use pezframe_support::{
|
||||
pezpallet_prelude::*,
|
||||
traits::{tokens::Precision, Contains},
|
||||
};
|
||||
use frame_system::pallet_prelude::{BlockNumberFor, *};
|
||||
use pezframe_system::pezpallet_prelude::{BlockNumberFor, *};
|
||||
|
||||
/// The reason for this pallet placing a hold on funds.
|
||||
#[pallet::composite_enum]
|
||||
@@ -189,20 +189,20 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[pallet::config]
|
||||
#[pallet::disable_frame_system_supertrait_check]
|
||||
#[pallet::disable_pezframe_system_supertrait_check]
|
||||
pub trait Config<I: 'static = ()>:
|
||||
BridgeMessagesConfig<Self::BridgeMessagesPalletInstance>
|
||||
{
|
||||
/// The overarching event type.
|
||||
#[allow(deprecated)]
|
||||
type RuntimeEvent: From<Event<Self, I>>
|
||||
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
|
||||
+ IsType<<Self as pezframe_system::Config>::RuntimeEvent>;
|
||||
|
||||
/// Runtime's universal location.
|
||||
type UniversalLocation: Get<InteriorLocation>;
|
||||
// TODO: https://github.com/paritytech/parity-bridges-common/issues/1666 remove `ChainId` and
|
||||
// TODO: https://github.com/pezkuwichain/kurdistan-sdk/issues/80 remove `ChainId` and
|
||||
// replace it with the `NetworkId` - then we'll be able to use
|
||||
// `T as pallet_bridge_messages::Config<T::BridgeMessagesPalletInstance>::BridgedChain::NetworkId`
|
||||
// `T as pezpallet_bridge_messages::Config<T::BridgeMessagesPalletInstance>::BridgedChain::NetworkId`
|
||||
/// Bridged network as relative location of bridged `GlobalConsensus`.
|
||||
#[pallet::constant]
|
||||
type BridgedNetwork: Get<Location>;
|
||||
@@ -253,13 +253,13 @@ pub mod pallet {
|
||||
pub type BridgeOf<T, I> = Bridge<ThisChainOf<T, I>, LaneIdOf<T, I>>;
|
||||
/// An alias for this chain.
|
||||
pub type ThisChainOf<T, I> =
|
||||
pallet_bridge_messages::ThisChainOf<T, <T as Config<I>>::BridgeMessagesPalletInstance>;
|
||||
pezpallet_bridge_messages::ThisChainOf<T, <T as Config<I>>::BridgeMessagesPalletInstance>;
|
||||
/// An alias for lane identifier type.
|
||||
pub type LaneIdOf<T, I> =
|
||||
<T as BridgeMessagesConfig<<T as Config<I>>::BridgeMessagesPalletInstance>>::LaneId;
|
||||
/// An alias for the associated lanes manager.
|
||||
pub type LanesManagerOf<T, I> =
|
||||
pallet_bridge_messages::LanesManager<T, <T as Config<I>>::BridgeMessagesPalletInstance>;
|
||||
pezpallet_bridge_messages::LanesManager<T, <T as Config<I>>::BridgeMessagesPalletInstance>;
|
||||
|
||||
#[pallet::pallet]
|
||||
#[pallet::storage_version(migration::STORAGE_VERSION)]
|
||||
@@ -276,7 +276,7 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn try_state(_n: BlockNumberFor<T>) -> Result<(), sp_runtime::TryRuntimeError> {
|
||||
fn try_state(_n: BlockNumberFor<T>) -> Result<(), pezsp_runtime::TryRuntimeError> {
|
||||
Self::do_try_state()
|
||||
}
|
||||
}
|
||||
@@ -295,7 +295,7 @@ pub mod pallet {
|
||||
/// The states after this call: bridge is `Opened`, outbound lane is `Opened`, inbound lane
|
||||
/// is `Opened`.
|
||||
#[pallet::call_index(0)]
|
||||
#[pallet::weight(Weight::zero())] // TODO:(bridges-v2) - https://github.com/paritytech/parity-bridges-common/issues/3046 - add benchmarks impl
|
||||
#[pallet::weight(Weight::zero())] // TODO:(bridges-v2) - https://github.com/pezkuwichain/kurdistan-sdk/issues/87 - add benchmarks impl
|
||||
pub fn open_bridge(
|
||||
origin: OriginFor<T>,
|
||||
bridge_destination_universal_location: Box<VersionedInteriorLocation>,
|
||||
@@ -333,7 +333,7 @@ pub mod pallet {
|
||||
/// The states after this call: everything is either `Closed`, or purged from the
|
||||
/// runtime storage.
|
||||
#[pallet::call_index(1)]
|
||||
#[pallet::weight(Weight::zero())] // TODO:(bridges-v2) - https://github.com/paritytech/parity-bridges-common/issues/3046 - add benchmarks impl
|
||||
#[pallet::weight(Weight::zero())] // TODO:(bridges-v2) - https://github.com/pezkuwichain/kurdistan-sdk/issues/87 - add benchmarks impl
|
||||
pub fn close_bridge(
|
||||
origin: OriginFor<T>,
|
||||
bridge_destination_universal_location: Box<VersionedInteriorLocation>,
|
||||
@@ -343,7 +343,7 @@ pub mod pallet {
|
||||
let locations =
|
||||
Self::bridge_locations_from_origin(origin, bridge_destination_universal_location)?;
|
||||
|
||||
// TODO: https://github.com/paritytech/parity-bridges-common/issues/1760 - may do refund here, if
|
||||
// TODO: https://github.com/pezkuwichain/kurdistan-sdk/issues/81 - may do refund here, if
|
||||
// bridge/lanes are already closed + for messages that are not pruned
|
||||
|
||||
// update bridge metadata - this also guarantees that the bridge is in the proper state
|
||||
@@ -565,7 +565,7 @@ pub mod pallet {
|
||||
pub fn bridge_locations_from_origin(
|
||||
origin: OriginFor<T>,
|
||||
bridge_destination_universal_location: Box<VersionedInteriorLocation>,
|
||||
) -> Result<Box<BridgeLocations>, sp_runtime::DispatchError> {
|
||||
) -> Result<Box<BridgeLocations>, pezsp_runtime::DispatchError> {
|
||||
Self::bridge_locations(
|
||||
T::OpenBridgeOrigin::ensure_origin(origin)?,
|
||||
(*bridge_destination_universal_location)
|
||||
@@ -578,7 +578,7 @@ pub mod pallet {
|
||||
pub fn bridge_locations(
|
||||
bridge_origin_relative_location: Location,
|
||||
bridge_destination_universal_location: InteriorLocation,
|
||||
) -> Result<Box<BridgeLocations>, sp_runtime::DispatchError> {
|
||||
) -> Result<Box<BridgeLocations>, pezsp_runtime::DispatchError> {
|
||||
BridgeLocations::bridge_locations(
|
||||
T::UniversalLocation::get(),
|
||||
bridge_origin_relative_location,
|
||||
@@ -608,7 +608,7 @@ pub mod pallet {
|
||||
|
||||
impl<T: Config<I>, I: 'static> Pallet<T, I> {
|
||||
/// Returns some `NetworkId` if contains `GlobalConsensus` junction.
|
||||
fn bridged_network_id() -> Result<NetworkId, sp_runtime::DispatchError> {
|
||||
fn bridged_network_id() -> Result<NetworkId, pezsp_runtime::DispatchError> {
|
||||
match T::BridgedNetwork::get().take_first_interior() {
|
||||
Some(GlobalConsensus(network)) => Ok(network),
|
||||
_ => Err(Error::<T, I>::BridgeLocations(
|
||||
@@ -622,8 +622,8 @@ pub mod pallet {
|
||||
#[cfg(any(test, feature = "try-runtime", feature = "std"))]
|
||||
impl<T: Config<I>, I: 'static> Pallet<T, I> {
|
||||
/// Ensure the correctness of the state of this pallet.
|
||||
pub fn do_try_state() -> Result<(), sp_runtime::TryRuntimeError> {
|
||||
use sp_std::collections::btree_set::BTreeSet;
|
||||
pub fn do_try_state() -> Result<(), pezsp_runtime::TryRuntimeError> {
|
||||
use pezsp_std::collections::btree_set::BTreeSet;
|
||||
|
||||
let mut lanes = BTreeSet::new();
|
||||
|
||||
@@ -640,7 +640,7 @@ pub mod pallet {
|
||||
"Invalid `LaneToBridge` configuration, probably missing or not removed laneId!"
|
||||
);
|
||||
|
||||
// check connected `pallet_bridge_messages` state.
|
||||
// check connected `pezpallet_bridge_messages` state.
|
||||
Self::do_try_state_for_messages()
|
||||
}
|
||||
|
||||
@@ -648,7 +648,7 @@ pub mod pallet {
|
||||
pub fn do_try_state_for_bridge(
|
||||
bridge_id: BridgeId,
|
||||
bridge: BridgeOf<T, I>,
|
||||
) -> Result<T::LaneId, sp_runtime::TryRuntimeError> {
|
||||
) -> Result<T::LaneId, pezsp_runtime::TryRuntimeError> {
|
||||
tracing::info!(target: LOG_TARGET, ?bridge_id, ?bridge, "Checking `do_try_state_for_bridge`");
|
||||
|
||||
// check `BridgeId` points to the same `LaneId` and vice versa.
|
||||
@@ -657,7 +657,7 @@ pub mod pallet {
|
||||
"Found `LaneToBridge` inconsistency for bridge_id - missing mapping!"
|
||||
);
|
||||
|
||||
// check `pallet_bridge_messages` state for that `LaneId`.
|
||||
// check `pezpallet_bridge_messages` state for that `LaneId`.
|
||||
let lanes_manager = LanesManagerOf::<T, I>::new();
|
||||
ensure!(
|
||||
lanes_manager.any_state_inbound_lane(bridge.lane_id).is_ok(),
|
||||
@@ -691,10 +691,10 @@ pub mod pallet {
|
||||
Ok(bridge.lane_id)
|
||||
}
|
||||
|
||||
/// Ensure the correctness of the state of the connected `pallet_bridge_messages` instance.
|
||||
pub fn do_try_state_for_messages() -> Result<(), sp_runtime::TryRuntimeError> {
|
||||
/// Ensure the correctness of the state of the connected `pezpallet_bridge_messages` instance.
|
||||
pub fn do_try_state_for_messages() -> Result<(), pezsp_runtime::TryRuntimeError> {
|
||||
// check that all `InboundLanes` laneIds have mapping to some bridge.
|
||||
for lane_id in pallet_bridge_messages::InboundLanes::<T, T::BridgeMessagesPalletInstance>::iter_keys() {
|
||||
for lane_id in pezpallet_bridge_messages::InboundLanes::<T, T::BridgeMessagesPalletInstance>::iter_keys() {
|
||||
tracing::info!(target: LOG_TARGET, ?lane_id, "Checking `do_try_state_for_messages` for `InboundLanes`...");
|
||||
ensure!(
|
||||
LaneToBridge::<T, I>::get(lane_id).is_some(),
|
||||
@@ -703,7 +703,7 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
// check that all `OutboundLanes` laneIds have mapping to some bridge.
|
||||
for lane_id in pallet_bridge_messages::OutboundLanes::<T, T::BridgeMessagesPalletInstance>::iter_keys() {
|
||||
for lane_id in pezpallet_bridge_messages::OutboundLanes::<T, T::BridgeMessagesPalletInstance>::iter_keys() {
|
||||
tracing::info!(target: LOG_TARGET, ?lane_id, "Checking `do_try_state_for_messages` for `OutboundLanes`");
|
||||
ensure!(
|
||||
LaneToBridge::<T, I>::get(lane_id).is_some(),
|
||||
@@ -735,13 +735,13 @@ pub mod pallet {
|
||||
pub opened_bridges: Vec<(Location, InteriorLocation, Option<T::LaneId>)>,
|
||||
/// Dummy marker.
|
||||
#[serde(skip)]
|
||||
pub _phantom: sp_std::marker::PhantomData<(T, I)>,
|
||||
pub _phantom: pezsp_std::marker::PhantomData<(T, I)>,
|
||||
}
|
||||
|
||||
#[pallet::genesis_build]
|
||||
impl<T: Config<I>, I: 'static> BuildGenesisConfig for GenesisConfig<T, I>
|
||||
where
|
||||
T: frame_system::Config<AccountId = AccountIdOf<ThisChainOf<T, I>>>,
|
||||
T: pezframe_system::Config<AccountId = AccountIdOf<ThisChainOf<T, I>>>,
|
||||
{
|
||||
fn build(&self) {
|
||||
for (
|
||||
@@ -839,9 +839,9 @@ mod tests {
|
||||
use bp_messages::LaneIdType;
|
||||
use mock::*;
|
||||
|
||||
use frame_support::{assert_err, assert_noop, assert_ok, traits::fungible::Mutate, BoundedVec};
|
||||
use frame_system::{EventRecord, Phase};
|
||||
use sp_runtime::TryRuntimeError;
|
||||
use pezframe_support::{assert_err, assert_noop, assert_ok, traits::fungible::Mutate, BoundedVec};
|
||||
use pezframe_system::{EventRecord, Phase};
|
||||
use pezsp_runtime::TryRuntimeError;
|
||||
|
||||
fn fund_origin_sovereign_account(locations: &BridgeLocations, balance: Balance) -> AccountId {
|
||||
let bridge_owner_account =
|
||||
@@ -913,7 +913,7 @@ mod tests {
|
||||
OpenBridgeOrigin::disallowed_origin(),
|
||||
Box::new(bridged_asset_hub_universal_location().into()),
|
||||
),
|
||||
sp_runtime::DispatchError::BadOrigin,
|
||||
pezsp_runtime::DispatchError::BadOrigin,
|
||||
);
|
||||
})
|
||||
}
|
||||
@@ -1219,7 +1219,7 @@ mod tests {
|
||||
Box::new(bridged_asset_hub_universal_location().into()),
|
||||
0,
|
||||
),
|
||||
sp_runtime::DispatchError::BadOrigin,
|
||||
pezsp_runtime::DispatchError::BadOrigin,
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
//! A module that is responsible for migration of storage.
|
||||
|
||||
use crate::{Config, Pallet, LOG_TARGET};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
traits::{Get, OnRuntimeUpgrade, StorageVersion},
|
||||
weights::Weight,
|
||||
};
|
||||
@@ -121,7 +121,7 @@ impl<
|
||||
}
|
||||
|
||||
#[cfg(feature = "try-runtime")]
|
||||
fn post_upgrade(_state: sp_std::vec::Vec<u8>) -> Result<(), sp_runtime::DispatchError> {
|
||||
fn post_upgrade(_state: pezsp_std::vec::Vec<u8>) -> Result<(), pezsp_runtime::DispatchError> {
|
||||
let bridge_origin_relative_location = SourceRelativeLocation::get();
|
||||
let bridge_destination_universal_location = BridgedUniversalLocation::get();
|
||||
let lane_id = Lane::get();
|
||||
@@ -131,12 +131,12 @@ impl<
|
||||
bridge_origin_relative_location.clone(),
|
||||
bridge_destination_universal_location.clone(),
|
||||
) else {
|
||||
return Err(sp_runtime::DispatchError::Other("Invalid locations!"));
|
||||
return Err(pezsp_runtime::DispatchError::Other("Invalid locations!"));
|
||||
};
|
||||
let Some((bridge_id, _)) = Pallet::<T, I>::bridge_by_lane_id(&lane_id) else {
|
||||
return Err(sp_runtime::DispatchError::Other("Missing bridge!"));
|
||||
return Err(pezsp_runtime::DispatchError::Other("Missing bridge!"));
|
||||
};
|
||||
frame_support::ensure!(
|
||||
pezframe_support::ensure!(
|
||||
locations.bridge_id() == &bridge_id,
|
||||
"Bridge is not stored correctly!"
|
||||
);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#![cfg(test)]
|
||||
|
||||
use crate as pallet_xcm_bridge_hub;
|
||||
use crate as pezpallet_xcm_bridge_hub;
|
||||
|
||||
use bp_messages::{
|
||||
target_chain::{DispatchMessage, MessageDispatch},
|
||||
@@ -25,19 +25,19 @@ use bp_messages::{
|
||||
use bp_runtime::{messages::MessageDispatchResult, Chain, ChainId, HashOf};
|
||||
use bp_xcm_bridge_hub::{BridgeId, LocalXcmChannelManager};
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::{
|
||||
use pezframe_support::{
|
||||
assert_ok, derive_impl, parameter_types,
|
||||
traits::{EnsureOrigin, Equals, Everything, Get, OriginTrait},
|
||||
weights::RuntimeDbWeight,
|
||||
};
|
||||
use pezkuwi_teyrchain_primitives::primitives::Sibling;
|
||||
use sp_core::H256;
|
||||
use sp_runtime::{
|
||||
testing::Header as SubstrateHeader,
|
||||
use pezsp_core::H256;
|
||||
use pezsp_runtime::{
|
||||
testing::Header as BizinikiwiHeader,
|
||||
traits::{BlakeTwo256, ConstU128, ConstU32, IdentityLookup},
|
||||
AccountId32, BuildStorage, StateVersion,
|
||||
};
|
||||
use sp_std::cell::RefCell;
|
||||
use pezsp_std::cell::RefCell;
|
||||
use xcm::{latest::PEZKUWICHAIN_GENESIS_HASH, prelude::*};
|
||||
use xcm_builder::{
|
||||
AllowUnpaidExecutionFrom, DispatchBlob, DispatchBlobError, FixedWeightBounds,
|
||||
@@ -48,7 +48,7 @@ use xcm_executor::{traits::ConvertOrigin, XcmExecutor};
|
||||
|
||||
pub type AccountId = AccountId32;
|
||||
pub type Balance = u64;
|
||||
type Block = frame_system::mocking::MockBlock<TestRuntime>;
|
||||
type Block = pezframe_system::mocking::MockBlock<TestRuntime>;
|
||||
|
||||
/// Lane identifier type used for tests.
|
||||
pub type TestLaneIdType = HashedLaneId;
|
||||
@@ -57,13 +57,13 @@ pub const SIBLING_ASSET_HUB_ID: u32 = 2001;
|
||||
pub const THIS_BRIDGE_HUB_ID: u32 = 2002;
|
||||
pub const BRIDGED_ASSET_HUB_ID: u32 = 1001;
|
||||
|
||||
frame_support::construct_runtime! {
|
||||
pezframe_support::construct_runtime! {
|
||||
pub enum TestRuntime {
|
||||
System: frame_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Balances: pallet_balances::{Pallet, Event<T>},
|
||||
Messages: pallet_bridge_messages::{Pallet, Call, Event<T>},
|
||||
XcmOverBridge: pallet_xcm_bridge_hub::{Pallet, Call, HoldReason, Event<T>},
|
||||
XcmOverBridgeWrappedWithExportMessageRouter: pallet_xcm_bridge_hub_router = 57,
|
||||
System: pezframe_system::{Pallet, Call, Config<T>, Storage, Event<T>},
|
||||
Balances: pezpallet_balances::{Pallet, Event<T>},
|
||||
Messages: pezpallet_bridge_messages::{Pallet, Call, Event<T>},
|
||||
XcmOverBridge: pezpallet_xcm_bridge_hub::{Pallet, Call, HoldReason, Event<T>},
|
||||
XcmOverBridgeWrappedWithExportMessageRouter: pezpallet_xcm_bridge_hub_router = 57,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,20 +72,20 @@ parameter_types! {
|
||||
pub const ExistentialDeposit: Balance = 1;
|
||||
}
|
||||
|
||||
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
|
||||
impl frame_system::Config for TestRuntime {
|
||||
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
|
||||
impl pezframe_system::Config for TestRuntime {
|
||||
type AccountId = AccountId;
|
||||
type AccountData = pallet_balances::AccountData<Balance>;
|
||||
type AccountData = pezpallet_balances::AccountData<Balance>;
|
||||
type Block = Block;
|
||||
type Lookup = IdentityLookup<Self::AccountId>;
|
||||
}
|
||||
|
||||
#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pallet_balances::Config for TestRuntime {
|
||||
#[derive_impl(pezpallet_balances::config_preludes::TestDefaultConfig)]
|
||||
impl pezpallet_balances::Config for TestRuntime {
|
||||
type AccountStore = System;
|
||||
}
|
||||
|
||||
impl pallet_bridge_messages::Config for TestRuntime {
|
||||
impl pezpallet_bridge_messages::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type WeightInfo = TestMessagesWeights;
|
||||
|
||||
@@ -106,7 +106,7 @@ impl pallet_bridge_messages::Config for TestRuntime {
|
||||
|
||||
pub struct TestMessagesWeights;
|
||||
|
||||
impl pallet_bridge_messages::WeightInfo for TestMessagesWeights {
|
||||
impl pezpallet_bridge_messages::WeightInfo for TestMessagesWeights {
|
||||
fn receive_single_message_proof() -> Weight {
|
||||
Weight::zero()
|
||||
}
|
||||
@@ -133,7 +133,7 @@ impl pallet_bridge_messages::WeightInfo for TestMessagesWeights {
|
||||
}
|
||||
}
|
||||
|
||||
impl pallet_bridge_messages::WeightInfoExt for TestMessagesWeights {
|
||||
impl pezpallet_bridge_messages::WeightInfoExt for TestMessagesWeights {
|
||||
fn expected_extra_storage_proof_size() -> u32 {
|
||||
0
|
||||
}
|
||||
@@ -164,7 +164,7 @@ parameter_types! {
|
||||
|
||||
pub const BridgeDeposit: Balance = 100_000;
|
||||
|
||||
// configuration for pallet_xcm_bridge_hub_router
|
||||
// configuration for pezpallet_xcm_bridge_hub_router
|
||||
pub BridgeHubLocation: Location = Here.into();
|
||||
pub BridgeFeeAsset: AssetId = Location::here().into();
|
||||
pub BridgeTable: Vec<NetworkExportTableItem>
|
||||
@@ -184,7 +184,7 @@ pub fn bridged_asset_hub_universal_location() -> InteriorLocation {
|
||||
BridgedUniversalDestination::get()
|
||||
}
|
||||
|
||||
impl pallet_xcm_bridge_hub::Config for TestRuntime {
|
||||
impl pezpallet_xcm_bridge_hub::Config for TestRuntime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
|
||||
type UniversalLocation = UniversalLocation;
|
||||
@@ -194,7 +194,7 @@ impl pallet_xcm_bridge_hub::Config for TestRuntime {
|
||||
type MessageExportPrice = ();
|
||||
type DestinationVersion = AlwaysLatest;
|
||||
|
||||
type ForceOrigin = frame_system::EnsureNever<()>;
|
||||
type ForceOrigin = pezframe_system::EnsureNever<()>;
|
||||
type OpenBridgeOrigin = OpenBridgeOrigin;
|
||||
type BridgeOriginAccountIdConverter = LocationToAccountId;
|
||||
|
||||
@@ -211,7 +211,7 @@ impl pallet_xcm_bridge_hub::Config for TestRuntime {
|
||||
/// A router instance simulates a scenario where the router is deployed on a different chain than
|
||||
/// the `MessageExporter`. This means that the router sends an `ExportMessage`.
|
||||
pub type XcmOverBridgeWrappedWithExportMessageRouterInstance = ();
|
||||
impl pallet_xcm_bridge_hub_router::Config<XcmOverBridgeWrappedWithExportMessageRouterInstance>
|
||||
impl pezpallet_xcm_bridge_hub_router::Config<XcmOverBridgeWrappedWithExportMessageRouterInstance>
|
||||
for TestRuntime
|
||||
{
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
@@ -224,9 +224,9 @@ impl pallet_xcm_bridge_hub_router::Config<XcmOverBridgeWrappedWithExportMessageR
|
||||
type DestinationVersion = AlwaysLatest;
|
||||
|
||||
// We convert to root `here` location with `BridgeHubLocationXcmOriginAsRoot`
|
||||
type BridgeHubOrigin = frame_system::EnsureRoot<AccountId>;
|
||||
type BridgeHubOrigin = pezframe_system::EnsureRoot<AccountId>;
|
||||
// **Note**: The crucial part is that `ExportMessage` is processed by `XcmExecutor`, which
|
||||
// calls the `ExportXcm` implementation of `pallet_xcm_bridge_hub` as the
|
||||
// calls the `ExportXcm` implementation of `pezpallet_xcm_bridge_hub` as the
|
||||
// `MessageExporter`.
|
||||
type ToBridgeHubSender = ExecuteXcmOverSendXcm;
|
||||
type LocalXcmChannelManager = TestLocalXcmChannelManager;
|
||||
@@ -257,7 +257,7 @@ impl xcm_executor::Config for XcmConfig {
|
||||
type AssetLocker = ();
|
||||
type AssetExchanger = ();
|
||||
type FeeManager = ();
|
||||
// We just set `MessageExporter` as our `pallet_xcm_bridge_hub` instance.
|
||||
// We just set `MessageExporter` as our `pezpallet_xcm_bridge_hub` instance.
|
||||
type MessageExporter = (XcmOverBridge,);
|
||||
type UniversalAliases = ();
|
||||
type CallDispatcher = RuntimeCall;
|
||||
@@ -276,11 +276,11 @@ thread_local! {
|
||||
|
||||
/// The `SendXcm` implementation directly executes XCM using `XcmExecutor`.
|
||||
///
|
||||
/// We ensure that the `ExportMessage` produced by `pallet_xcm_bridge_hub_router` is compatible with
|
||||
/// the `ExportXcm` implementation of `pallet_xcm_bridge_hub`.
|
||||
/// We ensure that the `ExportMessage` produced by `pezpallet_xcm_bridge_hub_router` is compatible with
|
||||
/// the `ExportXcm` implementation of `pezpallet_xcm_bridge_hub`.
|
||||
///
|
||||
/// Note: The crucial part is that `ExportMessage` is processed by `XcmExecutor`, which calls the
|
||||
/// `ExportXcm` implementation of `pallet_xcm_bridge_hub` as `MessageExporter`.
|
||||
/// `ExportXcm` implementation of `pezpallet_xcm_bridge_hub` as `MessageExporter`.
|
||||
pub struct ExecuteXcmOverSendXcm;
|
||||
impl SendXcm for ExecuteXcmOverSendXcm {
|
||||
type Ticket = Xcm<()>;
|
||||
@@ -296,7 +296,7 @@ impl SendXcm for ExecuteXcmOverSendXcm {
|
||||
let xcm: Xcm<RuntimeCall> = ticket.into();
|
||||
|
||||
let origin = EXECUTE_XCM_ORIGIN.with(|o| o.borrow().clone().unwrap());
|
||||
let mut hash = xcm.using_encoded(sp_io::hashing::blake2_256);
|
||||
let mut hash = xcm.using_encoded(pezsp_io::hashing::blake2_256);
|
||||
let outcome = XcmExecutor::<XcmConfig>::prepare_and_execute(
|
||||
origin,
|
||||
xcm,
|
||||
@@ -345,7 +345,7 @@ thread_local! {
|
||||
}
|
||||
|
||||
pub struct BridgeHubLocationXcmOriginAsRoot<RuntimeOrigin>(
|
||||
sp_std::marker::PhantomData<RuntimeOrigin>,
|
||||
pezsp_std::marker::PhantomData<RuntimeOrigin>,
|
||||
);
|
||||
impl<RuntimeOrigin: OriginTrait> ConvertOrigin<RuntimeOrigin>
|
||||
for BridgeHubLocationXcmOriginAsRoot<RuntimeOrigin>
|
||||
@@ -447,13 +447,13 @@ impl EnsureOrigin<RuntimeOrigin> for OpenBridgeOrigin {
|
||||
}
|
||||
|
||||
pub(crate) type OpenBridgeOriginOf<T, I> =
|
||||
<T as pallet_xcm_bridge_hub::Config<I>>::OpenBridgeOrigin;
|
||||
<T as pezpallet_xcm_bridge_hub::Config<I>>::OpenBridgeOrigin;
|
||||
|
||||
pub struct TestLocalXcmChannelManager;
|
||||
|
||||
impl TestLocalXcmChannelManager {
|
||||
pub fn make_congested() {
|
||||
frame_support::storage::unhashed::put(b"TestLocalXcmChannelManager.Congested", &true);
|
||||
pezframe_support::storage::unhashed::put(b"TestLocalXcmChannelManager.Congested", &true);
|
||||
}
|
||||
|
||||
fn suspended_key(bridge: &BridgeId) -> Vec<u8> {
|
||||
@@ -464,11 +464,11 @@ impl TestLocalXcmChannelManager {
|
||||
}
|
||||
|
||||
pub fn is_bridge_suspended(bridge: &BridgeId) -> bool {
|
||||
frame_support::storage::unhashed::get_or_default(&Self::suspended_key(bridge))
|
||||
pezframe_support::storage::unhashed::get_or_default(&Self::suspended_key(bridge))
|
||||
}
|
||||
|
||||
pub fn is_bridge_resumed(bridge: &BridgeId) -> bool {
|
||||
frame_support::storage::unhashed::get_or_default(&Self::resumed_key(bridge))
|
||||
pezframe_support::storage::unhashed::get_or_default(&Self::resumed_key(bridge))
|
||||
}
|
||||
|
||||
fn build_congestion_message(bridge: &BridgeId, is_congested: bool) -> Vec<Instruction<()>> {
|
||||
@@ -480,7 +480,7 @@ impl TestLocalXcmChannelManager {
|
||||
XcmOverBridgeWrappedWithExportMessageRouter(XcmBridgeHubRouterCall),
|
||||
}
|
||||
|
||||
sp_std::vec![
|
||||
pezsp_std::vec![
|
||||
UnpaidExecution { weight_limit: Unlimited, check_origin: None },
|
||||
Transact {
|
||||
origin_kind: OriginKind::Xcm,
|
||||
@@ -512,7 +512,7 @@ impl TestLocalXcmChannelManager {
|
||||
);
|
||||
|
||||
if result.is_ok() {
|
||||
frame_support::storage::unhashed::put(&key, &true);
|
||||
pezframe_support::storage::unhashed::put(&key, &true);
|
||||
}
|
||||
|
||||
result.map(|_| ())
|
||||
@@ -523,7 +523,7 @@ impl LocalXcmChannelManager for TestLocalXcmChannelManager {
|
||||
type Error = SendError;
|
||||
|
||||
fn is_congested(_with: &Location) -> bool {
|
||||
frame_support::storage::unhashed::get_or_default(b"TestLocalXcmChannelManager.Congested")
|
||||
pezframe_support::storage::unhashed::get_or_default(b"TestLocalXcmChannelManager.Congested")
|
||||
}
|
||||
|
||||
fn suspend_bridge(local_origin: &Location, bridge: BridgeId) -> Result<(), Self::Error> {
|
||||
@@ -535,7 +535,7 @@ impl LocalXcmChannelManager for TestLocalXcmChannelManager {
|
||||
}
|
||||
}
|
||||
|
||||
impl pallet_xcm_bridge_hub_router::XcmChannelStatusProvider for TestLocalXcmChannelManager {
|
||||
impl pezpallet_xcm_bridge_hub_router::XcmChannelStatusProvider for TestLocalXcmChannelManager {
|
||||
fn is_congested(with: &Location) -> bool {
|
||||
<Self as LocalXcmChannelManager>::is_congested(with)
|
||||
}
|
||||
@@ -545,13 +545,13 @@ pub struct TestBlobDispatcher;
|
||||
|
||||
impl TestBlobDispatcher {
|
||||
pub fn is_dispatched() -> bool {
|
||||
frame_support::storage::unhashed::get_or_default(b"TestBlobDispatcher.Dispatched")
|
||||
pezframe_support::storage::unhashed::get_or_default(b"TestBlobDispatcher.Dispatched")
|
||||
}
|
||||
}
|
||||
|
||||
impl DispatchBlob for TestBlobDispatcher {
|
||||
fn dispatch_blob(_blob: Vec<u8>) -> Result<(), DispatchBlobError> {
|
||||
frame_support::storage::unhashed::put(b"TestBlobDispatcher.Dispatched", &true);
|
||||
pezframe_support::storage::unhashed::put(b"TestBlobDispatcher.Dispatched", &true);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -564,11 +564,11 @@ impl Chain for ThisUnderlyingChain {
|
||||
type BlockNumber = u64;
|
||||
type Hash = H256;
|
||||
type Hasher = BlakeTwo256;
|
||||
type Header = SubstrateHeader;
|
||||
type Header = BizinikiwiHeader;
|
||||
type AccountId = AccountId;
|
||||
type Balance = Balance;
|
||||
type Nonce = u64;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -588,7 +588,7 @@ impl ChainWithMessages for ThisUnderlyingChain {
|
||||
}
|
||||
|
||||
pub type BridgedHeaderHash = H256;
|
||||
pub type BridgedChainHeader = SubstrateHeader;
|
||||
pub type BridgedChainHeader = BizinikiwiHeader;
|
||||
|
||||
pub struct BridgedUnderlyingChain;
|
||||
impl Chain for BridgedUnderlyingChain {
|
||||
@@ -600,7 +600,7 @@ impl Chain for BridgedUnderlyingChain {
|
||||
type AccountId = AccountId;
|
||||
type Balance = Balance;
|
||||
type Nonce = u64;
|
||||
type Signature = sp_runtime::MultiSignature;
|
||||
type Signature = pezsp_runtime::MultiSignature;
|
||||
|
||||
const STATE_VERSION: StateVersion = StateVersion::V1;
|
||||
|
||||
@@ -633,7 +633,7 @@ pub struct TestMessageDispatch;
|
||||
|
||||
impl TestMessageDispatch {
|
||||
pub fn deactivate(lane: TestLaneIdType) {
|
||||
frame_support::storage::unhashed::put(&(b"inactive", lane).encode()[..], &false);
|
||||
pezframe_support::storage::unhashed::put(&(b"inactive", lane).encode()[..], &false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -643,7 +643,7 @@ impl MessageDispatch for TestMessageDispatch {
|
||||
type LaneId = TestLaneIdType;
|
||||
|
||||
fn is_active(lane: Self::LaneId) -> bool {
|
||||
frame_support::storage::unhashed::take::<bool>(&(b"inactive", lane).encode()[..]) !=
|
||||
pezframe_support::storage::unhashed::take::<bool>(&(b"inactive", lane).encode()[..]) !=
|
||||
Some(false)
|
||||
}
|
||||
|
||||
@@ -662,8 +662,8 @@ impl MessageDispatch for TestMessageDispatch {
|
||||
|
||||
/// Run pallet test.
|
||||
pub fn run_test<T>(test: impl FnOnce() -> T) -> T {
|
||||
sp_io::TestExternalities::new(
|
||||
frame_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap(),
|
||||
pezsp_io::TestExternalities::new(
|
||||
pezframe_system::GenesisConfig::<TestRuntime>::default().build_storage().unwrap(),
|
||||
)
|
||||
.execute_with(test)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "bp-beefy"
|
||||
description = "Primitives of pallet-bridge-beefy module."
|
||||
description = "Primitives of pezpallet-bridge-beefy module."
|
||||
version = "0.1.0"
|
||||
authors.workspace = true
|
||||
edition.workspace = true
|
||||
@@ -19,14 +19,14 @@ serde = { features = ["alloc", "derive"], workspace = true }
|
||||
# Bridge Dependencies
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
# Bizinikiwi Dependencies
|
||||
binary-merkle-tree = { workspace = true }
|
||||
frame-support = { workspace = true }
|
||||
pallet-beefy-mmr = { workspace = true }
|
||||
pallet-mmr = { workspace = true }
|
||||
sp-consensus-beefy = { workspace = true }
|
||||
sp-runtime = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
pezframe-support = { workspace = true }
|
||||
pezpallet-beefy-mmr = { workspace = true }
|
||||
pezpallet-mmr = { workspace = true }
|
||||
pezsp-consensus-beefy = { workspace = true }
|
||||
pezsp-runtime = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -34,21 +34,21 @@ std = [
|
||||
"binary-merkle-tree/std",
|
||||
"bp-runtime/std",
|
||||
"codec/std",
|
||||
"frame-support/std",
|
||||
"pallet-beefy-mmr/std",
|
||||
"pallet-mmr/std",
|
||||
"pezframe-support/std",
|
||||
"pezpallet-beefy-mmr/std",
|
||||
"pezpallet-mmr/std",
|
||||
"scale-info/std",
|
||||
"serde/std",
|
||||
"sp-consensus-beefy/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-consensus-beefy/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"binary-merkle-tree/runtime-benchmarks",
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"pallet-beefy-mmr/runtime-benchmarks",
|
||||
"pallet-mmr/runtime-benchmarks",
|
||||
"sp-consensus-beefy/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezpallet-beefy-mmr/runtime-benchmarks",
|
||||
"pezpallet-mmr/runtime-benchmarks",
|
||||
"pezsp-consensus-beefy/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
#![warn(missing_docs)]
|
||||
|
||||
pub use binary_merkle_tree::merkle_root;
|
||||
pub use pallet_beefy_mmr::BeefyEcdsaToEthereum;
|
||||
pub use pallet_mmr::{
|
||||
pub use pezpallet_beefy_mmr::BeefyEcdsaToEthereum;
|
||||
pub use pezpallet_mmr::{
|
||||
primitives::{DataOrHash as MmrDataOrHash, LeafProof as MmrProof},
|
||||
verify_leaves_proof as verify_mmr_leaves_proof,
|
||||
};
|
||||
pub use sp_consensus_beefy::{
|
||||
pub use pezsp_consensus_beefy::{
|
||||
ecdsa_crypto::{
|
||||
AuthorityId as EcdsaValidatorId, AuthoritySignature as EcdsaValidatorSignature,
|
||||
},
|
||||
@@ -37,16 +37,16 @@ pub use sp_consensus_beefy::{
|
||||
|
||||
use bp_runtime::{BasicOperatingMode, BlockNumberOf, Chain, HashOf};
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::Parameter;
|
||||
use pezframe_support::Parameter;
|
||||
use scale_info::TypeInfo;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sp_runtime::{
|
||||
use pezsp_runtime::{
|
||||
traits::{Convert, MaybeSerializeDeserialize},
|
||||
RuntimeAppPublic, RuntimeDebug,
|
||||
};
|
||||
use sp_std::prelude::*;
|
||||
use pezsp_std::prelude::*;
|
||||
|
||||
/// Substrate-based chain with BEEFY && MMR pallets deployed.
|
||||
/// Bizinikiwi-based chain with BEEFY && MMR pallets deployed.
|
||||
///
|
||||
/// Both BEEFY and MMR pallets and their clients may be configured to use different
|
||||
/// primitives. Some of types can be configured in low-level pallets, but are constrained
|
||||
@@ -54,23 +54,23 @@ use sp_std::prelude::*;
|
||||
pub trait ChainWithBeefy: Chain {
|
||||
/// The hashing algorithm used to compute the digest of the BEEFY commitment.
|
||||
///
|
||||
/// Corresponds to the hashing algorithm, used by `sc_consensus_beefy::BeefyKeystore`.
|
||||
type CommitmentHasher: sp_runtime::traits::Hash;
|
||||
/// Corresponds to the hashing algorithm, used by `pezsc_consensus_beefy::BeefyKeystore`.
|
||||
type CommitmentHasher: pezsp_runtime::traits::Hash;
|
||||
|
||||
/// The hashing algorithm used to build the MMR.
|
||||
///
|
||||
/// The same algorithm is also used to compute merkle roots in BEEFY
|
||||
/// (e.g. validator addresses root in leaf data).
|
||||
///
|
||||
/// Corresponds to the `Hashing` field of the `pallet-mmr` configuration.
|
||||
type MmrHashing: sp_runtime::traits::Hash<Output = Self::MmrHash>;
|
||||
/// Corresponds to the `Hashing` field of the `pezpallet-mmr` configuration.
|
||||
type MmrHashing: pezsp_runtime::traits::Hash<Output = Self::MmrHash>;
|
||||
|
||||
/// The output type of the hashing algorithm used to build the MMR.
|
||||
///
|
||||
/// This type is actually stored in the MMR.
|
||||
|
||||
/// Corresponds to the `Hash` field of the `pallet-mmr` configuration.
|
||||
type MmrHash: sp_std::hash::Hash
|
||||
/// Corresponds to the `Hash` field of the `pezpallet-mmr` configuration.
|
||||
type MmrHash: pezsp_std::hash::Hash
|
||||
+ Parameter
|
||||
+ Copy
|
||||
+ AsRef<[u8]>
|
||||
@@ -83,43 +83,43 @@ pub trait ChainWithBeefy: Chain {
|
||||
|
||||
/// A way to identify a BEEFY validator.
|
||||
///
|
||||
/// Corresponds to the `BeefyId` field of the `pallet-beefy` configuration.
|
||||
/// Corresponds to the `BeefyId` field of the `pezpallet-beefy` configuration.
|
||||
type AuthorityId: BeefyAuthorityId<Self::CommitmentHasher> + Parameter;
|
||||
|
||||
/// A way to convert validator id to its raw representation in the BEEFY merkle tree.
|
||||
///
|
||||
/// Corresponds to the `BeefyAuthorityToMerkleLeaf` field of the `pallet-beefy-mmr`
|
||||
/// Corresponds to the `BeefyAuthorityToMerkleLeaf` field of the `pezpallet-beefy-mmr`
|
||||
/// configuration.
|
||||
type AuthorityIdToMerkleLeaf: Convert<Self::AuthorityId, Vec<u8>>;
|
||||
}
|
||||
|
||||
/// BEEFY validator id used by given Substrate chain.
|
||||
/// BEEFY validator id used by given Bizinikiwi chain.
|
||||
pub type BeefyAuthorityIdOf<C> = <C as ChainWithBeefy>::AuthorityId;
|
||||
/// BEEFY validator set, containing both validator identifiers and the numeric set id.
|
||||
pub type BeefyAuthoritySetOf<C> = ValidatorSet<BeefyAuthorityIdOf<C>>;
|
||||
/// BEEFY authority set, containing both validator identifiers and the numeric set id.
|
||||
pub type BeefyAuthoritySetInfoOf<C> = sp_consensus_beefy::mmr::BeefyAuthoritySet<MmrHashOf<C>>;
|
||||
/// BEEFY validator signature used by given Substrate chain.
|
||||
pub type BeefyAuthoritySetInfoOf<C> = pezsp_consensus_beefy::mmr::BeefyAuthoritySet<MmrHashOf<C>>;
|
||||
/// BEEFY validator signature used by given Bizinikiwi chain.
|
||||
pub type BeefyValidatorSignatureOf<C> =
|
||||
<<C as ChainWithBeefy>::AuthorityId as RuntimeAppPublic>::Signature;
|
||||
/// Signed BEEFY commitment used by given Substrate chain.
|
||||
/// Signed BEEFY commitment used by given Bizinikiwi chain.
|
||||
pub type BeefySignedCommitmentOf<C> =
|
||||
SignedCommitment<BlockNumberOf<C>, BeefyValidatorSignatureOf<C>>;
|
||||
/// Hash algorithm, used to compute the digest of the BEEFY commitment before signing it.
|
||||
pub type BeefyCommitmentHasher<C> = <C as ChainWithBeefy>::CommitmentHasher;
|
||||
/// Hash algorithm used in Beefy MMR construction by given Substrate chain.
|
||||
/// Hash algorithm used in Beefy MMR construction by given Bizinikiwi chain.
|
||||
pub type MmrHashingOf<C> = <C as ChainWithBeefy>::MmrHashing;
|
||||
/// Hash type, used in MMR construction by given Substrate chain.
|
||||
/// Hash type, used in MMR construction by given Bizinikiwi chain.
|
||||
pub type MmrHashOf<C> = <C as ChainWithBeefy>::MmrHash;
|
||||
/// BEEFY MMR proof type used by the given Substrate chain.
|
||||
/// BEEFY MMR proof type used by the given Bizinikiwi chain.
|
||||
pub type MmrProofOf<C> = MmrProof<MmrHashOf<C>>;
|
||||
/// The type of the MMR leaf extra data used by the given Substrate chain.
|
||||
/// The type of the MMR leaf extra data used by the given Bizinikiwi chain.
|
||||
pub type BeefyMmrLeafExtraOf<C> = <C as ChainWithBeefy>::BeefyMmrLeafExtra;
|
||||
/// A way to convert a validator id to its raw representation in the BEEFY merkle tree, used by
|
||||
/// the given Substrate chain.
|
||||
/// the given Bizinikiwi chain.
|
||||
pub type BeefyAuthorityIdToMerkleLeafOf<C> = <C as ChainWithBeefy>::AuthorityIdToMerkleLeaf;
|
||||
/// Actual type of leafs in the BEEFY MMR.
|
||||
pub type BeefyMmrLeafOf<C> = sp_consensus_beefy::mmr::MmrLeaf<
|
||||
pub type BeefyMmrLeafOf<C> = pezsp_consensus_beefy::mmr::MmrLeaf<
|
||||
BlockNumberOf<C>,
|
||||
HashOf<C>,
|
||||
MmrHashOf<C>,
|
||||
|
||||
@@ -19,12 +19,12 @@ serde = { features = ["alloc", "derive"], workspace = true }
|
||||
# Bridge dependencies
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-support = { workspace = true }
|
||||
sp-consensus-grandpa = { features = ["serde"], workspace = true }
|
||||
sp-core = { features = ["serde"], workspace = true }
|
||||
sp-runtime = { features = ["serde"], workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezsp-consensus-grandpa = { features = ["serde"], workspace = true }
|
||||
pezsp-core = { features = ["serde"], workspace = true }
|
||||
pezsp-runtime = { features = ["serde"], workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
bp-test-utils = { workspace = true, default-features = true }
|
||||
@@ -37,18 +37,18 @@ std = [
|
||||
"bp-runtime/std",
|
||||
"codec/std",
|
||||
"finality-grandpa/std",
|
||||
"frame-support/std",
|
||||
"pezframe-support/std",
|
||||
"scale-info/std",
|
||||
"serde/std",
|
||||
"sp-consensus-grandpa/std",
|
||||
"sp-core/std",
|
||||
"sp-runtime/std",
|
||||
"sp-std/std",
|
||||
"pezsp-consensus-grandpa/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-runtime/std",
|
||||
"pezsp-std/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"bp-test-utils/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"sp-consensus-grandpa/runtime-benchmarks",
|
||||
"sp-runtime/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezsp-consensus-grandpa/runtime-benchmarks",
|
||||
"pezsp-runtime/runtime-benchmarks",
|
||||
]
|
||||
|
||||
@@ -14,23 +14,23 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Defines structures related to calls of the `pallet-bridge-grandpa` pallet.
|
||||
//! Defines structures related to calls of the `pezpallet-bridge-grandpa` pallet.
|
||||
|
||||
use crate::{justification, InitializationData};
|
||||
|
||||
use bp_runtime::HeaderOf;
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::{weights::Weight, RuntimeDebugNoBound};
|
||||
use pezframe_support::{weights::Weight, RuntimeDebugNoBound};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_consensus_grandpa::SetId;
|
||||
use sp_runtime::traits::{Header as HeaderT, Zero};
|
||||
use sp_std::{boxed::Box, fmt::Debug};
|
||||
use pezsp_consensus_grandpa::SetId;
|
||||
use pezsp_runtime::traits::{Header as HeaderT, Zero};
|
||||
use pezsp_std::{boxed::Box, fmt::Debug};
|
||||
|
||||
/// A minimized version of `pallet-bridge-grandpa::Call` that can be used without a runtime.
|
||||
/// A minimized version of `pezpallet-bridge-grandpa::Call` that can be used without a runtime.
|
||||
#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)]
|
||||
#[allow(non_camel_case_types)]
|
||||
pub enum BridgeGrandpaCall<Header: HeaderT> {
|
||||
/// `pallet-bridge-grandpa::Call::submit_finality_proof`
|
||||
/// `pezpallet-bridge-grandpa::Call::submit_finality_proof`
|
||||
#[codec(index = 0)]
|
||||
submit_finality_proof {
|
||||
/// The header that we are going to finalize.
|
||||
@@ -38,13 +38,13 @@ pub enum BridgeGrandpaCall<Header: HeaderT> {
|
||||
/// Finality justification for the `finality_target`.
|
||||
justification: justification::GrandpaJustification<Header>,
|
||||
},
|
||||
/// `pallet-bridge-grandpa::Call::initialize`
|
||||
/// `pezpallet-bridge-grandpa::Call::initialize`
|
||||
#[codec(index = 1)]
|
||||
initialize {
|
||||
/// All data, required to initialize the pallet.
|
||||
init_data: InitializationData<Header>,
|
||||
},
|
||||
/// `pallet-bridge-grandpa::Call::submit_finality_proof_ex`
|
||||
/// `pezpallet-bridge-grandpa::Call::submit_finality_proof_ex`
|
||||
#[codec(index = 4)]
|
||||
submit_finality_proof_ex {
|
||||
/// The header that we are going to finalize.
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
//! Logic for checking GRANDPA Finality Proofs.
|
||||
//!
|
||||
//! Adapted copy of substrate/client/finality-grandpa/src/justification.rs. If origin
|
||||
//! will ever be moved to the sp_consensus_grandpa, we should reuse that implementation.
|
||||
//! Adapted copy of bizinikiwi/client/finality-grandpa/src/justification.rs. If origin
|
||||
//! will ever be moved to the pezsp_consensus_grandpa, we should reuse that implementation.
|
||||
|
||||
mod verification;
|
||||
|
||||
@@ -33,9 +33,9 @@ pub use verification::{
|
||||
use bp_runtime::{BlockNumberOf, Chain, HashOf, HeaderId};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode, MaxEncodedLen};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_consensus_grandpa::{AuthorityId, AuthoritySignature};
|
||||
use sp_runtime::{traits::Header as HeaderT, RuntimeDebug, SaturatedConversion};
|
||||
use sp_std::prelude::*;
|
||||
use pezsp_consensus_grandpa::{AuthorityId, AuthoritySignature};
|
||||
use pezsp_runtime::{traits::Header as HeaderT, RuntimeDebug, SaturatedConversion};
|
||||
use pezsp_std::prelude::*;
|
||||
|
||||
/// A GRANDPA Justification is a proof that a given header was finalized
|
||||
/// at a certain height and with a certain set of authorities.
|
||||
|
||||
@@ -29,9 +29,9 @@ use crate::{
|
||||
};
|
||||
|
||||
use bp_runtime::{BlockNumberOf, HashOf, HeaderOf};
|
||||
use sp_consensus_grandpa::{AuthorityId, AuthoritySignature, EquivocationProof, Precommit};
|
||||
use sp_runtime::traits::Header as HeaderT;
|
||||
use sp_std::{
|
||||
use pezsp_consensus_grandpa::{AuthorityId, AuthoritySignature, EquivocationProof, Precommit};
|
||||
use pezsp_runtime::traits::Header as HeaderT;
|
||||
use pezsp_std::{
|
||||
collections::{btree_map::BTreeMap, btree_set::BTreeSet},
|
||||
prelude::*,
|
||||
vec,
|
||||
@@ -93,7 +93,7 @@ impl<'a, Header: HeaderT> EquivocationsCollector<'a, Header> {
|
||||
if let AuthorityVotes::Equivocation(equivocation) = vote {
|
||||
equivocations.push(EquivocationProof::new(
|
||||
self.context.authority_set_id,
|
||||
sp_consensus_grandpa::Equivocation::Precommit(equivocation),
|
||||
pezsp_consensus_grandpa::Equivocation::Precommit(equivocation),
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -176,7 +176,7 @@ impl<'a, Header: HeaderT> JustificationVerifier<Header> for EquivocationsCollect
|
||||
}
|
||||
|
||||
/// Helper struct for finding equivocations in GRANDPA proofs.
|
||||
pub struct GrandpaEquivocationsFinder<C>(sp_std::marker::PhantomData<C>);
|
||||
pub struct GrandpaEquivocationsFinder<C>(pezsp_std::marker::PhantomData<C>);
|
||||
|
||||
impl<C: ChainWithGrandpa>
|
||||
FindEquivocations<
|
||||
|
||||
@@ -24,9 +24,9 @@ use crate::{justification::GrandpaJustification, AuthoritySet};
|
||||
|
||||
use bp_runtime::HeaderId;
|
||||
use finality_grandpa::voter_set::VoterSet;
|
||||
use sp_consensus_grandpa::{AuthorityId, AuthoritySignature, SetId};
|
||||
use sp_runtime::{traits::Header as HeaderT, RuntimeDebug};
|
||||
use sp_std::{
|
||||
use pezsp_consensus_grandpa::{AuthorityId, AuthoritySignature, SetId};
|
||||
use pezsp_runtime::{traits::Header as HeaderT, RuntimeDebug};
|
||||
use pezsp_std::{
|
||||
collections::{
|
||||
btree_map::{
|
||||
BTreeMap,
|
||||
@@ -299,7 +299,7 @@ trait JustificationVerifier<Header: HeaderT> {
|
||||
}
|
||||
|
||||
// verify authority signature
|
||||
if !sp_consensus_grandpa::check_message_signature_with_buffer(
|
||||
if !pezsp_consensus_grandpa::check_message_signature_with_buffer(
|
||||
&finality_grandpa::Message::Precommit(signed.precommit.clone()),
|
||||
&signed.id,
|
||||
&signed.signature,
|
||||
|
||||
@@ -24,9 +24,9 @@ use crate::justification::{
|
||||
use crate::justification::verification::{
|
||||
IterationFlow, JustificationVerificationContext, SignedPrecommit,
|
||||
};
|
||||
use sp_consensus_grandpa::AuthorityId;
|
||||
use sp_runtime::traits::Header as HeaderT;
|
||||
use sp_std::{collections::btree_set::BTreeSet, prelude::*, vec, vec::Vec};
|
||||
use pezsp_consensus_grandpa::AuthorityId;
|
||||
use pezsp_runtime::traits::Header as HeaderT;
|
||||
use pezsp_std::{collections::btree_set::BTreeSet, prelude::*, vec, vec::Vec};
|
||||
|
||||
// Verification callbacks for justification optimization.
|
||||
struct JustificationOptimizer<Header: HeaderT> {
|
||||
|
||||
@@ -24,9 +24,9 @@ use crate::justification::{
|
||||
use crate::justification::verification::{
|
||||
IterationFlow, JustificationVerificationContext, SignedPrecommit,
|
||||
};
|
||||
use sp_consensus_grandpa::AuthorityId;
|
||||
use sp_runtime::traits::Header as HeaderT;
|
||||
use sp_std::{collections::btree_set::BTreeSet, vec::Vec};
|
||||
use pezsp_consensus_grandpa::AuthorityId;
|
||||
use pezsp_runtime::traits::Header as HeaderT;
|
||||
use pezsp_std::{collections::btree_set::BTreeSet, vec::Vec};
|
||||
|
||||
/// Verification callbacks that reject all unknown, duplicate or redundant votes.
|
||||
struct StrictJustificationVerifier {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Defines traits which represent a common interface for Substrate pallets which want to
|
||||
//! Defines traits which represent a common interface for Bizinikiwi pallets which want to
|
||||
//! incorporate bridge functionality.
|
||||
|
||||
#![warn(missing_docs)]
|
||||
@@ -29,14 +29,14 @@ use bp_runtime::{
|
||||
};
|
||||
use codec::{Codec, Decode, DecodeWithMemTracking, Encode, EncodeLike, MaxEncodedLen};
|
||||
use core::{clone::Clone, cmp::Eq, default::Default, fmt::Debug};
|
||||
use frame_support::PalletError;
|
||||
use pezframe_support::PalletError;
|
||||
use scale_info::TypeInfo;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sp_consensus_grandpa::{
|
||||
use pezsp_consensus_grandpa::{
|
||||
AuthorityList, ConsensusLog, ScheduledChange, SetId, GRANDPA_ENGINE_ID,
|
||||
};
|
||||
use sp_runtime::{traits::Header as HeaderT, Digest, RuntimeDebug, SaturatedConversion};
|
||||
use sp_std::{boxed::Box, vec::Vec};
|
||||
use pezsp_runtime::{traits::Header as HeaderT, Digest, RuntimeDebug, SaturatedConversion};
|
||||
use pezsp_std::{boxed::Box, vec::Vec};
|
||||
|
||||
pub use call_info::{BridgeGrandpaCall, BridgeGrandpaCallOf, SubmitFinalityProofInfo};
|
||||
|
||||
@@ -80,7 +80,7 @@ impl<H: HeaderT> StoredHeaderDataBuilder<H::Number, H::Hash> for H {
|
||||
}
|
||||
}
|
||||
|
||||
/// Substrate header chain, abstracted from the way it is stored.
|
||||
/// Bizinikiwi header chain, abstracted from the way it is stored.
|
||||
pub trait HeaderChain<C: Chain> {
|
||||
/// Returns state (storage) root of given finalized header.
|
||||
fn finalized_header_state_root(header_hash: HashOf<C>) -> Option<HashOf<C>>;
|
||||
@@ -164,12 +164,12 @@ pub trait ConsensusLogReader {
|
||||
}
|
||||
|
||||
/// A struct that provides helper methods for querying the GRANDPA consensus log.
|
||||
pub struct GrandpaConsensusLogReader<Number>(sp_std::marker::PhantomData<Number>);
|
||||
pub struct GrandpaConsensusLogReader<Number>(pezsp_std::marker::PhantomData<Number>);
|
||||
|
||||
impl<Number: Codec> GrandpaConsensusLogReader<Number> {
|
||||
/// Find and return scheduled (regular) change digest item.
|
||||
pub fn find_scheduled_change(digest: &Digest) -> Option<ScheduledChange<Number>> {
|
||||
use sp_runtime::generic::OpaqueDigestItemId;
|
||||
use pezsp_runtime::generic::OpaqueDigestItemId;
|
||||
let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID);
|
||||
|
||||
let filter_log = |log: ConsensusLog<Number>| match log {
|
||||
@@ -246,7 +246,7 @@ pub trait FindEquivocations<FinalityProof, FinalityVerificationContext, Equivoca
|
||||
) -> Result<Vec<EquivocationProof>, Self::Error>;
|
||||
}
|
||||
|
||||
/// Substrate-based chain that is using direct GRANDPA finality.
|
||||
/// Bizinikiwi-based chain that is using direct GRANDPA finality.
|
||||
///
|
||||
/// Keep in mind that teyrchains are relying on relay chain GRANDPA, so they should not implement
|
||||
/// this trait.
|
||||
@@ -394,8 +394,8 @@ pub fn max_expected_submit_finality_proof_arguments_size<C: ChainWithGrandpa>(
|
||||
mod tests {
|
||||
use super::*;
|
||||
use bp_runtime::ChainId;
|
||||
use frame_support::weights::Weight;
|
||||
use sp_runtime::{
|
||||
use pezframe_support::weights::Weight;
|
||||
use pezsp_runtime::{
|
||||
testing::H256, traits::BlakeTwo256, DigestItem, MultiSignature, StateVersion,
|
||||
};
|
||||
|
||||
@@ -407,7 +407,7 @@ mod tests {
|
||||
type BlockNumber = u32;
|
||||
type Hash = H256;
|
||||
type Hasher = BlakeTwo256;
|
||||
type Header = sp_runtime::generic::Header<u32, BlakeTwo256>;
|
||||
type Header = pezsp_runtime::generic::Header<u32, BlakeTwo256>;
|
||||
type AccountId = u64;
|
||||
type Balance = u64;
|
||||
type Nonce = u64;
|
||||
|
||||
@@ -23,13 +23,13 @@ pub const BEST_FINALIZED_VALUE_NAME: &str = "BestFinalized";
|
||||
/// Name of the `CurrentAuthoritySet` storage value.
|
||||
pub const CURRENT_AUTHORITY_SET_VALUE_NAME: &str = "CurrentAuthoritySet";
|
||||
|
||||
use sp_core::storage::StorageKey;
|
||||
use pezsp_core::storage::StorageKey;
|
||||
|
||||
/// Storage key of the `PalletOperatingMode` variable in the runtime storage.
|
||||
pub fn pallet_operating_mode_key(pallet_prefix: &str) -> StorageKey {
|
||||
pub fn pezpallet_operating_mode_key(pezpallet_prefix: &str) -> StorageKey {
|
||||
StorageKey(
|
||||
bp_runtime::storage_value_final_key(
|
||||
pallet_prefix.as_bytes(),
|
||||
pezpallet_prefix.as_bytes(),
|
||||
PALLET_OPERATING_MODE_VALUE_NAME.as_bytes(),
|
||||
)
|
||||
.to_vec(),
|
||||
@@ -37,10 +37,10 @@ pub fn pallet_operating_mode_key(pallet_prefix: &str) -> StorageKey {
|
||||
}
|
||||
|
||||
/// Storage key of the `CurrentAuthoritySet` variable in the runtime storage.
|
||||
pub fn current_authority_set_key(pallet_prefix: &str) -> StorageKey {
|
||||
pub fn current_authority_set_key(pezpallet_prefix: &str) -> StorageKey {
|
||||
StorageKey(
|
||||
bp_runtime::storage_value_final_key(
|
||||
pallet_prefix.as_bytes(),
|
||||
pezpallet_prefix.as_bytes(),
|
||||
CURRENT_AUTHORITY_SET_VALUE_NAME.as_bytes(),
|
||||
)
|
||||
.to_vec(),
|
||||
@@ -48,10 +48,10 @@ pub fn current_authority_set_key(pallet_prefix: &str) -> StorageKey {
|
||||
}
|
||||
|
||||
/// Storage key of the best finalized header number and hash value in the runtime storage.
|
||||
pub fn best_finalized_key(pallet_prefix: &str) -> StorageKey {
|
||||
pub fn best_finalized_key(pezpallet_prefix: &str) -> StorageKey {
|
||||
StorageKey(
|
||||
bp_runtime::storage_value_final_key(
|
||||
pallet_prefix.as_bytes(),
|
||||
pezpallet_prefix.as_bytes(),
|
||||
BEST_FINALIZED_VALUE_NAME.as_bytes(),
|
||||
)
|
||||
.to_vec(),
|
||||
@@ -64,10 +64,10 @@ mod tests {
|
||||
use hex_literal::hex;
|
||||
|
||||
#[test]
|
||||
fn pallet_operating_mode_key_computed_properly() {
|
||||
fn pezpallet_operating_mode_key_computed_properly() {
|
||||
// If this test fails, then something has been changed in module storage that is breaking
|
||||
// compatibility with previous pallet.
|
||||
let storage_key = pallet_operating_mode_key("BridgeGrandpa").0;
|
||||
let storage_key = pezpallet_operating_mode_key("BridgeGrandpa").0;
|
||||
assert_eq!(
|
||||
storage_key,
|
||||
hex!("0b06f475eddb98cf933a12262e0388de0f4cf0917788d791142ff6c1f216e7b3").to_vec(),
|
||||
|
||||
@@ -30,10 +30,10 @@ use bp_test_utils::{
|
||||
JustificationGeneratorParams, ALICE, BOB, CHARLIE, DAVE, EVE, FERDIE, TEST_GRANDPA_SET_ID,
|
||||
};
|
||||
use finality_grandpa::voter_set::VoterSet;
|
||||
use sp_consensus_grandpa::{AuthorityId, AuthorityWeight, SetId};
|
||||
use sp_runtime::traits::Header as HeaderT;
|
||||
use pezsp_consensus_grandpa::{AuthorityId, AuthorityWeight, SetId};
|
||||
use pezsp_runtime::traits::Header as HeaderT;
|
||||
|
||||
type TestHeader = sp_runtime::testing::Header;
|
||||
type TestHeader = pezsp_runtime::testing::Header;
|
||||
type TestHash = <TestHeader as HeaderT>::Hash;
|
||||
type TestNumber = <TestHeader as HeaderT>::Number;
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
use bp_header_chain::justification::EquivocationsCollector;
|
||||
use bp_test_utils::*;
|
||||
use finality_grandpa::Precommit;
|
||||
use sp_consensus_grandpa::EquivocationProof;
|
||||
use pezsp_consensus_grandpa::EquivocationProof;
|
||||
|
||||
type TestHeader = sp_runtime::testing::Header;
|
||||
type TestHeader = pezsp_runtime::testing::Header;
|
||||
|
||||
#[test]
|
||||
fn duplicate_votes_are_not_considered_equivocations() {
|
||||
@@ -56,7 +56,7 @@ fn equivocations_are_detected_in_base_justification_redundant_votes() {
|
||||
collector.into_equivocation_proofs(),
|
||||
vec![EquivocationProof::new(
|
||||
1,
|
||||
sp_consensus_grandpa::Equivocation::Precommit(finality_grandpa::Equivocation {
|
||||
pezsp_consensus_grandpa::Equivocation::Precommit(finality_grandpa::Equivocation {
|
||||
round_number: 1,
|
||||
identity: ALICE.into(),
|
||||
first: (
|
||||
@@ -101,7 +101,7 @@ fn equivocations_are_detected_in_extra_justification_redundant_votes() {
|
||||
collector.into_equivocation_proofs(),
|
||||
vec![EquivocationProof::new(
|
||||
1,
|
||||
sp_consensus_grandpa::Equivocation::Precommit(finality_grandpa::Equivocation {
|
||||
pezsp_consensus_grandpa::Equivocation::Precommit(finality_grandpa::Equivocation {
|
||||
round_number: 1,
|
||||
identity: ALICE.into(),
|
||||
first: (
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
use bp_header_chain::justification::verify_and_optimize_justification;
|
||||
use bp_test_utils::*;
|
||||
use finality_grandpa::SignedPrecommit;
|
||||
use sp_consensus_grandpa::AuthoritySignature;
|
||||
use pezsp_consensus_grandpa::AuthoritySignature;
|
||||
|
||||
type TestHeader = sp_runtime::testing::Header;
|
||||
type TestHeader = pezsp_runtime::testing::Header;
|
||||
|
||||
#[test]
|
||||
fn optimizer_does_noting_with_minimal_justification() {
|
||||
|
||||
@@ -22,7 +22,7 @@ use bp_header_chain::justification::{
|
||||
};
|
||||
use bp_test_utils::*;
|
||||
|
||||
type TestHeader = sp_runtime::testing::Header;
|
||||
type TestHeader = pezsp_runtime::testing::Header;
|
||||
|
||||
#[test]
|
||||
fn valid_justification_accepted() {
|
||||
@@ -74,7 +74,7 @@ fn valid_justification_accepted_with_single_fork() {
|
||||
#[test]
|
||||
fn valid_justification_accepted_with_arbitrary_number_of_authorities() {
|
||||
use finality_grandpa::voter_set::VoterSet;
|
||||
use sp_consensus_grandpa::AuthorityId;
|
||||
use pezsp_consensus_grandpa::AuthorityId;
|
||||
|
||||
let n = 15;
|
||||
let required_signatures = required_justification_precommits(n as _);
|
||||
@@ -136,7 +136,7 @@ fn justification_with_invalid_commit_rejected() {
|
||||
fn justification_with_invalid_authority_signature_rejected() {
|
||||
let mut justification = make_default_justification::<TestHeader>(&test_header(1));
|
||||
justification.commit.precommits[0].signature =
|
||||
sp_core::crypto::UncheckedFrom::unchecked_from([1u8; 64]);
|
||||
pezsp_core::crypto::UncheckedFrom::unchecked_from([1u8; 64]);
|
||||
|
||||
assert_eq!(
|
||||
verify_justification::<TestHeader>(
|
||||
|
||||
@@ -19,11 +19,11 @@ serde = { features = ["alloc", "derive"], workspace = true }
|
||||
bp-header-chain = { workspace = true }
|
||||
bp-runtime = { workspace = true }
|
||||
|
||||
# Substrate Dependencies
|
||||
frame-support = { workspace = true }
|
||||
sp-core = { workspace = true }
|
||||
sp-io = { workspace = true }
|
||||
sp-std = { workspace = true }
|
||||
# Bizinikiwi Dependencies
|
||||
pezframe-support = { workspace = true }
|
||||
pezsp-core = { workspace = true }
|
||||
pezsp-io = { workspace = true }
|
||||
pezsp-std = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
hex = { workspace = true, default-features = true }
|
||||
@@ -35,16 +35,16 @@ std = [
|
||||
"bp-header-chain/std",
|
||||
"bp-runtime/std",
|
||||
"codec/std",
|
||||
"frame-support/std",
|
||||
"pezframe-support/std",
|
||||
"scale-info/std",
|
||||
"serde/std",
|
||||
"sp-core/std",
|
||||
"sp-io/std",
|
||||
"sp-std/std",
|
||||
"pezsp-core/std",
|
||||
"pezsp-io/std",
|
||||
"pezsp-std/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"bp-header-chain/runtime-benchmarks",
|
||||
"bp-runtime/runtime-benchmarks",
|
||||
"frame-support/runtime-benchmarks",
|
||||
"sp-io/runtime-benchmarks",
|
||||
"pezframe-support/runtime-benchmarks",
|
||||
"pezsp-io/runtime-benchmarks",
|
||||
]
|
||||
|
||||
@@ -14,21 +14,21 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Defines structures related to calls of the `pallet-bridge-messages` pallet.
|
||||
//! Defines structures related to calls of the `pezpallet-bridge-messages` pallet.
|
||||
|
||||
use crate::{MessageNonce, UnrewardedRelayersState};
|
||||
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::weights::Weight;
|
||||
use pezframe_support::weights::Weight;
|
||||
use scale_info::TypeInfo;
|
||||
use sp_core::RuntimeDebug;
|
||||
use sp_std::ops::RangeInclusive;
|
||||
use pezsp_core::RuntimeDebug;
|
||||
use pezsp_std::ops::RangeInclusive;
|
||||
|
||||
/// A minimized version of `pallet-bridge-messages::Call` that can be used without a runtime.
|
||||
/// A minimized version of `pezpallet-bridge-messages::Call` that can be used without a runtime.
|
||||
#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)]
|
||||
#[allow(non_camel_case_types)]
|
||||
pub enum BridgeMessagesCall<AccountId, MessagesProof, MessagesDeliveryProof> {
|
||||
/// `pallet-bridge-messages::Call::receive_messages_proof`
|
||||
/// `pezpallet-bridge-messages::Call::receive_messages_proof`
|
||||
#[codec(index = 2)]
|
||||
receive_messages_proof {
|
||||
/// Account id of relayer at the **bridged** chain.
|
||||
@@ -40,7 +40,7 @@ pub enum BridgeMessagesCall<AccountId, MessagesProof, MessagesDeliveryProof> {
|
||||
/// Total dispatch weight of messages in the proof.
|
||||
dispatch_weight: Weight,
|
||||
},
|
||||
/// `pallet-bridge-messages::Call::receive_messages_delivery_proof`
|
||||
/// `pezpallet-bridge-messages::Call::receive_messages_delivery_proof`
|
||||
#[codec(index = 3)]
|
||||
receive_messages_delivery_proof {
|
||||
/// Messages delivery proof.
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
use codec::{Codec, Decode, DecodeWithMemTracking, Encode, EncodeLike, MaxEncodedLen};
|
||||
use scale_info::TypeInfo;
|
||||
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||
use sp_core::{RuntimeDebug, TypeId, H256};
|
||||
use sp_io::hashing::blake2_256;
|
||||
use sp_std::fmt::Debug;
|
||||
use pezsp_core::{RuntimeDebug, TypeId, H256};
|
||||
use pezsp_io::hashing::blake2_256;
|
||||
use pezsp_std::fmt::Debug;
|
||||
|
||||
/// Trait representing a generic `LaneId` type.
|
||||
pub trait LaneIdType:
|
||||
|
||||
@@ -25,14 +25,14 @@ use bp_runtime::{
|
||||
StorageProofError, UnderlyingChainOf, UnderlyingChainProvider,
|
||||
};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode, MaxEncodedLen};
|
||||
use frame_support::PalletError;
|
||||
// Weight is reexported to avoid additional frame-support dependencies in related crates.
|
||||
pub use frame_support::weights::Weight;
|
||||
use pezframe_support::PalletError;
|
||||
// Weight is reexported to avoid additional pezframe-support dependencies in related crates.
|
||||
pub use pezframe_support::weights::Weight;
|
||||
use scale_info::TypeInfo;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use source_chain::RelayersRewards;
|
||||
use sp_core::RuntimeDebug;
|
||||
use sp_std::{collections::vec_deque::VecDeque, ops::RangeInclusive, prelude::*};
|
||||
use pezsp_core::RuntimeDebug;
|
||||
use pezsp_std::{collections::vec_deque::VecDeque, ops::RangeInclusive, prelude::*};
|
||||
|
||||
pub use call_info::{
|
||||
BaseMessagesProofInfo, BridgeMessagesCall, MessagesCallInfo, ReceiveMessagesDeliveryProofInfo,
|
||||
@@ -49,7 +49,7 @@ pub mod target_chain;
|
||||
/// Hard limit on message size that can be sent over the bridge.
|
||||
pub const HARD_MESSAGE_SIZE_LIMIT: u32 = 64 * 1024;
|
||||
|
||||
/// Substrate-based chain with messaging support.
|
||||
/// Bizinikiwi-based chain with messaging support.
|
||||
pub trait ChainWithMessages: Chain {
|
||||
/// Name of the bridge messages pallet (used in `construct_runtime` macro call) that is
|
||||
/// deployed at some other chain to bridge with this `ChainWithMessages`.
|
||||
@@ -98,9 +98,9 @@ pub trait ChainWithMessages: Chain {
|
||||
|
||||
/// Return maximal size of the message the chain with `max_extrinsic_size` is able to receive.
|
||||
pub fn maximal_incoming_message_size(max_extrinsic_size: u32) -> u32 {
|
||||
// The maximal size of extrinsic at Substrate-based chain depends on the
|
||||
// `frame_system::Config::MaximumBlockLength` and
|
||||
// `frame_system::Config::AvailableBlockRatio` constants. This check is here to be sure that
|
||||
// The maximal size of extrinsic at Bizinikiwi-based chain depends on the
|
||||
// `pezframe_system::Config::MaximumBlockLength` and
|
||||
// `pezframe_system::Config::AvailableBlockRatio` constants. This check is here to be sure that
|
||||
// the lane won't stuck because message is too large to fit into delivery transaction.
|
||||
//
|
||||
// **IMPORTANT NOTE**: the delivery transaction contains storage proof of the message, not
|
||||
@@ -115,7 +115,7 @@ pub fn maximal_incoming_message_size(max_extrinsic_size: u32) -> u32 {
|
||||
// limit the **weight** (not the size) of the message will be higher than the
|
||||
// `Self::maximal_incoming_message_dispatch_weight()`.
|
||||
|
||||
sp_std::cmp::min(max_extrinsic_size / 3 * 2, HARD_MESSAGE_SIZE_LIMIT)
|
||||
pezsp_std::cmp::min(max_extrinsic_size / 3 * 2, HARD_MESSAGE_SIZE_LIMIT)
|
||||
}
|
||||
|
||||
impl<T> ChainWithMessages for T
|
||||
@@ -510,14 +510,14 @@ pub fn calc_relayers_rewards<AccountId>(
|
||||
received_range: &RangeInclusive<MessageNonce>,
|
||||
) -> RelayersRewards<AccountId>
|
||||
where
|
||||
AccountId: sp_std::cmp::Ord,
|
||||
AccountId: pezsp_std::cmp::Ord,
|
||||
{
|
||||
// remember to reward relayers that have delivered messages
|
||||
// this loop is bounded by `T::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX` on the bridged chain
|
||||
let mut relayers_rewards = RelayersRewards::new();
|
||||
for entry in messages_relayers {
|
||||
let nonce_begin = sp_std::cmp::max(entry.messages.begin, *received_range.start());
|
||||
let nonce_end = sp_std::cmp::min(entry.messages.end, *received_range.end());
|
||||
let nonce_begin = pezsp_std::cmp::max(entry.messages.begin, *received_range.start());
|
||||
let nonce_end = pezsp_std::cmp::min(entry.messages.end, *received_range.end());
|
||||
if nonce_end >= nonce_begin {
|
||||
*relayers_rewards.entry(entry.relayer).or_default() += nonce_end - nonce_begin + 1;
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@ use crate::{MessageNonce, UnrewardedRelayer};
|
||||
use bp_runtime::{raw_storage_proof_size, RawStorageProof, Size};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_core::RuntimeDebug;
|
||||
use sp_std::{
|
||||
use pezsp_core::RuntimeDebug;
|
||||
use pezsp_std::{
|
||||
collections::{btree_map::BTreeMap, vec_deque::VecDeque},
|
||||
fmt::Debug,
|
||||
ops::RangeInclusive,
|
||||
@@ -52,7 +52,7 @@ impl<BridgedHeaderHash, LaneId> Size
|
||||
for FromBridgedChainMessagesDeliveryProof<BridgedHeaderHash, LaneId>
|
||||
{
|
||||
fn size(&self) -> u32 {
|
||||
use frame_support::sp_runtime::SaturatedConversion;
|
||||
use pezframe_support::pezsp_runtime::SaturatedConversion;
|
||||
raw_storage_proof_size(&self.storage_proof).saturated_into()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ pub const INBOUND_LANES_MAP_NAME: &str = "InboundLanes";
|
||||
use crate::{MessageKey, MessageNonce};
|
||||
|
||||
use codec::Encode;
|
||||
use frame_support::Blake2_128Concat;
|
||||
use sp_core::storage::StorageKey;
|
||||
use pezframe_support::Blake2_128Concat;
|
||||
use pezsp_core::storage::StorageKey;
|
||||
|
||||
/// Storage key of the `PalletOperatingMode` value in the runtime storage.
|
||||
pub fn operating_mode_key(pallet_prefix: &str) -> StorageKey {
|
||||
pub fn operating_mode_key(pezpallet_prefix: &str) -> StorageKey {
|
||||
StorageKey(
|
||||
bp_runtime::storage_value_final_key(
|
||||
pallet_prefix.as_bytes(),
|
||||
pezpallet_prefix.as_bytes(),
|
||||
OPERATING_MODE_VALUE_NAME.as_bytes(),
|
||||
)
|
||||
.to_vec(),
|
||||
@@ -44,30 +44,30 @@ pub fn operating_mode_key(pallet_prefix: &str) -> StorageKey {
|
||||
|
||||
/// Storage key of the outbound message in the runtime storage.
|
||||
pub fn message_key<LaneId: Encode>(
|
||||
pallet_prefix: &str,
|
||||
pezpallet_prefix: &str,
|
||||
lane: LaneId,
|
||||
nonce: MessageNonce,
|
||||
) -> StorageKey {
|
||||
bp_runtime::storage_map_final_key::<Blake2_128Concat>(
|
||||
pallet_prefix,
|
||||
pezpallet_prefix,
|
||||
OUTBOUND_MESSAGES_MAP_NAME,
|
||||
&MessageKey { lane_id: lane, nonce }.encode(),
|
||||
)
|
||||
}
|
||||
|
||||
/// Storage key of the outbound message lane state in the runtime storage.
|
||||
pub fn outbound_lane_data_key<LaneId: Encode>(pallet_prefix: &str, lane: &LaneId) -> StorageKey {
|
||||
pub fn outbound_lane_data_key<LaneId: Encode>(pezpallet_prefix: &str, lane: &LaneId) -> StorageKey {
|
||||
bp_runtime::storage_map_final_key::<Blake2_128Concat>(
|
||||
pallet_prefix,
|
||||
pezpallet_prefix,
|
||||
OUTBOUND_LANES_MAP_NAME,
|
||||
&lane.encode(),
|
||||
)
|
||||
}
|
||||
|
||||
/// Storage key of the inbound message lane state in the runtime storage.
|
||||
pub fn inbound_lane_data_key<LaneId: Encode>(pallet_prefix: &str, lane: &LaneId) -> StorageKey {
|
||||
pub fn inbound_lane_data_key<LaneId: Encode>(pezpallet_prefix: &str, lane: &LaneId) -> StorageKey {
|
||||
bp_runtime::storage_map_final_key::<Blake2_128Concat>(
|
||||
pallet_prefix,
|
||||
pezpallet_prefix,
|
||||
INBOUND_LANES_MAP_NAME,
|
||||
&lane.encode(),
|
||||
)
|
||||
|
||||
@@ -20,10 +20,10 @@ use crate::{Message, MessageKey, MessageNonce, MessagePayload, OutboundLaneData}
|
||||
|
||||
use bp_runtime::{messages::MessageDispatchResult, raw_storage_proof_size, RawStorageProof, Size};
|
||||
use codec::{Decode, DecodeWithMemTracking, Encode, Error as CodecError};
|
||||
use frame_support::weights::Weight;
|
||||
use pezframe_support::weights::Weight;
|
||||
use scale_info::TypeInfo;
|
||||
use sp_core::RuntimeDebug;
|
||||
use sp_std::{fmt::Debug, marker::PhantomData, prelude::*};
|
||||
use pezsp_core::RuntimeDebug;
|
||||
use pezsp_std::{fmt::Debug, marker::PhantomData, prelude::*};
|
||||
|
||||
/// Messages proof from bridged chain.
|
||||
///
|
||||
@@ -53,7 +53,7 @@ pub struct FromBridgedChainMessagesProof<BridgedHeaderHash, Lane> {
|
||||
|
||||
impl<BridgedHeaderHash, Lane> Size for FromBridgedChainMessagesProof<BridgedHeaderHash, Lane> {
|
||||
fn size(&self) -> u32 {
|
||||
use frame_support::sp_runtime::SaturatedConversion;
|
||||
use pezframe_support::pezsp_runtime::SaturatedConversion;
|
||||
raw_storage_proof_size(&self.storage_proof).saturated_into()
|
||||
}
|
||||
}
|
||||
@@ -94,7 +94,7 @@ pub trait MessageDispatch {
|
||||
type DispatchPayload: Decode;
|
||||
|
||||
/// Fine-grained result of single message dispatch (for better diagnostic purposes)
|
||||
type DispatchLevelResult: Clone + sp_std::fmt::Debug + Eq;
|
||||
type DispatchLevelResult: Clone + pezsp_std::fmt::Debug + Eq;
|
||||
|
||||
/// Lane identifier type.
|
||||
type LaneId: Encode;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user