mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-11-09 20:27:06 +00:00
* WIP backend trait * WIP converting higher level stuff to using Backend impl * more implementing new backend trait, mainly storage focused * Get core code compiling with new backend bits * subxt crate checks passing * fix tests * cargo fmt * clippy/fixes * merging and other fixes * fix test * fix lightclient code * Fix some broken doc links * another book link fix * fix broken test when moving default_rpc_client * fix dry_run test * fix more tests; lightclient and wasm * fix wasm tests * fix some doc examples * use next() instead of next_item() * missing next_item() -> next()s * move legacy RPc methods to LegacyRpcMethods type to host generic param instead of RpcClient * standardise on all RpcClient types prefixed with Rpc, and 'raw' trait types prefixed with RawRpc so it's less ocnfusing which is which * rename fixes * doc fixes * Add back system_dryRun RPC method and rename tx.dry_run() to tx.validate(), to signal that the calls are different * Add a test that we return the correct extrinsic hash from submit() * add TransactionValid details back, and protect against out of range bytes * add test for decoding transaction validation from empty bytes * fix clippy warning
53 lines
2.4 KiB
Rust
53 lines
2.4 KiB
Rust
// Copyright 2019-2023 Parity Technologies (UK) Ltd.
|
|
// This file is dual-licensed as Apache-2.0 or GPL-3.0.
|
|
// see LICENSE for license details.
|
|
|
|
//! # The Subxt client.
|
|
//!
|
|
//! The client forms the entry point to all of the Subxt APIs. Every client implements one or
|
|
//! both of [`crate::client::OfflineClientT`] and [`crate::client::OnlineClientT`].
|
|
//!
|
|
//! Subxt ships with three clients which implement one or both of traits:
|
|
//! - An [online client](crate::client::OnlineClient).
|
|
//! - An [offline client](crate::client::OfflineClient).
|
|
//! - A light client (which is currently still unstable).
|
|
//!
|
|
//! In theory it's possible for users to implement their own clients, although this isn't generally
|
|
//! expected.
|
|
//!
|
|
//! The provided clients are all generic over the [`crate::config::Config`] that they accept, which
|
|
//! determines how they will interact with the chain.
|
|
//!
|
|
//! In the case of the [`crate::OnlineClient`], we have various ways to instantiate it:
|
|
//!
|
|
//! - [`crate::OnlineClient::new()`] to connect to a node running locally. This uses the default Subxt
|
|
//! backend, and the default RPC client.
|
|
//! - [`crate::OnlineClient::from_url()`] to connect to a node at a specific URL. This uses the default Subxt
|
|
//! backend, and the default RPC client.
|
|
//! - [`crate::OnlineClient::from_rpc_client()`] to instantiate the client with a [`crate::backend::rpc::RpcClient`].
|
|
//! - [`crate::OnlineClient::from_backend()`] to instantiate Subxt using a custom backend. Currently there
|
|
//! is just one backend, [`crate::backend::legacy::LegacyBackend`]. This backend can be instantiated from
|
|
//! a [`crate::backend::rpc::RpcClient`].
|
|
//!
|
|
//! [`crate::backend::rpc::RpcClient`] can itself be instantiated from anything that implements the low level
|
|
//! [`crate::backend::rpc::RpcClientT`] trait; this allows you to decide how Subxt will attempt to talk to a node
|
|
//! if you'd prefer something other default client. We use this approach under the hood to implement the light client.
|
|
//!
|
|
//! ## Examples
|
|
//!
|
|
//! Most of the other examples will instantiate a client. Here are a couple of examples for less common
|
|
//! cases.
|
|
//!
|
|
//! ### Writing a custom [`crate::backend::rpc::RpcClientT`] implementation:
|
|
//!
|
|
//! ```rust,ignore
|
|
#![doc = include_str!("../../../examples/setup_client_custom_rpc.rs")]
|
|
//! ```
|
|
//!
|
|
//! ### Creating an [`crate::OfflineClient`]:
|
|
//!
|
|
//! ```rust,ignore
|
|
#![doc = include_str!("../../../examples/setup_client_offline.rs")]
|
|
//! ```
|
|
//!
|