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

# ブロックチェーンからのデータ取得

> Sequence インフラスタックを用いた web3 ゲーム向け Unreal SDK API のブロックチェーン読み取りに関するドキュメントです。

## チェーンIDの設定

ユーザー情報を取得したいチェーンIDを選択します。デフォルトではPolygonが設定されています。

<Tabs>
  <Tab title="ブループリント">
    <Frame caption="Set Chain Id">
      <img src="https://mintcdn.com/sequence-0fb8d9e6/UrAdORNA0LqTwWWW/images/unreal/v1/set_chain_id.png?fit=max&auto=format&n=UrAdORNA0LqTwWWW&q=85&s=2b56c31f63cccbdeeee995271845f0b7" width="1188" height="502" data-path="images/unreal/v1/set_chain_id.png" />
    </Frame>
  </Tab>
</Tabs>

<Accordion title="パラメータ">
  **新しいチェーンタイプ（ENetwork Enum）**

  情報を取得したいチェーンの種類を選択します。Ethereum MainnetやSepoliaなどが含まれます。SequenceのBuilderでプロジェクトに合ったチェーンを必ず選択してください。
</Accordion>

## Ether残高の取得

Indexer APIを利用して、指定したウォレットアドレス（例：ローカルユーザーのアドレス）のEther残高を取得します。

<Tabs>
  <Tab title="ブループリント">
    <Frame caption="Get Ether Balance">
      <img src="https://mintcdn.com/sequence-0fb8d9e6/jCmUvzGpoEMBvubT/images/unreal/v1/get_ether_balance.png?fit=max&auto=format&n=jCmUvzGpoEMBvubT&q=85&s=3c9673a94ba01034f238db4ad39c8c5d" width="1321" height="500" data-path="images/unreal/v1/get_ether_balance.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp twoslash theme={null}
    // Define success and failure callbacks
    const TSuccessCallback<FEtherBalance> GenericSuccess = [=](const FEtherBalance& etherBalance) { };
    const FFailureCallback GenericFailure = [=](const FSequenceError& Error) { };

    // Get a reference of the user's current wallet session.
    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        // Example Indexer call
        USequenceWallet * Wallet = WalletOptional.GetValue();
        Wallet->GetEtherBalance(Wallet->GetWalletAddress(), GenericSuccess, GenericFailure);
    }
    ```
  </Tab>
</Tabs>

<Accordion title="パラメータ">
  **ウォレットアドレス（FString）**

  データを取得したいウォレットアドレスを指定します。
</Accordion>

<Accordion title="返却型">
  **残高（Integer64）**

  指定したウォレットアドレスが保有するEtherの量です。
</Accordion>

## トークン残高の取得

ERC20、ERC721、ERC1155トークンのユーザー残高を取得します。これにより、ユーザーが所有するすべてのトークンの配列が返されます。

<Tabs>
  <Tab title="ブループリント">
    <Frame caption="Get Token Balances">
      <img src="https://mintcdn.com/sequence-0fb8d9e6/AFzdYwHtaLpVA9X3/images/unreal/get_token_balances.png?fit=max&auto=format&n=AFzdYwHtaLpVA9X3&q=85&s=4097e5cfe26434ff188a0a8d609d67c4" width="2824" height="1302" data-path="images/unreal/get_token_balances.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetTokenBalancesReturn> GenericSuccess = [=](const FGetTokenBalancesReturn& tokenBalances)
    {
        //Response in FGetTokenBalancesReturn
    };
    const FFailureCallback GenericFailure = [=](const FSequenceError& Error)
    {
        //GetTokenBalances Failure
    };

    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        USequenceWallet * Wallet = WalletOptional.GetValue();
        FGetTokenBalancesArgs args;
        args.accountAddress = Wallet->GetWalletAddress();
        args.includeMetaData = true;
        Wallet->GetTokenBalances(args, GenericSuccess, GenericFailure);
    }
    ```
  </Tab>
</Tabs>

<Accordion title="パラメータ">
  **コントラクトアドレス（FString）**

  データを取得したいERC20、ERC721、またはERC1155のコントラクトアドレスです。

  **ウォレットアドレス（FString）**

  指定したコントラクトアドレス上でトークンを所有しているウォレットアドレスです。

  **メタデータを含める（Boolean）**

  レスポンスにトークンのメタデータを含めたい場合は、このフラグを有効にしてください。
</Accordion>

<Accordion title="返却型">
  **残高（SeqGetTokenBalancesReturn Struct）**

  指定したウォレットアドレスが所有するすべてのトークンIDをリスト化したSeqTokenBalance配列が含まれます。'メタデータを含める'がtrueの場合、トークンのメタデータも含まれます。
</Accordion>

## トークン供給量の取得

ERC20、ERC721、ERC1155トークンの供給量を取得します。

<Tabs>
  <Tab title="ブループリント">
    <Frame caption="Get Token Supplies">
      <img src="https://mintcdn.com/sequence-0fb8d9e6/AFzdYwHtaLpVA9X3/images/unreal/get_token_supplies.png?fit=max&auto=format&n=AFzdYwHtaLpVA9X3&q=85&s=0c5708b85c313caf3330fe5ec6889a3e" width="2824" height="1302" data-path="images/unreal/get_token_supplies.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetTokenSuppliesReturn> GenericSuccess = [=](const FGetTokenSuppliesReturn& tokenSupplies)
    {
        //Response is in FGetTokenSuppliesReturn
    };
    const FFailureCallback GenericFailure = [=](const FSequenceError& Error)
    {
        //GetTokenSupplies Failure
    };

    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        USequenceWallet * Wallet = WalletOptional.GetValue();
        FGetTokenSuppliesArgs args;
        args.contractAddress = "0x01";//Testing Contract Address in hex with leading 0x
        args.includeMetaData = true;
        Wallet->GetTokenSupplies(args, GenericSuccess, GenericFailure);
    }
    ```
  </Tab>
</Tabs>

<Accordion title="パラメータ">
  **コントラクトアドレス（FString）**

  トークン供給量を取得したいERC20、ERC721、またはERC1155のコントラクトアドレスです。

  **メタデータを含める（Boolean）**

  レスポンスにトークンのメタデータを含めたい場合は、このフラグを有効にしてください。
</Accordion>

<Accordion title="返却型">
  **供給量（SeqGetTokenSuppliesReturn Struct）**

  指定したコントラクトアドレス上で利用可能なすべてのトークンIDをリスト化したSeqTokenSupply配列が含まれます。各要素には'supply'値が含まれます。'メタデータを含める'がtrueの場合、トークンのメタデータも含まれます。
</Accordion>

## トークン供給量マップの取得

ERC20、ERC721、ERC1155トークンの供給量コレクションを取得します。

<Tabs>
  <Tab title="ブループリント">
    <Frame caption="Get Token Supplies Map">
      <img src="https://mintcdn.com/sequence-0fb8d9e6/AFzdYwHtaLpVA9X3/images/unreal/get_token_supplies_map.png?fit=max&auto=format&n=AFzdYwHtaLpVA9X3&q=85&s=9a2565728c1650c1061519490d9ac2a4" width="2824" height="1302" data-path="images/unreal/get_token_supplies_map.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetTokenSuppliesMapReturn> GenericSuccess = [=](const FGetTokenSuppliesMapReturn& tokenSuppliesMap)
    {
        //Response is in FGetTokenSuppliesMapReturn
    };
    const FFailureCallback GenericFailure = [=](const FSequenceError& Error)
    {
        //GetTokenSuppliesMap Failure
    };
    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        USequenceWallet * Wallet = WalletOptional.GetValue();
        TMap<FString, FTokenList> tokenMap;
        const TPair<FString,FTokenList> item;
        tokenMap.Add(item);
        FGetTokenSuppliesMapArgs args;
        args.includeMetaData = true;
        args.tokenMap = tokenMap;
        Wallet->GetTokenSuppliesMap(args, GenericSuccess, GenericFailure);
    }
    ```
  </Tab>
</Tabs>

<Accordion title="パラメータ">
  **トークンマップ（FString->FSeqTokenList Map）**

  データを取得したいトークンIDのマップです。

  **メタデータを含める（Boolean）**

  レスポンスにトークンのメタデータを含めたい場合は、このフラグを有効にしてください。
</Accordion>

<Accordion title="返却型">
  **供給量（SeqGetTokenSuppliesMapReturn Struct）**

  'トークンマップ'で指定した各IDごとにSeqTokenSupply配列が含まれます。各要素には'supply'値が含まれます。'メタデータを含める'がtrueの場合、トークンのメタデータも含まれます。
</Accordion>

## トランザクション履歴の取得

ウォレットアドレスまたはトークンアドレスのトランザクション履歴を取得します。
例えば、現在のユーザーのすべてのトランザクションを取得できます。

<Tabs>
  <Tab title="ブループリント">
    <Frame caption="Get Transaction History">
      <img src="https://mintcdn.com/sequence-0fb8d9e6/AFzdYwHtaLpVA9X3/images/unreal/get_transaction_history.png?fit=max&auto=format&n=AFzdYwHtaLpVA9X3&q=85&s=882edd276cabe0ab566569085fb69414" width="2824" height="1302" data-path="images/unreal/get_transaction_history.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetTransactionHistoryReturn> GenericSuccess = [=](const FGetTransactionHistoryReturn& transactionHistory)
    {
        //Response is in FGetTransactionHistoryReturn
    };
    const FFailureCallback GenericFailure = [=](const FSequenceError& Error)
    {
        //GetTransactionHistory Failure
    };

    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        USequenceWallet * Wallet = WalletOptional.GetValue();
        FGetTransactionHistoryArgs args;
        args.filter.accountAddress = Wallet->GetWalletAddress();
        args.includeMetaData = true;
        args.page.page = 0;
        args.page.more = true;
        Wallet->GetTransactionHistory(args, GenericSuccess, GenericFailure);
    }
    ```
  </Tab>
</Tabs>

<Accordion title="パラメータ">
  **アカウントアドレス（FString）**

  特定ユーザーの履歴を取得したい場合はウォレットアドレスを指定します。

  **コントラクトアドレス（FString）**

  特定トークンの履歴を取得したい場合はERC20、ERC721、またはERC1155のコントラクトアドレスを指定します。

  **メタデータを含める（Boolean）**

  レスポンスにトークンのメタデータを含めたい場合は、このフラグを有効にしてください。
</Accordion>

<Accordion title="返却型">
  **トランザクション履歴（SeqGetTransactionHistoryReturn Struct）**

  すべてのトランザクションをリスト化したSeqTransaction配列が含まれます。
</Accordion>
