pub struct ChainApi { /* private fields */ }
Expand description
Low-level RPC surface with fine-grained retry controls.
Implementations§
Source§impl ChainApi
impl ChainApi
Sourcepub fn retry_on(self, error: Option<bool>, none: Option<bool>) -> Self
pub fn retry_on(self, error: Option<bool>, none: Option<bool>) -> Self
Lets you decide if upcoming calls retry on errors or missing data.
error
: overrides whether transport errors are retried (defaults to the client’s global flag).none
: whenSome(true)
, RPCs returningNone
(e.g., missing storage) will also be retried.
Sourcepub async fn block_hash(
&self,
block_height: Option<u32>,
) -> Result<Option<H256>, RpcError>
pub async fn block_hash( &self, block_height: Option<u32>, ) -> Result<Option<H256>, RpcError>
Fetches a block hash for the given height when available.
§Returns
Ok(Some(H256))
when the chain knows about the requested height.Ok(None)
when the block does not exist (andretry_on_none
isfalse
).Err(RpcError)
when the underlying RPC call fails.
Sourcepub async fn block_header(
&self,
at: Option<impl Into<HashStringNumber>>,
) -> Result<Option<AvailHeader>, Error>
pub async fn block_header( &self, at: Option<impl Into<HashStringNumber>>, ) -> Result<Option<AvailHeader>, Error>
Grabs a block header by hash or height.
§Returns
Ok(Some(AvailHeader))
when the header exists.Ok(None)
when the header is missing (andretry_on_none
isfalse
).Err(Error)
when conversions or RPC calls fail.
Sourcepub async fn legacy_block(
&self,
at: Option<H256>,
) -> Result<Option<LegacyBlock>, RpcError>
pub async fn legacy_block( &self, at: Option<H256>, ) -> Result<Option<LegacyBlock>, RpcError>
Retrieves the full legacy block when you need the old format.
Return semantics match ChainApi::block_hash
regarding retries and None
handling.
Sourcepub async fn block_nonce(
&self,
account_id: impl Into<AccountIdLike>,
at: impl Into<HashStringNumber>,
) -> Result<u32, Error>
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.
§Errors
Returns Err(Error)
when the account id cannot be parsed or the RPC call fails.
Sourcepub async fn account_nonce(
&self,
account_id: impl Into<AccountIdLike>,
) -> Result<u32, Error>
pub async fn account_nonce( &self, account_id: impl Into<AccountIdLike>, ) -> Result<u32, Error>
Returns the latest account nonce as seen by the node.
§Errors
Returns Err(Error)
when the account identifier is invalid or the RPC call fails.
Sourcepub async fn account_balance(
&self,
account_id: impl Into<AccountIdLike>,
at: impl Into<HashStringNumber>,
) -> Result<AccountData, Error>
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.
Errors mirror ChainApi::account_info
.
Sourcepub async fn account_info(
&self,
account_id: impl Into<AccountIdLike>,
at: impl Into<HashStringNumber>,
) -> Result<AccountInfo, Error>
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.
§Errors
Returns Err(Error)
when the account identifier or block id cannot be converted, the block is
missing, or the RPC call fails.
Sourcepub async fn block_state(
&self,
block_id: impl Into<HashStringNumber>,
) -> Result<BlockState, Error>
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.
Sourcepub async fn block_height(
&self,
at: impl Into<HashString>,
) -> Result<Option<u32>, Error>
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(None)
when the node does not recognise the hash and retry_on_none
is false
.
Sourcepub async fn block_info(
&self,
use_best_block: bool,
) -> Result<BlockInfo, RpcError>
pub async fn block_info( &self, use_best_block: bool, ) -> Result<BlockInfo, RpcError>
Returns the latest block info, either best or finalized.
This is a thin wrapper over system_latest_block_info
with retry support.
Sourcepub async fn chain_info(&self) -> Result<ChainInfo, RpcError>
pub async fn chain_info(&self) -> Result<ChainInfo, RpcError>
Quick snapshot of both the best and finalized heads.
Mirrors system_latest_chain_info
, exposing height/hash pairs for head and finalized.
Sourcepub async fn submit(&self, tx: &GenericExtrinsic<'_>) -> Result<H256, RpcError>
pub async fn submit(&self, tx: &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.
Sourcepub async fn sign_payload<'a>(
&self,
signer: &Keypair,
tx_payload: ExtrinsicPayload<'a>,
) -> GenericExtrinsic<'a>
pub async fn sign_payload<'a>( &self, signer: &Keypair, tx_payload: ExtrinsicPayload<'a>, ) -> GenericExtrinsic<'a>
Signs an already prepared payload with the provided keypair.
Sourcepub async fn sign_call<'a>(
&self,
signer: &Keypair,
tx_call: &'a ExtrinsicCall,
options: Options,
) -> Result<GenericExtrinsic<'a>, Error>
pub async fn sign_call<'a>( &self, signer: &Keypair, tx_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.
Sourcepub async fn sign_and_submit_payload(
&self,
signer: &Keypair,
tx_payload: ExtrinsicPayload<'_>,
) -> Result<H256, RpcError>
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.
Sourcepub async fn sign_and_submit_call(
&self,
signer: &Keypair,
tx_call: &ExtrinsicCall,
options: Options,
) -> Result<SubmittedTransaction, Error>
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.
Sourcepub async fn state_call(
&self,
method: &str,
data: &[u8],
at: Option<H256>,
) -> Result<String, RpcError>
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.
Retries according to the helper’s configuration before surfacing Err(RpcError)
.
Sourcepub async fn state_get_metadata(
&self,
at: Option<H256>,
) -> Result<Vec<u8>, RpcError>
pub async fn state_get_metadata( &self, at: Option<H256>, ) -> Result<Vec<u8>, RpcError>
Downloads runtime metadata as bytes.
Sourcepub async fn state_get_storage(
&self,
key: &str,
at: Option<H256>,
) -> Result<Option<Vec<u8>>, RpcError>
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.
Sourcepub async fn state_get_keys_paged(
&self,
prefix: Option<&str>,
count: u32,
start_key: Option<&str>,
at: Option<H256>,
) -> Result<Vec<String>, RpcError>
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.
Sourcepub async fn system_fetch_extrinsics(
&self,
block_id: impl Into<HashStringNumber>,
opts: ExtrinsicOpts,
) -> Result<Vec<ExtrinsicInfo>, Error>
pub async fn system_fetch_extrinsics( &self, block_id: impl Into<HashStringNumber>, opts: ExtrinsicOpts, ) -> Result<Vec<ExtrinsicInfo>, Error>
Collects extrinsics from a block using the provided filters.
§Errors
Returns Err(Error)
when the block id cannot be decoded or the RPC request fails.
Sourcepub async fn system_fetch_events(
&self,
at: impl Into<HashStringNumber>,
opts: EventOpts,
) -> Result<Vec<BlockPhaseEvent>, Error>
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.
Sourcepub async fn grandpa_block_justification(
&self,
at: u32,
) -> Result<Option<GrandpaJustification>, RpcError>
pub async fn grandpa_block_justification( &self, at: u32, ) -> Result<Option<GrandpaJustification>, RpcError>
Fetches a binary 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.
Sourcepub async fn grandpa_block_justification_json(
&self,
at: u32,
) -> Result<Option<GrandpaJustification>, RpcError>
pub async fn grandpa_block_justification_json( &self, at: u32, ) -> Result<Option<GrandpaJustification>, RpcError>
Fetches a JSON GRANDPA justification for the given block number.
Return semantics mirror ChainApi::grandpa_block_justification
, but the payload is parsed
from JSON.
Sourcepub async fn runtime_api_call<T: Decode>(
&self,
method: &str,
data: &[u8],
at: Option<H256>,
) -> Result<T, RpcError>
pub async fn runtime_api_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.
Sourcepub async fn transaction_payment_query_info(
&self,
extrinsic: Vec<u8>,
at: Option<H256>,
) -> Result<RuntimeDispatchInfo, RpcError>
pub async fn transaction_payment_query_info( &self, extrinsic: Vec<u8>, at: Option<H256>, ) -> Result<RuntimeDispatchInfo, RpcError>
Estimates fees for a signed extrinsic.
Sourcepub async fn transaction_payment_query_fee_details(
&self,
extrinsic: Vec<u8>,
at: Option<H256>,
) -> Result<FeeDetails, RpcError>
pub async fn transaction_payment_query_fee_details( &self, extrinsic: Vec<u8>, at: Option<H256>, ) -> Result<FeeDetails, RpcError>
Breaks down the fee details for a signed extrinsic.
Sourcepub async fn transaction_payment_query_call_info(
&self,
call: Vec<u8>,
at: Option<H256>,
) -> Result<RuntimeDispatchInfo, RpcError>
pub async fn transaction_payment_query_call_info( &self, call: Vec<u8>, at: Option<H256>, ) -> Result<RuntimeDispatchInfo, RpcError>
Estimates fees for an unsigned call payload.
Sourcepub async fn transaction_payment_query_call_fee_details(
&self,
call: Vec<u8>,
at: Option<H256>,
) -> Result<FeeDetails, RpcError>
pub async fn transaction_payment_query_call_fee_details( &self, call: Vec<u8>, at: Option<H256>, ) -> Result<FeeDetails, RpcError>
Breaks down the fee details for an unsigned call payload.
Sourcepub async fn kate_block_length(
&self,
at: Option<H256>,
) -> Result<BlockLength, RpcError>
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.
Sourcepub async fn kate_query_data_proof(
&self,
transaction_index: u32,
at: Option<H256>,
) -> Result<ProofResponse, RpcError>
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.
Sourcepub async fn kate_query_proof(
&self,
cells: Vec<Cell>,
at: Option<H256>,
) -> Result<Vec<GDataProof>, RpcError>
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.
Sourcepub async fn kate_query_rows(
&self,
rows: Vec<u32>,
at: Option<H256>,
) -> Result<Vec<GRow>, RpcError>
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.
Sourcepub async fn kate_query_multi_proof(
&self,
cells: Vec<Cell>,
at: Option<H256>,
) -> Result<Vec<(GMultiProof, GCellBlock)>, RpcError>
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.
Auto Trait Implementations§
impl Freeze for ChainApi
impl !RefUnwindSafe for ChainApi
impl Send for ChainApi
impl Sync for ChainApi
impl Unpin for ChainApi
impl !UnwindSafe for ChainApi
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.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
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.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
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.