mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-14 07:25:41 +00:00
167eb516d8
* add trie migration rpc to polkadot-parachain * pass backend * fix
109 lines
3.8 KiB
Rust
109 lines
3.8 KiB
Rust
// Copyright 2021 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/>.
|
|
|
|
//! Parachain-specific RPCs implementation.
|
|
|
|
#![warn(missing_docs)]
|
|
|
|
use std::sync::Arc;
|
|
|
|
use parachains_common::{AccountId, Balance, Block, Index as Nonce};
|
|
use sc_client_api::AuxStore;
|
|
pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor};
|
|
use sc_transaction_pool_api::TransactionPool;
|
|
use sp_api::ProvideRuntimeApi;
|
|
use sp_block_builder::BlockBuilder;
|
|
use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata};
|
|
|
|
/// A type representing all RPC extensions.
|
|
pub type RpcExtension = jsonrpsee::RpcModule<()>;
|
|
|
|
/// Full client dependencies
|
|
pub struct FullDeps<C, P> {
|
|
/// The client instance to use.
|
|
pub client: Arc<C>,
|
|
/// Transaction pool instance.
|
|
pub pool: Arc<P>,
|
|
/// Whether to deny unsafe calls
|
|
pub deny_unsafe: DenyUnsafe,
|
|
}
|
|
|
|
/// Instantiate all RPC extensions.
|
|
pub fn create_full<C, P, B>(
|
|
deps: FullDeps<C, P>,
|
|
backend: Arc<B>,
|
|
) -> Result<RpcExtension, Box<dyn std::error::Error + Send + Sync>>
|
|
where
|
|
C: ProvideRuntimeApi<Block>
|
|
+ HeaderBackend<Block>
|
|
+ AuxStore
|
|
+ HeaderMetadata<Block, Error = BlockChainError>
|
|
+ Send
|
|
+ Sync
|
|
+ 'static,
|
|
C::Api: frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>,
|
|
C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
|
|
C::Api: BlockBuilder<Block>,
|
|
P: TransactionPool + Sync + Send + 'static,
|
|
B: sc_client_api::Backend<Block> + Send + Sync + 'static,
|
|
B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,
|
|
{
|
|
use frame_rpc_system::{System, SystemApiServer};
|
|
use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};
|
|
use substrate_state_trie_migration_rpc::{StateMigration, StateMigrationApiServer};
|
|
|
|
let mut module = RpcExtension::new(());
|
|
let FullDeps { client, pool, deny_unsafe } = deps;
|
|
|
|
module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?;
|
|
module.merge(TransactionPayment::new(client.clone()).into_rpc())?;
|
|
module.merge(StateMigration::new(client.clone(), backend, deny_unsafe).into_rpc())?;
|
|
|
|
Ok(module)
|
|
}
|
|
|
|
/// Instantiate all RPCs we want at the contracts-rococo chain.
|
|
pub fn create_contracts_rococo<C, P>(
|
|
deps: FullDeps<C, P>,
|
|
) -> Result<RpcExtension, Box<dyn std::error::Error + Send + Sync>>
|
|
where
|
|
C: ProvideRuntimeApi<Block>
|
|
+ sc_client_api::BlockBackend<Block>
|
|
+ HeaderBackend<Block>
|
|
+ AuxStore
|
|
+ HeaderMetadata<Block, Error = BlockChainError>
|
|
+ Send
|
|
+ Sync
|
|
+ 'static,
|
|
C::Api: frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>,
|
|
C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
|
|
C::Api: BlockBuilder<Block>,
|
|
P: TransactionPool + Sync + Send + 'static,
|
|
{
|
|
use frame_rpc_system::{System, SystemApiServer};
|
|
use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};
|
|
use sc_rpc::dev::{Dev, DevApiServer};
|
|
|
|
let mut module = RpcExtension::new(());
|
|
let FullDeps { client, pool, deny_unsafe } = deps;
|
|
|
|
module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?;
|
|
module.merge(TransactionPayment::new(client.clone()).into_rpc())?;
|
|
module.merge(Dev::new(client, deny_unsafe).into_rpc())?;
|
|
|
|
Ok(module)
|
|
}
|