2025-10-07 20:56:02 +08:00
|
|
|
use crate::common::SolanaRpcClient;
|
|
|
|
|
use anyhow::Result;
|
|
|
|
|
use solana_address_lookup_table_interface::state::AddressLookupTable;
|
2025-10-07 21:20:00 +08:00
|
|
|
use solana_sdk::{message::AddressLookupTableAccount, pubkey::Pubkey};
|
2025-10-07 20:56:02 +08:00
|
|
|
|
|
|
|
|
pub async fn fetch_address_lookup_table_account(
|
|
|
|
|
rpc: &SolanaRpcClient,
|
|
|
|
|
lookup_table_address: &Pubkey,
|
|
|
|
|
) -> Result<AddressLookupTableAccount, anyhow::Error> {
|
|
|
|
|
let account = rpc.get_account(lookup_table_address).await?;
|
|
|
|
|
let lookup_table = AddressLookupTable::deserialize(&account.data)?;
|
|
|
|
|
let address_lookup_table_account = AddressLookupTableAccount {
|
|
|
|
|
key: *lookup_table_address,
|
|
|
|
|
addresses: lookup_table.addresses.to_vec(),
|
|
|
|
|
};
|
|
|
|
|
Ok(address_lookup_table_account)
|
|
|
|
|
}
|