mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-28 05:11:13 +00:00
b316301d61
* begin porting over traits; remove Config use of Hash * port over the Header bits that we need * sp_core_hashing where possible, move Verify to PairSigner, remove unused errors * tidy up Config things and move related bits into one place * fix codegen * copy Era over * move AccountId, Address, Signer to Signer trait and a pass over fixing examples * impl MultiAddress, MultiSignature, AccountId32 and add back to Config (for decoding later) * Copy over StorageKey, StorageData, StorageChangeSet * subxt core compiling with no sp_core or sp_runtime * Get examples compiling * pass over fixing tests * cargo fmt * clippy tweaks and update polkadot.rs * fix codegen docs * port over special DigestItem encoding/decoding * clippy and doc fixes * cargo fmt and example fix * more cargo fmt-ing... * substrate-extra to substrate-compat * cargo.toml comments * simplify PairSigner trait bounds * move RPC types to a separate file * fix docs * Add some tests for things and other PR feedback * bump to latest sp deps * avoid needing substrate-compat feature in a test
83 lines
2.2 KiB
Rust
83 lines
2.2 KiB
Rust
// Copyright 2019-2022 Parity Technologies (UK) Ltd.
|
|
// This file is dual-licensed as Apache-2.0 or GPL-3.0.
|
|
// see LICENSE for license details.
|
|
|
|
//! RPC types and client for interacting with a substrate node.
|
|
//!
|
|
//! These is used behind the scenes by various `subxt` APIs, but can
|
|
//! also be used directly.
|
|
//!
|
|
//! - [`Rpc`] is the highest level wrapper, and the one you will run into
|
|
//! first. It contains the higher level methods for interacting with a node.
|
|
//! - [`RpcClient`] is what [`Rpc`] uses to actually talk to a node, offering
|
|
//! a [`RpcClient::request`] and [`RpcClient::subscribe`] method to do so.
|
|
//! - [`RpcClientT`] is the underlying dynamic RPC implementation. This provides
|
|
//! the low level [`RpcClientT::request_raw`] and [`RpcClientT::subscribe_raw`]
|
|
//! methods. This can be swapped out for a custom implementation, but by default
|
|
//! we'll rely on `jsonrpsee` for this.
|
|
//!
|
|
//! # Example
|
|
//!
|
|
//! Fetching storage keys
|
|
//!
|
|
//! ```no_run
|
|
//! use subxt::{ PolkadotConfig, OnlineClient, storage::StorageKey };
|
|
//!
|
|
//! #[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata.scale")]
|
|
//! pub mod polkadot {}
|
|
//!
|
|
//! # #[tokio::main]
|
|
//! # async fn main() {
|
|
//! let api = OnlineClient::<PolkadotConfig>::new().await.unwrap();
|
|
//!
|
|
//! let key = polkadot::storage()
|
|
//! .xcm_pallet()
|
|
//! .version_notifiers_root()
|
|
//! .to_bytes();
|
|
//!
|
|
//! // Fetch up to 10 keys.
|
|
//! let keys = api
|
|
//! .rpc()
|
|
//! .storage_keys_paged(&key, 10, None, None)
|
|
//! .await
|
|
//! .unwrap();
|
|
//!
|
|
//! for key in keys.iter() {
|
|
//! println!("Key: 0x{}", hex::encode(&key));
|
|
//! }
|
|
//! # }
|
|
//! ```
|
|
|
|
// Allow an `rpc.rs` file in the `rpc` folder to align better
|
|
// with other file names for their types.
|
|
#![allow(clippy::module_inception)]
|
|
|
|
#[cfg(feature = "jsonrpsee")]
|
|
mod jsonrpsee_impl;
|
|
|
|
mod rpc;
|
|
mod rpc_client;
|
|
mod rpc_client_t;
|
|
|
|
// Expose our RPC types here.
|
|
pub mod types;
|
|
|
|
// Expose the `Rpc` struct.
|
|
pub use rpc::*;
|
|
|
|
pub use rpc_client_t::{
|
|
RawValue,
|
|
RpcClientT,
|
|
RpcFuture,
|
|
RpcSubscription,
|
|
RpcSubscriptionId,
|
|
RpcSubscriptionStream,
|
|
};
|
|
|
|
pub use rpc_client::{
|
|
rpc_params,
|
|
RpcClient,
|
|
RpcParams,
|
|
Subscription,
|
|
};
|