Ich versuche, die typische Architektur einer Dapp mit Browser-Clients zu verstehen. Ist das folgende Verständnis korrekt?
[Webbrowser (Endbenutzer)] <==> [Server (Webanwendung/Javascript <==> web3 <==> Ethereum-Client wie Geth)] <==> [Ethereum Netzwerk (Soliditätscode)]
Ich bin mir nicht sicher, ob Sie eher den Datenfluss als die tatsächliche Systemarchitektur beschreiben, aber wenn Sie es sind, ist es nicht ganz richtig.
Alex Van de Sande hat einen großartigen Artikel über das Erstellen von serverlosen Anwendungen geschrieben und darin die Unterscheidung zwischen einem zentralisierten Build und einem dezentralisierten Build gegenübergestellt.
https://blog.ethereum.org/2016/07/12/build-server-less-applications-mist/
Traditionelle zentralisierte Struktur
Dezentrale Struktur der neuen Generation
Der Artikel spricht viel über Mist, aber das war, als Mist wirklich der einzige war, der in der Stadt gezeigt wurde. Jetzt haben wir Parity und sogar MetaMask, die Benutzern den Zugriff auf web3.js und eine Verbindung zu einer Ethereum-Wallet ermöglichen, und vor allem die Möglichkeit, die Ethereum-Wallet zu verwenden, um Transaktionen auf der Ethereum-Blockchain/dem Netzwerk zu signieren.
[Webbrowser (Endbenutzer)] <==> [Server (Webanwendung/Javascript <==> web3 <==> Ethereum-Client)] <==> [Ethereum Netzwerk (Soliditätscode)]
Der Ethereum-Client befindet sich normalerweise nicht auf der Serverseite, es gibt Ausnahmen wie die Verwendung von etwas wie MetaMask, aber in diesem Fall würden Sie MetaMasks auf der Serverseite und nicht Ihre eigene verwenden. Der Ethereum-Client wäre Teil des Webbrowsers. Außerdem kommuniziert der Client mit dem Ethereum-Netzwerk, nicht Ihr Server. Ihre Struktur / Beziehung müsste also in zwei Teile aufgeteilt werden und eher so aussehen:
Herunterladen von HTML und JS:
[Webbrowser (Endbenutzer <==> Ethereum-Client) ] <==> [Server (Webanwendung/JavaJcript <==> web3) ]
Interaktion mit der Blockchain:
[Webbrowser (Endbenutzer <==> Ethereum-Client) ] <==> [Ethereum-Netzwerk (Soliditätscode) ]
@Ashish - Ihre Hypothese ist richtig, aber unvollständig. Während dies ein üblicher Weg ist, ist es keineswegs der übliche Weg ; Es gibt mehrere akzeptable Muster, die vom vorgesehenen Anwendungsfall abhängen.
Dieser Artikel gibt einen Überblick über die aktuell beliebtesten Ethereum-Architekturmuster und bietet einen Anwendungsfall für jedes: https://blog.zeppelin.solutions/designing-the-architecture-for-your-ethereum-application-9cec086f8317 .
Borinho
Asch Sinha