Solana Dev101 - 如何获取NFT集合的持有人(快照)

  • Helius
  • 发布于 2023-05-15 23:14
  • 阅读 10

本文介绍了如何使用 Helios 的 DAS API 捕获 NFT 收藏品所有者的快照,详细讲解了如何通过 API 获取特定资产的信息,包括如何通过收藏地址和创作者地址查询 NFT 以及相关的代码示例。读者可以按照步骤轻松实现数据的获取和存储。

3分钟阅读

2023年5月13日

介绍

如果你想了解如何捕获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的元数据并在集合部分找到集合地址。

NFT集合元数据

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

代码

const fs = require("fs"); // 必须保存快照到文件

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

const getAssetsByGroup = async () => {
  console.time("getAssetsByGroup"); // 开始计时
  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("所有者: ", resultData);
  fs.writeFile("output.json", JSON.stringify(resultData, null, 2), (err) => {
    if (err) throw err;
    console.log("数据已写入文件");
  });
  console.timeEnd("getAssetsByGroup"); // 结束计时
};
getAssetsByGroup();

根据第一个验证的创建者获取NFT(getAssetByCreator)

要获取第一个验证创建者的快照,你需要使用getAssetByCreator函数并在参数中提供创建者的地址。你可以在NFT的链上元数据的创建者部分找到NFT的创建者地址。

NFT验证的创建者元数据

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

代码

const fs = require("fs"); // 必须保存快照到一个文件

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

const getAssetsByCreator = async () => {
  console.time("getAssetsByCreator"); // 开始计时
  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("所有者: ", resultData);
  fs.writeFile("output.json", JSON.stringify(resultData, null, 2), (err) => {
    if (err) throw err;
    console.log("数据已写入文件");
  });
  console.timeEnd("getAssetsByCreator"); // 结束计时
};
getAssetsByCreator();

输出

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

代码

        {
            NFTAddress: 'J61tzxTJ1gqe1Z8orSQtNmvZUG27fokmcPcobdB3sZXz',
      ownerAddress: 'Dar5nrE6XWqv9vAi9o6enUQsamEJKq2zgxjNywncZpYj'
    },

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

结论

在这篇博客文章中,我们讨论了如何使用DAS API检索NFT收藏品持有者的信息。借助DAS API,你可以轻松获得有关NFT及其所有者的有价值信息。无论你是想分析用户行为还是跟踪你的NFT分布,DAS API都提供了一个方便的解决方案。你可以今天就免费开始使用DAS API,访问dev.helius.xyz并注册一个计划。

参考

DAS文档(Helius):https://docs.helius.dev/compression-and-das-api/digital-asset-standard-das-api

  • 原文链接: helius.dev/blog/nft-hold...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/