Zum Hauptinhalt springen

Wie man einen ERC-721-Markt implementiert

Smart Contracts
erc-721
Solidity
Tokens
Fortgeschritten
Alberto Cuesta Cañada
19. März 2020
6 Minuten Lesezeit

In diesem Artikel werde ich Ihnen zeigen, wie man Craigslist für die Ethereum-Blockchain programmiert.

Vor Gumtree, Ebay und Craigslist bestanden Anzeigetafeln meist aus Kork oder Papier. Es gab Kleinanzeigen in Schulfluren, Zeitungen, an Straßenlaternen und in Schaufenstern.

All das änderte sich mit dem Internet. Die Anzahl der Menschen, die eine bestimmte Anzeigetafel sehen konnten, vervielfachte sich um viele Größenordnungen. Dadurch wurden die Märkte, die sie repräsentieren, viel effizienter und skalierten auf globale Größe. Ebay ist ein riesiges Unternehmen, dessen Ursprünge auf diese physischen Anzeigetafeln zurückgehen.

Mit der Blockchain werden sich diese Märkte erneut verändern. Lassen Sie mich Ihnen zeigen, wie.

Monetarisierung

Das Geschäftsmodell eines öffentlichen Blockchain-Anzeigenportals muss sich von dem von Ebay und Co. unterscheiden.

Zunächst gibt es den Aspekt der Dezentralisierung. Bestehende Plattformen müssen ihre eigenen Server warten. Eine dezentrale Plattform wird von ihren Nutzern gepflegt, sodass die Betriebskosten der Kernplattform für den Plattformbetreiber auf null sinken.

Dann gibt es das Frontend, die Website oder Schnittstelle, die den Zugang zur Plattform ermöglicht. Hier gibt es viele Optionen. Die Plattformbetreiber können den Zugang beschränken und jeden zwingen, ihre Schnittstelle gegen eine Gebühr zu nutzen. Die Plattformbetreiber können sich auch entscheiden, den Zugang zu öffnen (Macht dem Volk!) und jedem erlauben, Schnittstellen zur Plattform zu bauen. Oder die Betreiber könnten sich für einen Ansatz in der Mitte dieser Extreme entscheiden.

Führungskräfte mit mehr Vision als ich werden wissen, wie man das monetarisiert. Ich sehe nur, dass es sich vom Status quo unterscheidet und wahrscheinlich profitabel ist.

Darüber hinaus gibt es den Aspekt der Automatisierung und der Zahlungen. Einige Dinge können sehr effektiv tokenisiert (opens in a new tab) und auf einem Anzeigenportal gehandelt werden. Tokenisierte Vermögenswerte lassen sich auf einer Blockchain leicht übertragen. Hochkomplexe Zahlungsmethoden können in einer Blockchain einfach implementiert werden.

Ich wittere hier einfach eine Geschäftsmöglichkeit. Ein Anzeigenportal ohne laufende Kosten kann leicht implementiert werden, wobei komplexe Zahlungswege in jede Transaktion integriert sind. Ich bin sicher, jemand wird eine Idee haben, wofür man das nutzen kann.

Ich bin einfach froh, es zu bauen. Werfen wir einen Blick auf den Code.

Implementierung

Vor einiger Zeit haben wir ein Open-Source-Repository (opens in a new tab) mit Beispielimplementierungen für Geschäftsfälle und anderen Extras gestartet, schauen Sie es sich gerne an.

Der Code für dieses Ethereum-Anzeigenportal (opens in a new tab) ist dort zu finden, bitte nutzen und testen Sie ihn ausgiebig. Seien Sie sich nur bewusst, dass der Code nicht geprüft (audited) wurde und Sie Ihre eigene Sorgfaltsprüfung durchführen müssen, bevor Sie Geld hineinfließen lassen.

Die Grundlagen des Portals sind nicht komplex. Alle Anzeigen im Portal sind lediglich ein Struct mit ein paar Feldern:

struct Trade {
  address poster;
  uint256 item;
  uint256 price;
  bytes32 status; // Offen, Ausgeführt, Abgebrochen
}

Es gibt also jemanden, der die Anzeige aufgibt. Einen Artikel, der zum Verkauf steht. Einen Preis für den Artikel. Den Status des Handels, der offen, ausgeführt oder abgebrochen sein kann.

All diese Handelstransaktionen werden in einem Mapping gespeichert. Weil in Solidity scheinbar alles ein Mapping ist. Und auch, weil es praktisch ist.

mapping(uint256 => Trade) public trades;

Die Verwendung eines Mappings bedeutet lediglich, dass wir uns vor dem Aufgeben einer Anzeige eine ID dafür ausdenken müssen, und wir müssen die ID einer Anzeige kennen, bevor wir damit arbeiten können. Es gibt mehrere Möglichkeiten, dies entweder im Smart Contract oder im Frontend zu handhaben. Fragen Sie gerne nach, wenn Sie Hinweise benötigen.

Als Nächstes stellt sich die Frage, was diese Artikel sind, mit denen wir handeln, und was diese Währung ist, die zur Bezahlung der Transaktion verwendet wird.

Für die Artikel verlangen wir lediglich, dass sie die ERC-721 (opens in a new tab)-Schnittstelle implementieren, was eigentlich nur eine Möglichkeit ist, reale Gegenstände auf einer Blockchain darzustellen, obwohl es am besten mit digitalen Vermögenswerten funktioniert (opens in a new tab). Wir werden unseren eigenen ERC-721-Vertrag im Konstruktor spezifizieren, was bedeutet, dass alle Vermögenswerte in unserem Anzeigenportal im Vorfeld tokenisiert worden sein müssen.

Für die Zahlungen werden wir etwas Ähnliches tun. Die meisten Blockchain-Projekte definieren ihre eigene ERC-20 (opens in a new tab)-Kryptowährung. Einige andere bevorzugen die Verwendung einer etablierten Währung wie DAI. Bei diesem Anzeigenportal müssen Sie sich nur bei der Erstellung entscheiden, was Ihre Währung sein soll. Ganz einfach.

constructor (
  address _currencyTokenAddress, address _itemTokenAddress
) public {
  currencyToken = IERC20(_currencyTokenAddress);
  itemToken = IERC721(_itemTokenAddress);
  tradeCounter = 0;
}

Wir kommen der Sache näher. Wir haben Anzeigen, Handelsartikel und eine Währung für Zahlungen. Eine Anzeige aufzugeben bedeutet, einen Artikel in ein Treuhandkonto (Escrow) zu legen, um sowohl zu zeigen, dass Sie ihn besitzen, als auch, dass Sie ihn nicht zweimal gepostet haben, möglicherweise in einem anderen Portal.

Der folgende Code macht genau das. Er legt den Artikel in ein Treuhandkonto, erstellt die Anzeige und erledigt einige Verwaltungsaufgaben.

Den Handel zu akzeptieren bedeutet, eine Anzeige (einen Handel) auszuwählen, den Preis zu zahlen und den Artikel zu erhalten. Der folgende Code ruft einen Handel ab. Er prüft, ob er verfügbar ist. Bezahlt den Artikel. Ruft den Artikel ab. Aktualisiert die Anzeige.

Schließlich haben wir eine Option für Verkäufer, von einem Handel zurückzutreten, bevor ein Käufer ihn akzeptiert. In einigen Modellen wären Anzeigen stattdessen für eine bestimmte Zeit live, bevor sie ablaufen. Das ist Ihre Entscheidung, abhängig vom Design Ihres Marktes.

Der Code ist dem sehr ähnlich, der zur Ausführung eines Handels verwendet wird, nur dass keine Währung den Besitzer wechselt und der Artikel an den Ersteller der Anzeige zurückgeht.

Das war's. Sie haben das Ende der Implementierung erreicht. Es ist ziemlich überraschend, wie kompakt einige Geschäftskonzepte sind, wenn sie in Code ausgedrückt werden, und dies ist einer dieser Fälle. Sehen Sie sich den vollständigen Vertrag in unserem Repo (opens in a new tab) an.

Fazit

Anzeigenportale sind eine gängige Marktkonfiguration, die mit dem Internet massiv skaliert ist und zu einem enorm beliebten Geschäftsmodell mit einigen wenigen monopolistischen Gewinnern wurde.

Anzeigenportale sind zufällig auch ein einfaches Werkzeug, das sich in einer Blockchain-Umgebung replizieren lässt, mit sehr spezifischen Funktionen, die eine Herausforderung für die bestehenden Giganten möglich machen.

In diesem Artikel habe ich versucht, eine Brücke zwischen der geschäftlichen Realität eines Anzeigenportal-Unternehmens und der technologischen Implementierung zu schlagen. Dieses Wissen sollte Ihnen helfen, eine Vision und einen Fahrplan für die Implementierung zu erstellen, wenn Sie über die entsprechenden Fähigkeiten verfügen.

Wie immer gilt: Wenn Sie etwas Spannendes bauen möchten und sich über einen Rat freuen würden, schreiben Sie mir gerne eine Nachricht (opens in a new tab)! Ich helfe immer gerne.