ブロックチェーンからの読み取り
ブロックチェーンからデータを読み取るには、Sequence IndexerのUnityネイティブ実装を使用します。
ブロックチェーンからの読み取り
ブロックチェーンからの読み取りは、Sequence Indexer のUnityネイティブ実装を利用して行います。
ChainIndexer
クラス のインスタンスを作成することを推奨します。これにより、IIndexer
インターフェース が提供するすべての機能を利用できます。
指定したチェーンのインデクサAPIが稼働しているかどうかは、Ping
非同期Taskで確認できます。リクエストが失敗する場合に役立ちます。開発中は、ステータスページ でもインデクサの稼働状況を確認できます。
残高の取得
ユーザーのEther(またはネットワークのデフォルトガス通貨)の残高を確認するには、GetEtherBalance
非同期Taskを使用します。
トークン残高の取得
ユーザーのトークン残高を取得するには、GetTokenBalances
非同期Taskを利用します。
この方法で取得した場合、各スマートコントラクトごとに1つのトークンインスタンスのみが返されます。アドレスを指定せずに取得することで、プレイヤーがどのコントラクトからトークンを所有しているか、ウォレットにどのERC20があるかを把握できます。
ERC721やERC1155トークンの個別残高を取得したい場合は、GetTokenBalancesArgs
でコントラクトを指定してください。
プレイヤーが特定のコントラクトで多くのtokenIdを持っている場合(または多くのコントラクトからトークンを所有している場合)、ページネーション処理が必要になります。この場合、GetTokenBalancesReturn
で受け取る Page
を確認し、続きがあればPageを含めて再度リクエストしてください。
この操作を簡単にするために、GetTokenBalancesOrganizedInDictionary
というラッパーを用意しています。これにより、指定したcontractAddressとuserAccountAddressのすべてのTokenBalanceを取得し、tokenID(BigInteger)からTokenBalanceへのDictionaryとして整理します。通常はこちらを利用するのが便利です。
これにより、各token idの残高確認も非常に簡単になります。
トークン供給量の取得
特定のスマートコントラクトのトークン総供給量を取得したい場合は、GetTokenSupplies
非同期Taskを利用できます。
この操作はあまり一般的ではないと考えていますが、必要な場合のために公開しています。
トークン供給量マップの取得
GetTokenSupplies
を頻繁に利用する方向けに、複数のトークンコントラクトやトークンIDの供給量をマップ形式で取得できる GetTokenSuppliesMap
非同期Taskも提供しています。
ここでは、suppliesMap[usdcAddress].Length = 1
となり、TokenSupplyオブジェクトはERC20トークンの供給量に対応します。
同様に、suppliesMap[skyweaverAddress].Length = 3
となり、TokenSupplyオブジェクトは指定したトークンIDの供給量に対応します。
トランザクション履歴の取得
特定アカウントのトランザクション履歴を取得するには、GetTransactionHistory
メソッドを利用します。
TransactionHistoryFilter
オブジェクトを使うことで、アカウントアドレスやコントラクトアドレスなど、トランザクション履歴の絞り込み条件を指定できます。詳細はこちらをご覧ください。