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

# getTokenLargestAccountsの使用方法

> getTokenLargestAccountsの使用例、コード例、リクエストパラメータ、応答構造、およびヒントを学びます。

この[`getTokenLargestAccounts`](https://www.helius.dev/docs/api-reference/rpc/http/gettokenlargestaccounts) RPCメソッドは、指定されたSPLトークン発行の20の最大トークンアカウントのリストを返します。これは、トークンの分布を分析し、特定のトークンの主要な保有者を特定するのに役立ちます。

## 共通の使用例

* **トークン分布分析:** トークンの供給が保有者の間でどのように分布しているかを理解する。
* **ホエールの特定:** 特定のトークンを大量に保有しているアカウントを見つける。
* **市場調査:** トークン所有の集中度を測る。
* **トップホルダーの表示:** トークンエクスプローラやダッシュボードで最大アカウントのリストを表示する。

## リクエストパラメータ

1. **`mintAddress`** (string, 必須): 最大アカウントを見つけたいトークン発行のbase-58エンコードされた公開鍵。

2. **`options`** (object, 任意): 使用可能なオプションの構成オブジェクト:
   * **`commitment`** (string, 任意): クエリの[コミットメントレベル](https://www.helius.dev/blog/solana-commitment-levels)を指定します（例: `"finalized"`, `"confirmed"`, `"processed"`）。

## 応答構造

JSON-RPC応答内の`result.value`フィールドは、最大20個のオブジェクトの配列です。それぞれのオブジェクトは最大トークンアカウントの1つを表し、次のフィールドを含みます:

* **`address`** (string): トークンアカウントのbase-58エンコードされた公開鍵。
* **`amount`** (string): トークンアカウントの生残高。この値は小数点以下の調整がされていません。
* **`decimals`** (u8): このトークン発行に定義された小数点以下の桁数。
* **`uiAmount`** (number | null): 小数点以下を調整したトークン残高。廃止または信頼性が低下する可能性があるため、`uiAmountString`が推奨されます。
* **`uiAmountString`** (string): 小数点以下が調整されたトークン残高の文字列表現。これが最もユーザーフレンドリーな残高表現です。

**応答例:**

```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
}
```

## コード例

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

## 開発者向けヒント

* **固定リミット:** このメソッドは常に最大20の最大アカウントを返します。ページネーションや20以上のアカウントのリクエストには対応していません。
* **データの正確性:** データは、指定されたコミットメントレベルによって決定されたスロットでの台帳の状態を反映しています。
* **特定のトークン発行:** 結果は、リクエストで提供された単一のトークン発行に特異的です。
* **パフォーマンス:** これは対象を絞ったクエリで、一般的に良好なパフォーマンスを発揮します。ただし、過度なポーリングは避けるべきです。

このガイドは、Solana上の任意のSPLトークンの主要保有者を発見するための`getTokenLargestAccounts` RPCメソッドの使用をサポートします。
