Overview
Sava provides comprehensive support for SPL Token and Token-2022 programs, including account parsing, filters, and extension handling. This guide covers token account operations, mint management, and Token-2022 features.Working with Token Accounts
Token Account Structure
Token accounts store user token balances:TokenAccount.java:13-24
Reading Token Accounts
TokenAccount.java:57-61
Account State
Filtering Token Accounts
Filter by Owner
TokenAccount.java:27, TokenAccount.java:45-46
Filter by Mint
TokenAccount.java:41-43
Filter by Delegate
TokenAccount.java:49-51
RPC Methods for Token Accounts
Get Token Accounts by Owner
SolanaRpcClient.java:796-801
Get Token Accounts by Program
SolanaRpcClient.java:803-808
Get Token Balance
SolanaRpcClient.java:778-780
Token-2022 (Token Extensions)
Token-2022 is the new token program with extension support.Reading Token-2022 Accounts
Token2022.java:12-14, Token2022.java:18
Token-2022 Extensions
Token-2022 supports various extensions:Available Extensions
Token-2022 supports these extensions:TransferFeeConfig- Transfer feesTransferFeeAmount- Fee amountsMintCloseAuthority- Mint close authorityConfidentialTransferMint- Confidential transfersDefaultAccountState- Default account stateImmutableOwner- Immutable ownershipMemoTransfer- Required memo on transferNonTransferable- Non-transferable tokensInterestBearingConfig- Interest-bearing tokensPermanentDelegate- Permanent delegateTransferHook- Transfer hook programMetadataPointer- Token metadata pointerTokenMetadata- Embedded metadataGroupPointer- Token group pointerGroupMemberPointer- Group member pointer
Token2022.java:22-58
Mint Operations
Reading Mint Account
Get Token Supply
SolanaRpcClient.java:815-817
Get Largest Token Accounts
SolanaRpcClient.java:810-813
WebSocket Subscriptions
Subscribe to token account changes in real-time:SolanaRpcWebsocket.java:160-174
Best Practices
Token Account Queries
Token Account Queries
- Use filters to reduce RPC response size
- Cache token account addresses when possible
- Batch multiple account queries together
Token-2022
Token-2022
- Check for extensions before accessing them
- Use Token-2022 program ID for new tokens
- Handle extension data gracefully
Balance Monitoring
Balance Monitoring
- Use WebSocket subscriptions for real-time updates
- Implement reconnection logic for WebSockets
- Fall back to polling if WebSocket fails
Performance
Performance
- Use
getProgramAccountswith filters instead of fetching all accounts - Consider using commitment levels appropriate for your use case
- Cache mint metadata to reduce RPC calls
Related Resources
Using RPC Client
Learn more about RPC methods and WebSocket subscriptions
Working with Accounts
Understanding Solana accounts and PDAs