新消息:Helius 收购 Light Protocol
如何获取某个系列的 NFT 持有者
博客/开发

Solana Dev101——如何获取 NFT 系列的持有者(快照)

开发者体验工程师X 上的 Owen VenterLinkedIn 上的 Owen Venter
阅读需 3 分钟

简介

如果你想了解如何获取 NFT 系列持有者的快照,那么你来对地方了。借助 Helius,你可以通过 DAS API 轻松创建这些快照。

要跟随本教程操作,你需要一个 Helius 账户和 API 密钥。你可以在这里免费注册并获取。 如果有任何问题,可以参阅文章末尾的相关文档。此外,也欢迎加入 Helius Discord 社区,或在 Twitter 上提及 Helius,以获取进一步帮助。

使用 DAS API

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

使用系列地址获取系列中的 NFT(getAssetByGroup)

最新版 Metaplex NFT 标准使用经过认证的系列。其实现方式是创建一个代表系列的 NFT,从而对 NFT 进行分类,并在区块链上验证系列信息。要获取某个系列中的所有 NFT,可以使用系列地址,即系列 NFT 的铸造地址。如果你有一个属于某个系列的 NFT,可以查看该 NFT 的元数据,并在 collection 部分找到系列地址。

获得地址后,我们可以使用 DAS getAssetByGroup 方法搜索与其相关的所有 NFT。以下代码片段展示了如何使用分页遍历全部 10000 个 Mad Lads NFT。在 API 调用的 params 部分,我们会将 group key 指定为 collection,然后将系列地址作为 group value 提供。

代码
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 链上元数据的 creators 部分找到其创建者地址。

验证第一个创建者后,在调用 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'
    },

你可以根据需要修改输出,添加名称、描述或属性等信息。有关 getAssetsByGroup API 响应中所含数据的详细信息,请参阅我们的文档。

总结

在这篇博客文章中,我们介绍了如何使用 DAS API 获取 NFT 系列持有者的信息。借助 DAS API,你可以轻松获得有关 NFT 及其所有者的重要信息。无论你想分析用户行为,还是跟踪 NFT 的分布情况,DAS API 都能提供便捷的解决方案。立即访问我们的网站并注册一个套餐,即可免费开始使用 DAS API。

参考资料

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新

放大图片