NUEVO: Helius adquiere Light Protocol
cómo obtener los propietarios de los NFT de una colección
Blog/Desarrollo

Solana Dev101: Cómo obtener los propietarios de una colección de NFT (instantánea)

Ingeniero de experiencia para desarrolladoresOwen Venter en XOwen Venter en LinkedIn
3 min de lectura

Introducción

Si quieres saber cómo capturar instantáneas de los propietarios de una colección de NFT, estás en el lugar correcto. Con Helius, puedes tomar estas instantáneas fácilmente mediante la DAS API.

Para seguir este tutorial, necesitarás una cuenta de Helius y una clave de API, que puedes obtener gratis al registrarte aquí.  Si tienes alguna pregunta, puedes consultar la documentación relacionada al final de la publicación. También puedes unirte a la comunidad de Helius en Discord o etiquetar a Helius en Twitter para obtener más ayuda.

Uso de la DAS API

La API Digital Asset Standard (DAS) es una especificación y un sistema de código abierto que ofrecen una interfaz unificada para interactuar con activos digitales (tokens, NFT, etc.). Usaremos la DAS API para obtener los propietarios de activos específicos. Podemos usar distintas llamadas según el método de agrupación de una colección.

Obtener los NFT de una colección mediante su dirección (getAssetByGroup)

La versión más reciente del estándar de NFT de Metaplex utiliza colecciones certificadas. Para ello, se crea un NFT que representa una colección. Esto permite categorizar los NFT y verificar la información de la colección en la blockchain. Para recuperar todos los NFT de una colección, puedes usar la dirección de la colección, que es la dirección de acuñación del NFT de la colección. Si tienes un NFT que pertenece a una colección, puedes consultar sus metadatos y encontrar la dirección de la colección en la sección de la colección.

Una vez que obtengas la dirección, podemos usar el método getAssetByGroup de DAS para buscar todos los NFT relacionados. El siguiente fragmento de código muestra cómo usar la paginación para recorrer los 10 000 NFT de Mad Lads. En la sección de parámetros de la llamada a la API, especificaremos que usamos una colección como clave de agrupación y proporcionaremos la dirección de la colección como valor de agrupación.

Código
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();

Obtener los NFT de una colección según el primer creador verificado (getAssetByCreator)

Para tomar una instantánea con el primer creador verificado, debes usar la función 'getAssetByCreator' y proporcionar la dirección del creador en los parámetros. Puedes encontrar la dirección del creador de un NFT en la sección de creadores de sus metadatos on-chain.

Después de verificar al primer creador, establece la dirección como la dirección del creador en la llamada a getAssetsByCreator.

Código
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();

Resultado

En todos los fragmentos de código anteriores, mostramos la dirección y el propietario correspondiente de cada NFT.

Código

 		{
			NFTAddress: 'J61tzxTJ1gqe1Z8orSQtNmvZUG27fokmcPcobdB3sZXz',
      ownerAddress: 'Dar5nrE6XWqv9vAi9o6enUQsamEJKq2zgxjNywncZpYj'
    },

Puedes modificar este resultado para agregar cualquier información necesaria, como el nombre, la descripción o los atributos. En nuestra documentación encontrarás información detallada sobre los datos incluidos en la respuesta de la API getAssetsByGroup.

Conclusión

En esta publicación, explicamos cómo recuperar información sobre los propietarios de una colección de NFT mediante la DAS API. Con la DAS API, puedes obtener fácilmente información valiosa sobre los NFT y sus propietarios. Ya sea que quieras analizar el comportamiento de los usuarios o hacer un seguimiento de la distribución de tus NFT, la DAS API ofrece una solución práctica. Puedes comenzar a usar la DAS API gratis hoy mismo. Visita nuestro sitio web y regístrate en un plan.

Referencias

Suscríbete a Helius

Mantente al día con las novedades del desarrollo en Solana y recibe actualizaciones cuando publiquemos

Imagen ampliada