> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Cómo usar getTokenLargestAccounts

> Conoce los casos de uso de getTokenLargestAccounts, ejemplos de código, parámetros de solicitud, estructura de respuesta y consejos.

El método RPC [`getTokenLargestAccounts`](https://www.helius.dev/docs/api-reference/rpc/http/gettokenlargestaccounts) devuelve una lista de las 20 cuentas de tokens más grandes para una acuñación de tokens SPL determinada. Esto resulta útil para analizar la distribución de tokens e identificar a los principales titulares de un token específico.

## Casos de uso comunes

* **Análisis de la distribución de tokens:** Comprender cómo se distribuye el suministro de un token entre sus titulares.
* **Identificación de ballenas:** Encontrar cuentas que poseen cantidades significativas de un token específico.
* **Investigación de mercado:** Evaluar la concentración de la propiedad de un token.
* **Visualización de los principales titulares:** Mostrar una lista de las cuentas más grandes en un explorador de tokens o panel.

## Parámetros de la solicitud

1. **`mintAddress`** (string, obligatorio): La clave pública codificada en base 58 de la acuñación del token cuyas cuentas más grandes quieres encontrar.

2. **`options`** (object, opcional): Un objeto de configuración opcional que puede incluir:
   * **`commitment`** (string, opcional): Especifica el [nivel de compromiso](https://www.helius.dev/blog/solana-commitment-levels) de la consulta (p. ej., `"finalized"`, `"confirmed"`, `"processed"`).

## Estructura de la respuesta

El campo `result.value` de la respuesta JSON-RPC es un arreglo de hasta 20 objetos. Cada objeto representa una de las cuentas de tokens más grandes y contiene los siguientes campos:

* **`address`** (string): La clave pública codificada en base 58 de la cuenta de tokens.
* **`amount`** (string): El saldo sin procesar de la cuenta de tokens, como una cadena. Este valor no está ajustado según los decimales.
* **`decimals`** (u8): La cantidad de posiciones decimales definidas para esta acuñación de tokens.
* **`uiAmount`** (number | null): El saldo de tokens como número de punto flotante, ajustado según los decimales. Este campo podría estar obsoleto o ser menos confiable; se recomienda usar `uiAmountString`.
* **`uiAmountString`** (string): El saldo de tokens como cadena, ajustado según los decimales. Esta es la representación del saldo más fácil de interpretar.

**Ejemplo de respuesta:**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": { "slot": 123456789 },
    "value": [
      {
        "address": "TokenAccountPubkey1...",
        "amount": "1000000000000", // e.g., 1,000,000 tokens with 6 decimals
        "decimals": 6,
        "uiAmount": 1000000.0,
        "uiAmountString": "1000000.0"
      },
      {
        "address": "TokenAccountPubkey2...",
        "amount": "500000000000",  // e.g., 500,000 tokens with 6 decimals
        "decimals": 6,
        "uiAmount": 500000.0,
        "uiAmountString": "500000.0"
      }
      // ... up to 18 more accounts
    ]
  },
  "id": 1
}
```

## Ejemplos de código

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <TOKEN_MINT_PUBKEY> with the actual mint address
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTokenLargestAccounts",
      "params": [
        "<TOKEN_MINT_PUBKEY>"
      ]
    }' \
    <YOUR_RPC_URL>

  # Example with commitment level
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTokenLargestAccounts",
      "params": [
        "<TOKEN_MINT_PUBKEY>",
        { "commitment": "confirmed" }
      ]
    }' \
    <YOUR_RPC_URL>
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function getLargestTokenHolders(mintAddress) {
    // Replace with your RPC endpoint
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const mintPublicKey = new PublicKey(mintAddress);

    try {
      const largestAccounts = await connection.getTokenLargestAccounts(mintPublicKey);
      console.log(`Largest accounts for mint ${mintAddress}:`);
      largestAccounts.value.forEach(account => {
        console.log(`  Address: ${account.address}`);
        console.log(`    UI Amount: ${account.uiAmountString}`);
        console.log(`    Raw Amount: ${account.amount}`);
        console.log(`    Decimals: ${account.decimals}`);
      });
      // For full details:
      // console.log(JSON.stringify(largestAccounts, null, 2));
    } catch (error) {
      console.error(`Error fetching largest token accounts for mint ${mintAddress}:`, error);
    }
  }

  // Replace with the actual token mint public key you want to query
  const exampleTokenMint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'; // USDC mint
  getLargestTokenHolders(exampleTokenMint);

  // Example with a different mint (e.g., Raydium)
  // const raydiumMint = '4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R';
  // getLargestTokenHolders(raydiumMint);
  ```
</CodeGroup>

## Consejos para desarrolladores

* **Límite fijo:** Este método siempre devuelve como máximo las 20 cuentas más grandes. No admite paginación ni permite solicitar más de 20 cuentas.
* **Precisión de los datos:** Los datos reflejan el estado del libro mayor en el slot determinado por el nivel de compromiso especificado.
* **Específico para la acuñación del token:** Los resultados corresponden únicamente a la acuñación del token proporcionada en la solicitud.
* **Rendimiento:** Esta es una consulta específica y, por lo general, tiene un buen rendimiento. Sin embargo, debes evitar realizar consultas excesivas.

Esta guía te ayuda a usar el método RPC `getTokenLargestAccounts` para descubrir a los principales titulares de cualquier token SPL en Solana.
