Chain

Struct Chain 

Source
pub struct Chain { /* private fields */ }
Expand description

Low-level RPC surface with fine-grained retry controls.

Implementations§

Source§

impl Chain

Source

pub fn new(client: Client) -> Self

Creates a chain helper bound to the given client.

§Arguments
  • client - Client used for all subsequent RPC calls.
Source

pub fn retry_on(self, error: Option<bool>, none: Option<bool>) -> Self

Lets you decide if upcoming calls retry on errors or missing data.

§Arguments
  • error - Overrides whether transport errors are retried (defaults to the client’s global flag).
  • none - When Some(true), RPCs returning None (for example, missing storage) will also be retried.
§Returns

Returns the helper with updated retry configuration.

Source

pub async fn block_hash( &self, block_height: Option<u32>, ) -> Result<Option<H256>, RpcError>

Fetches a block hash for the given height when available.

§Arguments
  • block_height - Optional block number to resolve; None queries the best block.
§Returns
  • Ok(Some(H256)) when the chain knows about the requested height.
  • Ok(None) when the block does not exist
  • Err(RpcError) when the underlying RPC call fails.
Source

pub async fn block_header( &self, at: Option<impl Into<HashStringNumber>>, ) -> Result<Option<AvailHeader>, Error>

Grabs a block header by hash or height.

§Arguments
  • at - Optional hash or height identifying the target block; None queries the best block.
§Returns
  • Ok(Some(AvailHeader)) when the header exists.
  • Ok(None) when the header is missing
  • Err(Error) when conversions or RPC calls fail.
Source

pub async fn legacy_block( &self, at: Option<H256>, ) -> Result<Option<LegacyBlock>, RpcError>

Retrieves the full legacy block

§Arguments
  • at - Optional block hash; None queries the best block.
§Returns
  • Ok(Some(LegacyBlock)) when the block exists.
  • Ok(None) when the block is missing
  • Err(Error) when RPC calls fail.
Source

pub async fn block_nonce( &self, account_id: impl Into<AccountIdLike>, at: impl Into<HashStringNumber>, ) -> Result<u32, Error>

Looks up an account nonce at a particular block.

§Arguments
  • account_id - Account identifier convertible into AccountIdLike.
  • at - Block reference (hash, height, or string) describing where to query the nonce.
§Returns

Returns the account nonce observed at the specified block.

§Errors

Returns Err(Error) when the account id cannot be parsed or the RPC call fails.

Source

pub async fn account_nonce( &self, account_id: impl Into<AccountIdLike>, ) -> Result<u32, Error>

Returns the latest account nonce as seen by the node.

§Arguments
  • account_id - Account identifier convertible into AccountIdLike.
§Returns

Returns the latest account nonce reported by the node.

§Errors

Returns Err(Error) when the account id cannot be parsed or the RPC call fails.

Source

pub async fn account_balance( &self, account_id: impl Into<AccountIdLike>, at: impl Into<HashStringNumber>, ) -> Result<AccountData, Error>

Reports the free balance for an account at a specific block.

§Arguments
  • account_id - Account identifier convertible into AccountIdLike.
  • at - Block reference describing where to query balances.
§Returns

Returns AccountData for the requested account at the chosen block.

Errors mirror Chain::account_info.

Source

pub async fn account_info( &self, account_id: impl Into<AccountIdLike>, at: impl Into<HashStringNumber>, ) -> Result<AccountInfo, Error>

Fetches the full account record (nonce, balances, …) at a given block.

§Arguments
  • account_id - Account identifier convertible into AccountIdLike.
  • at - Block reference describing where to query the account.
§Returns

Returns AccountInfo containing balances, consumers, and nonce data.

§Errors

Returns Err(Error) when the account identifier or block id cannot be converted, the block is missing, or the RPC call fails.

Source

pub async fn block_state( &self, block_id: impl Into<HashStringNumber>, ) -> Result<BlockState, Error>

Tells you if a block is pending, finalized, or missing.

§Returns

Distinguishes between BlockState::Included, BlockState::Finalized, BlockState::Discarded, and BlockState::DoesNotExist, depending on chain state.

§Errors

Returns Err(Error) if the supplied identifier cannot be converted or RPC calls fail.

Source

pub async fn block_height( &self, at: impl Into<HashString>, ) -> Result<Option<u32>, Error>

Converts a block hash into its block height when possible.

§Returns
  • Ok(Some(u32)) when the block height exists.
  • Ok(None) when the block height is missing
  • Err(Error) when RPC calls fail.
Source

pub async fn block_info( &self, use_best_block: bool, ) -> Result<BlockInfo, RpcError>

Returns the latest block info, either best or finalized.

Source

pub async fn block_info_from( &self, block_id: impl Into<HashStringNumber>, ) -> Result<BlockInfo, Error>

Fetches block metadata for the provided block identifier.

§Arguments
  • block_id - Hash, height, or string representation of the target block.
§Returns

Returns BlockInfo describing the block, or an error if the lookup fails.

Source

pub async fn block_author( &self, block_id: impl Into<HashStringNumber>, ) -> Result<AccountId, Error>

Determines the author of the specified block.

§Arguments
  • block_id - Hash, height, or string representation of the target block.
§Returns

Returns the account id of the block author or an error if it cannot be determined.

Source

pub async fn block_event_count( &self, block_id: impl Into<HashStringNumber>, ) -> Result<usize, Error>

Counts the events emitted by the specified block.

§Arguments
  • block_id - Identifier describing which block to inspect.
§Returns

Returns the number of events as usize, or an error if the count cannot be fetched.

Source

pub async fn block_weight( &self, block_id: impl Into<HashStringNumber>, ) -> Result<PerDispatchClassWeight, Error>

Retrieves the dispatch-class weight totals for the specified block.

§Arguments
  • block_id - Identifier describing which block to inspect.
§Returns

Returns the per-dispatch-class weight totals or an error if unavailable.

Source

pub async fn chain_info(&self) -> Result<ChainInfo, RpcError>

Quick snapshot of both the best and finalized heads.

Source

pub async fn build_payload<'a>( &self, account_id: &AccountId, call: &'a ExtrinsicCall, options: Options, ) -> Result<ExtrinsicPayload<'a>, Error>

Builds an unsigned extrinsic payload for the provided account and call.

§Arguments
  • account_id - Account that will sign the payload.
  • call - Runtime call to encode inside the payload.
  • options - Transaction options used to refine mortality, nonce, and fees.
§Returns

Returns the constructed payload or an error if option refinement fails.

Source

pub async fn build_extrinsic_from_call<'a>( &self, signer: &Keypair, call: &'a ExtrinsicCall, options: Options, ) -> Result<GenericExtrinsic<'a>, Error>

Builds a payload from a call and signs it with sensible defaults.

§Errors

Returns Err(Error) when option refinement fails (e.g., fetching account info) or signing fails.

Source

pub async fn submit(&self, ext: &GenericExtrinsic<'_>) -> Result<H256, RpcError>

Submits a signed extrinsic and gives you the transaction hash.

§Errors

Returns Err(RpcError) when the node rejects the extrinsic or the RPC transport fails.

Source

pub async fn submit_raw(&self, ext: &[u8]) -> Result<H256, RpcError>

Submits a signed extrinsic and gives you the transaction hash.

§Errors

Returns Err(RpcError) when the node rejects the extrinsic or the RPC transport fails.

Source

pub async fn sign_and_submit_payload( &self, signer: &Keypair, tx_payload: ExtrinsicPayload<'_>, ) -> Result<H256, RpcError>

Signs the payload and submits it in one step.

Source

pub async fn sign_and_submit_call( &self, signer: &Keypair, tx_call: &ExtrinsicCall, options: Options, ) -> Result<SubmittedTransaction, Error>

Signs a call, submits it, and hands back a tracker you can poll.

§Returns
  • Ok(SubmittedTransaction) containing the transaction hash and refined options for later receipt queries.
  • Err(Error) when option refinement, signing, or submission fails.
Source

pub async fn state_call( &self, method: &str, data: &[u8], at: Option<H256>, ) -> Result<String, RpcError>

Runs a state_call and returns the raw response string.

Source

pub async fn state_get_metadata( &self, at: Option<H256>, ) -> Result<Vec<u8>, RpcError>

Downloads runtime metadata as bytes.

Source

pub async fn state_get_storage( &self, key: &str, at: Option<H256>, ) -> Result<Option<Vec<u8>>, RpcError>

Reads a storage entry, returning the raw bytes if present.

Source

pub async fn state_get_keys_paged( &self, prefix: Option<&str>, count: u32, start_key: Option<&str>, at: Option<H256>, ) -> Result<Vec<String>, RpcError>

Lists storage keys under a prefix, one page at a time.

Source

pub async fn rpc_raw_call<T: DeserializeOwned>( &self, method: &str, params: RpcParams, ) -> Result<T, RpcError>

Performs a raw RPC invocation against the connected node and deserializes the response.

Source

pub async fn runtime_api_raw_call<T: Decode>( &self, method: &str, data: &[u8], at: Option<H256>, ) -> Result<T, RpcError>

Calls into the runtime API and decodes the answer for you.

Source

pub async fn grandpa_block_justification( &self, at: u32, ) -> Result<Option<GrandpaJustification>, RpcError>

Fetches GRANDPA justification for the given block number.

§Returns
  • Ok(Some(GrandpaJustification)) when a justification is present.
  • Ok(None) when the runtime returns no justification.
  • Err(RpcError) if decoding the response or the RPC call fails.
Source

pub async fn transaction_payment_query_info( &self, extrinsic: Vec<u8>, at: Option<H256>, ) -> Result<RuntimeDispatchInfo, RpcError>

Queries the runtime for fee information about an encoded extrinsic.

§Arguments
  • extrinsic - SCALE-encoded extrinsic bytes.
  • at - Optional block hash to query against.
§Returns

Returns dispatch info describing the estimated fee and weight.

Source

pub async fn transaction_payment_query_fee_details( &self, extrinsic: Vec<u8>, at: Option<H256>, ) -> Result<FeeDetails, RpcError>

Retrieves detailed fee breakdown for an encoded extrinsic.

§Arguments
  • extrinsic - SCALE-encoded extrinsic bytes.
  • at - Optional block hash to query against.
§Returns

Returns fee components such as inclusion and tip fees.

Source

pub async fn transaction_payment_query_call_info( &self, call: Vec<u8>, at: Option<H256>, ) -> Result<RuntimeDispatchInfo, RpcError>

Queries the runtime for fee information about an encoded call.

§Arguments
  • call - SCALE-encoded call bytes.
  • at - Optional block hash to query against.
§Returns

Returns dispatch info describing the estimated fee and weight.

Source

pub async fn transaction_payment_query_call_fee_details( &self, call: Vec<u8>, at: Option<H256>, ) -> Result<FeeDetails, RpcError>

Retrieves detailed fee components for an encoded call.

§Arguments
  • call - SCALE-encoded call bytes.
  • at - Optional block hash to query against.
§Returns

Returns the fee breakdown for executing the call.

Source

pub async fn kate_block_length( &self, at: Option<H256>, ) -> Result<BlockLength, RpcError>

Retrieves the KATE block layout metadata (rows, cols, chunk size) for the block at at.

§Errors

Returns Err(RpcError) when the KATE RPC call fails; respects the helper’s retry policy.

Source

pub async fn kate_query_data_proof( &self, transaction_index: u32, at: Option<H256>, ) -> Result<ProofResponse, RpcError>

Produces the KATE data proof (and optional addressed message) for the given extrinsic index.

§Errors

Returns Err(RpcError) when the proof cannot be fetched or deserialised; obeys the retry setting.

Source

pub async fn kate_query_proof( &self, cells: Vec<Cell>, at: Option<H256>, ) -> Result<Vec<GDataProof>, RpcError>

Fetches individual KATE proofs for the provided list of cells.

§Errors

Bubbles Err(RpcError) if the RPC call fails; retries follow the configured policy.

Source

pub async fn kate_query_rows( &self, rows: Vec<u32>, at: Option<H256>, ) -> Result<Vec<GRow>, RpcError>

Returns KATE row data for the requested row indices (up to the chain-imposed limit).

§Errors

Propagates Err(RpcError) when the row query fails; adheres to the retry preference.

Source

pub async fn kate_query_multi_proof( &self, cells: Vec<Cell>, at: Option<H256>, ) -> Result<Vec<(GMultiProof, GCellBlock)>, RpcError>

Requests multi-proofs for the supplied KATE cells, paired with the corresponding cell block metadata.

§Errors

Returns Err(RpcError) when the RPC transport or decoding fails; follows the retry configuration.

Source

pub async fn system_fetch_extrinsics( &self, block_id: impl Into<HashStringNumber>, opts: ExtrinsicOpts, ) -> Result<Vec<ExtrinsicInfo>, Error>

Fetches extrinsics from a block using the provided filters.

§Errors

Returns Err(Error) when the block id cannot be decoded or the RPC request fails.

Source

pub async fn system_fetch_events( &self, at: impl Into<HashStringNumber>, opts: EventOpts, ) -> Result<Vec<BlockPhaseEvent>, Error>

Pulls events for a block with optional filtering.

§Errors

Returns Err(Error) when the block id cannot be resolved or the RPC call fails.

Source

pub fn should_retry_on_error(&self) -> bool

Reports whether RPC helpers should retry after encountering errors.

Auto Trait Implementations§

§

impl Freeze for Chain

§

impl !RefUnwindSafe for Chain

§

impl Send for Chain

§

impl Sync for Chain

§

impl Unpin for Chain

§

impl !UnwindSafe for Chain

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> JsonSchemaMaybe for T