
Solana Dev101 — как получить список владельцев коллекции NFT (снимок)
Введение
Если вы хотите узнать, как создавать снимки списка владельцев коллекции NFT, вы обратились по адресу. Helius упрощает этот процесс с помощью DAS API.
Чтобы пройти это руководство, вам понадобятся аккаунт Helius и API-ключ. Их можно получить бесплатно, зарегистрировавшись здесь. Если у вас возникнут вопросы, обратитесь к документации в конце публикации. Также вы можете присоединиться к сообществу Helius в Discord или отметить Helius в Twitter, чтобы получить дополнительную помощь.
Использование DAS API
Digital Asset Standard (DAS) API — это открытая спецификация и система с единым интерфейсом для взаимодействия с цифровыми активами (токенами, NFT и т. д.). Мы будем использовать DAS API, чтобы получать данные о владельцах определенных активов. В зависимости от способа группировки коллекции можно использовать несколько разных запросов.
Получение NFT из коллекции по ее адресу (getAssetByGroup)
В последней версии стандарта Metaplex NFT используются верифицированные коллекции. Для представления коллекции создается NFT. Это позволяет классифицировать NFT и проверять информацию о коллекции в блокчейне. Чтобы получить все NFT из коллекции, можно использовать адрес коллекции — адрес минта NFT этой коллекции. Если у вас есть NFT из коллекции, откройте его метаданные и найдите адрес коллекции в разделе collection.
Получив адрес, мы можем использовать метод DAS getAssetByGroup для поиска всех связанных с ним NFT. В следующем фрагменте кода показано, как с помощью пагинации перебрать все 10 000 NFT Mad Lads. В разделе params вызова API мы укажем коллекцию в качестве ключа группы, а затем передадим адрес коллекции в качестве значения группы.
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'
},
Вы можете изменить вывод и добавить необходимую информацию, например название, описание или атрибуты. Подробные сведения о данных в ответе API getAssetsByGroup доступны в нашей документации.
Заключение
В этой публикации мы рассмотрели, как получить информацию о владельцах коллекции NFT с помощью DAS API. DAS API позволяет легко получать ценные сведения об NFT и их владельцах. Он предоставляет удобное решение как для анализа поведения пользователей, так и для отслеживания распределения ваших NFT. Вы можете начать бесплатно использовать DAS API уже сегодня: посетите наш сайт и выберите план.
Ссылки
Похожие статьи
Подпишитесь на Helius
Следите за новостями разработки на Solana и получайте уведомления о наших публикациях


