referrerpolicy=no-referrer-when-downgrade
sc_service

Type Alias TFullClient

Source
pub type TFullClient<TBl, TRtApi, TExec> = Client<TFullBackend<TBl>, TFullCallExecutor<TBl, TExec>, TBl, TRtApi>;
Expand description

Full client type.

Aliased Type§

struct TFullClient<TBl, TRtApi, TExec> { /* private fields */ }

Implementations

Source§

impl<B, E, Block, RA> Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT, Block::Header: Clone,

Source

pub fn new<G>( backend: Arc<B>, executor: E, spawn_handle: Box<dyn SpawnNamed>, genesis_block_builder: G, fork_blocks: ForkBlocks<Block>, bad_blocks: BadBlocks<Block>, prometheus_registry: Option<Registry>, telemetry: Option<TelemetryHandle>, config: ClientConfig<Block>, ) -> Result<Self>
where G: BuildGenesisBlock<Block, BlockImportOperation = <B as Backend<Block>>::BlockImportOperation>, E: Clone, B: 'static,

Creates new Substrate Client with given blockchain and code executor.

Source

pub fn import_notification_sinks( &self, ) -> &Mutex<Vec<TracingUnboundedSender<BlockImportNotification<Block>>>>

returns a reference to the block import notification sinks useful for test environments.

Source

pub fn finality_notification_sinks( &self, ) -> &Mutex<Vec<TracingUnboundedSender<FinalityNotification<Block>>>>

returns a reference to the finality notification sinks useful for test environments.

Source

pub fn state_at(&self, hash: Block::Hash) -> Result<B::State>

Get a reference to the state at a given block.

Source

pub fn code_at(&self, hash: Block::Hash) -> Result<Vec<u8>>

Get the code at a given block.

This takes any potential substitutes into account, but ignores overrides.

Source

pub fn runtime_version_at(&self, hash: Block::Hash) -> Result<RuntimeVersion>

Get the RuntimeVersion at a given block.

Source

pub fn revert(&self, n: NumberFor<Block>) -> Result<NumberFor<Block>>

Attempts to revert the chain by n blocks guaranteeing that no block is reverted past the last finalized block. Returns the number of blocks that were successfully reverted.

Source

pub fn unsafe_revert( &mut self, n: NumberFor<Block>, blacklist: bool, ) -> Result<NumberFor<Block>>

Attempts to revert the chain by n blocks disregarding finality. This method will revert any finalized blocks as requested and can potentially leave the node in an inconsistent state. Other modules in the system that persist data and that rely on finality (e.g. consensus parts) will be unaffected by the revert. Use this method with caution and making sure that no other data needs to be reverted for consistency aside from the block data. If blacklist is set to true, will also blacklist reverted blocks from finalizing again. The blacklist is reset upon client restart.

Returns the number of blocks that were successfully reverted.

Source

pub fn chain_info(&self) -> BlockchainInfo<Block>

Get blockchain info.

Source

pub fn block_status(&self, hash: Block::Hash) -> Result<BlockStatus>

Get block status.

Source

pub fn header( &self, hash: Block::Hash, ) -> Result<Option<<Block as BlockT>::Header>>

Get block header by id.

Source

pub fn body( &self, hash: Block::Hash, ) -> Result<Option<Vec<<Block as BlockT>::Extrinsic>>>

Get block body by id.

Source

pub fn uncles( &self, target_hash: Block::Hash, max_generation: NumberFor<Block>, ) -> Result<Vec<Block::Hash>>

Gets the uncles of the block with target_hash going back max_generation ancestors.

Trait Implementations

Source§

impl<B, E, Block, RA> AuxStore for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT, Self: ProvideRuntimeApi<Block>, <Self as ProvideRuntimeApi<Block>>::Api: CoreApi<Block>,

Source§

fn insert_aux<'a, 'b: 'a, 'c: 'a, I: IntoIterator<Item = &'a (&'c [u8], &'c [u8])>, D: IntoIterator<Item = &'a &'b [u8]>>( &self, insert: I, delete: D, ) -> Result<()>

Insert auxiliary data into key-value store.

Source§

fn get_aux(&self, key: &[u8]) -> Result<Option<Vec<u8>>>

Query auxiliary data from key-value store.

Source§

impl<B, E, Block, RA> BlockBackend<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn block_body( &self, hash: Block::Hash, ) -> Result<Option<Vec<<Block as BlockT>::Extrinsic>>>

Get block body by ID. Returns None if the body is not stored.
Source§

fn block(&self, hash: Block::Hash) -> Result<Option<SignedBlock<Block>>>

Get full block by hash.
Source§

fn block_status(&self, hash: Block::Hash) -> Result<BlockStatus>

Get block status by block hash.
Source§

fn justifications(&self, hash: Block::Hash) -> Result<Option<Justifications>>

Get block justifications for the block with the given hash.
Source§

fn block_hash(&self, number: NumberFor<Block>) -> Result<Option<Block::Hash>>

Get block hash by number.
Source§

fn indexed_transaction(&self, hash: Block::Hash) -> Result<Option<Vec<u8>>>

Get single indexed transaction by content hash. Read more
Source§

fn has_indexed_transaction(&self, hash: Block::Hash) -> Result<bool>

Check if transaction index exists.
Source§

fn block_indexed_body(&self, hash: Block::Hash) -> Result<Option<Vec<Vec<u8>>>>

Get all indexed transactions for a block, including renewed transactions. Read more
Source§

fn requires_full_sync(&self) -> bool

Tells whether the current client configuration requires full-sync mode.
Source§

impl<B, E, Block, RA> BlockIdTo<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block> + Send + Sync, Block: BlockT, RA: Send + Sync,

Source§

type Error = Error

The error type that will be returned by the functions.
Source§

fn to_hash(&self, block_id: &BlockId<Block>) -> Result<Option<Block::Hash>>

Convert the given block_id to the corresponding block hash.
Source§

fn to_number( &self, block_id: &BlockId<Block>, ) -> Result<Option<NumberFor<Block>>>

Convert the given block_id to the corresponding block number.
Source§

impl<B, E, Block, RA> BlockImport<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block> + Send + Sync, Block: BlockT, Self: ProvideRuntimeApi<Block>, <Self as ProvideRuntimeApi<Block>>::Api: CoreApi<Block> + ApiExt<Block>, RA: Sync + Send,

Source§

type Error = Error

The error type.
Source§

fn check_block<'life0, 'async_trait>( &'life0 self, block: BlockCheckParams<Block>, ) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Check block preconditions.
Source§

fn import_block<'life0, 'async_trait>( &'life0 self, import_block: BlockImportParams<Block>, ) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Import a block.
Source§

impl<B, E, Block, RA> BlockOf for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

type Type = Block

The type of the block.
Source§

impl<B, E, Block, RA> BlockchainEvents<Block> for Client<B, E, Block, RA>
where E: CallExecutor<Block>, Block: BlockT,

Source§

fn import_notification_stream(&self) -> ImportNotifications<Block>

Get block import event stream.

Source§

fn storage_changes_notification_stream( &self, filter_keys: Option<&[StorageKey]>, child_filter_keys: Option<&[(StorageKey, Option<Vec<StorageKey>>)]>, ) -> Result<StorageEventStream<Block::Hash>>

Get storage changes event stream.

Source§

fn every_import_notification_stream(&self) -> ImportNotifications<Block>

Get a stream of every imported block.
Source§

fn finality_notification_stream(&self) -> FinalityNotifications<Block>

Get a stream of finality notifications. Not guaranteed to be fired for every finalized block.
Source§

impl<B, E, Block, RA> CallApiAt<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block, Backend = B> + Send + Sync, Block: BlockT, RA: Send + Sync,

Source§

type StateBackend = <B as Backend<Block>>::State

The state backend that is used to store the block states.
Source§

fn call_api_at( &self, params: CallApiAtParams<'_, Block>, ) -> Result<Vec<u8>, ApiError>

Calls the given api function with the given encoded arguments at the given block and returns the encoded result.
Source§

fn runtime_version_at( &self, hash: Block::Hash, ) -> Result<RuntimeVersion, ApiError>

Returns the runtime version at the given block.
Source§

fn state_at(&self, at: Block::Hash) -> Result<Self::StateBackend, ApiError>

Get the state at the given block.
Source§

fn initialize_extensions( &self, at: Block::Hash, extensions: &mut Extensions, ) -> Result<(), ApiError>

Initialize the extensions for the given block at by using the global extensions factory.
Source§

impl<BE, E, B, RA> Chain<B> for Client<BE, E, B, RA>
where BE: Backend<B>, E: CallExecutor<B>, B: BlockT,

Source§

fn block_status( &self, hash: B::Hash, ) -> Result<BlockStatus, Box<dyn Error + Send>>

Retrieve the status of the block denoted by the given Block::Hash.
Source§

impl<B, E, Block, RA> ExecutorProvider<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

type Executor = E

executor instance
Source§

fn executor(&self) -> &Self::Executor

Get call executor reference.
Source§

fn execution_extensions(&self) -> &ExecutionExtensions<Block>

Get a reference to the execution extensions.
Source§

impl<B, E, Block, RA> Finalizer<Block, B> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn apply_finality( &self, operation: &mut ClientImportOperation<Block, B>, hash: Block::Hash, justification: Option<Justification>, notify: bool, ) -> Result<()>

Mark all blocks up to given as finalized in operation. Read more
Source§

fn finalize_block( &self, hash: Block::Hash, justification: Option<Justification>, notify: bool, ) -> Result<()>

Finalize a block. Read more
Source§

impl<B, E, Block, RA> HeaderBackend<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block> + Send + Sync, Block: BlockT, RA: Send + Sync,

Source§

fn header(&self, hash: Block::Hash) -> Result<Option<Block::Header>>

Get block header. Returns None if block is not found.
Source§

fn info(&self) -> Info<Block>

Get blockchain info.
Source§

fn status(&self, hash: Block::Hash) -> Result<BlockStatus>

Get block status.
Source§

fn number( &self, hash: Block::Hash, ) -> Result<Option<<<Block as BlockT>::Header as HeaderT>::Number>>

Get block number by hash. Returns None if the header is not in the chain.
Source§

fn hash(&self, number: NumberFor<Block>) -> Result<Option<Block::Hash>>

Get block hash by number. Returns None if the header is not in the chain.
Source§

fn block_hash_from_id( &self, id: &BlockId<Block>, ) -> Result<Option<<Block as Block>::Hash>, Error>

Convert an arbitrary block ID into a block hash.
Source§

fn block_number_from_id( &self, id: &BlockId<Block>, ) -> Result<Option<<<Block as Block>::Header as Header>::Number>, Error>

Convert an arbitrary block ID into a block hash.
Source§

fn expect_header( &self, hash: <Block as Block>::Hash, ) -> Result<<Block as Block>::Header, Error>

Get block header. Returns UnknownBlock error if block is not found.
Source§

fn expect_block_number_from_id( &self, id: &BlockId<Block>, ) -> Result<<<Block as Block>::Header as Header>::Number, Error>

Convert an arbitrary block ID into a block number. Returns UnknownBlock error if block is not found.
Source§

fn expect_block_hash_from_id( &self, id: &BlockId<Block>, ) -> Result<<Block as Block>::Hash, Error>

Convert an arbitrary block ID into a block hash. Returns UnknownBlock error if block is not found.
Source§

impl<B, E, Block, RA> HeaderMetadata<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

type Error = Error

Error used in case the header metadata is not found.
Source§

fn header_metadata( &self, hash: Block::Hash, ) -> Result<CachedHeaderMetadata<Block>, Self::Error>

Source§

fn insert_header_metadata( &self, hash: Block::Hash, metadata: CachedHeaderMetadata<Block>, )

Source§

fn remove_header_metadata(&self, hash: Block::Hash)

Source§

impl<BE, E, B, RA> IndexedBody<B> for Client<BE, E, B, RA>
where BE: Backend<B>, E: CallExecutor<B>, B: BlockT,

Source§

fn block_indexed_body( &self, number: NumberFor<B>, ) -> Result<Option<Vec<Vec<u8>>>, Error>

Get all indexed transactions for a block, including renewed transactions. Read more
Source§

fn number(&self, hash: B::Hash) -> Result<Option<NumberFor<B>>, Error>

Get block number for a block hash.
Source§

impl<B, E, Block, RA> LockImportRun<Block, B> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn lock_import_and_run<R, Err, F>(&self, f: F) -> Result<R, Err>
where F: FnOnce(&mut ClientImportOperation<Block, B>) -> Result<R, Err>, Err: From<Error>,

Lock the import lock, and run operations inside.
Source§

impl<B, E, Block, RA> PreCommitActions<Block> for Client<B, E, Block, RA>
where Block: BlockT,

Source§

fn register_import_action(&self, action: OnImportAction<Block>)

Actions to be performed on block import.
Source§

fn register_finality_action(&self, action: OnFinalityAction<Block>)

Actions to be performed on block finalization.
Source§

impl<B, E, Block, RA> ProofProvider<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn read_proof( &self, hash: Block::Hash, keys: &mut dyn Iterator<Item = &[u8]>, ) -> Result<StorageProof>

Reads storage value at a given block + key, returning read proof.
Source§

fn read_child_proof( &self, hash: Block::Hash, child_info: &ChildInfo, keys: &mut dyn Iterator<Item = &[u8]>, ) -> Result<StorageProof>

Reads child storage value at a given block + storage_key + key, returning read proof.
Source§

fn execution_proof( &self, hash: Block::Hash, method: &str, call_data: &[u8], ) -> Result<(Vec<u8>, StorageProof)>

Execute a call to a contract on top of state in a block of given hash AND returning execution proof. Read more
Source§

fn read_proof_collection( &self, hash: Block::Hash, start_key: &[Vec<u8>], size_limit: usize, ) -> Result<(CompactProof, u32)>

Given a Hash iterate over all storage values starting at start_keys. Last start_keys element contains last accessed key value. With multiple start_keys, first start_keys element is the current storage key of of the last accessed child trie. at last level the value to start at exclusively. Proofs is build until size limit is reached and always include at least one key following start_keys. Returns combined proof and the numbers of collected keys.
Source§

fn storage_collection( &self, hash: Block::Hash, start_key: &[Vec<u8>], size_limit: usize, ) -> Result<Vec<(KeyValueStorageLevel, bool)>>

Given a Hash iterate over all storage values starting at start_key. Returns collected keys and values. Returns the collected keys values content of the top trie followed by the collected keys values of child tries. Only child tries with their root part of the collected content or related to start_key are attached. For each collected state a boolean indicates if state reach end.
Source§

fn verify_range_proof( &self, root: Block::Hash, proof: CompactProof, start_key: &[Vec<u8>], ) -> Result<(KeyValueStates, usize)>

Verify read storage proof for a set of keys. Returns collected key-value pairs and the nested state depth of current iteration or 0 if completed.
Source§

impl<B, E, Block, RA> ProvideRuntimeApi<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block, Backend = B> + Send + Sync, Block: BlockT, RA: ConstructRuntimeApi<Block, Self> + Send + Sync,

Source§

type Api = <RA as ConstructRuntimeApi<Block, Client<B, E, Block, RA>>>::RuntimeApi

The concrete type that provides the api.
Source§

fn runtime_api(&self) -> ApiRef<'_, Self::Api>

Returns the runtime api. The returned instance will keep track of modifications to the storage. Any successful call to an api function, will commit its changes to an internal buffer. Otherwise, the modifications will be discarded. The modifications will not be applied to the storage, even on a commit.
Source§

impl<B, E, Block, RA> ProvideUncles<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn uncles( &self, target_hash: Block::Hash, max_generation: NumberFor<Block>, ) -> Result<Vec<Block::Header>>

Gets the uncles of the block with target_hash going back max_generation ancestors.
Source§

impl<B, E, Block, RA> StorageProvider<Block, B> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn storage_keys( &self, hash: <Block as BlockT>::Hash, prefix: Option<&StorageKey>, start_key: Option<&StorageKey>, ) -> Result<KeysIter<B::State, Block>>

Given a block’s Hash and a key prefix, returns a KeysIter iterates matching storage keys in that block.
Source§

fn child_storage_keys( &self, hash: <Block as BlockT>::Hash, child_info: ChildInfo, prefix: Option<&StorageKey>, start_key: Option<&StorageKey>, ) -> Result<KeysIter<B::State, Block>>

Given a block’s Hash and a key prefix and a child storage key, returns a KeysIter that iterates matching storage keys in that block.
Source§

fn storage_pairs( &self, hash: <Block as BlockT>::Hash, prefix: Option<&StorageKey>, start_key: Option<&StorageKey>, ) -> Result<PairsIter<B::State, Block>>

Given a block’s Hash and a key prefix, returns an iterator over the storage keys and values in that block.
Source§

fn storage( &self, hash: Block::Hash, key: &StorageKey, ) -> Result<Option<StorageData>>

Given a block’s Hash and a key, return the value under the key in that block.
Source§

fn storage_hash( &self, hash: <Block as BlockT>::Hash, key: &StorageKey, ) -> Result<Option<Block::Hash>>

Given a block’s Hash and a key, return the value under the hash in that block.
Source§

fn child_storage( &self, hash: <Block as BlockT>::Hash, child_info: &ChildInfo, key: &StorageKey, ) -> Result<Option<StorageData>>

Given a block’s Hash, a key and a child storage key, return the value under the key in that block.
Source§

fn child_storage_hash( &self, hash: <Block as BlockT>::Hash, child_info: &ChildInfo, key: &StorageKey, ) -> Result<Option<Block::Hash>>

Given a block’s Hash, a key and a child storage key, return the hash under the key in that block.
Source§

fn closest_merkle_value( &self, hash: <Block as BlockT>::Hash, key: &StorageKey, ) -> Result<Option<MerkleValue<<Block as BlockT>::Hash>>>

Given a block’s Hash and a key, return the closest merkle value.
Source§

fn child_closest_merkle_value( &self, hash: <Block as BlockT>::Hash, child_info: &ChildInfo, key: &StorageKey, ) -> Result<Option<MerkleValue<<Block as BlockT>::Hash>>>

Given a block’s Hash, a key and a child storage key, return the closest merkle value.
Source§

impl<B, E, Block, RA> UsageProvider<Block> for Client<B, E, Block, RA>
where B: Backend<Block>, E: CallExecutor<Block>, Block: BlockT,

Source§

fn usage_info(&self) -> ClientInfo<Block>

Get usage info about current client.