pub fn state_from_account<T: ReadableAccount + StateMut<Versions>>(
account: &T,
) -> Result<State, Error>
Expand description
Deserialize the state of a durable transaction nonce account.
§Errors
Returns an error if the account is not owned by the system program or contains no data.
§Examples
Determine if a nonce account is initialized:
use solana_rpc_client_nonce_utils::nonblocking;
use solana_rpc_client::nonblocking::rpc_client::RpcClient;
use solana_sdk::{
nonce::State,
pubkey::Pubkey,
};
use anyhow::Result;
futures::executor::block_on(async {
async fn is_nonce_initialized(
client: &RpcClient,
nonce_account_pubkey: &Pubkey,
) -> Result<bool> {
// Sign the tx with nonce_account's `blockhash` instead of the
// network's latest blockhash.
let nonce_account = client.get_account(nonce_account_pubkey).await?;
let nonce_state = nonblocking::state_from_account(&nonce_account)?;
Ok(!matches!(nonce_state, State::Uninitialized))
}