
Solana Dev101 — Como obter os detentores de uma coleção de NFTs (Snapshot)
Introdução
Se você quer saber como capturar snapshots dos proprietários de uma coleção de NFTs, está no lugar certo. Com a Helius, é fácil criar esses snapshots usando a DAS API.
Para acompanhar este tutorial, você precisará de uma conta da Helius e de uma chave de API, que podem ser obtidas gratuitamente ao se cadastrar aqui. Se tiver alguma dúvida, consulte a documentação relacionada ao final do post. Além disso, participe da comunidade da Helius no Discord ou marque a Helius no Twitter para obter ajuda adicional.
Como usar a DAS API
A API Digital Asset Standard (DAS) é uma especificação e um sistema de código aberto que oferecem uma interface unificada para interagir com ativos digitais (tokens, NFTs etc.). Usaremos a DAS API para obter os proprietários de ativos específicos. Há diferentes chamadas que podemos usar, dependendo do método de agrupamento da coleção.
Como obter NFTs de uma coleção usando o endereço da coleção (getAssetByGroup)
A versão mais recente do padrão de NFTs da Metaplex utiliza coleções verificadas. Para isso, um NFT é criado para representar uma coleção, permitindo que os NFTs sejam categorizados e que as informações da coleção sejam verificadas na blockchain. Para recuperar todos os NFTs de uma coleção, é possível usar o endereço da coleção, que corresponde ao endereço de mint do NFT da coleção. Se você tiver um NFT que pertence a uma coleção, consulte os metadados dele e localize o endereço da coleção na seção de coleção.
Depois de obter o endereço, podemos usar o método getAssetByGroup da DAS para pesquisar todos os NFTs relacionados a ele. O trecho de código a seguir mostra como usar a paginação para percorrer todos os 10.000 NFTs da coleção Mad Lads. Na seção params da chamada de API, especificaremos que estamos usando uma coleção como chave de agrupamento e, em seguida, informaremos o endereço da coleção como valor do grupo.
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();Como obter NFTs de uma coleção com base no primeiro criador verificado (getAssetByCreator)
Para criar um snapshot usando o primeiro criador verificado, use a função 'getAssetByCreator' e informe o endereço do criador nos parâmetros. Você pode localizar o endereço do criador de um NFT na seção de criadores dos metadados on-chain do NFT.
Depois de verificar o primeiro criador, defina o endereço como o endereço do criador na chamada a 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();Saída
Em todos os trechos de código acima, exibimos o endereço e o respectivo proprietário de cada NFT.
{
NFTAddress: 'J61tzxTJ1gqe1Z8orSQtNmvZUG27fokmcPcobdB3sZXz',
ownerAddress: 'Dar5nrE6XWqv9vAi9o6enUQsamEJKq2zgxjNywncZpYj'
},
Você pode modificar essa saída para adicionar qualquer informação necessária, como nome, descrição ou atributos. Informações detalhadas sobre os dados incluídos na resposta da API getAssetsByGroup estão disponíveis em nossa documentação.
Conclusão
Neste post, explicamos como recuperar informações sobre os detentores de uma coleção de NFTs usando a DAS API. Com a DAS API, você pode obter facilmente informações valiosas sobre NFTs e seus proprietários. Seja para analisar o comportamento dos usuários ou acompanhar a distribuição dos seus NFTs, a DAS API oferece uma solução prática. Você pode começar a usar a DAS API gratuitamente hoje mesmo. Basta acessar nosso site e assinar um plano.
Referências
Artigos relacionados
Assine a Helius
Acompanhe as novidades mais recentes do desenvolvimento Solana e receba atualizações quando publicarmos


