获取aptos中账户所拥有的nfts

问题描述 投票:0回答:2

我一直在尝试获取 aptos 测试网上帐户的 nfts,但我不知道该怎么做。

我尝试使用https://fullnode.testnet.aptoslabs.com/v1/accounts/:ACCOUNT_ADDRESS/resources但我无法理解输出 是这个

[{"type":"0x1::account::Account","data":{"authentication_key":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","coin_register_events":{"counter":"1","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"0"}}},"guid_creation_num":"8","key_rotation_events":{"counter":"0","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"1"}}},"rotation_capability_offer":{"for":{"vec":[]}},"sequence_number":"1","signer_capability_offer":{"for":{"vec":[]}}}},{"type":"0x3::token::TokenStore","data":{"burn_events":{"counter":"0","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"6"}}},"deposit_events":{"counter":"1","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"4"}}},"direct_transfer":false,"mutate_token_property_events":{"counter":"0","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"7"}}},"tokens":{"handle":"0xe05367e99da54cf3252a7eb215fbf027164bedb2d728b3828ca3cfe0fac7f1c4"},"withdraw_events":{"counter":"0","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"5"}}}}},{"type":"0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>","data":{"coin":{"value":"249897700"},"deposit_events":{"counter":"1","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"2"}}},"frozen":false,"withdraw_events":{"counter":"0","guid":{"id":{"addr":"0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a","creation_num":"3"}}}}}]

其中(0x5d9c48db8e45486d5b019a869c505f46b20242c32db194ac0beb14322b53164a)是我的地址。

blockchain move nft wallet aptos
2个回答
0
投票

进行此类查询的最简单方法是使用索引器。

查询:

query CurrentTokens($owner_address: String, $offset: Int) {
  current_token_ownerships(
    where: {owner_address: {_eq: $owner_address}, amount: {_gt: "0"}, table_type: {_eq: "0x3::token::TokenStore"}}
    order_by: {last_transaction_version: desc}
    offset: $offset
  ) {
    token_data_id_hash
    name
    collection_name
    property_version
    amount
  }
}

查询变量:

{
  "owner_address": "0xaa921481e07b82a26dbd5d3bc472b9ad82d3e5bfd248bacac160eac51687c2ff",
  "offset": 0
}

然后您可以从您喜欢的任何 GraphQL 查询库中使用它。例如,在 JS / TS 中使用

graphql-request

import { request, gql } from "graphql-request";

const indexerUrl =
  "https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql";

const tokensOwnedByAccountQueryDoc = gql`
  query TokensOwnedByAccount($owner_address: String, $offset: Int) {
    current_token_ownerships(
      where: {
        owner_address: { _eq: $owner_address }
        amount: { _gt: "0" }
        table_type: { _eq: "0x3::token::TokenStore" }
      }
      order_by: { last_transaction_version: desc }
      offset: $offset
    ) {
      creator_address
      collection_name
    }
  }
`;


async function fetchTokensOwnedByAccount(userAccountAddress: string) {
  // TODO: Do pagination.
  const variables = { owner_address: userAccountAddress, offset: 0 };
  return await request({
    url: indexerUrl,
    document: tokensOwnedByAccountQueryDoc,
    variables,
  });
}

您可以在这里阅读更多相关信息:https://aptos.dev/guides/indexing#example-token-queries。您会发现我上面使用的查询只是取自文档站点中的此页面。


0
投票

您可以使用 morails nft api 获取特定 aptos 钱包拥有的 nfts。

https://docs.moralis.io/web3-data-api/aptos/reference/get-nft-by-wallet-addresses

© www.soinside.com 2019 - 2024. All rights reserved.