> ## 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 getSupply

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

El método RPC [`getSupply`](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) proporciona información sobre el suministro actual de SOL en la red de Solana. Detalla el suministro total, el suministro en circulación y el suministro fuera de circulación. También puede mostrar una lista de las cuentas con fondos fuera de circulación.

## Casos de uso comunes

* **Comprender la tokenomía de SOL:** Obtén una instantánea de la distribución actual de SOL.
* **Análisis económico:** Sigue los cambios en las métricas de suministro a lo largo del tiempo.
* **Mostrar estadísticas de la red:** Proporciona a los usuarios información actualizada sobre el suministro de SOL en paneles o exploradores.
* **Monitoreo de la inflación:** Aunque `getInflationRate` y `getInflationGovernor` proporcionan datos más directos sobre la inflación, `getSupply` puede ofrecer un contexto más amplio.

## Parámetros de solicitud

El método `getSupply` acepta un objeto de configuración opcional con los siguientes campos:

1. **`commitment`** (cadena, opcional): Especifica el [nivel de compromiso](https://www.helius.dev/blog/solana-commitment-levels) de la consulta. Si se omite, se usa el nivel de compromiso predeterminado del nodo RPC.
2. **`excludeNonCirculatingAccountsList`** (booleano, opcional): Si se establece en `true`, el arreglo `nonCirculatingAccounts` se excluirá de la respuesta. El valor predeterminado es `false`. Esto puede ser útil para reducir el tamaño de la respuesta si no necesitas la lista de cuentas individuales con fondos fuera de circulación.

**Ejemplo de configuración:**

```json theme={"system"}
{
  "commitment": "finalized",
  "excludeNonCirculatingAccountsList": true
}
```

## Estructura de la respuesta

La respuesta es un objeto JSON con los siguientes campos:

* **`value`**: Un objeto que contiene la información del suministro:
  * **`total`** (u64): El suministro total de SOL en lamports.
  * **`circulating`** (u64): El suministro de SOL en circulación en lamports.
  * **`nonCirculating`** (u64): El suministro de SOL fuera de circulación en lamports.
  * **`nonCirculatingAccounts`** (arreglo de cadenas, opcional): Un arreglo de claves públicas (como cadenas codificadas en base58) de las cuentas que contienen SOL fuera de circulación. Este campo se omite si `excludeNonCirculatingAccountsList` se estableció en `true` en la solicitud.
* **`context`**: Un objeto que contiene:
  * **`slot`** (u64): El slot en el que se obtuvo la información.

**Ejemplo de respuesta (con `excludeNonCirculatingAccountsList: false`):**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890374
    },
    "value": {
      "circulating": 423105827585008800,
      "nonCirculating": 123456789012345678, // Example value
      "nonCirculatingAccounts": [
        "Stake11111111111111111111111111111111111111",
        "Vote11111111111111111111111111111111111111",
        // ... other non-circulating accounts
      ],
      "total": 546562616597354478
    }
  },
  "id": 1
}
```

**Ejemplo de respuesta (con `excludeNonCirculatingAccountsList: true`):**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890380
    },
    "value": {
      "circulating": 423105830000000000,
      "nonCirculating": 123456780000000000, // Example value
      "total": 546562610000000000
      // nonCirculatingAccounts field is absent
    }
  },
  "id": 1
}
```

## Ejemplos de código

<CodeGroup>
  ```bash cURL theme={"system"}
  # Basic Request:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply"}' \
    <YOUR_RPC_URL>

  # Request with excludeNonCirculatingAccountsList:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"excludeNonCirculatingAccountsList": true}]}' \
    <YOUR_RPC_URL>

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

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

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

    try {
      const supplyInfo = await connection.getSupply();
      console.log('Supply Information:', supplyInfo.value);
      console.log('Total SOL:', supplyInfo.value.total / 1_000_000_000); // Convert lamports to SOL
      console.log('Circulating SOL:', supplyInfo.value.circulating / 1_000_000_000);
      console.log('Non-Circulating SOL:', supplyInfo.value.nonCirculating / 1_000_000_000);

      if (supplyInfo.value.nonCirculatingAccounts) {
        console.log('Non-circulating accounts count:', supplyInfo.value.nonCirculatingAccounts.length);
      }

      // Example with options
      const supplyInfoWithoutAccountsList = await connection.getSupply({
        commitment: 'finalized',
        excludeNonCirculatingAccountsList: true,
      });
      console.log('\nSupply Information (excluding non-circulating accounts list):');
      console.log('Total SOL:', supplyInfoWithoutAccountsList.value.total / 1_000_000_000);
      console.log('Circulating SOL:', supplyInfoWithoutAccountsList.value.circulating / 1_000_000_000);

    } catch (error) {
      console.error('Error getting supply information:', error);
    }
  }

  getNetworkSupply();
  ```
</CodeGroup>

## Consejos para desarrolladores

* **Lamports frente a SOL:** Las cantidades se devuelven en lamports. Recuerda dividirlas entre `1,000,000,000` (1 SOL = 10^9 lamports) para convertirlas a SOL.
* **Actualidad de los datos:** Los datos reflejan el estado en el slot indicado en el objeto `context` y se basan en el nivel de compromiso utilizado.
* **`excludeNonCirculatingAccountsList`:** Usa esta opción si solo necesitas las cifras agregadas del suministro para optimizar el tamaño de la respuesta y el tiempo de procesamiento, especialmente si la lista de cuentas con fondos fuera de circulación es muy larga.
* **Valores dinámicos:** Las cifras del suministro pueden cambiar con frecuencia debido a la emisión de tokens (inflación) y a los mecanismos de quema.

Esta guía te ayudará a usar eficazmente el método RPC `getSupply` para consultar los datos de suministro de Solana.

## Métodos relacionados

<CardGroup cols={2}>
  <Card title="getInflationRate" href="/docs/es/api-reference/rpc/http/getinflationrate">
    Obtén la tasa de inflación actual
  </Card>

  <Card title="getInflationGovernor" href="/docs/es/api-reference/rpc/http/getinflationgovernor">
    Obtén los parámetros de gobernanza de la inflación
  </Card>
</CardGroup>
