NEU: Helius übernimmt Light Protocol
So ermittelst du die NFT-Inhaber einer Sammlung
Blog/Entwicklung

Solana Dev101 – So ermittelst du die Inhaber einer NFT-Sammlung (Momentaufnahme)

Developer Experience EngineerOwen Venter auf XOwen Venter auf LinkedIn
3 Min. Lesezeit

Einführung

Du möchtest Momentaufnahmen der Eigentümer einer NFT-Sammlung erstellen? Dann bist du hier richtig. Mit Helius und der DAS API lassen sich diese Momentaufnahmen ganz einfach erstellen.

Für dieses Tutorial brauchst du ein Helius-Konto und einen API-Schlüssel. Beides erhältst du kostenlos, wenn du dich hier registrierst.  Bei Fragen findest du am Ende des Beitrags weiterführende Dokumentation. Du kannst auch der Helius-Community auf Discord beitreten oder Helius auf Twitter erwähnen, um weitere Hilfe zu erhalten.

Die DAS API verwenden

Die Digital Asset Standard (DAS) API ist eine Open-Source-Spezifikation und ein System, das eine einheitliche Schnittstelle für die Interaktion mit digitalen Assets wie Token und NFTs bereitstellt. Wir verwenden die DAS API, um die Eigentümer bestimmter Assets zu ermitteln. Je nachdem, wie eine Sammlung gruppiert ist, können wir dafür verschiedene Aufrufe verwenden.

NFTs aus einer Sammlung über eine Sammlungsadresse abrufen (getAssetByGroup)

Die neueste Version des Metaplex-NFT-Standards verwendet verifizierte Sammlungen. Dazu wird ein NFT erstellt, das eine Sammlung repräsentiert. So lassen sich NFTs kategorisieren und Sammlungsinformationen auf der Blockchain verifizieren. Um alle NFTs einer Sammlung abzurufen, kannst du die Sammlungsadresse verwenden. Sie entspricht der Mint-Adresse des Sammlungs-NFTs. Wenn du ein NFT aus einer Sammlung hast, findest du die Sammlungsadresse im Sammlungsabschnitt der NFT-Metadaten.

Sobald du die Adresse hast, können wir mit der DAS-Methode getAssetByGroup nach allen zugehörigen NFTs suchen. Der folgende Codeausschnitt zeigt, wie wir mithilfe der Paginierung alle 10000 Mad Lads NFTs durchlaufen. Im Abschnitt params des API-Aufrufs geben wir eine Sammlung als Gruppenschlüssel und anschließend die Sammlungsadresse als Gruppenwert an.

Code
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();

NFTs anhand des ersten verifizierten Erstellers aus einer Sammlung abrufen (getAssetByCreator)

Um eine Momentaufnahme anhand des ersten verifizierten Erstellers zu erstellen, musst du die Funktion 'getAssetByCreator' verwenden und die Adresse des Erstellers in den Parametern angeben. Die Erstelleradresse eines NFTs findest du im Abschnitt für Ersteller in seinen On-Chain-Metadaten.

Nachdem du den ersten Ersteller verifiziert hast, lege seine Adresse beim Aufruf von getAssetsByCreator als Erstelleradresse fest.

Code
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();

Ausgabe

In allen obigen Codeausschnitten geben wir für jedes NFT die Adresse und den zugehörigen Eigentümer aus.

Code

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

Du kannst diese Ausgabe anpassen und weitere benötigte Informationen wie Name, Beschreibung oder Attribute hinzufügen. Ausführliche Informationen zu den Daten in der getAssetsByGroup API-Antwort findest du in unserer Dokumentation.

Fazit

In diesem Blogbeitrag haben wir gezeigt, wie du mit der DAS API Informationen über die Inhaber einer NFT-Sammlung abrufst. Mit der DAS API erhältst du ganz einfach wertvolle Informationen über NFTs und ihre Eigentümer. Ob du das Nutzerverhalten analysieren oder die Verteilung deiner NFTs verfolgen möchtest: Die DAS API bietet dir eine praktische Lösung. Besuche noch heute unsere Website, registriere dich für einen Tarif und nutze die DAS API kostenlos.

Referenzen

Helius abonnieren

Bleib bei der Solana-Entwicklung auf dem Laufenden und erhalte Updates, wenn wir neue Beiträge veröffentlichen

Vergrößertes Bild