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 safecoin_client::nonblocking::{
    rpc_client::RpcClient,
    nonce_utils,
};
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 = nonce_utils::state_from_account(&nonce_account)?;

    Ok(!matches!(nonce_state, State::Uninitialized))
}