Wie wir 50K einzigartige NFTs für Polkadot Decoded 2022 erstellt haben (in einem Monat)

Übersetzt von Daredevil3x7 und erstellt mit der Unterstützung des Kusama Treasury via WagMedia

Mitwirkende im Beitrag:

Simon Telezhkin, Parity Technologies Visual 3D Designer

Ignasi Albero, Web3 Foundation Brand Lead

Hamid Alipour, Parity Technologies Fullstack Product Engineer

Für Polkadot Decoded 2022 hatten wir die Idee, den Teilnehmern sowohl vor Ort als auch online etwas ganz Besonderes zu bieten: ihr eigenes, einzigartiges NFT! Lies weiter, um mehr über dieses Geschenkkonzept zu erfahren und wie unser Team in nur einem Monat eine Sammlung von 50.000 verschiedenen Avataren erstellt hat, die die Vielfalt und Innovation des Polkadot-Ökosystems repräsentieren.

Die Idee hinter den Veranstaltungs NFTs

Jeder liebt es, auf Veranstaltungen coole Aufkleber zu bekommen, aber für Polkadot Decoded 2022 wollten wir den Teilnehmern etwas Einzigartiges mit auf den Weg geben.

Wir haben uns für ein NFT entschieden, das nach dem Verfahren generiert wird, so dass jeder Teilnehmer seinen eigenen, einzigartigen Avatar haben kann - so entstand eine riesige Sammlung von Community-Mitgliedern, die an Polkadot Decoded teilgenommen haben. Alle NFTs dienten als Nachweis für die Teilnahme an der Veranstaltung. Wir wollten den Leuten ein Sammlerstück geben, das sie an die Veranstaltung erinnert. Deshalb wurden die NFTs so gestaltet, dass sie nicht verkauft werden können (du würdest dein Armband für dein Lieblingsmusikfestival auch nicht verkaufen, oder?).

Die Seltenheit der Souvenirs hing davon ab, wie früh sich die Teilnehmer/innen angemeldet hatten. Diejenigen, die zu den ersten 1.000 Anmeldungen gehörten, bekamen als Erste die einzigartigsten NFTs, die sie über einen Code, der während des Polkadot Decoded-Events per E-Mail verschickt wurde, anfordern konnten.

Wie Simon die 50.000 Polkadot Decoded NFTs entworfen hat

Simon Telezhkin, der erst wenige Wochen vor der Veranstaltung zu Parity gekommen war, wurde direkt ins Geschehen einbezogen, als er beauftragt wurde, 50.000 einzigartige NFTs für Polkadot Decoded zu erstellen.

Er hatte einen Plan, um 50.000 NFTs in dem vorgegebenen Zeitrahmen zu erstellen. Zwischen der Erstellung, dem Rendering und der Fertigstellung der Bilder liegen leicht Monate an Arbeit - und Simon hatte nur einen Monat bis zum Event.

Beim Brainstorming über die Möglichkeiten, Zeit zu sparen, dachte er an das Rendern mit Masken, um bestimmten Bildelementen eine andere Farbe zu geben, oder an den Einsatz von Renderfarmen. Aber beide Methoden könnten dazu führen, dass noch mehr Bilder erstellt werden müssen, mit Unmengen von Daten gearbeitet werden muss oder dass am Ende NFTs entstehen, die sich in ihrer Form zu sehr ähneln (nur mit Farbunterschieden).

So kam er zur Pixel-Kunst - eine lustige Stilisierung, die allen Anforderungen des NFT-Projekts entsprach.

Simon hat die Teile mit dem kostenlosen, offen zugänglichen Tool Blender erstellt. Obwohl er Houdini als DCC (Digital Content Creation) bevorzugt, erwies sich Blender als großartiges Werkzeug für die Erstellung modularer Teile und das Rendering. Hier siehst du, wie der Erstellungsprozess aussah:

Schritt 1: Erstellen eines modularen Systems für die Charaktere

Simon begann damit, die verschiedenen Teile der modularen Droidenfiguren zu trennen:

  • Oberer Teil mit dem Gesicht und der Maske
  • Unterer Teil mit dem Kinn, dem Hals und den Schultern
  • Mittlerer Teil mit den Ohren, dem Visier und den Seiten
  • Hinterer Teil des Kopfes
  • Kleidung

Wenn du 50K Bilder aus 5 Modulen erstellst, brauchst du nur 9 Variationen für jedes Modul, um (9^5=)59049 Variationen zu erhalten. Allerdings ist nicht jedes Modul gleich. Wenn du nur die Ohren, die Haare und die Kleidung änderst, aber den oberen und unteren Teil des Gesichts gleich lässt, können zwei Versionen ziemlich ähnlich aussehen. Als MVP funktioniert das, aber Simon wollte unbedingt mehr Vielfalt in die Charaktere bringen. Das führt uns zum nächsten Schritt.

Schritt 2: Kombinieren aller modularen Teile

Es ist zwar unmöglich, das Sichtbarkeitsattribut für mehrere Objekte fünfzigtausend Mal manuell zu ändern, aber du kannst das Plug-in FZRandomizer 3 installieren - ein Blender-Add-on, mit dem du Charaktere und andere Mesh-Objekte randomisieren kannst. Auch wenn das Plugin bei der Arbeit mit 50K Bildern nicht sehr stabil ist, ist es schnell, kann JSON-Dateien erstellen und mit Wahrscheinlichkeiten arbeiten.

Schritt 3: Ein bisschen YouTube und ein bisschen Open-Source

Für das Rendering entschied sich Simon für eine Kombination aus Rendering von Licht in Cycles, anschließender Konvertierung in Shader-Daten und erneutem Rendering. Diese Idee wurde von diesem Tutorial von Mezaka inspiriert. Während Mezakas Plugin nach 3000 Bildern langsamer wurde, kam Open Source zur Hilfe. Mit ein paar Änderungen im Code konnte Simon die Shader überarbeiten und Treiber implementieren, um Farben und Materialien je nach Rendering des Bildes zu ändern.

Paletten, Einzelstücke und mehr: Die NFT-Sammlung einrichten

NFTs (kurz für Non-Fungible Tokens) sind einzigartige Assets, die nicht austauschbar sind und mit denen das Eigentum an jedem einzigartigen, nicht-fungiblen Vermögenswert auf dem Blockchain-Ledger registriert werden kann. Im Substrate-Framework wird das Blockchain-Modul (Palette), das NFT Assets speichert und verwaltet, "Uniques" genannt - und es ist eine viel sicherere Art des Minting.

Während die meisten Blockchain-Netzwerke Smart Contracts verwenden, die auf der Blockchain laufen, ist die Uniques-Palette in Polkadot ein Modul, das Teil der Blockchain selbst ist und grundlegende Funktionen für die Erstellung von NFT-Sammlungen und Gegenständen bietet. Dies bringt ein höheres Maß an Sicherheit mit sich, da es nur eine Implementierung in der Chain gibt, die auf ihre Sicherheit geprüft und bereits von vielen Projekten getestet wurde.

Im Gegensatz dazu verwenden Smart-Contract-basierte Ökosysteme für jedes NFT-Projekt einen eigenen Smart Contract. Dadurch erhöht sich die Möglichkeit von Fehlern/Hintertüren, die während der Entwicklung entstanden sein könnten, weshalb jedes Projekt separat geprüft und verifiziert werden muss.

Eine weitere großartige Eigenschaft der Uniques-Palette ist, dass es für jeden sehr einfach ist, seine eigene NFT-Sammlung auf der Chain zu erstellen, ohne viel zu entwickeln oder sich auf Drittentwickler zu verlassen, um Smart Contracts zu erstellen (da es nicht nötig ist, Smart Contracts zu entwickeln und einzusetzen).

Für die Polkadot Decoded NFTs haben wir uns für die Uniques-Palette entschieden, damit wir uns voll und ganz auf die Kunstwerke konzentrieren konnten und nicht auf die Entwicklung von Smart Contracts. Schließlich war die Veröffentlichung von 50.000 NFTs an sich schon genug Arbeit. Glücklicherweise war dies nicht unsere erste Sammlung dieser Größenordnung, so dass wir auf die Automatisierungs-Tools zurückgreifen konnten, die wir für frühere Sammlungen entwickelt hatten (lies weiter, um mehr über diese Open-Source-Tools zu erfahren).

Nachdem wir uns für die Uniques-Palette entschieden hatten, blieb nur noch die Frage, ob wir die NFT-Kollektion auf Polkadot oder Kusama minten sollten. Die Palette wird derzeit sowohl auf Polkadot (Statemint Parachain) als auch auf Kusama (Statemine Parachain) als Modul auf Common Good Parachains eingesetzt. Kusama erwies sich zu diesem Zeitpunkt als die kostengünstigste Option.

💡 Gut zu wissen

Die Uniques-Palette bietet die wichtigsten NFT-Funktionen und ermöglicht es jedem, seine eigene NFT-Sammlung zu erstellen. In der nächsten Version der Palette, "Uniques V2", werden weitere Kernfunktionen hinzugefügt. Die Kernfunktionalität der Palette soll beibehalten werden und kann durch Community Parachains für individuellere Anwendungsfälle erweitert werden, z. B. für Composable NFTs und Gaming. Erfahre mehr über NFT-Parachains.

Zeit für Hamid, die 50K NFTs zu minten!

Nachdem die Artworks fertig waren, war es Zeit für Hamid, die NFTs zu minten.

Manuell wäre das Minting von 50.000 einzigartigen NFTs auf der chain ein sehr zeitaufwändiger und mühsamer Prozess. Zum Glück hatte Hamid ein Tool, mit dem er den gesamten Minting-Prozess automatisieren konnte.

Wir führen dich durch die manuellen Schritte, die nötig sind, um eine Sammlung zu erstellen und die NFT Items zu minten und zeigen dir dann, wie das cli Tool verwendet wurde, um den Mint-Prozess zu automatisieren.

Schritt 1: Eine Kollektion erstellen

Mit Hilfe der Unique-Palette haben wir einen Aufruf uniques.create erstellt, der eine Sammlung mit einer collection id erzeugt, die verwendet werden kann, um die Artikel in dieser Kollektion zu minten.

Schritt 2: Verteile die NFTs

Mit den E-Mail-Adressen aller Polkadot Decoded-Teilnehmer konnten wir einen geheimen Geschenkcode verschicken, den die Teilnehmer auf dieser Seite verwenden konnten, um ihr NFT zu erhalten. Jeder Code bestand aus Zufallszahlen (mehr über den Erstellungsprozess hier), die als Seeds im Keyring verwendet wurden, um die Schlüsselpaare des Accounts und die dazugehörigen Adressen abzuleiten, die dann als Adresse des Besitzers jedes vorgefertigten NFTs verwendet werden konnten.

Schritt 3: Alle NFTs minten

Mit dem uniques.mint-Aufruf ist es an der Zeit, endlich alle NFTs zu minten. Während des Mintens wird jeder Gegenstand einer Adresse zugeordnet. Wenn die NFT-Geheimcodes beansprucht werden, prüft die Claim-App, ob die entsprechende Adresse von diesem Geheimcode abstammt, und überträgt alle NFTs und Assets. Mit der Claim-App kann der Empfänger entweder einen neuen Account über die App erstellen oder einen bestehenden Account aus der Polkadot-JS Extension oder der Parity Signer Wallet einer anderen Person auswählen.

Schritt 4: Alle Metadaten festlegen

Nachdem die NFT-Elemente auf der Blockchain erstellt (auch "minted" genannt) wurden, müssen die Metadaten für jedes Element festgelegt werden. Diese Metadaten verweisen auf eine JSON-Datei, die den NFT-Namen, die Beschreibung und die Bild-URL enthält. Wir haben das folgende Format verwendet, das von den meisten Wallets und UIs unterstützt wird.

{

"name": "name of the item",

"description": "A human readable description of the item. Markdown is supported."

"image": "This is the URL to the image of the item. Can be just about any type of image (including SVGs, which will be cached into PNGs by OpenSea), and can be IPFS URLs (ipfs://ipfs/) or paths.",

}

Schritt 5: Metadaten sicher speichern

Für die Speicherung der Metadaten und der zugehörigen Assets haben wir einen dezentralisierten Speicher wie IPFS (InterPlanetary File System) verwendet. Für diese Sammlung haben wir die Metadaten im IPFS gespeichert und Pinata verwendet, um unsere Assets im IPFS zu speichern.

Das Pinning auf IPFS bezieht sich auf das Konzept, dass ein Server oder eine Gruppe von Servern garantiert, dass die Informationen immer gespeichert bleiben, damit die Dateien nie aus dem Netzwerk entfernt werden.

Da IPFS ein dezentralisiertes Peer-to-Peer-Speichersystem ist und die Daten auf den IPFS Nodes zwischengespeichert werden, kann es vorkommen, dass die Nodes die alten Daten löschen, um Platz für neue Inhalte zu schaffen. Pinning garantiert, dass zu jedem Zeitpunkt Dateien auf mindestens einem (oder mehreren) Server(n) verfügbar sind, auf die das IPFS-Netzwerk zugreifen kann. Du kannst entweder deinen eigenen IPFS-Server hosten oder einen Drittanbieterdienst wie Pinata nutzen, der Pinning als Service anbietet.

Wenn du Assets speicherst und anheftest, erhältst du eine Adresse für diese Dateien im IPFS. Diese werden CIDs (Content IDs) genannt und können verwendet werden, um die Assets über IPFS-Gateways abzurufen.

Schritt 6: CIDs für Metadaten erstellen

Gehen wir alle Schritte der Reihe nach durch:

  • Lade das Bild für jedes NFT auf IPFS hoch
  • Abrufen des CID des Bildes im IPFS
  • Erstelle eine JSON-Datei mit dem Namen, der Beschreibung und einem Link zum CID des Bildes
  • Lade diese JSON-Datei in den IPFS hoch
  • Erhalte die CID der Datei metadata.json im IPFS
  • Verwende den Aufruf setMetadata der Uniques-Palette, um die NFT-Metadaten auf die IPFS-CID zu setzen.

Ein Beispiel für Metadaten aus unserer Kampagne:

{

"name": "Polkadot Decoded 2022 POAPs Tier 1",

"image": "ipfs://ipfs/QmPotLZPgW9AvNzuNGB24zVqbWY9eP7Sbrzk3KCdydyB66",

"description": "The Polkadot Decoded NFTs were minted and distributed as POAPs for Polkadot Decoded v3 that was held on June 29th and 30th, 2022, with a fully hybrid experience of online and in-person events. All those who registered were able to claim a one of a kind, unque NFT that they could additionally use as their avatar for the conference. Each tier varied in how rare the NFTs were, with tier 1 being the most rare, then tier 2, tier 3, and so on."

}

Wenn Wallets oder NFT-UIs ein NFT abrufen und präsentieren wollen, gehen sie zur Blockchain und suchen die CID der metadata.json-Datei, die auf der Uniques-Palette gespeichert ist. Dann analysieren sie die Informationen aus dieser Datei - mit der "Bild"-CID, um die eigentlichen NFT-Assets abzurufen - und präsentieren sie auf der Benutzeroberfläche.

Schritt 7: Automatisieren mit unserem Cli-Tool

Wenn alle NFTs gleich wären, müssten wir nur ein einziges Metadatum für die gesamte Sammlung setzen, indem wir uniques.setCollectionMetadata aufrufen. Für unsere riesige Sammlung mussten wir jedoch 50.000 Bilder erstellen und in das IPFS hochladen, ihre CIDs abrufen und 50.000 Metadaten für jede NFT auf der Blockchain durch den Aufruf von uniques.setMetadata erstellen.

Dies manuell zu tun, wäre ein ziemlicher Aufwand gewesen. Zum Glück mussten wir das nicht tun, denn unser entwickeltes Cli-Tool hat diesen Prozess automatisiert.

Wie wir das cli-Tool verwendet haben:

  • Lege die NFT-Informationen in einer .csv-Datei ab
  • Definiere den Mint-Workflow in einer JSON-Datei, die so konfiguriert ist, dass sie diese .csv-Datei als Datendatei verwendet
  • Rufe den Cli auf, um den definierten Workflow auszuführen

Diese Schritte automatisieren den gesamten Arbeitsablauf: vom Anlegen der Sammlung über das Minten von Gegenständen, das Erzeugen von Geschenk-Geheimnissen und Adressen, das Hochladen von Bildern in IPFS, das Erzeugen von Metadaten für jedes NFT, das Hochladen in IPFS und schließlich das Einstellen der Metadaten in der Unique-Palette für jeden Gegenstand wie oben beschrieben.

Bei all diesen Vorgängen würde das Minten immer noch etwa eine Sekunde pro NFT dauern, sodass die Skripte insgesamt fast 13 Stunden lang liefen! Zum Glück war alles automatisiert, so dass der Mint-Prozess über Nacht fertig war und am ersten Tag von Polkadot Decoded verteilt werden konnte!

Projekt abgeschlossen: Triff die glücklichen Besitzer

Nach Polkadot Decoded wurden 25.000 NFTs in verschiedenen Stufen angefordert, was zu vielen glücklichen neuen Besitzern führte! Die gesamte Sammlung kannst du dir hier ansehen. Unten siehst du einige der geminteten NFTs und ihre neuen Besitzer.

0

Das ist der offizielle WagMedia Space Germany! Hier werden interessante und lesenswerte DotSama-Artikel durch die Wag-Media community übersetzt und öffentlich zur Verfügung gestellt. Mitmachen? Trete unserem Discord bei und werde Teil der größten News Community im DotSama Universum.

0 comments

Das ist der offizielle WagMedia Space Germany! Hier werden interessante und lesenswerte DotSama-Artikel durch die... Show More