011: Ethash -Algorithmus | Anmerkungen zu "ETH -Prinzipien und intelligenten Vertragsentwicklung"
Der Blockchain -Kurs wurde in der Bibel entwickelt. Diese Sammlung zeichnet meine Forschungsnotizen auf.
Der Kurs hat insgesamt 8 Lektionen. Unter ihnen spre chen die ersten vier Lektionen über ETH -Prinzipien und die letzten vier Lektionen über intelligente Verträge. Lektion 4 ist in drei Teile unterteilt.
Dieser Artikel ist ein Forschungshinweise zum ersten Teil von Lektion 4: Ethash -Algorithmus.
Diese Lektion führt den hochkernigen Mining -Algorithmus von Ethereum ein.
Lassen Sie mich über Hintergrundwissen spre chen, bevor ich den Ethash -Algorithmus einführe. Tatsächlich löst die Blockchain -Technologie hauptsächlich das Problem des Konsenses, und Konsens ist ein reichhaltiges Konzept. Hier eingrenzen wir den Umfang ein und diskutieren nur den Blockchain -Konsens.
Was ist ein Konsens?
In Blockchain bezieht sich Konsens darauf, welche Knoten das Recht haben, ein Buch aufzuzeichnen. Das Netzwerk verfügt über mehrere Knoten und hat das Recht, Bücher aufzunehmen. Die erste Frage, mit der ich ausgesetzt bin, ist, wer das Buch aufzeichnet. Ein weiteres Problem ist, dass Transaktionen organisiert werden müssen, was bedeutet, dass es Menschen gibt, die vor und nach vorne sind. Dadurch wird das Problem der Doppelausgaben gelöst. Der Konsensmechanismus von Blockchain besteht darin, diese beiden Probleme zu lösen. Dies ist die Reihenfolge, wer Buchhaltung und Transaktion ist.
Was ist ein Beweis für den Arbeitsalgorithmus
Es gibt mehrere Lösungen, um zu bestimmen, wer unter vielen Knoten erklären soll. Darin kann der Knoten den Hash -Wert berechnen, um den Sieg des Schwierigkeitszielwerts mit dem Nachweis der Arbeit zu erfüllen. Dieser Prozess kann nur durch Aufzählung berechnet werden. Jeder, der schneller berechnet, hat eine höhere Gewinnchance. Der Einnahmen hängt mit der Arbeitsbelastung des Knotens zusammen. Dies ist ein Beweis für den Arbeitsalgorithmus.
Warum sollten wir einen Nachweis des Arbeitsalgorithmus vorstellen?
Hashcash wurde 1997 von Adamback veröffentlicht und erstmals auf Bitcoin angewendet, um das Konsensproblem zu lösen.
Es wurde ursprünglich verwendet, um Spam -Probleme zu lösen.
Die Hauptdesign-Idee besteht darin, Blockhead-Kombinationen (durch Anpassung von Nicht-CE) über gewalttätige Suche zu finden, damit der verschachtelte SHA256-Einweg-Hash-Wertausgang kleiner als ein bestimmter Wert (Ziel) ist.
Dieser Algorithmus ist ein Computer-intensiver Algorithmus. Ausgehend von CPU -Bergbau bis hin zu GPUs, FPGAs und ASICs war die Rechenleistung stark konzentriert.
Rechenleistungskonzentration stellt Probleme auf. Wenn der Bergbaupool eine Rechenleistung von 51%hat, besteht die Gefahr, dass es böse tut. Dies ist ein Nachteil von Systemen wie Bitcoin, die den Nachweis der Arbeitsalgorithmen verwenden. Ethereum lernte diese Lektion, machte einige Verbesserungen und schuf den Ethash -Algorithmus.
etash -Algorithmen entwerfen spezifisch Modelle, die aus Bitcoin -Lektionen lernen und kein Computing verwenden. Verwenden Sie ein I/A -intensives Modell. E/A ist langsam und egal wie schnell die Berechnungen sind, es ist nutzlos. Auf diese Weise ist es für anwendungsspezifische integrierte Schaltkreise nicht sehr effektiv.
Dieser Algorithmus ist GPU-freundlich. Beachten Sie zunächst, dass Sie, wenn Sie nur die CPU unterstützen, befürchten, dass Sie wahrscheinlich von Trojanern angegriffen werden. Zweitens ist der Videogedächtnis ziemlich groß geworden.
Licht -Client -Algorithmen sind nicht zum Bergbau geeignet und sind einfach zu überprüfen. Für schnelle Startalgorithmen ist Keccake256 in erster Linie abhängig.
Zusätzlich zu herkömmlichen Blockkopfzeilen haben Datenquellen eine Zufallszahl -Array -DAG (eingelassener Aycycle -Diagramm) (vorgeschlagen von Vitalik)
Die Samenwerte sind sehr niedrig. Ein Cache -Wert wird basierend auf dem Saatgutwert generiert, wobei der Anfangswert der Cache -Schicht 16 m und jede Generation bei 128K hinzugefügt wird.
Unter der Cache -Schicht befinden sich die Datenwerte, die von den Bergleuten verwendet werden. Der Anfangswert der Datenschicht beträgt 1 g und jede Generation steigt um 8 m. Die Gesamtdatenschichtgröße beträgt 128 Bytes Prime Time.
Das Rahmen ist hauptsächlich in zwei Teile unterteilt. Eine ist die Erzeugung von DAGs, und das andere ist die Verwendung von Hashimoto zur Berechnung des Endergebnisses.
Die DAG ist in drei Ebenen unterteilt: Saatgutschicht, Cache -Schicht und Datenschicht. Die drei Ebenen nehmen allmählich zu.
Die Samenschicht ist sehr klein und hängt von der Samenschicht der vorherigen Generation ab.
Die ersten Daten in der Cache -Schicht werden basierend auf der Saatgutschicht generiert und letztere basierend auf der vorherigen. Dies ist der Serialisierungsprozess. Die anfängliche Größe beträgt 16 m, wobei 128K für jede Generation hinzugefügt wurden. Jedes Element ist 64 Bytes.
Die Datenschicht sind die zu verwendenden Daten. Die anfängliche Größe beträgt 1 g und ist derzeit etwa 2 g mit 128 Bytes pro Element. Die Elemente der Datenschicht hängen von 256 Elementen der Cache -Schicht ab.
Der gesamte Prozess ist Speicherintensiv.
Zunächst werden die Header-Informationen und Zufallszahlen kombiniert, um den Keccak-Betrieb durchzuführen, was zu einem anfänglichen Einweg-Hash-Wert-Mix [0], 128 Bytes, führt. Dann über eine andere Funktion der DAG zugeordnet, den Wert abrufen und mit der Mischung [0] mischen, um die Mischung [1] zu erhalten. Dieser Zyklus dauert 64 Mal, um die Mischung [64], 128 Bytes zu erhalten.
Danach erhalten wir nach dem Nachbearbeitungsprozess einen 32-Byte-Mixed-Endwert. (Dieser Wert erscheint in den beiden vorherigen Unterabschnitten "009: Ghost Protocol" und "010: Gebäudetestnetz")
Nach der Berechnung erhalten Sie die Ergebnisse. Vergleichen Sie es mit dem Zielwert. Wenn es wenig Bergbau gibt, wird es erfolgreich sein.
Der Schwierigkeitswert ist groß und der Zielwert kleiner, wird jedoch schwieriger (der erforderliche 0 erhöht sich zuvor).
Dieser Prozess ist schwer zu mine und ist leicht zu erkennen.
Mischfunktionsfunktionen wurden ebenfalls aktualisiert, um Bergbaumaschinen zu verhindern.
Sehen Sie sich die Schwierigkeitsgrad -Formel für Kurswaren -Screenshots an.
Die nächste wird basierend auf der Schwierigkeit des vorherigen Blocks berechnet.
Aus der Formel besteht der Schwierigkeitsgrad aus drei Teilen. Zuerst die Schwierigkeit des vorherigen Blocks, dann der lineare Teil und schließlich der nichtlineare Teil.
Der nichtlineare Teil wird auch als Schwierigkeitsgrad Bombe bezeichnet. Nach einem bestimmten Zeitknoten nimmt der Schwierigkeitsgrad exponentiell zu. Der Zweck dieses Designs ist, dass im Projektzyklus von Ethereum die nächste Version nach der Metropolitan -Version Konsens und Änderungen von POW zu POW- und POS -Hybridprotokollen umwandeln muss. Die Bedeutung der Stiftung kann darin bestehen, die Bergbauindustrie zu langweilen.
Schwierigkeitsgrad -Kurve zeigt, dass der Schwierigkeitsgrad im Oktober 2017 erheblich gesunken ist und die Belohnungen auch von 5 auf 3.. Kritisieren und korrigieren die Mängel.