GTokenTool全网最好的代币发行工具平台
  • 05 09 23:43:06 周五
当前位置:首页 >> solana教程 >> Solana Dev101-如何获取 NFT 收藏的持有者(快照)

Solana Dev101-如何获取 NFT 收藏的持有者(快照)

admin solana教程 119

介绍

如果您想知道如何捕获 NFT 收藏所有者的快照,那么您来对地方了。借助 Helius,通过使用 DAS API,可以轻松获取这些快照。

Solana Dev101-如何获取 NFT 收藏的持有者(快照)


要学习本教程,您需要一个 Helius 帐户和 API 密钥,您可以通过在此处注册免费获得。如果您有任何疑问,可以参考文章末尾的相关文档。此外,请随时加入 Helius Discord社区或在Twitter上标记 Helius以寻求进一步的帮助。


使用 DAS API

数字资产标准 (DAS) API 是一种开源规范和系统,它提供了与数字资产(代币、NFT 等)交互的统一接口。我们将使用 DAS API 来获取特定资产的所有者。根据集合的分组方法,我们可以使用几种不同的调用。


通过集合地址从集合中获取 NFT(getAssetByGroup)

Metaplex NFT 标准的最新版本采用了经过认证的收藏品。这是通过创建一个 NFT 来表示一个收藏品来实现的,这样就可以对 NFT 进行分类,并在区块链上验证收藏品信息。要检索收藏品中的所有 NFT,可以使用收藏品地址,即收藏品 NFT 的铸币地址。如果您有一个属于收藏品的 NFT,您可以查看 NFT 的元数据并在收藏品部分中找到收藏品地址。


NFT 集合元数据


一旦获得地址,我们就可以使用 DASgetAssetByGroup方法搜索与其相关的所有 NFT。以下代码片段演示了如何使用分页遍历所有 10000 个 Mad Lads NFT。在 API 调用的 params 部分中,我们将指定使用集合作为组键,然后提供集合地址作为组值。


代码

const fs = require("fs"); // Required to save the snapshot to a file


const url =

  "https://mainnet.helius-rpc.com/?api-key=";


const getAssetsByGroup = async () => {

  console.time("getAssetsByGroup"); // Start the timer

  let page = 1;

  let assetList = [];


  while (page) {

    const response = await fetch(url, {

      method: "POST",

      headers: {

        "Content-Type": "application/json",

      },

      body: JSON.stringify({

        jsonrpc: "2.0",

        id: "my-id",

        method: "getAssetsByGroup",

        params: {

          groupKey: "collection",

          groupValue: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w",

          page: page,

          limit: 1000,

        },

      }),

    });

    const { result } = await response.json();


    const owners = result.items.map((item) => ({

      NFTAddress: item.id,

      OwnerAddress: item.ownership.owner,

    }));

    assetList.push(...owners);

    if (result.total !== 1000) {

      page = false;

    } else {

      page++;

    }

  }

  const resultData = {

    totalResults: assetList.length,

    results: assetList,

  };

  console.log("Owners: ", resultData);

  fs.writeFile("output.json", JSON.stringify(resultData, null, 2), (err) => {

    if (err) throw err;

    console.log("Data written to file");

  });

  console.timeEnd("getAssetsByGroup"); // End the timer

};

getAssetsByGroup();


根据第一个经过验证的创建者从集合中获取 NFT(getAssetByCreator)

要对第一个经过验证的创建者进行快照,您需要使用“getAssetByCreator”函数并在参数中提供创建者的地址。您可以在 NFT 的链上元数据的创建者部分中找到其创建者的地址。


NFT 验证创作者元数据


验证第一个创建者后,在 的调用中将地址设置为创建者地址getAssetsByCreator。


代码

const fs = require("fs"); // Required to save the snapshot to a file


const url =

  "https://mainnet.helius-rpc.com/?api-key=";


const getAssetsByCreator = async () => {

  console.time("getAssetsByCreator"); // Start the timer

  let page = 1;

  let assetList = [];


  while (page) {

    const response = await fetch(url, {

      method: "POST",

      headers: {

        "Content-Type": "application/json",

      },

      body: JSON.stringify({

        jsonrpc: "2.0",

        id: "my-id",

        method: 'getAssetsByCreator',

      params: {

        creatorAddress: 'D3XrkNZz6wx6cofot7Zohsf2KSsu2ArngNk8VqU9cTY3',

        onlyVerified: true,

          page: page,

          limit: 1000,

        },

      }),

    });

    const { result } = await response.json();


    const owners = result.items.map((item) => ({

      NFTAddress: item.id,

      OwnerAddress: item.ownership.owner,

    }));

    assetList.push(...owners);

    if (result.total !== 1000) {

      page = false;

    } else {

      page++;

    }

  }

  const resultData = {

    totalResults: assetList.length,

    results: assetList,

  };

  console.log("Owners: ", resultData);

  fs.writeFile("output.json", JSON.stringify(resultData, null, 2), (err) => {

    if (err) throw err;

    console.log("Data written to file");

  });

  console.timeEnd("getAssetsByCreator"); // End the timer

};

getAssetsByCreator();

输出

在上面的所有代码片段中,我们输出每个 NFT 的地址和相应的所有者。


代码

  {

NFTAddress: 'J61tzxTJ1gqe1Z8orSQtNmvZUG27fokmcPcobdB3sZXz',

      ownerAddress: 'Dar5nrE6XWqv9vAi9o6enUQsamEJKq2zgxjNywncZpYj'

    },

您可以随意修改此输出以添加任何必要的信息,例如名称、描述或属性。有关 DAS 响应中包含的数据的详细信息,请参阅DAS 文档。


结论

在这篇博文中,我们讨论了如何使用 DAS API 检索有关 NFT 集合持有者的信息。借助 DAS API,您可以轻松获取有关 NFT 及其所有者的宝贵信息。无论您是想分析用户行为还是跟踪 NFT 的分布,DAS API 都能提供便捷的解决方案。您可以通过访问dev.helius.xyz并注册计划,立即免费开始使用 DAS API。

作者:GTokenTool一键发币平台

交流群:https://t.me/+Kz4u3xoDpFo3ZWY1

同类推荐