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

# How to Use getSupply

> Aprenda casos de uso do getSupply, exemplos de código, parâmetros de solicitação, estrutura de resposta e dicas.

O método RPC [`getSupply`](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) fornece informações sobre a oferta atual de SOL na rede Solana. Detalha a oferta total, oferta circulante, oferta não circulante e pode listar opcionalmente contas não circulantes.

## Casos de Uso Comuns

* **Entendendo a Tokenomics do SOL:** Obtenha uma visão geral da distribuição atual do SOL.
* **Análise Econômica:** Acompanhe mudanças nas métricas de oferta ao longo do tempo.
* **Exibindo Estatísticas da Rede:** Forneça aos usuários informações atualizadas sobre a oferta de SOL em dashboards ou exploradores.
* **Monitoramento da Inflação:** Embora `getInflationRate` e `getInflationGovernor` forneçam dados de inflação mais diretos, `getSupply` pode oferecer um contexto mais amplo.

## Parâmetros de Solicitação

O método `getSupply` aceita um objeto de configuração opcional com os seguintes campos:

1. **`commitment`** (string, opcional): Especifica o [nível de compromisso](https://www.helius.dev/blog/solana-commitment-levels) para a consulta. Se omitido, o compromisso padrão do nó RPC é usado.
2. **`excludeNonCirculatingAccountsList`** (boolean, opcional): Se configurado para `true`, o array `nonCirculatingAccounts` será excluído da resposta. O padrão é `false`. Isso pode ser útil para reduzir o tamanho da resposta se a lista de contas não circulantes individuais não for necessária.

**Exemplo de Configuração:**

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

## Estrutura da Resposta

A resposta é um objeto JSON com os seguintes campos:

* **`value`**: Um objeto contendo as informações de oferta:
  * **`total`** (u64): A oferta total de SOL em lamports.
  * **`circulating`** (u64): A oferta circulante de SOL em lamports.
  * **`nonCirculating`** (u64): A oferta não circulante de SOL em lamports.
  * **`nonCirculatingAccounts`** (array de strings, opcional): Um array de chaves públicas (como strings codificadas em base58) de contas com SOL não circulante. Este campo é omitido se `excludeNonCirculatingAccountsList` tiver sido configurado para `true` na solicitação.
* **`context`**: Um objeto contendo:
  * **`slot`** (u64): O slot no qual a informação foi recuperada.

**Exemplo de Resposta (com `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
}
```

**Exemplo de Resposta (com `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
}
```

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

## Dicas para Desenvolvedores

* **Lamports vs. SOL:** Os valores são retornados em lamports. Lembre-se de dividir por `1,000,000,000` (1 SOL = 10^9 lamports) para converter para SOL.
* **Frescor dos Dados:** Os dados refletem o estado no slot indicado no objeto `context` e com base no nível de compromisso usado.
* **`excludeNonCirculatingAccountsList`:** Use esta opção se você só precisar dos números agregados de oferta para otimizar o tamanho da resposta e o tempo de processamento, especialmente se a lista de contas não circulantes for muito longa.
* **Valores Dinâmicos:** Os números de oferta podem mudar frequentemente devido à emissão de tokens (inflação) e mecanismos de queima.

Este guia deve ajudá-lo a usar efetivamente o método RPC `getSupply` para consultar dados de oferta da Solana.

## Métodos Relacionados

<CardGroup cols={2}>
  <Card title="getInflationRate" href="/docs/pt-BR/api-reference/rpc/http/getinflationrate">
    Obtenha a taxa de inflação atual
  </Card>

  <Card title="getInflationGovernor" href="/docs/pt-BR/api-reference/rpc/http/getinflationgovernor">
    Obtenha parâmetros de governança da inflação
  </Card>
</CardGroup>
