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

# Solanaウォレットのアイデンティティを検索する方法

> 住所またはSNS/ANSドメインで既知のSolanaウォレットを特定します。単一エントリを検索するか、最大100のアドレスとドメインを一度にバッチ処理します。

<Note>
  ウォレットAPIはベータ版です。エンドポイントと応答形式が変更される可能性があります。
</Note>

## 概要

ウォレットアイデンティティエンドポイントは、中央集権型取引所、DeFiプロトコル、機関、およびその他の認識されているエンティティを含むSolanaで既知のウォレットアドレスを識別します。コンプライアンス、分析、既知のアドレスの人間が読める名前の表示に使用します。

単一のエンドポイント（`GET /v1/wallet/{wallet}/identity`）とバッチエンドポイント（`POST /v1/wallet/batch-identity`、最大100エントリ）は、**SNS `.sol`ドメイン**および**ANSカスタムTLD**（例：`.bonk`、`.poor`、`.abc`）も受け入れます。ドメイン解決はメインネットのみです。

このエンドポイントは、[Orb](https://orbmarkets.io/)およびHelius Solanaブロックエクスプローラーを支える同じアイデンティティシステムを使用します。データベースには32,500以上のラベル（人間が読める主要な名前、3,000以上のプログラムを含む）と21.5M以上のタグ（「Binance預金アドレス」や「Seeker Phone」などのカテゴリー属性）が含まれ、継続的に成長しています。

単一およびバッチエンドポイント（`GET /v1/wallet/{wallet}/identity`、`POST /v1/wallet/batch-identity`）には、有料プランが必要です。無料プランのAPIキーを使用して行われたリクエストは`403 Forbidden`を返します。[プラン要件](/ja/wallet-api/overview#plan-requirements)で完全なカバレッジテーブルを参照してください。

## 使用タイミング

ウォレットアイデンティティAPIを使用して、次の場合に必要があります：

* **取引所ウォレットを特定する**: ウォレットがBinance、Coinbase、Krakenなどに属しているかどうかを判断します。
* **プロトコルアクティビティを追跡する**: DeFiプロトコルウォレットとトレジャリーアドレスを特定します。
* **コンプライアンスおよびAML**: 既知のエンティティが関与するトランザクションをフラグします。
* **分析**: データパイプラインでウォレットタイプを分類します。
* **ユーザーエクスペリエンス**: 「Binance 1に送信」などのように、生のアドレスの代わりに表示します。
* **バッチ処理**: 数百のアドレスを効率的に検索します。

## クイックスタート

### 単一ウォレット検索

単一のウォレットアドレスのアイデンティティ情報を検索します。

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={"system"}
    const getWalletIdentity = async (address) => {
      const url = `https://api.helius.xyz/v1/wallet/${address}/identity?api-key=YOUR_API_KEY`;

      const response = await fetch(url);
      if (!response.ok) {
        if (response.status === 404) {
          console.log("No identity found for this address");
          return null;
        }
        throw new Error(`HTTP error! status: ${response.status}`);
      }

      const identity = await response.json();
      console.log(`Found: ${identity.name} (${identity.category})`);
      return identity;
    };

    // Example: Binance wallet
    getWalletIdentity("HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664");
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    import requests

    def get_wallet_identity(address: str):
        url = f"https://api.helius.xyz/v1/wallet/{address}/identity"
        headers = {"X-Api-Key": "YOUR_API_KEY"}

        response = requests.get(url, headers=headers)

        if response.status_code == 404:
            print("No identity found for this address")
            return None

        response.raise_for_status()
        identity = response.json()
        print(f"Found: {identity['name']} ({identity['category']})")
        return identity

    # Example: Binance wallet
    get_wallet_identity("HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664")
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"system"}
    curl "https://api.helius.xyz/v1/wallet/HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664/identity?api-key=YOUR_API_KEY"
    ```
  </Tab>
</Tabs>

#### ドメイン名で検索する

SNS `.sol`ドメインまたはANSカスタムTLDを直接渡すことも可能で、エンドポイントはドメインを解決し、所有者アドレスのアイデンティティを返します：

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={"system"}
    // Works identically — the endpoint resolves the domain first.
    const identity = await getWalletIdentity("toly.sol");

    // ANS custom TLD
    await getWalletIdentity("miester.bonk");
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    # Works identically — the endpoint resolves the domain first.
    identity = get_wallet_identity("toly.sol")

    # ANS custom TLD
    get_wallet_identity("miester.bonk")
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"system"}
    # SNS (.sol) domain
    curl "https://api.helius.xyz/v1/wallet/toly.sol/identity?api-key=YOUR_API_KEY"

    # ANS custom TLD
    curl "https://api.helius.xyz/v1/wallet/miester.bonk/identity?api-key=YOUR_API_KEY"
    ```
  </Tab>
</Tabs>

単一エンドポイントの応答は、**解決済み**アドレスの標準的なアイデンティティオブジェクトです。入力と出力を相関させる必要がある場合（たとえば、多くのドメインを一度に検索する場合）、バッチエンドポイントを使用します。

<Note>
  ドメイン解決はメインネットのみです。Devnet/Testnetでは、このエンドポイントへのドメイン入力は`400`を返します。ポジティブな解決は最大2時間キャッシュされるため、最近転送されたドメインは一時的に以前の所有者のアイデンティティに解決される可能性があります。
</Note>

### バッチ検索（最大100エントリ）

性能向上のため、単一リクエストで複数のエントリを検索します。各エントリはアドレスまたはドメイン名のどちらかです。

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={"system"}
    const batchIdentityLookup = async (addresses) => {
      const url = "https://api.helius.xyz/v1/wallet/batch-identity?api-key=YOUR_API_KEY";

      const response = await fetch(url, {
        method: "POST",
        headers: {
          "Content-Type": "application/json"
        },
        body: JSON.stringify({ addresses })
      });

      if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
      }

      const identities = await response.json();
      return identities;
    };

    // Example: Mix addresses and domains in a single request
    const addresses = [
      "HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664", // Binance (address)
      "toly.sol",                                      // SNS domain
      "miester.bonk"                                   // ANS custom TLD
    ];

    batchIdentityLookup(addresses).then(identities => {
      identities.forEach(identity => {
        if (identity.unresolved) {
          console.log(`${identity.inputDomain}: could not be resolved`);
          return;
        }
        const label = identity.inputDomain
          ? `${identity.inputDomain} → ${identity.address}`
          : identity.address;
        console.log(`${label}: ${identity.name}`);
      });
    });
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    import requests

    def batch_identity_lookup(addresses: list[str]):
        url = "https://api.helius.xyz/v1/wallet/batch-identity"
        headers = {
            "X-Api-Key": "YOUR_API_KEY",
            "Content-Type": "application/json"
        }

        response = requests.post(
            url,
            headers=headers,
            json={"addresses": addresses}
        )

        response.raise_for_status()
        return response.json()

    # Example: Mix addresses and domains in a single request
    addresses = [
        "HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664",  # Binance (address)
        "toly.sol",                                       # SNS domain
        "miester.bonk"                                    # ANS custom TLD
    ]

    identities = batch_identity_lookup(addresses)
    for identity in identities:
        if identity.get("unresolved"):
            print(f"{identity['inputDomain']}: could not be resolved")
            continue
        label = f"{identity['inputDomain']} -> {identity['address']}" if identity.get("inputDomain") else identity["address"]
        print(f"{label}: {identity['name']}")
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"system"}
    curl -X POST "https://api.helius.xyz/v1/wallet/batch-identity?api-key=YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "addresses": [
          "HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664",
          "toly.sol",
          "miester.bonk"
        ]
      }'
    ```
  </Tab>
</Tabs>

## 応答形式

単一の検索が成功すると、解決済みアドレスのアイデンティティオブジェクトが返されます：

```json theme={"system"}
{
  "address": "HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664",
  "type": "exchange",
  "name": "Binance 1",
  "category": "Centralized Exchange",
  "tags": ["Centralized Exchange"]
}
```

**バッチ**応答では、入力がドメイン名であったエントリには追加の`inputDomain`フィールドがあり、応答を元のリクエストに関連付けることができます：

```json theme={"system"}
{
  "address": "7v91N7iZ9mNicL8WfG6cgSCKyRXydQjLh6UYBWwm6y1Q",
  "type": "wallet",
  "name": "toly",
  "category": "Key Opinion Leader",
  "tags": ["Key Opinion Leader"],
  "inputDomain": "toly.sol"
}
```

バッチ要求のドメインが解決できない場合、バッチは失敗しません。エントリは`address: null`、`type: "unknown"`、`unresolved: true`と共にその場で返されます。リクエストの順序は保持されます。

```json theme={"system"}
{
  "address": null,
  "type": "unknown",
  "inputDomain": "nonexistent-xyz.sol",
  "unresolved": true
}
```

**単一**エンドポイントでは、ウォレットにアイデンティティエントリがない場合、**または**ドメイン入力が解決されない場合は404が返されます：

```json theme={"system"}
{
  "error": "No identity information available for this address",
  "code": 404
}
```

```json theme={"system"}
{
  "error": "Domain 'nonexistent-xyz.sol' could not be resolved",
  "code": 404
}
```

### アイデンティティカテゴリー

ウォレットやプログラムは、Orbアイデンティティデータベースによってカテゴリ化されています。アカウントとプログラムは別々のカテゴリーセットを使用します。以下の表はサポートされているすべてのカテゴリをリストしています。

<AccordionGroup>
  <Accordion title="アカウントタグタイプ">
    | カテゴリ        | 説明                  | 例                                                               |
    | ----------- | ------------------- | --------------------------------------------------------------- |
    | 中央集権型取引所    | CEXウォレットおよびホットウォレット | Binance 1, Coinbase 1, Kraken, OKX Exchange 1, Bybit Hot Wallet |
    | クロスチェーンブリッジ | ブリッジプロトコルアドレス       | Wormhole Bridge, AllBridge, Portal Bridge, deBridge             |
    | DeFi        | DeFiプロトコルアドレス       | Jupiter, Raydium, Orca, Marinade Finance, Kamino                |
    | キーオピニオンリーダー | 著名な個人やインフルエンサー      | Anatoly Yakovenko, Raj Gokal                                    |
    | マーケットメイカー   | マーケットメイキングファーム      | Jump Trading, Wintermute, GSR Markets                           |
    | トレーディングファーム | プロプライエタリトレーディングファーム | Alameda Research, DRW Trading                                   |
    | バリデーター      | バリデーターとステークプールのアドレス | Coinbase Validator, Jito Validator, Figment Validator           |
    | トレジャリー      | プロジェクトやプロトコルトレジャリー  | Marinade Treasury, Helium Treasury, Solana Foundation Treasury  |
    | DAO         | 自律分散型組織             | Mango DAO, Grape DAO, MonkeDAO Treasury                         |
    | NFT         | NFTマーケットプレイスとプロジェクト | Magic Eden, Tensor, OpenSea Solana, DeGods Treasury             |
    | ステークプール     | リキッドステーキングプールアドレス   | Marinade Stake Pool, Jito Stake Pool, BlazeStake                |
    | マルチシグ       | マルチシグネチャウォレット       | Squads Multisig, Solana Foundation Multisig                     |
    | オラクル        | プライスフィードとオラクルプロバイダー | Pyth Network, Switchboard Oracle, Chainlink Solana              |
    | ゲーム         | ゲーミングとGameFiプロジェクト  | Star Atlas, Aurory, Genopets Treasury                           |
    | 支払い         | 支払いプロセッサー           | Solana Pay, Sphere, Helio Pay                                   |
    | ツール         | 開発者ツールとユーティリティ      | Phantom Wallet, Backpack, Solflare Wallet                       |
    | エアドロップ      | エアドロップ配布アドレス        | Jupiter Airdrop, Pyth Airdrop Distributor                       |
    | ガバナンス       | ガバナンスプログラムのアドレス     | Realms Governance, SPL Governance                               |
    | 権限          | プログラムの権限と管理者        | Token Program Authority, Metaplex Authority                     |
    | Jito        | Jito 特定のアドレス        | Jito Tip 1, Jito Tip 2, Jito MEV Payment                        |
    | メムコイン       | メムコインプロジェクト         | Bonk Treasury, Dogwifhat, Book of Meme                          |
    | カジノ＆ギャンブル   | ギャンブルとカジノdApps      | Stake.com Hot Wallet, Rollbit, DexSport                         |
    | DePIN       | 分散型物理インフラストラクチャ     | Helium Network, Render Network, Hivemapper                      |
    | プロプライエタリAMM | カスタムAMM実装           | Phoenix DEX, GooseFX                                            |
    | リステーク       | リステーキングプロトコル        | Solayer, Fragmetric                                             |
    | ボールト        | ボールトとカストディアドレス      | Solend Vault, Tulip Vault, Francium Vault                       |
    | 手数料         | 手数料徴収アドレス           | Jupiter Fee Collector, Raydium Fees                             |
    | 資金調達        | 資金調達およびICOアドレス      | Token Sale Wallet, Fundraise Multisig                           |
    | ジェネシスブロック配布 | ジェネシス配布アドレス         | Solana Genesis Distribution                                     |
    | 非流通供給       | 非流通トークンアドレス         | Team Vesting Wallet, Foundation Reserve                         |
    | トランザクション送信  | トランザクション送信サービス      | Jito Tip 1, Jito Tip 2, Helius Sender Tip 1                     |
    | システム        | Solanaシステムプログラム     | System Program, Config Program                                  |
    | X402        | X402プロトコルアドレス       | X402 Protocol                                                   |
    | その他         | カテゴリ化されていない既知のアドレス  | Various known wallets                                           |
  </Accordion>

  <Accordion title="悪意のあるカテゴリ">
    | カテゴリ             | 説明                 | 例                                                                 |
    | ---------------- | ------------------ | ----------------------------------------------------------------- |
    | エクスプロイター、ハッカー＆詐欺 | 既知のエクスプロイトとハックアドレス | Wormhole Exploiter Wallet, SagaDAO Hacker Wallet, Mango Exploiter |
    | ハッカー             | 確認されたハッカーアドレス      | Solana Hack 2022, DeFi Protocol Hacker                            |
    | ラガー              | ラグプル実行者            | Squid Game Token Rugger, Known Rug Pull Wallet                    |
    | 詐欺師              | 確認された詐欺アドレス        | Fake Airdrop Scammer, Phishing Scam Wallet                        |
    | スパム              | スパムトークン作成者         | Spam Token Creator, Airdrop Spammer                               |
  </Accordion>

  <Accordion title="プログラムカテゴリ">
    プログラム（スマートコントラクト）は個別に分類されます：

    | カテゴリ                | 説明               | 例                      |
    | ------------------- | ---------------- | ---------------------- |
    | スワップ                | トークンスワッププロトコル    | Jupiter, Raydium, Orca |
    | DeFi                | 一般的なDeFiプロトコル    | Drift, Mango           |
    | 借入貸出                | 貸出プロトコル          | Solend, MarginFi       |
    | NFT                 | NFTマーケットプレイス     | Magic Eden, Tensor     |
    | ステーキング              | ステーキングプログラム      | Marinade, Jito         |
    | ブリッジ                | クロスチェーンブリッジ      | Wormhole, AllBridge    |
    | アグリゲーター             | DEXアグリゲーター       | Jupiter Aggregator     |
    | パーペチュアル             | パーペチュアルフューチャーズ   | Drift, Mango           |
    | オラクル                | オラクルプロバイダー       | Pyth, Switchboard      |
    | ランチパッド              | トークンランチパッド       | Raydium Launchpad      |
    | ガバナンス               | ガバナンスプログラム       | SPL Governance         |
    | ゲームまたはカジノ           | ゲーミングプログラム       | Star Atlas             |
    | 予測市場                | 予測市場             | Drift Predictions      |
    | 支払い                 | 支払いプロトコル         | Solana Pay             |
    | プライバシー              | プライバシープロトコル      | Elusiv                 |
    | 圧縮                  | 状態圧縮             | Bubblegum              |
    | インフラストラクチャ          | コアインフラストラクチャ     | Metaplex               |
    | ツール                 | 開発者ツール           | Clockwork              |
    | RWA                 | 実世界の資産           | Ondo Finance           |
    | DePIN               | 分散型インフラストラクチャ    | Helium, Render         |
    | DeSci               | 分散型科学            | VitaDAO                |
    | エアドロップ              | エアドロッププログラム      | Merkle distributors    |
    | Web3                | Web3アプリケーション     | Various                |
    | ネイティブ               | Solanaネイティブプログラム | System Program         |
    | プロプライエタリAMM         | カスタムAMM設計        | Phoenix                |
    | トレーディングスナイパー        | トレーディングボット       | MEV bots               |
    | アービトラージまたはサンドイッチボット | MEVおよびアーブボット     | Jito bundles           |
    | スパム                 | スパムプログラム         | Spam tokens            |
    | その他                 | カテゴリ化されていないプログラム | Various                |
  </Accordion>
</AccordionGroup>

## 使用例

### 取引所入金をフラグする

資金が中央集権型取引所に送金されたときに特定します：

```javascript theme={"system"}
const checkIfExchange = async (address) => {
  try {
    const identity = await getWalletIdentity(address);
    if (identity && identity.category === "Centralized Exchange") {
      console.log(`Funds sent to ${identity.name}`);
      return true;
    }
  } catch (error) {
    // Not a known exchange
  }
  return false;
};
```

### 人間が読める名前を表示する

UIでアドレスの代わりにフレンドリーネームを表示します：

```javascript theme={"system"}
const getDisplayName = async (address) => {
  try {
    const identity = await getWalletIdentity(address);
    return identity ? identity.name : shortenAddress(address);
  } catch (error) {
    return shortenAddress(address);
  }
};

// Usage in UI
const displayName = await getDisplayName("HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664");
// Returns: "Binance 1" instead of "HXsKP...G664"
```

### トランザクションの相手先をバッチ処理する

トランザクションのリストで全ての相手先を効率的に特定します：

```javascript theme={"system"}
const identifyTransactionCounterparties = async (transactions) => {
  // Extract all unique addresses
  const addresses = [...new Set(
    transactions.map(tx => tx.counterparty)
  )];

  // Batch lookup (up to 100 at a time)
  const allIdentities = [];
  for (let i = 0; i < addresses.length; i += 100) {
    const chunk = addresses.slice(i, i + 100);
    const identities = await batchIdentityLookup(chunk);
    allIdentities.push(...identities);
  }

  // Create a map for quick lookup
  const identityMap = new Map(
    allIdentities.map(id => [id.address, id])
  );

  // Enrich transactions with identity info
  return transactions.map(tx => ({
    ...tx,
    counterpartyName: identityMap.get(tx.counterparty)?.name || "Unknown"
  }));
};
```

## ベストプラクティス

* **複数のルックアップにはバッチエンドポイントを使用します。** 複数のアドレスを検索する場合、`POST /v1/wallet/batch-identity`は個々のリクエストを行うよりもはるかに高速です。
* **404応答を適切に処理します。** 全てのウォレットにアイデンティティ情報があるわけではありません。生のアドレスを表示することを代替とします。
* **結果をキャッシュします。** アイデンティティデータは頻繁に変わるものではありません。ローカルにキャッシュしてAPIコールを減らします。
* **バッチサイズ制限を尊重します。** バッチエンドポイントは1リクエストあたり最大100エントリをサポートしています。大規模なデータセットは適宜分割します。

## よくあるエラー

| エラーコード | 説明                                       | 解決策                                                                                                              |
| ------ | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| 400    | 無効なウォレットアドレスまたはドメイン形式、または非メインネットでのドメイン入力 | 入力が有効なbase58 Solanaアドレスまたは適切に形成されたドメイン（例：`toly.sol`）であることを確認し、メインネットをターゲットにしていることを確認します                          |
| 401    | APIキーが不足しているか無効です                        | リクエストにAPIキーが含まれていることを確認します                                                                                       |
| 403    | エンドポイントには有料プランが必要です                      | アイデンティティ検索は無料プランでは利用できません。[プランをアップグレード](https://dashboard.helius.dev)して有料ティアにしてください                              |
| 404    | アイデンティティが見つからなかった、またはドメインを解決できなかった       | 単一エンドポイントのみ — ウォレットにアイデンティティエントリがない、またはドメインが存在しない。バッチリクエストでは、解決不可能なドメインは`unresolved: true`エントリとして返され、404では返されません |
| 429    | レートリミットを超過しました                           | リクエスト頻度を減らすか、プランをアップグレードします                                                                                      |

## 次のステップ

<CardGroup cols={3}>
  <Card title="資金提供源" icon="money-bill-transfer" href="/ja/wallet-api/funded-by">
    ウォレットに最初に資金を提供したのが誰かを追跡します — 資金提供者タイプはこれらのアイデンティティカテゴリを再利用します。
  </Card>

  <Card title="ウォレットAPI概要" icon="wallet" href="/ja/wallet-api/overview">
    すべてのウォレットAPIエンドポイントと共有規約。
  </Card>

  <Card title="APIリファレンス" icon="code" href="/ja/api-reference/wallet-api/identity">
    アイデンティティ検索のリクエストと応答スキーマ。
  </Card>
</CardGroup>
