In diesem nächsten Abschnitt des Aufbaus auf web3 erläutert der Entwicklungsingenieur von Edge & Node, Nader Dabit, die web3-Stack und wie Entwickler die verschiedenen Aspekte des Aufbaus auf web3 konzipieren können.
Im April 2021 bin ich nach etwa 10 Jahren als traditioneller Full-Stack-Entwickler in Web3 übergegangen. Während ich mich in all diese neuen Technologien und Ideen vertiefte, wollte ich als Erstes wissen, was ist der Web3-Stack?
Beim Aufbau einer traditionellen Web- oder mobilen Anwendung verlasse ich mich oft auf eine Handvoll Bausteine, um die Arbeit zu erledigen.
Unter Verwendung dieser Kernkomponenten kann ich die meisten Arten von Anwendungen entwickeln, die ich möchte, oder zumindest den größten Teil des Weges dorthin zurücklegen. Wie sah das also in Web3 aus?
Es stellt sich heraus, die Antwort darauf ist nicht so einfach, weil:
Es war auch schwieriger für mich zu verstehen, wie man mit dem Aufbau und der Entwicklung von Web3-Anwendungen beginnt, weil ich die Probleme auf die gleiche Weise angegangen bin, wie ich es in der Web2-Welt getan habe.
Nachdem ich in den letzten 8 Monaten gearbeitet, geforscht, experimentiert und Dinge aufgebaut habe, möchte ich teilen, was ich gelernt habe.
Bevor wir den Web3-Stack definieren, versuchen wir, Web3 zu definieren. Es gibt unzählige Definitionen, je nachdem, wen Sie fragen, aber für mich finde ich dieseDefinition spot on:
Web3 ist der Stapel von Protokollen, der vollständig dezentralisierte Anwendungen ermöglicht.
Mit diesem dezentralen Technologiestapel können wir mit dem Aufbau von dezentralen Anwendungen beginnen, die ihre eigenen Implikationen und Merkmale haben.
Einige der durch Web3 ermöglichten Merkmale sind:
Während einige der Anwendungen, die auf dezentralen Technologiestapeln aufgebaut sind, ihre Vorgänger ersetzen werden, wurde auch ein neues Paradigma von Apps durch die neuen Primitiven ermöglicht, die durch Blockchains aktiviert wurden.
Native digitale Zahlungen und öffentliche Backend-Infrastruktur - wie maschinelles Lernen, mobile Geräte, virtuelle Realität und andere technologische Elemente, Plattformen und Bausteine - ermöglichen völlig neue Arten von Anwendungen, die entwickelt werden können, einige davon noch nicht einmal vorgestellt wurden.
Bedeutet das, dass alles durch Web3 ersetzt wird? Nicht unbedingt. Während ich glaube, dass der Aufbau auf einem dezentralen Technologiestapel für bestimmte Arten von Anwendungen eine viel bessere Wahl ist - wie fast jede technische Entscheidung, hängt es davon ab, was Sie bauen.
Lassen Sie uns nun damit beginnen, in den Web3-Stack einzutauchen, der in diese Reihe von Kategorien unterteilt ist:

Es gibt unzählige Blockchains, auf denen Sie bauen können. Es gibt nicht eine einzige, die "die beste" ist, stattdessen sollten Sie die verschiedenen Kompromisse zwischen ihnen in Betracht ziehen.
Eine Sache, die für mich oft wichtig ist, wenn ich etwas Neues lerne, ist die Idee, es anzuwenden Pareto-Prinzipzu dem, was ich lerne. d.h. was ist der effizienteste Weg, das Beste aus dieser Menge an Zeit und Aufwand herauszuholen. Indem ich diesem Gedanken folge, kann ich die meiste Wirkung und Dynamik erzielen, während ich etwas Neues in kürzester Zeit lerne.
In der Blockchain-Welt zu lernen Solidity und das EVM(oder Ethereum Virtual Machine) könnte der beste Einsatz sein, wenn Sie als Blockchain-Entwickler anfangen. Mit diesem Fachwissen (und Technologie-Stack) können Sie nicht nur für Ethereum, sondern auch für andere Ethereum Layer 2s, Sidechains und sogar andere Blockchains wie Avalanche, Fantom und Celo entwickeln.
Das gesagt, Rust beginnt immer beliebter in der Blockchain-Welt zu werden, mit Solana, NEAR, Polkadot und anderen, die erstklassige Rust-Unterstützung haben. Sie können wahrscheinlich nichts falsch machen, wenn Sie eines davon lernen, aber für Anfänger würde ich sagen, dass Solidity heute immer noch die bessere Wahl ist, wenn mich jemand fragt.
Jenseits dieses Ratschlags hier ist eine unvollständige Auswahl von Blockchains, die eine solide Kombination aus Technologie, Nützlichkeit, Gemeinschaft, Momentum und zukünftiger Lebensfähigkeit haben:
Beim Interagieren mit einem Netzwerk müssen Sie einen RPC-Endpunkt verwenden.
Es gibt ein paar Möglichkeiten, wie Sie das tun können:
Öffentliche RPC-Endpunkte werden oft vom Netzwerk zur Verfügung gestellt, aber für die meisten Produktionsdapps möchten Sie Ihre eigenen Endpunkte nutzen, da sie nicht stabil sind oder für die Produktion empfohlen werden.
Es gibt einige RPC-Serviceanbieter da draußen, hier sind ein paar:
Es gibt auch eine Web3 / dezentrale Lösung, Pocket-Netzwerkdas scheint an Fahrt zu gewinnen.
Eine dieser Optionen ist wahrscheinlich eine gute Wahl, um direkt mit Ihrem Netzwerk zu interagieren.
Für die EVM-Entwicklung stehen einige gute Entwicklungsumgebungen zur Verfügung:
Für die Entwicklung von Solana, Ankerwird schnell zum Einstiegspunkt für neue Entwickler. Es bietet eine CLI zum Erstellen, Bauen und Testen von Solana-Programmen sowie Client-Bibliotheken, die Sie zum Erstellen von Front-Ends verwenden können. Es enthält auch eine DSL, die viele der Komplexitäten abstrahiert, mit denen Entwickler häufig konfrontiert sind, wenn sie mit Solana- und Rust-Entwicklung beginnen.
Wo speichern wir Bilder, Videos und andere Dateien in Web3? Das Speichern von so großen Dateien in der Blockchain ist in der Regel prohibitiv teuer, daher wollen wir sie wahrscheinlich nicht dort speichern.
Stattdessen können wir eines von wenigen Dateispeicherprotokollen verwenden:
Neben der Dateispeicherung und der On-Chain-Speicherung müssen Sie möglicherweise auch Daten off-chain speichern. Sie könnten diese Arten von Lösungen ähnlich verwenden, wie Sie eine Datenbank in einem traditionellen Technologie-Stack verwenden würden, aber stattdessen sind sie über n Anzahl von Knoten in einem dezentralen Netzwerk repliziert und daher zuverlässiger (zumindest in der Theorie).
Ein paar Optionen sind:
In Bezug auf die Reife bin ich der Meinung, dass das Ökosystem der Off-Chain-Speicherlösungen noch nicht dort ist, wo es sein muss, um einige der fortschrittlicheren Anwendungsfälle zu realisieren, die einige Entwickler möchten. Einige Herausforderungen hier sind Echtzeitdaten, Konflikterkennung und Konfliktlösung, Schreibberechtigung, Dokumentation und allgemeine Entwicklererfahrung.
Die Integration von Offchain-Datenlösungen in Blockchain-Protokolle ist eine der letzten großen Hürden, die wir überwinden müssen, bevor wir über einen vollständig dezentralen Protokollstapel verfügen, der in der Lage ist, jede Art von Anwendung zu unterstützen.
Es gibt viele Unterschiede in der Art und Weise, wie wir mit Blockchains interagieren und darauf aufbauen im Vergleich zu Datenbanken im traditionellen Technologiestapel. Bei Blockchains werden Daten nicht in einem Format gespeichert, das effizient oder einfach direkt von anderen Anwendungen oder Frontends konsumiert werden kann.
Blockchains sind auf Schreibvorgänge optimiert. Oft hört man von Innovationen, die sich um Transaktionen pro Sekunde, Blockzeit und Transaktionskosten drehen. Blockchain-Daten werden im Laufe der Zeit in Blöcken geschrieben, wodurch alles andere als grundlegende Lesevorgänge unmöglich sind.
In den meisten Anwendungen benötigen Sie Funktionen wie relationale Daten, Sortierung, Filterung, Volltextsuche, Paginierung und viele andere Arten von Abfragefähigkeiten. Um dies zu erreichen, müssen Daten indiziert und organisiert werden, um eine effiziente Abfrage zu ermöglichen.
Traditionell ist das die Arbeit, die Datenbanken im zentralisierten Technologiestapel erledigen, aber diese Indexierungsebene fehlte im Web3-Stack.
Der Graphist ein Protokoll zum Indizieren und Abfragen von Blockchain-Daten, das diesen Prozess wesentlich vereinfacht und eine dezentrale Lösung dafür bietet. Jeder kann offene GraphQL-APIs erstellen und veröffentlichen, sogenannte Subgraphen, um Blockchain-Daten einfach abzufragen.
Um mehr über The Graph zu erfahren, schauen Sie sich die Dokumentation anhieroder mein Tutorialhier.
Identität ist ein völlig anderer Paradigma in Web3. In Web2 basiert die Authentifizierung fast immer auf den persönlichen Informationen eines Benutzers. Diese Informationen werden in der Regel entweder über ein Formular oder einen OAuth-Anbieter gesammelt, der den Benutzer auffordert, sie im Austausch gegen den Zugriff auf die Anwendung herauszugeben.
In web3 dreht sich alles um die Idee von Geldbörsen und Identität.Public-Key-Kryptografie.
Während der Name "Wallet" seinen Zweck erfüllt, habe ich festgestellt, dass Menschen, die neu in Web3 sind, die Terminologie in Bezug auf Authentifizierung und Identität verwirrend finden. Ich hoffe, dass wir in Zukunft einen anderen Weg finden können, um zu vermitteln, was ein Wallet ist, da es Aspekte der Finanzen, aber auch der Identität und Reputation kombiniert.
Als Entwickler müssen Sie verstehen, wie Sie auf verschiedene Weise auf die Brieftasche und Adresse des Benutzers zugreifen und mit ihnen interagieren können.
Auf einer sehr grundlegenden Ebene (und einer sehr häufigen Anforderung) möchten Sie möglicherweise Zugriff auf die Brieftasche des Benutzers anfordern. Dazu können Sie in der Regel auf die Brieftasche des Benutzers im Fensterkontext (Webbrowser) zugreifen oder etwas Ähnliches verwenden wie WalletConnectoderSolanas Wallet Adapter.
Beispielsweise können Sie, wenn sie über eine Ethereum-Brieftasche verfügen, auf window.ethereum zugreifen. Gleiches gilt für Solana (window.solana), Arweave (window.arweaveWallet) und einige andere. WalletConnect eignet sich gut für mobile Webseiten und React Native, da es den Benutzern ermöglicht, sich direkt von ihrem Gerät aus mit ihren mobilen Brieftaschen zu autorisieren.
Wenn Sie die Authentifizierung selbst verwalten möchten, können Sie dem Benutzer erlauben, eine Transaktion zu unterzeichnen und sie dann an anderer Stelle zu entschlüsseln, um den Benutzer zu authentifizieren, aber dies erfordert in der Regel einen Server.Hierist ein Beispiel dafür, wie es mit einer EVM-Brieftasche aussehen könnte und hierist ein Beispiel dafür, wie man dies mit Solana / Phantom macht.
Was ist mit der Verwaltung von Benutzerprofilen auf dezentrale Weise?Keramik Netzwerkbietet das robusteste Protokoll und die umfangreichste Auswahl an Tools zur Verwaltung dezentraler Identitäten. Sie haben kürzlich veröffentlicht ein Blog-BeitragUmreißen einiger ihrer neuesten Updates und Bereitstellung von Richtlinien dazu, wie alle Tools zusammenarbeiten. Ich würde dort anfangen und dann erkunden ihre Unterlagenum ein Verständnis dafür zu gewinnen, wie man mit dem Bau beginnt, und erwägen Sie, mein Beispielprojekt anzusehenhierdas Ceramic verwendetself.id.
Wenn Sie einen Benutzer abrufen möchten, ENSTextaufzeichnungen bietet die ENSJS-Bibliothek eine schöne API zum Abrufen von Benutzerdaten:
const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })
const content = await ens.name('sha.eth').getText('avatar')
SpruceIDist auch etwas, das vielversprechend aussieht, aber ich habe es noch nicht ausprobiert.
Keramik und Fichtebeide implementieren dasW3C DIDSpezifikation, die selbst auch etwas ist, was ich als Grundbaustein von Web3 betrachten würde. Mit anderen Worten, jede zentralisierte Implementierung von DIDs widerspricht der Idee dessen, was die Spezifikation zu erreichen versucht.
Was JavaScript-Frameworks betrifft, können Sie im Grunde genommen mit allem bauen, was Sie möchten, da die clientseitigen Blockchain-SDKs größtenteils framework-agnostisch sind. Das gesagt, eine überwältigende Anzahl von Projekten und Beispielen wird in React erstellt. Es gibt auch eine Handvoll Bibliotheken wie Solana Wallet Adapter die zusätzliche Dienstprogramme für React bieten, daher würde ich sagen, dass es wahrscheinlich ein kluger Schachzug sein wird, React zu lernen oder mit ihm vertraut zu sein.
Für clientseitige SDKs in Ethereum gibt es web3.jsundethers.jsFür mich ist Ethers zugänglicher und hat eine bessere Dokumentation, obwohl web3.js schon länger existiert.
In Solana werden Sie wahrscheinlich mit Gate.com arbeiten@solana/web3.jsund / oderAnker. Ich habe festgestellt, dass Anchor-Client-Bibliotheken mein bevorzugtes Werkzeug zum Erstellen von Solana-Programmen sind, da ich sowieso das Anchor-Framework verwende, und ich habe festgestellt, dass es viel einfacher zu verstehen ist als @solana/web3.js.
Oracles ermöglichen Entwicklern den Zugriff auf das Lesen von Echtzeitdaten & externen Systemen innerhalb eines Smart Contracts.
Zum Beispiel erfordern die meisten Finanzanwendungen Kenntnisse über Echtzeitdaten & Ereignisse, die außerhalb der Blockchain stattfinden, daher sind Oracles im DeFi-Bereich besonders wichtig.
Chainlinkist ein Oracle, das den Zugriff auf Echtzeitdaten und Off-Chain-Berechnungen ermöglicht, während es die Sicherheits- und Zuverlässigkeitsgarantien, die in der Blockchain-Technologie verankert sind, aufrechterhält.
Flux ist ein Cross-Chain-Orakel, das Smart Contracts Zugriff auf wirtschaftlich sichere Datenfeeds verschafft.
Radicle ist ein dezentrales Code-Collaboration-Protokoll, das auf Git basiert. Man könnte es sich als eine dezentrale Version von GitHub vorstellen.
Livepeerist ein dezentrales Video-Streaming-Netzwerk. Es ist ausgereift und weit verbreitet, mit über 70.000 GPUs live im Netzwerk.
Dieser Beitrag wird ein lebendiges Dokument sein, mit dem ich Schritt halte, während ich lerne, experimentiere und Feedback von Entwicklern sammle, die im Web3 bauen.
Wenn Sie Feedback oder Ideen zu etwas haben, das ich hier vermisse, wenden Sie sich bitte an mich und teilen Sie mir Ihre Gedanken mit. Es ist aufregend zu sehen, wie viele Aktivitäten rund um das Web3 stattfinden, wenn Entwickler einsteigen und sich engagieren. Während sich die Infrastruktur noch in der Entwicklung befindet, ist die Vision, wirklich dezentralisierte Protokolle und Anwendungen zu entwickeln, die es Menschen ermöglichen, sich zu koordinieren, ohne großen Unternehmen Macht und Kontrolle geben zu müssen, eine wichtige Vision, und wir stehen kurz davor, diese Vision Wirklichkeit werden zu lassen.





