-
Bastian Köcher authored
This pull requests adds a new CLI flag to `polkadot-parachains` `--export-pov-to-path`. This CLI flag will instruct the node to export any `PoV` that it build locally to export to the given folder. Then these `PoV` files can be validated using the introduced `cumulus-pov-validator`. The combination of export and validation can be used for debugging parachain validation issues that may happen on the relay chain.
Unverifiedd649746e
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
mod.rs 2.40 KiB
// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Cumulus is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Cumulus. If not, see <http://www.gnu.org/licenses/>.
//! Cumulus parachain collator primitives.
#![warn(missing_docs)]
pub mod aura;
use cumulus_primitives_core::CollectCollationInfo;
use sp_api::{ApiExt, CallApiAt, ConstructRuntimeApi, Metadata};
use sp_block_builder::BlockBuilder;
use sp_runtime::traits::Block as BlockT;
use sp_session::SessionKeys;
use sp_transaction_pool::runtime_api::TaggedTransactionQueue;
use std::path::PathBuf;
/// Convenience trait that defines the basic bounds for the `RuntimeApi` of a parachain node.
pub trait NodeRuntimeApi<Block: BlockT>:
ApiExt<Block>
+ Metadata<Block>
+ SessionKeys<Block>
+ BlockBuilder<Block>
+ TaggedTransactionQueue<Block>
+ CollectCollationInfo<Block>
+ Sized
{
}
impl<T, Block: BlockT> NodeRuntimeApi<Block> for T where
T: ApiExt<Block>
+ Metadata<Block>
+ SessionKeys<Block>
+ BlockBuilder<Block>
+ TaggedTransactionQueue<Block>
+ CollectCollationInfo<Block>
{
}
/// Convenience trait that defines the basic bounds for the `ConstructRuntimeApi` of a parachain
/// node.
pub trait ConstructNodeRuntimeApi<Block: BlockT, C: CallApiAt<Block>>:
ConstructRuntimeApi<Block, C, RuntimeApi = Self::BoundedRuntimeApi> + Send + Sync + 'static
{
/// Basic bounds for the `RuntimeApi` of a parachain node.
type BoundedRuntimeApi: NodeRuntimeApi<Block>;
}
impl<T, Block: BlockT, C: CallApiAt<Block>> ConstructNodeRuntimeApi<Block, C> for T
where
T: ConstructRuntimeApi<Block, C> + Send + Sync + 'static,
T::RuntimeApi: NodeRuntimeApi<Block>,
{
type BoundedRuntimeApi = T::RuntimeApi;
}
/// Extra args that are passed when creating a new node spec.
pub struct NodeExtraArgs {
pub use_slot_based_consensus: bool,
/// If set, each `PoV` build by the node will be exported to this folder.
pub export_pov: Option<PathBuf>,
}