Solana RPC
Archive Method
Only on the full archive nodes. Complex queries might take longer and incur additional cost
How to use it
// yarn add @tatumio/tatum
import { TatumSDK, Solana, Network, Encoding } from '@tatumio/tatum'
const tatum = (await TatumSDK.init) < Solana > { network: Network.SOLANA }
const res = await tatum.rpc.getTokenAccountsByOwner(
'GgPpTKg78vmzgDtP1DNn72CHAYjRdKY7AV6zgszoHCSa',
{
mint: '1YDQ35V8g68FGvcT85haHwAXv1U7XMzuc4mZeEXfrjE',
},
{ encoding: Encoding.JsonParsed },
)
await tatum.destroy() // Destroy Tatum SDK - needed for stopping background jobs
Overview
The getTokenAccountsByOwner
method retrieves all SPL token accounts owned by a specified address on the Solana blockchain. It allows you to fetch a list of token accounts associated with a particular owner. This method is useful for querying the token holdings of a specific address and performing operations related to token management.
Parameters
ownerAddress
(string, required): The address of the owner for whom to retrieve token accounts.- Example:
'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn'
- Example:
config
(object, optional): An optional object containing either of the following:mint
(string): Pubkey of the specific token Mint to limit accounts to, as base-58 encoded string- Example:
{ mint: 'So11111111111111111111111111111111111111112' }
- Example:
programId
(string): Pubkey of the Token program that owns the accounts, as base-58 encoded string- Example:
{ programId: 'So11111111111111111111111111111111111111112' }
- Example:
options
(object, optional): Configuration object containing the following fields:commitment
(string, optional): Specifies the confirmation level of data to be fetched.- Values:
finalized
confirmed
processed
- Values:
minContextSlot
(number, optional): The minimum slot that the request can be evaluated at- Example:
1000
- Example:
dataSlice
(object, optional): limit the returned account data using the providedoffset
(number) andlength
(number) fields; only available forbase58
,base64
orbase64+zstd
encodings.- Example:
{ "offset": 0, "length": 100 }
- Example:
encoding
(string, optional): The encoding for the account data.- Values:
base58
base64
base64+zstd
jsonParsed
- Values:
Return object
The result will be an RpcResponse JSON object with value
equal to an array of JSON objects, which will contain:
pubkey
: Public key of the account.account
: A JSON object, with the following sub fields:executable
: Whether the account is executable.owner
: Base-58 encoded Pubkey of the program this account has been assigned tolamports
: Number of lamports in the account.data
: Token state data associated with the account, either as encoded binary data or in JSON format{program: state}
rentEpoch
: The epoch at which the account will next owe rent.size
: The data size of the account
JSON-RPC Request Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "getTokenAccountsByOwner",
"params": [
"GgPpTKg78vmzgDtP1DNn72CHAYjRdKY7AV6zgszoHCSa",
{
"mint": "1YDQ35V8g68FGvcT85haHwAXv1U7XMzuc4mZeEXfrjE"
},
{ "encoding": "jsonParsed" }
]
}
JSON-RPC Response Example
{
"jsonrpc": "2.0",
"result": {
"context": {
"slot": 1114
},
"value": [
{
"account": {
"data": {
"program": "spl-token",
"parsed": {
"accountType": "account",
"info": {
"tokenAmount": {
"amount": "1",
"decimals": 1,
"uiAmount": 0.1,
"uiAmountString": "0.1"
},
"delegate": "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T",
"delegatedAmount": {
"amount": "1",
"decimals": 1,
"uiAmount": 0.1,
"uiAmountString": "0.1"
},
"state": "initialized",
"isNative": false,
"mint": "3wyAj7Rt1TWVPZVteFJPLa26JmLvdb1CAKEFZm3NY75E",
"owner": "4Qkev8aNZcqFNSRhQzwyLMFSsi94jHqE8WNVTJzTP99F"
},
"type": "account"
},
"space": 165
},
"executable": false,
"lamports": 1726080,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 4,
"space": 165
},
"pubkey": "C2gJg6tKpQs41PRS1nC8aw3ZKNZK3HQQZGVrDFDup5nx"
}
]
},
"id": 1
}