如何使用 Shyft DAS API 获取 NFT Collection 的所有持有者

  • Shyft_to
  • 发布于 2023-10-14 17:37
  • 阅读 7

本文介绍了如何使用 Shyft 提供的 DAS API 在 Solana 上跟踪 NFT Collection 的持有者。通过 DAS API,开发者可以方便地获取指定 Collection 的所有 NFT,并进一步筛选出唯一的持有者列表,并统计每个持有者拥有的 NFT 数量。Shyft DAS API 简化了在 Solana 上处理数字资产的过程,适用于常规和压缩的 Collection。

如何在 Solana 上跟踪 NFT 集合的持有者

在本集中,我们将了解如何获取 NFT 集合的持有者,由 Shyft DAS RPC 提供支持。

在 Solana 上跟踪 NFT 集合持有者

Shyft,我们每周都会向我们的客户空投我们的 #Solana brainfood 系列文章,不仅发送文章,还发送相应的 NFT。此外,我们还将这些 NFT 分发给 Superteam、Mad Labs 和 Famous Fox Federation 等热门集合的持有者。

为了发送这些 NFT,我们需要收集一份拥有它们的人员名单。不幸的是,没有一个简单的工具可以完成这项工作,所以我们决定创建一个。在今天的指南中,我们将向你展示如何使用 Shyft 的 DAS API 构建一个类似于 https://airdrop.shyft.to/ 的工具。

欢迎你访问 GitHub 上的这个项目 GitHub,如果你觉得它有帮助,请考虑给该仓库加一个星标。

演示

开始之前

要开始使用,我们需要一些东西。

注册你的 SHYFT 帐户并获取你自己的 Shyft API 密钥

x-api-key 是一个身份验证参数,使你可以访问 SHYFT API。

你可以从 [SHYFT 网站](https://shyft.to/get-api-key) 获取你自己的 API 密钥。**

只需在此处使用你的电子邮件 ID 注册 here,你就可以免费获得它。如果你已经拥有 SHYFT API 密钥,请跳过此步骤。

但是 SHYFT API 如何帮助我构建这个?让我们立即开始。

数字资产标准

数字资产标准 (DAS) API 是一种新工具,可以更轻松地处理 Solana 上的Token和 NFT 等项目。该工具将常规资产与压缩资产相结合,这意味着 Solana 开发人员现在可以更快地获得与钱包、集合或权限相关的所有内容。

Shyft 现在支持 DAS API,该 API 为开发人员提供了多种处理数字资产的方法。

  • getAsset(): 通过其 ID 获取资产。
  • getAssetProof(): 通过其 ID 获取压缩资产的 merkle 证明。
  • getAssetsByGroup(): 通过组键和值获取资产列表。此处提供了一个示例 here
  • getAssetsByOwner(): 获取地址拥有的资产列表。
  • getAssetsByCreator(): 获取地址创建的资产列表。
  • getAssetsByAuthority(): 获取具有特定权限的资产列表。
  • searchAssets(): 通过各种参数搜索资产。

有关 Shyft DAS API 的更多详细信息,请访问此 link

快照集合持有者

在我们的场景中,要检索集合的所有持有者,我们首先需要收集属于该集合的所有 NFT。之后,我们筛选 NFT 列表以识别所有独特的持有者。以下代码演示了如何收集与特定集合关联的所有 NFT:

const shyft = new ShyftSdk({
  apiKey: process.env.NEXT_PUBLIC_SHYFT_API_KEY!,
  network: Network.Mainnet,
});

const ITEM_PER_PAGE = 1000;

const collection = 'J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w' // Mad Lads collection

let page: number | boolean = 1;

let allNFTs: DAS.GetAssetResponse[] = [];

// Keep fetching until we receive the final page.
// 持续提取,直到收到最后一页。
while (page) {
  const response = await shyft.rpc.getAssetsByGroup({
    groupValue: collection,
    groupKey: "collection",
    sortBy: { sortBy: "created", sortDirection: "asc" },
    page,
    limit: ITEM_PER_PAGE,
  });

  allNFTs.push(...response.items);

  if (response.total < ITEM_PER_PAGE) {
    page = false;
  } else {
    page++;
  }
}

console.log("Number of NFTs: ", allNFTs.length);

在获得属于该集合的所有 NFT 后,我们可以进行筛选以识别独特的持有者。此外,我们可以选择计算每个持有者拥有的 NFT 数量。

const map = new Map<string, { address: string; total: number }>();

for (const nft of allNFTs) {
  const owner = nft.ownership.owner;

  if (map.has(owner)) {
    map.set(owner, {
      address: owner,
      total: (map.get(owner)?.total ?? 0) + 1,
    });
  } else {
    map.set(owner, { address: owner, total: 1 });
  }
}

// Sort by the quantity of NFTs.
// 按 NFT 的数量排序。
const allHolders = Array.from(map.values()).sort(
  (item1, item2) => item2.total - item1.total
);

结论

就是这样!我们刚刚完成了使用 Shyft DAS API 获取 Solana 中 NFT 集合的所有持有者的过程。此 API 提供了一种更有效的方式来检索 Solana dApp 的资产。该方法适用于常规集合和压缩集合,从而简化了开发人员的过程,他们不再需要处理多个端点。

如果你觉得这篇文章有帮助,请随时浏览我们关于 T rack $Booty token swaps in one hour on OrcaTrack votes for Realm proposal on Solana 的其他文章。你还可以在我们的 GitHub 存储库中访问上面提到的项目 here

我们非常感谢你花时间阅读本文,并且我们衷心希望你喜欢使用 SHYFT 进行构建。

附:如果你喜欢视频内容,你也可以在我们的 YouTube 频道上关注该项目 here

资源

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

0 条评论

请先 登录 后评论
Shyft_to
Shyft_to
在 Solana上更快更智能地构建,使用Shyft的SuperIndexer、gRPC、RPC、API和SDK