Para obtener información completa sobre los tokens en una wallet de Solana, necesitas acceder a varios detalles como la dirección del token, la cantidad de tokens, el precio del token, el nombre del token y el símbolo del token. A continuación, se presentan los pasos y un código de ejemplo para realizar esta tarea.
Problema
El código actual solo obtiene la dirección del mint del token y la cantidad. Para resolver el problema de obtener información adicional como el precio, el nombre y el símbolo, se requiere una modificación y la utilización de APIs externas.
Código Actual
A continuación se presenta el código actual que obtiene la dirección del mint y la cantidad:
const getTokenFromTokenAccount = async (tokenAccount) => {
const Ta = new PublicKey(tokenAccount);
const AccInfo = await connection.getParsedAccountInfo(Ta, {
commitment: "confirmed",
});
const splData = AccInfo.value?.data;
let splToken = "";
if (splData && "parsed" in splData) {
const parsed = splData.parsed;
splToken = parsed.info.mint;
amount = parsed.info.tokenAmount.uiAmount;
return { mint: splToken, amount: amount };
}
};
Código Para Obtener Información Completa de Tokens
Para obtener los detalles adicionales requeridos, puedes agregar funciones que consulten un servicio de precios para obtener el precio actual del token y una función que te ayude a convertir el mint en el nombre y símbolo del token.
Código Modificado
const getTokenInfo = async (mintAddress) => {
// Aquí puedes usar una API externa para obtener el nombre y símbolo del token.
const response = await fetch(`API_URL/${mintAddress}`);
const tokenDetails = await response.json();
return {
name: tokenDetails.name,
symbol: tokenDetails.symbol,
price: tokenDetails.price // Asumiendo que la API devuelve un campo de precio
};
};
const getAllTokenInfo = async () => {
const wallet = new PublicKey("pkrQznmnts6q3vDfbDwuaj5JPqGmjiC6gJfx4xcAv5n");
const tokenProgramId = new PublicKey(
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
);
const splTokenAccounts = await connection.getTokenAccountsByOwner(wallet, {
programId: tokenProgramId,
});
let tokenInfoArray = [];
for (let account of splTokenAccounts.value) {
const tokenAccountInfo = await getTokenFromTokenAccount(
account.pubkey.toBase58()
);
const tokenDetails = await getTokenInfo(tokenAccountInfo.mint);
tokenInfoArray.push({
address: tokenAccountInfo.mint,
amount: tokenAccountInfo.amount,
...tokenDetails // Agregar nombre, símbolo y precio
});
}
return tokenInfoArray;
};
Consideraciones Finales
- API Externa: Es imprescindible consultar una API externa para obtener los detalles del token (nombre, símbolo, precio). Puedes usar servicios como Coingecko o servicios especializados en datos de tokens de Solana.
- Gestión de Errores: Asegúrate de manejar errores en caso de problemas de red o si el token no se encuentra.
- Asincronía: Toma en cuenta que las llamadas a APIs son asincrónicas, por lo que es importante esperar las respuestas adecuadamente.
Este enfoque te permitirá obtener toda la información necesaria de los tokens en tu wallet de Solana.