Here is a step-by-step guide on how to retrieve a list of tokens (not NFTs) created by a Solana user using the getParsedTokenAccountsByOwner
method:
Prerequisites
- You have a Solana account with the necessary permissions to access token metadata.
- You have installed the Solana CLI and verified your wallet address.
Method: getParsedTokenAccountsByOwner
The getParsedTokenAccountsByOwner
method allows you to retrieve a list of parsed token accounts for a specific owner. This method is specific to Solana’s transaction parsing API and is used to retrieve data that has not been previously indexed by the Solana blockchain.
Here are the steps to retrieve user-generated tokens:
- Install the required library: You will need to install the
solana-token-metadata
package using npm or yarn:
npm install solana-token-metadata
- Create a script that connects to your Solana cluster and initializes the token metadata index:
const {connect } = require('@solana/web3.js');
const TokenMetadata = require('solana-token-metadata');
// Connect to the Solana network (devnet or testnet)
connect();
// Initialize the token metadata index
const app = new TokenMetadata();
app.init().then(() => {
console.log('Token metadata index initialized!');
}).catch((error) => {
console.error(error);
});
- Get the owner ID: Get the Solana account ID of the user for whom you want to retrieve tokens. You can use the
getAccount
method to retrieve the account object:
const ownerAccount = await getAccount();
console.log('Owner account:', ownerAccount);
- Call
getParsedTokenAccountsByOwner
: Use the
getParsedTokenAccountsByOwner
function to retrieve a list of parsed token accounts for a specific owner:
const parsedTokens = await app.getParsedTokenAccountsByOwner(ownerAccount.publicKey.toString());
console.log('Parsed tokens:');
parsedTokens.forEach((token) => {
console.log(- ${token.tokenId}
);
});
Example code
Here is an example code snippet that shows how to retrieve user-created tokens using the getParsedTokenAccountsByOwner
method:
const {connect, getAccount } = require('@solana/web3.js');
const TokenMetadata = require('solana-token-metadata');
// Connect to the Solana network (devnet or testnet)
connect();
// Initialize token metadata index
app.init().then(() => {
console.log('Token metadata index initialized!');
}).catch((error) => {
console.error(error);
});
asynchronous function fetchTokens() {
const ownerAccount = await getAccount();
const parsedTokens = await app.getParsedTokenAccountsByOwner(ownerAccount.publicKey.toString());
console.log(Parsed tokens: ${parsedTokens.length}
);
// Processing parsed token data
parsedTokens.forEach((token) => {
console.log(- ${token.tokenId}
);
});
}
fetchtoken();
This code connects to the Solana network, initializes the token metadata index, and calls getParsedTokenAccountsByOwner
to retrieve the list of tokens created by the given owner. The retrieved tokens are then processed and logged to the console.
Note that this example uses the getAccount
method to retrieve the account object and the getParsedTokenAccountsByOwner
function to retrieve the parsed token accounts. You will need to modify these functions according to your specific use case.