Wie baut man ein skalierbares Ethereum-Blockchain-Netzwerk?

Ich habe den privaten Ethereum-Block eingerichtet, indem ich die folgenden Schritte ausgeführt habe.

1- Dieselbe genesis.json auf 2 Systemen initialisiert.

2- Geth-Konsole mit derselben Netzwerk-ID gestartet.

3- Fügen Sie diese beiden Systeme (Knoten) hinzu, indem Sie sie mit dem Befehl admin.addPeer als Peer hinzufügen.

Jetzt kann ich alle Transaktionen durchführen.

Fragen :

1- Jetzt ist diese private Blockchain fertig und wenn ich einen neuen Benutzer hinzufügen muss, bedeutet das, dass ich einen neuen Server starten muss und auf diesem Server die obigen Schritte ausführen muss?

2- Wie richten diese Wallets (ETH-Wallets) ihre Infrastruktur ein? Haben sie einen Server, der mit der öffentlichen Ethereum-Blockchain verbunden ist? und jeder neue Benutzer, der diesen Wallets beitritt/Ether kauft, wird diesen Wallets im Grunde als Konto hinzugefügt, nicht als neuer Peer?

3- Aus den beiden obigen Fragen habe ich herausgefunden, dass es im Grunde so viele Börsen oder Brieftaschen gibt, die als Peers mit der öffentlichen Blockchain verbunden sind, und Einzelpersonen, die mit diesen Brieftaschen kaufen oder verkaufen, sind im Grunde Konten dieser Brieftaschen. (Neues Konto hinzugefügt zB: personal.newAccount("xux"))

Ich bin neu in der Blockchain und versuche, die Infra zu verstehen, wie sie eingerichtet wird, damit ich sie für meine private Blockchain replizieren kann. Bitte korrigieren Sie mich, wenn ich falsch liege, und beseitigen Sie bitte meine Zweifel.

Vielen Dank im Voraus.

In Frage #1. Was meinst du mit einem neuen Benutzer? Ein neuer Server? #2: Die Brieftaschen funktionieren genauso wie in der öffentlichen Kette der ETH. Sie sind gültige Brieftaschen und Schlüssel. Erstellen Sie wie gewohnt eine Brieftasche. #3: Wallets sind überhaupt nicht als Peers verbunden. Wallets sind Guthaben im öffentlichen/privaten Ledger. Ein Benutzer verwendet seinen privaten Schlüssel, um auf seine Wallets zuzugreifen und Ether an einen anderen Ort zu transferieren oder Smart Contracts auszuführen.

Antworten (3)

Leider ist Ethereum nicht sehr skalierbar. Wenn Sie etwas in der Genesis-Datei ändern möchten. Sie müssen alle Knoten neu konfigurieren. Zumindest im Moment erlaubt es Ihnen nicht, dynamisch zu skalieren.

  1. Wenn es sich nur um einen neuen Benutzer handelt, benötigen Sie ein neues Konto, das sich auf einem der beiden Knoten befinden kann. Das Hinzufügen eines weiteren Knotens ist kein Problem, nur diese Genesis-Datei kann sich nicht ändern oder Sie konfigurieren alles neu. Um sich auf derselben privaten Blockchain zu befinden, sollten Ihre Genesis-Dateien und die Netzwerk-ID identisch sein.

  2. Verstehen Sie den Unterschied zwischen einem Konto, einem Knoten und einem Server. Ein Server kann mehrere Knoten hosten, Ihre Knoten sind das, was Sie verwenden, um sich mit dem Netzwerk zu verbinden, und ein Konto kann sich auf jedem Ihrer Knoten befinden, Sie können es im Netzwerk verschieben. (Nehmen Sie Ihren Schlüsselspeicher mit). Wenn Sie also "Kaufen" sagen, führen Sie Transaktionen durch, Sie können nur senden. So etwas wie eine DApp und ein Smart Contract würden die Ausführung von Logik ermöglichen, die Sie anfordern, und jemand sendet Ihnen Ether von seinem „Konto“ an Ihr „Konto“. Ihre Salden und Transaktionshistorie bleiben in der Blockchain.

  3. Peers sind im Grunde Knoten, wenn Sie einen admin.addPeer ausführen, bestätigen Sie ihre Existenz im Netzwerk. Quorum, ein Fork von Ethereum, ermöglicht eine sehr dynamische Möglichkeit, Peers hinzuzufügen. Und bietet auch eine hohe TPS.

1- Jetzt ist diese private Blockchain fertig und wenn ich einen neuen Benutzer hinzufügen muss, bedeutet das, dass ich einen neuen Server starten muss und auf diesem Server die obigen Schritte ausführen muss?

Nein. Sie verwechseln Plattformbedenken mit Anwendungsbedenken.

Ethereum ist so konzipiert, dass alle ordnungsgemäß funktionierenden Nodes schließlich einen Konsens über die korrekte Interpretation von Transaktionen und damit über den Systemzustand erzielen.

Das Wort "Benutzer" ist überladen. Es könnte eine Einzelperson oder eine Organisation, ein Komitee oder ein Gerät sein. Letztendlich ist die Bedeutung ein Anwendungsproblem, das sich mit Themen wie Autorität und Zugriffskontrolle befasst. Dies drückt sich in der Vertragsgestaltung aus.

In der Praxis dienen private Netzwerke häufig mehreren Organisationen, und diese Organisationen können ein Interesse daran haben, sicherzustellen, dass andere, z. B. Konkurrenten, keinen unfairen Vorteil erhalten. Eine topologische Lösung besteht darin, dass jede Organisation einen Knoten betreibt.

Verträge sind gleichgültig, welche Knoten Benutzer zum Senden von Transaktionen verwenden.

Die Belastbarkeit des Netzwerks, nicht die Geschwindigkeit, skaliert mit der Anzahl der Knoten. Wenn mehr Knoten hinzugefügt werden, erhöht sich die Anzahl der Transaktionen/Sekunde nicht, aber die Schwellenanzahl der beteiligten Knoten, die erforderlich ist, um historische Fakten zu revidieren.

2- Wie richten diese Wallets (ETH-Wallets) ihre Infrastruktur ein? Haben sie einen Server, der mit der öffentlichen Ethereum-Blockchain verbunden ist? und jeder neue Benutzer, der diesen Wallets beitritt/Ether kauft, wird diesen Wallets im Grunde als Konto hinzugefügt, nicht als neuer Peer?

Wallets und Verträge haben keine Infrastruktur. Das Ethereum-Netzwerk bietet Konnektivität, Verarbeitung, Zustand und Belastbarkeit. Wenn ein Vertrag auf Ethereum bereitgestellt wird, wird der Code des Vertrags zu einer beobachtbaren Tatsache in der Blockchain. Kontrakte müssen ihre Anweisungen wie verschlüsselt ausführen. Die öffentliche Blockchain bietet dieser Plattform eine Replikation über viele tausend Knoten. Veröffentlichte Verträge erfordern keine weitere Infrastrukturunterstützung von ihren Erstellern.

Eine private Blockchain verwendet (normalerweise) dieselbe Node-Software. Der Ersteller entwirft eine Topologie, die die Anforderungen für Replikate, sicheren Zugriff (jeder "Benutzer" muss sich mit mindestens einem Knoten verbinden), Knoten-zu-Knoten-Konnektivität, möglicherweise hinter einem VPN, normalerweise mit mindestens einem Knoten in jedem teilnehmenden Knoten, erfüllt Organisation, damit sie die Blockchain unabhängig interpretieren können, ohne sich auf Wettbewerber verlassen zu müssen, bei denen die Anreize möglicherweise nicht perfekt aufeinander abgestimmt sind.

3- Aus den beiden obigen Fragen habe ich herausgefunden, dass es im Grunde so viele Börsen oder Brieftaschen gibt, die als Peers mit der öffentlichen Blockchain verbunden sind, und Einzelpersonen, die mit diesen Brieftaschen kaufen oder verkaufen, sind im Grunde Konten dieser Brieftaschen. (Neues Konto hinzugefügt zB: personal.newAccount("xux"))

Blockchain kehrt die übliche Beziehung zwischen zentralisierten Daten und verteilten Knoten, die Informationen anfordern, um. Es gibt einen gemeinsamen Satz von Fakten und ein Protokoll. Das ist alles.

Bei einer öffentlichen Kette ist keine weitere Infrastruktur erforderlich. Lösungen für private Ketten lehnen öffentliche Ketten ab und verwenden die (meistens) gleiche Software, um ähnliche Netzwerke zu erstellen. Es ist analog zum öffentlichen Internet und internen Intranets, die denselben Software-Stack und dieselben Protokolle verwenden.

Wenn Sie sich „Coins“ als Objekte oder Dateien vorstellen, die herumgereicht werden, ergibt das keinen Sinn. Es ist eher wie eine Tabelle am Himmel, die für jeden sichtbar ist, der es sehen kann. Es gibt strenge Regeln für Updates und eine unveränderliche Historie aller Änderungen.

Wenn ein neuer Knoten einem Netzwerk beitritt, lädt er zunächst die Blöcke herunter, die einen wohlgeordneten Transaktionsverlauf enthalten, und führt die Transaktionen selbst aus, wie ein Wiederholungsprotokoll. Wenn er vollständig eingeholt ist, befindet sich der Knoten im Konsens mit dem Rest des Netzwerks.

(Full) Nodes ähneln Datenbankrepliken darin, dass sie den gesamten Statusverlauf aller Benutzer und aller Verträge enthalten. Die Knoten stimmen in allem überein. Es kann hilfreich sein, sich Verträge ähnlich wie gespeicherte Prozeduren vorzustellen. Eine willkürliche Aktualisierung ist nicht zulässig. Beispielsweise darf ein Systemadministrator nicht INSERT INTO TABLE .... Jeder ist darauf beschränkt send(data, {to: contract})und der Vertrag entscheidet, ob das Update zulässig ist.

Ein Rogue Node würde einfach aus dem Konsens mit dem Rest des Netzwerks fallen. Das Netzwerk würde den Schurkenknoten einfach ignorieren, da die anderen Knoten, nachdem sie die Transaktionshistorie für sich selbst ausgewertet haben, zu dem Schluss kommen würden, dass sie mit dem Schurken nicht einverstanden sind und ihn daher ignorieren sollten.

Der Konsens in einer privaten Kette hat andere Einschränkungen als der Konsens in einer öffentlichen Kette. Folglich existieren Variationen von Ethereum wie Quorom. Designmuster für verteilte Systeme unterscheiden sich in beiden Fällen erheblich von serverzentrierten Systemen, aber Transaktionsdurchsatz und Datenschutz können anders behandelt werden als im öffentlichen Mainnet.

Ich hoffe es hilft.

Ich glaube nicht, dass Sie für jeden Benutzer einen Server hinzufügen müssen, sondern Ihre Anforderungen klar identifizieren.

Möchten Sie eine Consortium-Blockchain haben, die einige vordefinierte berechtigte Knoten hat?

Im Allgemeinen benötigen Sie keinen Server für jeden Benutzer. Wenn die Anzahl der Benutzer zunimmt und sie einige Ether-Transaktionen durchführen möchten, muss jeder Benutzer mit einem Konto verknüpft sein und über ein gewisses Guthaben verfügen.