Obtención de Información de Tokens en una Wallet de Solana

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

  1. 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.
  2. Gestión de Errores: Asegúrate de manejar errores en caso de problemas de red o si el token no se encuentra.
  3. 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *