mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-24 20:35:41 +00:00
3aabd6dc09
* WIP subxt-historic * WIP subxt-historic * WIP subxt-historic; flesh out basic foundations * WIP filling in extrinsic decoding functionality * iter and decode transaction extensions * Fill in the Online/OfflineClient APIs and move more things to be part of the chain Config * WIP storage * clippy, fmt, finish extrinsics example * prep for 0.0.1 release to claim crate name * fix README link * fmt * WIP thinking about storage APIs * WIP working out storage APIs * Storage plain value fetching first pass * WIP storage: first pass iterating over values done * First apss finishing storage APIs * fmt and clippy * Create a storage example showing fetch and iteration * Bump to frame-decode 0.9.0 * Bump subxt-historic to 0.0.3 for preview release * Remove unused deps * fix import * clippy * doc fixes * tweak CI and fix some cargo hack findings * Update README: subxt-historic is prerelease
57 lines
2.3 KiB
Rust
57 lines
2.3 KiB
Rust
pub mod polkadot;
|
|
pub mod substrate;
|
|
|
|
use scale_info_legacy::TypeRegistrySet;
|
|
use std::fmt::Display;
|
|
use std::sync::Arc;
|
|
use subxt_rpcs::RpcConfig;
|
|
|
|
pub use polkadot::PolkadotConfig;
|
|
pub use substrate::SubstrateConfig;
|
|
|
|
/// This represents the configuration needed for a specific chain. This includes
|
|
/// any hardcoded types we need to know about for that chain, as well as a means to
|
|
/// obtain historic types for that chain.
|
|
pub trait Config: RpcConfig {
|
|
/// The type of hashing used by the runtime.
|
|
type Hash: Clone
|
|
+ Copy
|
|
+ Display
|
|
+ Into<<Self as RpcConfig>::Hash>
|
|
+ From<<Self as RpcConfig>::Hash>;
|
|
|
|
/// Return the spec version for a given block number, if available.
|
|
///
|
|
/// The [`crate::client::OnlineClient`] will look this up on chain if it's not available here,
|
|
/// but the [`crate::client::OfflineClient`] will error if this is not available for the required block number.
|
|
fn spec_version_for_block_number(&self, block_number: u64) -> Option<u32>;
|
|
|
|
/// Return the metadata for a given spec version, if available.
|
|
///
|
|
/// The [`crate::client::OnlineClient`] will look this up on chain if it's not available here, and then
|
|
/// call [`Config::set_metadata_for_spec_version`] to give the configuration the opportunity to cache it.
|
|
/// The [`crate::client::OfflineClient`] will error if this is not available for the required spec version.
|
|
fn metadata_for_spec_version(
|
|
&self,
|
|
spec_version: u32,
|
|
) -> Option<Arc<frame_metadata::RuntimeMetadata>>;
|
|
|
|
/// Set some metadata for a given spec version. the [`crate::client::OnlineClient`] will call this if it has
|
|
/// to retrieve metadata from the chain, to give this the opportunity to cache it. The configuration can
|
|
/// do nothing if it prefers.
|
|
fn set_metadata_for_spec_version(
|
|
&self,
|
|
spec_version: u32,
|
|
metadata: Arc<frame_metadata::RuntimeMetadata>,
|
|
);
|
|
|
|
/// Return legacy types (ie types to use with Runtimes that return pre-V14 metadata) for a given spec version.
|
|
fn legacy_types_for_spec_version<'this>(
|
|
&'this self,
|
|
spec_version: u32,
|
|
) -> TypeRegistrySet<'this>;
|
|
|
|
/// Hash some bytes, for instance a block header or extrinsic, for this chain.
|
|
fn hash(s: &[u8]) -> <Self as Config>::Hash;
|
|
}
|