(原文 :https://aptos.dev/sdks/ts-sdk/fetch-data-from-chain )

新しいAptos インスタンスを作成すると、すべてのSDK機能にアクセスできるようになります。これで、チェーンにデータをクエリできるようになりました。

SDK には、最もよく使用されるクエリや一般的なクエリを使用してチェーンへ簡単にクエリするためのビルトインクエリが用意されています。SDK は、必要に応じてAptos fullnodeIndexerへのクエリを解決し、開発者がどのサービスへクエリすべきか知り理解する負担を軽減します。

const aptos = new Aptos();

const fund = await aptos.getAccountInfo({ accountAddress: "0x123" });
const modules = await aptos.getAccountTransactions({ accountAddress: "0x123" });
const tokens = await aptos.getAccountOwnedTokens({ accountAddress: "0x123" });

ジェネリックを使用したクエリ

SDK は実際の型を推測できないため、一部のクエリ応答では完全な応答型が提供されません。そのため、応答タイプにジェネリックタイプを提供して、API タイプに含まれていない応答プロパティにアクセスできるようにしています。

たとえば、getAccountResourceクエリの場合、resourceをクエリとして定義できますが、SDK は応答のタイプを推測できず、応答のプロパティにアクセスすることはできません。

そのため、様々なクエリに対応するジェネリック応答タイプをサポートしています。

type Coin = { coin: { value: string } };

const resource = await aptos.getAccountResource<Coin>({
  accountAddress: testAccount.accountAddress,
  resourceType: "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
});

// これで応答タイププロパティーへアクセス出来ました。
const value = resource.coin.value;

options入力引数

クエリパラメータとしてoptions入力をクエリに提供できます。このオプションをサポートするクエリではoption入力パラメータが利用可能です。

const resource = await aptos.getAccountResource({
  accountAddress: alice.accountAddress,
  resourceType: "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
  options: { ledgerVersion: 12 },
});

const tokens = await aptos.getAccountOwnedTokens({
  accountAddress: alice.accountAddress,
  options: {
    tokenStandard: "v2",
    pagination: { offset: 0, limit: 10 },
    orderBy: [{ last_transaction_version: "desc" }],
  },
});

インデクサー同期の待機

データを取得するために Indexer サービスを使用することがあります。これは、フルノードから複雑なデータを直接取得できないか、一部のクエリがフルノードAPI でサポートされていないためです。インデクサーはチェーンにインデックスを付けるため、台帳の最新バージョンに追いつくまでに時間がかかる可能性があり、リアルタイム データを取得できなくなる可能性があります。

そのため、SDK はオプションのminimumLedgerVersion入力引数をサポートしています。クエリを実行する前に、同期する台帳のバージョンを渡すことができます。バージョンが提供されていない場合、SDK は Indexer が同期するのを待ちません。

const tokens = await aptos.getAccountOwnedTokens({
  accountAddress: alice.accountAddress,
  minimumLedgerVersion: 1234,
});

最新の台帳バージョンを取得するには、以下の事が出来ます。