本文介绍了如何使用 Shyft 提供的 DAS API 在 Solana 上跟踪 NFT Collection 的持有者。通过 DAS API,开发者可以方便地获取指定 Collection 的所有 NFT,并进一步筛选出唯一的持有者列表,并统计每个持有者拥有的 NFT 数量。Shyft DAS API 简化了在 Solana 上处理数字资产的过程,适用于常规和压缩的 Collection。
在 Shyft,我们每周都会向我们的客户空投我们的 #Solana brainfood 系列文章,不仅发送文章,还发送相应的 NFT。此外,我们还将这些 NFT 分发给 Superteam、Mad Labs 和 Famous Fox Federation 等热门集合的持有者。
为了发送这些 NFT,我们需要收集一份拥有它们的人员名单。不幸的是,没有一个简单的工具可以完成这项工作,所以我们决定创建一个。在今天的指南中,我们将向你展示如何使用 Shyft 的 DAS API 构建一个类似于 https://airdrop.shyft.to/ 的工具。
欢迎你访问 GitHub 上的这个项目 GitHub,如果你觉得它有帮助,请考虑给该仓库加一个星标。
演示
要开始使用,我们需要一些东西。
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 Orca 或 Track votes for Realm proposal on Solana 的其他文章。你还可以在我们的 GitHub 存储库中访问上面提到的项目 here。
我们非常感谢你花时间阅读本文,并且我们衷心希望你喜欢使用 SHYFT 进行构建。
附:如果你喜欢视频内容,你也可以在我们的 YouTube 频道上关注该项目 here。
- 原文链接: blogs.shyft.to/how-to-fe...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!