NEU: Helius übernimmt Light Protocol
So prägst du ein Solana-NFT
Blog/Entwicklung

Solana Dev 101 – So prägst du ein NFT auf Solana

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

GM! In diesem Blog tauchen wir in die Welt der Non-Fungible Tokens (NFTs) auf Solana ein.

Am Ende dieses Beitrags kennst du den gesamten Ablauf und kannst mit JavaScript eigene NFTs auf Solana erstellen.

Wenn du Fragen hast, tritt dem Helius-Discord bei oder markiere Helius auf Twitter, um Hilfe zu erhalten.

Voraussetzungen installieren:

Bevor wir beginnen, stelle sicher, dass Node.js und npm auf deinem Rechner installiert sind. Du kannst sie hier herunterladen.

Schritt 1: Abhängigkeiten installieren

Zuerst müssen wir die erforderlichen Abhängigkeiten installieren.

Führe die folgenden Befehle in deinem Terminal aus, um die Solana JavaScript API und die Metaplex-JavaScript-Bibliothek zu installieren:

Code
npm install @solana/web3.js @metaplex-foundation/js

Schritt 2: Abhängigkeiten importieren

Als Nächstes erstellen wir eine neue Datei namens mintNFTs.js und importieren die erforderlichen Abhängigkeiten:

Code
const { Keypair, Connection } = require('@solana/web3.js');
const { Metaplex,keypairIdentity, bundlrStorage,toMetaplexFile } = require('@metaplex-foundation/js');
const {fs} = require('fs');

Schritt 3: Wallet erstellen, Verbindung initialisieren und Metaplex-Instanz erstellen

Wir müssen eine Solana-Wallet erstellen, mit der wir das NFT prägen und verwahren. Dafür verwenden wir die Solana CLI-Tools. Führe den folgenden Befehl im Terminal aus, um eine neue Wallet zu erstellen. Diese Wallet wird als JSON-Datei mit der Wiederherstellungsphrase gespeichert.‍

Code
solana-keygen new

‍Du kannst sie in eine Browser-Wallet-Erweiterung wie Phantom oder Backpack importieren.

Jetzt initialisieren wir eine Verbindung zum Solana-Cluster. Wir verwenden Helius, um uns mit einem Mainnet-Cluster zu verbinden. Das ist schneller als das öffentliche RPC, das stark ratenbegrenzt ist und keine Archivfunktionen bietet. ( https://api.mainnet-beta.solana.com ). Wenn du statt des Standard-RPC ebenfalls einen schnelleren Premium-RPC-Dienst nutzen möchtest, kannst du hier ein kostenloses Helius-Konto erstellen.

Anschließend erstellen wir aus der Wiederherstellungsphrase der gerade erstellten Wallet ein Wallet-Schlüsselpaar.

Code
async function createMetadata(imageName) {

  // Create an image buffer
  const metadataURI = await metaplex.nfts().uploadMetadata({
    name: "Helius NFT",
    description: "Helius NFT created in the SolanaDev 101 course",

    // Image: await uploadIMG(imageName),
    image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
    attributes: [
      { trait_type: "Test", value: "Yes" },
      { trait_type: "Logo", value: "Helius" },
    ],
  });
  return metadataURI;
}

Im obigen Code erstellen wir eine Instanz des Metaplex SDK, eines Toolkits für die Interaktion mit dem Metaplex-Protokoll. Anschließend konfigurieren wir die Instanz mit einer Verbindung zu einem Solana-Cluster, der Wallet des Benutzers und einem Speicheranbieter. .use(bundlrStorage()) konfiguriert Bundlr als Speicheranbieter. Dort werden die Metadaten und Assets der NFTs gespeichert.

Schritt 4: NFT-Metadaten erstellen und hochladen

In diesem Schritt erstellen wir mit der Funktion createMetadata() die NFT-Metadaten und das Bild und laden beides hoch.

Das Bild gehört zu den wichtigsten Bestandteilen eines NFT. In diesem Beispiel verwenden wir dieses Bild des Helius-Logos. Füge das gewünschte Bild unbedingt dem Verzeichnis hinzu, in dem du die Datei mintNFT.js erstellt hast.

Diese Funktion liest zunächst die mit imageName angegebene Bilddatei über fs ein. Anschließend konvertiert sie das Bild mit toMetaplexFile() in ein für Metaplex geeignetes Format.  Danach laden wir die Metadaten mit der Funktion metaplex.nfts().uploadMetadata() hoch.

Die Metadaten enthalten wichtige Details zu unserem NFT: seinen Namen, eine Beschreibung, das vorbereitete Bild und mehrere Attribute mit zusätzlichen Informationen zum NFT. Du kannst viele weitere Daten in dein NFT aufnehmen. Mehr über den Metaplex-NFT-Standard erfährst du hier.

Nachdem die Metadaten erfolgreich hochgeladen wurden, gibt die Funktion deren URI zurück. Sie verweist auf den Online-Speicherort der Daten.

Code
async function createMetadata(imageName) {

  // Create an image buffer
  const metadataURI = await metaplex.nfts().uploadMetadata({
    name: "Helius NFT",
    description: "Helius NFT created in the SolanaDev 101 course",

    // Image: await uploadIMG(imageName),
    image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
    attributes: [
      { trait_type: "Test", value: "Yes" },
      { trait_type: "Logo", value: "Helius" },
    ],
  });
  return metadataURI;
}

Schritt 5: NFT prägen

Jetzt prägen wir das NFT. Dafür erstellen wir eine Funktion namens createNFT(). Zuerst rufen wir die Funktion createMetadata() mit "./heliusLogo.png" als Argument auf. Das ist der Pfad zur Bilddatei.

Anschließend prägen wir das NFT, indem wir metaplex.nfts().create() aufrufen. Diese Funktion erhält ein Objekt mit mehreren Eigenschaften: die Metadaten-URI, den Namen des NFT, eine Verkaufsgebühr – hier 5 % – und ein Array von Erstellern. Jedes Erstellerobjekt enthält eine Adresse und den prozentualen Anteil an den Lizenzgebühren, den die jeweilige Wallet erhalten soll.

Nachdem das NFT erfolgreich erstellt wurde, protokolliert die Funktion seine Mint-Adresse. Diese Mint-Adresse identifiziert das NFT eindeutig auf der Blockchain. Du kannst die Adresse kopieren und das NFT in einem Block-Explorer wie Orb aufrufen.

Code
async function createNFT() {
  // Create and upload the metadata
  const metadata = await createMetadata("./heliusLogo.png");
  // Create the NFT
  const nft = await metaplex.nfts().create({
    uri: metadata.uri,
    name: "Helius NFT",
    seller_fee_basis_points: 500, // 5%
    creators: [{ address: wallet.publicKey, verified: true, share: 100 }],
  });

  // Log the NFT mint address
  console.log("NFT:", nft.mintAddress.toBase58());
}
createNFT();

Wenn du diesen Code mit node mintNFT.js ausführst, wird das NFT erstellt, das du hier sehen kannst.

Fazit

Glückwunsch! Du hast gerade ein NFT erstellt. Ich hoffe, dieses Tutorial hat dir den Einstieg in NFTs auf Solana erleichtert. NFTs sind ein grundlegender Bestandteil des Solana-Ökosystems. Deshalb ist es eine wertvolle Fähigkeit, ihren Aufbau und ihre Erstellung zu verstehen.

Den vollständigen Code findest du hier. Viel Spaß beim Programmieren!

Quellen:

‍

Helius abonnieren

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

Vergrößertes Bild