Truehash – der grundsätzlich ASIC-resistente Mining-Algorithmus

I. PoWs Dilemma

Satoshi Nakamoto hat Bitcoin 2008 erfunden, um ein dezentrales Finanzsystem m zu schaffen, an dem sich jeder frei beteiligen kann. Seit dem Erscheinen von ASIC wird die Rechenleistung jedoch in den Händen von Minderheiten angesammelt und gefährdet die Dezentralisierung. Nach Bitcoin haben viele Kryptos der ersten Generation den PoW-Algorithmus übernommen, und einer der Kämpfe, die sie nicht vermeiden können, ist ASIC. Die meisten Lösungen erhöhen jedoch lediglich die Schwierigkeiten der Algorithmen für den Entwurf von ASIC oder verringern den ROI von ASIC und GPU, um ihn weniger attraktiv zu machen. Trotzdem realisieren diese Lösungen niemals grundsätzlich ASIC-Widerstand. Darüber hinaus könnten ASIC-Hersteller mit dem steigenden Preis für Bitcoins leicht einen Weg finden, diese Algorithmen zu besiegen, die von wirtschaftlichen Interessen getrieben werden.

Opfer von ASIC:

** 4. April 2018, nachdem XMR für Hardfork gestimmt hat, kann Antminer X nicht funktionieren

Die Opfer oben haben nur einige berühmte Münzen aufgelistet, während es viele Münzen gibt, die von ASIC monopolisiert werden. Projekte mit PoW werden von ASIC-Herstellern ständig abgelehnt. Angesichts der Herausforderung suchen Projekte nach Lösungen auf zwei andere Arten:

1. Unter der Führung von Casper, EOS, ADA und NEO ersetzten viele Münzen das PoW-Protokoll durch PoS oder DPoS.

2. Münzen wie XMR beschlossen, alle 6 Monate eine harte Gabelung vorzunehmen und den Algorithmus auf diese Weise zu ändern.

Ersteres hat PoW völlig aufgegeben, während letzteres jedes Mal, wenn es hart gegabelt wurde, einen Großteil des ASIC zerstörte. Dennoch konnten diese Bergleute leicht viele gefälschte Münzen selbst gabeln.

Ist das endgültige Schicksal von PoW ein Misserfolg für ASIC? Natürlich nicht, aber PoW muss vor seiner Wiedergeburt viele eigene Probleme lösen. Hier möchten wir uns auf die Durchbrüche im Mining-Algorithmus konzentrieren und eine Reihe grundlegender Algorithmen entwickeln, die ASIC grundsätzlich widerstehen können.

II. Das vorherige und gegenwärtige Leben ASIC

Der PoW-Algorithmus wurde 1993 von Cynthia Dwork und Moni Naor vorgeschlagen. Das Anwendungsszenario besteht darin, dem Angriff von ddos ​​und E-Mail-Spam zu widerstehen. Im Jahr 1999 entwickelte Jacobsson einen partiellen Hash-Inversionsalgorithmus, der auch die Methode ist, die Satoshi Nakamoto im Bitcoin-Netzwerk verwendete.

2008 gründete Satoshi Nakamoto ein Bitcoin-Netzwerk mit dem Ziel, einen dezentralen Finanzmechanismus zu schaffen, an dem jeder frei teilnehmen kann. Eine der größten Herausforderungen besteht dann darin, ein dezentrales Hauptbuch zwischen verschiedenen Knoten zu erstellen, die zuvor kein Vertrauen untereinander haben.

Der grundlegende Algorithmus von Bitcoin lautet wie folgt:

Bitcoin verteilt eine Variable “nonce”, um den Hash-Wert ohne Unterbrechung zu berechnen. Wenn der Hash kleiner als der voreingestellte Schwierigkeitsgrad ist, ist der Abbauprozess ein Erfolg. Eines der Merkmale dieses Algorithmus ist die Einfachheit der inneren Mining-Schleife. Sie muss nur wiederholt werden. Daher kann dieser Algorithmus eine hohe Parallelität erreichen und bietet dem ASIC die Möglichkeit, sich darauf einzulassen. Aufgrund der hohen Kosten für ASIC ist dies der Fall nicht kosteneffektiv, wenn der Preis der Münzen niedrig ist. Bis 2013 sind jedoch mit dem rasanten Preisanstieg von Bitcoin mehr Menschen bereit, mehr für Hash-Power zu zahlen, und hier kommt die ASIC-Ära.

III. So erreichen Sie grundsätzlich eine ASIC-Beständigkeit

Schauen Sie sich die Münzen an, die nach dem Bitcion ausgegeben wurden. Es ist nicht schwer zu erkennen, dass Blockchain-Entwickler verschiedene Arten von Mining-Algorithmen ausprobieren, um ASIC-resistent zu werden. Und es stellt sich heraus, dass alle Versuche fehlgeschlagen sind. Ihre ganze Idee ist es, die Berechnung gegen die Mängel von ASIC hinzuzufügen, um die Algorithmen schwieriger zu machen. Zum Beispiel hat der ursprüngliche Algorithmus von Ethash die Mängel von ASIC in Bezug auf unzureichenden Speicher festgestellt und eine Sitzung zum Lesen einer großen Tabelle hinzugefügt. Für dieses Problem fügt die Antminer E-Bergbaumaschine von Bitmain einen Kreis von DDR3-Mikron hinzu, der von der ESMT-Firma Elite Semiconductor Memory Technology hergestellt wurde. Dadurch kann die Berechnung des Lesens großer Tabellen im Ethash-Algorithmus verhindert werden.

Ethash und Equihash oder andere können die Erscheinungszeit von ASIC bestenfalls verzögern, können ASIC jedoch nicht grundsätzlich widerstehen. Für weitere Untersuchungen müssen wir verstehen, warum CPU / GPU viel langsamer als ASIC ist. Der Hauptgrund ist, dass die von Neumann-Architektur für die Diversitätsberechnung übernommen wurde.

Die Von Neumann-Architektur ist grob in drei Teile unterteilt, nämlich internen Speicher, Steuereinheit und Rechenelement. Das Betriebsprogramm und die Daten werden in DDR geschrieben und bei der Berechnung an das Berechnungselement übertragen. Der durch die Übertragungsbandbreite verursachte Rechenengpass wird als von neumann-Engpass bezeichnet.

Um zu vermeiden, dass der von Neumann-Engpass für die Bedienung eines einzelnen Algorithmus einfach ist, besteht die Idee darin, den Algorithmus direkt in das Berechnungselement zu schreiben, um den von Neumann-Engpass zu umgehen. Aus diesem Grund bietet ASIC in Bitcoin Sha-256d so erstaunliche Vorteile hinsichtlich der Rechenleistung.

Um eine ASIC-Resistenz grundsätzlich zu erreichen, können wir die Erfahrung von Monero ausleihen, dh das Design wird regelmäßig durch Algorithmen geändert. Das Problem bei Monero ist die unprofessionelle Abstimmung der Community für Hard Fork. Das größte Problem bei ihnen ist, dass niemand weiß, ob das Projektteam (sie können die Abstimmungsergebnisse leicht manipulieren) den ASIC auf einen neuen Algorithmus vorbereitet hat.

1. Befehl S als Sammlung von Algorithmen, alle Algorithmen in S müssen den von neumann-Engpass durchlaufen.

2. Der Algorithmus ändert alle T-Blöcke, und die Änderungsmethoden müssen die Bedingung Überprüfbar und unvorhersehbar erfüllen.

3. Kein menschlicher Eingriff in die Algorithmusumschaltung.

Die Implementierung von Truehash besteht darin, G als Gruppe festzulegen. Für jedes Gruppenmitglied g muss rho_V (G) das Schaufenster von G im Vektorraum V sein. Bei einem normalen Mining-Algorithmus werden bei der Berechnung von Blockheade, Nonce und anderen Informationen mit Operationen wie Auffüllen usw. bilden eine Vektor-Nonce. Durch die Erschöpfung verschiedener Nonce finden sich die Ergebnisse, die unter dem Schwierigkeitsgrad liegen. Truehashs Änderung besteht teilweise darin, den Hash (v (nonce)) in Hash (rho (g) * v (nonce)) zu ändern. Solange G komplex genug ist (Truehash VERWENDET die Permutationsgruppe S_2048 mit 2048!), Kann nicht jeder Algorithmus in die Zelle geschrieben werden. Da der Algorithmus zufällig wechselt, ist der Engpass von Neumann unvermeidlich.

Das Schaltprinzip des Truehash-Algorithmus besteht darin, die Gruppenelemente alle 12.000 PoW-Blöcke zu ändern. Die Produktionszeit von 12.000 Blöcken beträgt 83 Tage. Die Informationen neuer Gruppenelemente bestehen aus den ersten bis 8192. Blöcken der Vorperiode. Das Kompositionsmuster besteht darin, den Hash-Wert des 11001. – 11256. Blocks zu analysieren. Aufgrund der Unvorhersehbarkeit des Hashs kann niemandem Informationen über den neuen Algorithmus bekannt sein. Vom 11257. Block der letzten Periode bis zu seiner Ungültigkeit gibt es ein Intervall von 88 Tagen, und es macht keinen Sinn, in so kurzer Zeit einen ASIC zu erstellen.

Anhang:

Befehl v = v (Blockheader, Prevhash, Nonce) als binärer Vektor der Länge von n, im Allgemeinen enthält V Blockheader, Hash und andere Informationen des Frontblocks und Nonce-Informationen jeder Schleife.

Befehl d als voreingestellter Schwierigkeitsgrad, der Schwierigkeitsgrad ist höher, wenn d größer wird.

für nonce = 1: 2 ^ n

h = Hash (v (nonce))

wenn h & lt; [2 ^ n / d]

return h;

Ende

Ende

2. Pseudocode, der vom ASIC-resistenten Algorithmus

ausgeführt wird

für nonce = 1: 2 ^ n

h = Hash (rho (g) * (v (nonce)))

wenn h & lt; [2 ^ n / d]

return h;

Ende

Ende

· von denen g∈G , rho (g) ein Zeichen von G auf Z_2 ^ n ist. Um eine grundsätzliche ASIC-Beständigkeit zu erreichen, müssen die folgenden Funktionen enthalten sein:

1. Von Neumann-Engpass muss unvermeidlich sein, wenn alle g∈G

berechnet werden

rho (g) * v (nonce)

2. Jeder feste Block von rho (g) muss automatisch auf rho (g ‘)

umschalten

3. Die Beziehung zwischen g und g muss die überprüfbaren, aber unvorhersehbaren Bedingungen erfüllen.