Es gibt viele interessante Änderungen am Ethereum-Protokoll, das in Arbeit ist und hoffentlich die Kraft des Systems verbessern, weitere Merkmale wie leichte Freundlichkeit und ein höheres Maß an Erweiterbarkeit hinzufügen und Ethereum-Verträge leichter zu codieren. Theoretisch ist keine dieser Änderungen erforderlich; Das Ethereum -Protokoll ist in Ordnung, wie es heute aussieht, und kann theoretisch freigegeben werden, sobald die Kunden etwas weiter aufgebaut sind. Vielmehr sind die Änderungen da, um Ethereum besser zu machen. Es gibt jedoch ein Designziel von Ethereum, bei dem das Licht am Ende des Tunnels etwas weiter ist: die Dezentralisierung der Bergbau. Obwohl wir immer die Sicherungsoption haben, einfach bei Dolch zu bleiben, Slasher Oder SHA3 ist völlig unklar, dass einer dieser Algorithmen langfristig wirklich dezentral und abgingpool und asic-resistent bleiben kann (Slasher ist garantiert dezentralisiert, weil es ein Einsatz ist, aber seine eigenen mäßig problematischen Fehler aufweist).
Die Grundidee hinter dem Mining -Algorithmus, den wir verwenden möchten, ist im Wesentlichen vorhanden. Wie in vielen Fällen steckt der Teufel jedoch im Detail.
Diese Version des Ethereum Mining-Algorithmus ist eine Hashcash-basierte Implementierung, ähnlich wie SHA256 von Bitcoin und Litecoins Scrypt. Die Idee ist, dass der Bergmann eine Pseudorandomfunktion auf einem Block und Nonce wiederholt berechnet und jedes Mal eine andere Nonce ausprobiert, bis schließlich ein Nonce ein Ergebnis erzielt, das mit einer großen Anzahl von Nullen beginnt. Der einzige Raum für Innovationen in dieser Art der Implementierung ist die Änderung der Funktion. In Ethereums Fall ist der grobe Umriss der Funktion, der den Blockchain -Status (definiert als Header, der aktuelle Zustandsbaum und alle Daten der letzten 16 Blöcke), wie folgt:
-
Lassen H[i] = SHA3 (SHA3 (Block_header) ++ nonce ++ i) für 0 <= i <= 15
-
Lassen S Sei der Blockchain -Zustand vor 16 Blöcken.
-
Lassen C[i] Seien Sie die Transaktionszahl des Blocks ich Blöcke vor. Lassen T[i] sei der (H[i] Gegen c[i])Die Transaktion aus dem Block ich Blöcke vor.
-
Anwenden T[0]Anwesend T[1] … T[15] nacheinander zu S. Jedes Mal, wenn die Transaktion zur Bearbeitung eines Vertrags führt (Pseudo-) vornimmt zufällig geringfügige Änderungen des Kodex aller betroffenen Verträge.
-
Lassen S’ Sei der resultierende Zustand. Lassen R Sei der SHA3 der Wurzel von S’.
Wenn r <= 2^256 / diffDann Nonce ist ein gültiger Nonce.
Um in der nicht prograratischen Sprache zusammenzufassen, verlangt der Bergbauer, dass der Bergmann einige zufällige Transaktionen aus den letzten 16 Blöcken abgibt, die Berechnung der Anwendung auf den Zustand vor 16 Blöcken mit einigen zufälligen Modifikationen ausführt und dann den Hash des Ergebniss übernimmt. Jeder neue Nonce, den der Bergmann versucht, müsste der Bergmann diesen Vorgang jedes Mal mit einem neuen Satz zufälliger Transaktionen und Modifikationen wiederholen.
Die Vorteile davon sind:
-
Es erfordert den gesamten Blockchain -Status, um im Wesentlichen jeden Bergmann ein voller Knoten zu sein. Dies hilft bei der Netzwerkdezentralisierung, da eine größere Anzahl vollständiger Knoten existiert.
-
Da jeder Bergmann jetzt ein voller Knoten sein muss, werden Bergbaupools viel weniger nützlich. In der Bitcoin -Welt dienen Bergbaupools zwei wichtige Zwecke. Erstens pools die Bergbaubelohnung aus. Anstelle eines jeden Blocks, der einem Bergmann eine 0,0001% ige Chance eines Bergbaus A bietet 1.60. Zweitens bieten Pools jedoch auch eine zentralisierte Blockvalidierung. Anstatt selbst einen vollständigen Bitcoin -Client ausführen zu müssen, kann ein Bergmann einfach Block -Header -Daten aus dem Pool und den Mine mit diesen Daten schnappen, ohne den Block für sich selbst zu überprüfen. Mit diesem Algorithmus ist das zweite Argument umstritten, und das erste Anliegen kann von Peer-to-Peer-Pools angemessen erfüllt werden, die einen zentralen Service nicht die Kontrolle über einen erheblichen Teil des Network-Hash-Krafts geben.
-
Es ist fast per Definition asic-resistent. Da die EVM-Sprache abgeschlossen ist, kann jede Art von Berechnung, die in einer normalen Programmiersprache durchgeführt werden kann, in den EVM-Code codiert werden. Daher ist ein ASIC, das die gesamte EVM ausführen kann, notwendigerweise eine ASIC für eine generalisierte Berechnung – mit anderen Worten, eine CPU. Dies hat auch einen Primcoin-ähnlichen sozialen Nutzen: Mühe, EVM ASICs aufzubauen, haben auch den Nebeneffekt des Aufbaus von Hardware, um das Netzwerk schneller zu gestalten.
-
Der Algorithmus ist relativ schnell zu überprüfen, obwohl es keine „schöne“ Verifizierungsformel gibt, die in EVM -Code ausgeführt werden kann.
Es gibt jedoch noch einige große Herausforderungen, die bestehen bleiben. Erstens ist nicht ganz klar, dass das System der Auswahl zufälliger Transaktionen tatsächlich den Bergmann erfordert, die gesamte Blockchain zu verwenden. Idealerweise wären die Blockchain -Zugriffe zufällig; In einem solchen Setup würde ein Bergmann mit der Hälfte der Blockchain nur bei etwa 1 zu 216 Nonces gelingen. In Wirklichkeit werden jedoch 95% aller Transaktionen wahrscheinlich 5% der Blockchain verwenden. In einem solchen System wird ein Knoten mit 5% des Speichers nur eine Verlangsamungsstrafe von etwa 2x verlangsamt.
Zweitens und vor allem ist es jedoch schwierig zu sagen, wie viel ein EVM -Bergmann optimiert werden könnte. Die obige Algorithmus -Definition fordert den Bergmann auf, „zufällig geringfügige Modifikationen vorzunehmen“. Dieser Teil ist entscheidend. Der Grund dafür ist: Die meisten Transaktionen haben Ergebnisse, die unabhängig voneinander sind; Die Transaktionen können aus dem Formular „A an b“ sein, „C sendet an D“, „E sendet an den Vertrag F, das G und H betrifft“ usw. ohne Überlappung. Daher würde es ohne zufällige Modifikation kaum einen EVM -Bergmann benötigen, um tatsächlich viel Berechnung durchzuführen. Die Berechnung würde einmal erfolgen, und dann würde der Bergmann die Deltas nur vorberechnen und speichern und sofort anwenden. Die zufälligen Modifikationen bedeuten, dass der Bergmann jedes Mal neue EVM -Berechnungen durchführen muss, wenn der Algorithmus ausgeführt wird. Diese Lösung ist jedoch auf zwei Arten unvollkommen. Zunächst können zufällige Modifikationen möglicherweise leicht zu einer sehr komplexen und komplizierten Berechnungen führen, die einfach frühzeitig enden, oder zumindest für Kalisionen, für die sich die Optimierungen stark von den Optimierungen unterscheiden, die auf Standardtransaktionen angewendet werden. Zweitens können Mining -Algorithmen komplexe Verträge zugunsten einfacher oder leicht optimierbarer Verträge überspringen. Es gibt heuristische Tricks, um beide Probleme zu bekämpfen, aber es ist völlig unklar, wie genau diese Heuristiken aussehen würden.
Ein weiterer interessanter Punkt für diese Art von Bergbau ist, dass die Community auch wenn optimierte Hardware -Bergleute auftreten, die in der Lage ist, zusammenzuarbeiten, um den Bergbaumalgorithmus im Wesentlichen zu ändern, indem sie den Transaktionspool „vergiftet“. Ingenieure können vorhandene ASICs analysieren, festlegen, welche Optimierungen sind, und Transaktionen in die Blockchain abgeben, mit der solche Optimierungen einfach nicht funktionieren. Wenn 5% aller Transaktionen effektiv vergiftet werden, kann ASICS unmöglich eine Beschleunigung von mehr als 20 -fachen haben. Das Schöne ist, dass es einen Grund gibt, warum Menschen die Transaktionsgebühren dafür bezahlen würden: Jedes einzelne ASIC -Unternehmen hat den Anreiz, den Brunnen für seine Konkurrenten zu vergiften.
Dies sind alles Herausforderungen, an denen wir in den nächsten Monaten stark arbeiten werden.

