НОВОЕ: Helius приобретает Light Protocol
как получить список владельцев NFT из коллекции
Блог/Разработка

Solana Dev101 — как получить список владельцев коллекции NFT (снимок)

Инженер по взаимодействию с разработчикамиOwen Venter в XOwen Venter в LinkedIn
Чтение: 3 мин

Введение

Если вы хотите узнать, как создавать снимки списка владельцев коллекции 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 и получайте уведомления о наших публикациях

Увеличенное изображение