Die Skalierbarkeit steht nun im Vordergrund der technischen Diskussion in der Kryptowährungsszene. Die Bitcoin -Blockchain hat derzeit eine Größe von über 12 GB und erfordert einen Zeitraum von mehreren Tagen, damit ein neuer Bitcoind -Knoten vollständig synchronisieren kann. Der in RAM gespeicherte UTXO -Set nähert sich 500 MB, und die fortgesetzten Softwareverbesserungen im Quellcode reichen einfach nicht aus, um den Trend zu lindern. In jedem Jahr wird es für einen gewöhnlichen Benutzer immer schwieriger, einen voll funktionsfähigen Bitcoin -Knoten auf seinem eigenen Desktop lokal auszuführen, und selbst wenn der Preis, die Akzeptanz und die Beliebtheit von Bitcoin von Bitcoin die Anzahl der vollen Knoten im Netzwerk im Wesentlichen bei 1 MB -Blockgröße im Wesentlichen mit 1 MB -Blockgröße im Wachstum mit 1 MB -Blockgrößen, aber ein THEORETISCH -DURCH -DURCH -DURCH -DURCT, das sich auf dieses Wachstum im Wesentlichen umsetzt. zweite. Wenn die Popularität von Bitcoin noch einmal zehnfach aufspringt, wird die Grenze die Transaktionsgebühr auf fast einen Dollar erzwingen, was Bitcoin weniger nützlich macht als Paypal. Wenn es ein Problem gibt, dass eine effektive Implementierung von Kryptowährung 2.0 gelöst werden muss, dann ist dies dies.
Der Grund, warum wir in der Kryptowährung Spaceare mit diesen Problemen haben und so wenig in die Förderung einer Lösung vorgehen, ist, dass es ein grundlegendes Problem mit allen Kryptowährungsdesigns gibt, die angesprochen werden müssen. Von all den verschiedenen Arbeitsnachweisen, dem Nachweis des Vorschlags für den Einsatz und der vorgeschlagenen Konsens-basierten Blockchain-Designs, die vorgeschlagen wurden, hat es kein einzelnes gelungen, dasselbe Kernproblem zu überwinden: dass jeder einzelne vollständige Knoten jede einzelne Transaktion verarbeiten muss. Es ist möglich, Knoten zu haben, die jede Transaktion bis zu einem Niveau von Tausenden von Transaktionen pro Sekunde verarbeiten können. Zentralisierte Systeme wie PayPal, MasterCard und Banking Server machen es gut. Das Problem ist jedoch, dass eine große Menge an Ressourcen für die Einrichtung eines solchen Servers erforderlich ist. Daher gibt es für niemanden außer einigen großen Unternehmen, dies zu tun. Sobald dies geschieht, sind diese wenigen Knoten potenziell anfällig für Gewinnmotiv und regulatorische Druck und können theoretisch nicht autorisierte Änderungen des Staates vornehmen, wie sich selbst kostenloses Geld zu geben, und alle anderen Benutzer, die von diesen zentralisierten Knoten abhängig sind, hätten keinen Weg, um zu beweisen, dass sie ungültig sind, da sie die Ressourcen nicht zur Verarbeitung des gesamten Blocks haben.
In Ethereum haben wir ab diesem Zeitpunkt keine grundlegenden Verbesserungen gegenüber dem Prinzip, dass jeder vollständige Knoten jede Transaktion verarbeiten muss. Es wurden geniale Ideen von verschiedenen Bitcoin-Entwicklern vorgeschlagen, die mehrere merge-starken Ketten mit einem Protokoll für das Bewegen von Fonds von einer Kette in eine andere umfassten, und dies wird ein großer Teil unserer Forschungsanstrengungen für Kryptowährung sein, aber an diesem Punkt ist die Forschung, wie dies optimal umgesetzt werden kann, noch nicht ausgereift. Mit der Einführung von jedoch Blockprotokoll 2.0 (BP2) haben wir ein Protokoll, das uns zwar nicht über den fundamentalen Blockchain-Skalierbarkeitsfehler hinausgeht, aber wir bilden uns auf der Teilung dort: Solange mindestens ein ehrlicher Vollknoten existiert (und aus Anti-Spam-Gründen, die mindestens 0,01% Mining-Power oder Äther-Besitz haben), „leichte Kunden“, die nur eine kleine Menge von Daten herunterladen, die die gleiche Ebene aufnehmen können, wie es die Sicherheit auf den Blockblock aufnehmen kann.
Was ist ein leichter Client?
Die Grundidee hinter einem leichten Client ist, dass dank einer in Bitcoin vorhandenen Datenstruktur (und in a Modifiziertes FormularEthereum), die als Merkle -Baum bezeichnet wird, ist möglich, einen Beweis zu erstellen, dass eine bestimmte Transaktion in einem Block liegt, so dass der Beweis viel kleiner als der Block selbst ist. Derzeit hat ein Bitcoin -Block etwa 150 kb groß; Ein Merkle -Beweis einer Transaktion beträgt etwa einen halben Kilobyten. Wenn Bitcoin -Blöcke eine Größe von 2 GB haben, können sich die Beweise auf einen ganzen Kilobyten erweitern. Um einen Beweis zu konstruieren, muss man einfach dem „Zweig“ des Baumes bis hin zu der Transaktion zur Wurzel folgen und die Knoten auf der Seite auf jedem Schritt des Weges bereitstellen. Mit diesem Mechanismus können leichte Clients sicher sein, dass Transaktionen (oder von ihnen) tatsächlich in einen Block geschickt wurden.
Dies macht es für böswillige Bergleute wesentlich schwieriger, lichtliche Kunden zu wecken. Wenn in einer hypothetischen Welt, in der ein vollständiger Knoten für gewöhnliche Benutzer völlig unpraktisch war, ein Benutzer behaupten wollte, dass er 10 BTC an einen Händler mit nicht genügend Ressourcen gesendet hat, um den gesamten Block herunterzuladen, wäre der Händler nicht hilflos. Sie würden nach einem Beweis bitten, dass eine Transaktion, die 10 BTC an sie sendet, tatsächlich im Block liegt. Wenn der Angreifer ein Bergmann ist, kann er möglicherweise anspruchsvoller sein und tatsächlich eine solche Transaktion in einen Block einsetzen, aber er hat Geld ausgeben (dh UTXO), die eigentlich nicht existieren. Selbst hier gibt es jedoch eine Verteidigung: Der leichte Kunde kann einen zweiten Merkle -Baum -Beweis bitten, der zeigt, dass die Fonds, die die 10 BTC -Transaktion auch ausgeben, und so weiter bis zu einer sicheren Blocktiefe. Aus Sicht eines Bergmanns, der einen leichten Client unter Verwendung eines leichten Clients verwandelt, verwandelt sich dieses Protokoll der Herausforderung zur Response: Vollständige Knoten, die Transaktionen überprüfen und feststellen, dass eine Transaktion eine Ausgabe ausgab, die nicht existiert, können eine „Herausforderung“ für das Netzwerk veröffentlichen, und andere Knoten (wahrscheinlich der Bergmann dieser Block) müsste eine „Reaktion“ veröffentlichen, die ein „Reaktion“ -Reaktion gibt, das sich aus einem Merkle-Baum-Bäume zeigt. In diesem Protokoll gibt es jedoch eine Schwäche in Bitcoin: Transaktionsgebühren. Ein bösartiger Bergmann kann einen Block veröffentlichen, der sich eine 1000 BTC -Belohnung gibt, und andere Bergleute, die leichte Kunden leiten, hätten keine Möglichkeit zu wissen, dass dieser Block ungültig ist, ohne alle Gebühren aus allen Transaktionen selbst zu addieren. Nach allem, was sie wissen, hätte jemand anderes verrückt genug sein können, um tatsächlich Gebühren im Wert von 975 BTC hinzuzufügen.
BP2

Mit dem vorherigen Blockprotokoll 1.0 war Ethereum noch schlechter; Es gab keine Möglichkeit für einen leichten Client, sogar zu überprüfen, ob der Staatsbaum eines Blocks eine gültige Folge des übergeordneten Zustands und der Transaktionsliste war. Tatsächlich bestand die einzige Möglichkeit, irgendwelche Zusicherungen zu erhalten, dass ein Knoten jede Transaktion durchläuft und sie nacheinander auf den übergeordneten Zustand anwendet. BP2 fügt jedoch einige stärkere Zusicherungen hinzu. Mit BP2Jeder Block hat jetzt drei Bäume: einen Zustandsbaum, einen Transaktionsbaum und einen Stapelspurenbaum, der nach jedem Schritt die Zwischenwurzel des Zustandsbaums und den Transaktionsbaum liefert. Dies ermöglicht ein Challenge-Response-Protokoll, das in vereinfachter Form wie folgt funktioniert:
-
Miner M Publishes Block B. Vielleicht ist der Bergmann bösartig. In diesem Fall aktualisiert der Block den Zustand irgendwann falsch.
-
Leichter Knoten L empfängt Block B und führt den grundlegenden Nachweis der Arbeit und der strukturellen Gültigkeitsprüfungen am Header durch. Wenn diese Schecks passieren, behandelt L den Block als legitim, wenn auch nicht bestätigt.
-
Der vollständige Knoten F empfängt Block B und beginnt mit einem vollständigen Überprüfungsprozess, wobei jede Transaktion auf den übergeordneten Zustand angewendet wird und sicherstellt, dass jeder Zwischenzustand mit dem vom Bergmann bereitgestellten Zwischenstatus übereinstimmt. Angenommen, F findet eine Inkonsistenz am Punkt K. Dann sendet F eine „Herausforderung“ in das Netzwerk, das aus dem Hash von B und dem Wert k besteht.
-
L erhält die Herausforderung und kennzeichnet B als nicht vertrauenswürdig.
-
Wenn die Behauptung von F falsch ist und der Block zu diesem Zeitpunkt gültig ist, kann M einen Beweis für eine lokalisierte Konsistenz erstellen, indem ein Merkle -Baumbeweis von Punkt k in der Stapelspur, Punkt K+1 in der Stapelspur und die Untergruppe von Merkle -Baumknoten im Zustand und in der Transaktionsbaum angezeigt wird, die während der Aktualisierung von k bis k+modifiziert wurden. L kann dann den Beweis überprüfen, indem er Ms Wort über die Gültigkeit des Blocks bis zu Punkt k aufnimmt und das Update von K bis K+1 manuell ausführt (dies besteht aus der Verarbeitung einer einzelnen Transaktion) und sicherzustellen, dass die Root -Hashes mit dem übereinstimmen, was M am Ende bereitgestellt hat. L würde natürlich auch prüfen, dass der Merkle -Baumbeweis für die Werte in Zustand K und K+1 gültig ist.
-
Wenn die Behauptung von F wahr ist, kann M nicht in der Lage sein, eine Antwort zu finden, und nach einem bestimmten Zeitraum würde L B verwerfen.
Beachten Sie, dass derzeit das Modell für die Verbrennung von Transaktionsgebühren und nicht an Bergleute verteilt ist, sodass die Schwäche des leichten Client -Protokolls von Bitcoin nicht gelten. Selbst wenn wir uns dafür entschieden haben, dies zu ändern, kann das Protokoll leicht angepasst werden, um damit umzugehen. Die Stapelverfolgung würde einfach auch einen laufenden Zähler der Transaktionsgebühren neben der Liste der Status und der Transaktion beibehalten. Als Anti-Spam-Maß muss F, damit die Herausforderung von F gültig ist, entweder eines der letzten 10000 Blöcke abgebaut haben oder mindestens einen Zeitraum von 0,01% der gesamten Ätherversorgung gehalten haben. Wenn ein vollständiger Knoten eine falsche Herausforderung sendet, was bedeutet, dass ein Bergmann erfolgreich darauf reagiert, kann helle Knoten den öffentlichen Schlüssel des Knotens schwarzlistet.
Insgesamt bedeutet dies, dass Ethereum im Gegensatz zu Bitcoin wahrscheinlich immer noch vollständig sicher ist, auch gegen betrügerische Emissionsangriffe, auch wenn nur eine kleine Anzahl vollständiger Knoten existiert. Solange mindestens ein voller Knoten ehrlich ist, überprüft Blöcke und Veröffentlichungsherausforderungen gegebenenfalls leichte Kunden darauf, um darauf hinzuweisen, welche Blöcke fehlerhaft sind. Beachten Sie, dass in diesem Protokoll eine Schwäche vorhanden ist: Sie müssen jetzt vor der Verarbeitung eines Blocks alle Transaktionen im Voraus kennen, und das Hinzufügen neuer Transaktionen erfordert erhebliche Anstrengungen zur Neuberechnung des Zwischenstapels Trace -Werte, sodass der Prozess der Erzeugung eines Blocks ineffizienter ist. Es ist jedoch wahrscheinlich möglich, das Protokoll zu patchen, um dies zu umgehen, und wenn es möglich ist, hat BP2.1 eine solche Lösung.
Blockchain-basierter Bergbau
Wir haben die Details dazu nicht fertiggestellt, aber Ethereum wird wahrscheinlich etwas ähnliches wie folgt für den Bergbaumalgorithmus verwenden:
-
Lass h[i] = SHA3 (SHA3 (Blockheader ohne Nonce) ++ Nonce ++ i) für i in [0 …16]
-
Sei n die Anzahl der Transaktionen im Block.
-
Lass t[i] sei der (h[i] MOD N) TH -Transaktion im Block.
-
Wir sind der übergeordnete Blockzustand.
-
T[0] … T[15] zu S, und lassen Sie den resultierenden Zustand S ‘.
-
Sei x = SHA3 (s’.root)
-
Der Block ist gültig, wenn x * Schwierigkeitsgrad <= 2^256
Dies hat die folgenden Eigenschaften:
-
Dies ist extrem an erster Stelle, noch mehr als Dolchda das Minen effektiv Zugang zur gesamten Blockchain erfordert. Es ist jedoch parallelisierbar mit gemeinsamem Speicherplatz, daher wird es wahrscheinlich von GPU dominiert und nicht von CPU dominiert, wie Dolch ursprünglich zu sein hoffte.
-
Es ist speicher einfach zu überprüfen[0] … T[15]
-
Alle Bergleute müssen im Wesentlichen volle Knoten sein; Das Anfragen des Netzwerks nach Blockdaten für jeden Nonce ist unerschwinglich langsam. Somit wird es in Ethereum eine größere Anzahl vollständiger Knoten geben als in Bitcoin.
-
Infolge von (3) wird eine der Hauptmotivationen für die Verwendung zentraler Bergbaupools, die die Tatsache, dass sie es den Bergleuten ermöglichen, ohne die gesamte Blockchain zu operieren, zu ermöglichen. Der andere Hauptgrund für die Verwendung von Bergbaupools, die Tatsache, dass sie den Ausschüttungsrate ausführen, kann genauso leicht mit dem dezentralen P2Pool (die wir wahrscheinlich mit Entwicklungsressourcen unterstützen werden) vervollständigt werden können.
-
ASICs für diesen Mining -Algorithmus sind gleichzeitig ASICs für die Transaktionsverarbeitung, sodass Ethereum ASICS dazu beitragen kann, das Skalierbarkeitsproblem zu lösen.
Von hier aus gibt es nur eine wirklich eine Optimierung, die vorgenommen werden kann: herauszufinden, wie man das Hindernis überschreitet, dass jeder vollständige Knoten jede Transaktion verarbeiten muss. Dies ist ein schweres Problem; Eine wirklich skalierbare und effektive Lösung dauert eine Weile, um sich zu entwickeln. Dies ist jedoch ein starker Anfang und kann sogar als einer der wichtigsten Zutaten für eine endgültige Lösung enden.

