Gibt es Algorithmen, die für das Mining verwendet werden könnten, die einer Beschleunigung mit ASICs widerstehen?

In meiner verwandten Frage zu Mining-Algorithmen, die CPU und GPU ausgleichen, stellte sich heraus, dass ein solcher Algorithmus den Anreiz für Menschen, Mining-Botnets zu erstellen, enorm erhöhen würde. Die Aussicht auf einen 51-Prozent-Angriff durch ein Botnetz ist nicht gut.

Die von Bitcoin und verwandten Währungen typischerweise verwendeten Algorithmen haben jedoch immer noch das Problem, dass das ASIC-Mining so effizient sein kann, dass jemand, der einen ASIC entwickelt und ihn streng für sich behält, alle anderen übertreffen könnte. Dies könnte leicht einen 51%-Angriff eines gut finanzierten Gegners bedeuten.

Eine mögliche Lösung wäre ein Mining-Algorithmus, der auf CPUs ineffizient war, aber mit einem ASIC nicht signifikant (um Größenordnungen) effizienter gemacht werden konnte. Vielleicht ein Algorithmus, der eine moderate Menge an Speicher benötigt, der für eine GPU praktisch wäre, aber nicht sehr praktisch, um ihn auf einem ASIC zu lokalisieren. Vielleicht ein Algorithmus, der eine sehr große Anzahl von Gattern auf einem ASIC verbrauchen würde.

Kennt jemand Algorithmen, die die Anforderungen für das Mining erfüllen (leicht auf CPU-Hardware zu überprüfen), die Botnets nicht ermutigen, indem sie sehr effizient auf CPUs arbeiten, und gut finanzierte Gegner nicht dazu ermutigen, 51% -Angriffe zu starten, indem sie sehr effizient auf ASICs arbeiten? . Ein Algorithmus, der auf gängigen GPUs gut funktioniert, aber nicht einfach durch ASICs massiv beschleunigt werden kann, würde meiner Meinung nach ausreichen. Übersehe ich etwas?

Antworten (8)

Ihnen fehlen Botnets von GPUs .

Ehrlich gesagt glaube ich nicht, dass Botnets ein so großes Problem sind. Botnets sind erfolgreich, weil sie für die Opfer unsichtbar sind ( einige Trojaner enthalten sogar ein Antivirenprogramm, um das System zu säubern). Wenn ein infizierter Computer eine CPU-Auslastung von 100 % hat, bleibt er nicht lange infiziert. Der Diebstahl von Kreditkartendaten ist immer noch viel profitabler als der Betrieb eines lahmgelegten Mining-Botnetzes.

Ich würde also sagen, dass die Verschlüsselungsschlüssel- Ableitungsfunktion aus der Antwort von nealmcb auf Ihre andere Frage eine ziemlich gute Wahl ist.

Litecoin ist eine Bitcoin-Variante, die Scrypt verwendet.

Es gibt praktisch keinen festen Algorithmus, der in Rechenkomplexität und Speicherbedarf begrenzt ist, der nicht signifikant von einer optimierten, festen Gate- oder Transistorimplementierung in Form eines ASIC profitiert. Die einzige Frage ist: Wiegen die Vorteile hinsichtlich Leistung und Rechendichte gegenüber einer CPU/GPU die erheblichen NRE-Kosten auf, die mit der Herstellung eines solchen ASICs verbunden sind? Im Fall von Bitcoin sind wir der festen Überzeugung, dass die Antwort „Ja“ lautet und dass die Renditeperioden einer solchen Investition tatsächlich kürzer sind als die mit GPU-Mining verbundenen, insbesondere in großem Maßstab.

Die Frage ist also, wie man den Algorithmus so gestaltet, dass die Antwort "Nein" lautet, wenn das möglich ist. Ich stimme zu, dass die Antwort für Bitcoin definitiv „Ja“ lautet.

MBound würde gut funktionieren, da der schnellste Weg, es zu lösen, sehr viel Speicher benötigt - was es auf einer CPU am schnellsten macht, nicht auf einer GPU oder ASIC.

Zu speichergebundenen Funktionen zur Bekämpfung von Spam: http://research.microsoft.com/pubs/65154/crypto03.pdf

Colin Percival, der Autor von scrypt, schätzt und vergleicht die Kosten für die Implementierung verschiedener Passwort-Hashing-Algorithmen in Hardware. Aus seinem Papier :

Wenn es für interaktive Anmeldungen verwendet wird, ist [scrypt] 35-mal teurer als bcrypt und 260-mal teurer als PBKDF2; und wenn es zur Dateiverschlüsselung verwendet wird – wo scrypt im Gegensatz zu bcrypt und PBKDF2 nicht nur mehr CPU-Zeit verbraucht, sondern auch die benötigte Die-Fläche erhöht – vergrößert scrypt seinen Vorsprung auf einen Faktor von 4000 gegenüber bcrypt und 20000 gegenüber PBKDF2.

Ich frage mich, ob der Algorithmus so modifiziert werden könnte, dass er auch für Hashes adaptiv mehr "Die-Fläche" benötigt. Zumindest könnte es den Preis für den Eintritt in benutzerdefinierte Schaltungen erhöhen, um nur die am besten finanzierten Angreifer zuzulassen.

Während das adaptive Ändern der erforderlichen Die-Fläche das ASIC-Mining schwierig machen würde, würde es auch den Schwierigkeitsalgorithmus zerbrechlich machen. Das Überschreiten von Dingen wie Cache-Größen würde einen „Wand“-Effekt verursachen, bei dem eine kleine Änderung des Schwierigkeitsgrades zu einer großen Änderung der Lösungsrate führt. Ich denke, Sie müssen so ziemlich nur die Anzahl der Iterationen ändern, die im Durchschnitt erforderlich sind, um einen Block zu lösen.

Erklären Sie weiter, was @Andrew Jones gesagt hat:

  • Algorithmen drängen um Einsen und Nullen herum
  • Darin sind digitale Chips gut.

Die Antwort lautet also nein.

Ich glaube, das ist einfach falsch. Betrachten Sie beispielsweise Algorithmen, die große Speichermengen benötigen. Es ist schwer, einen ASIC darin besser zu machen als einen Standard-DDR3-DRAM-Chip. (Wenn wir könnten, würden wir es bereits tun und das als unsere RAM-Chips verwenden.)
@David Ich stimme zu - das war die Stoßrichtung von Dan Kaminskys Vortrag auf der Defcon. Er plädierte dafür, dass ein speicherlastiger Algorithmus die bessere Wahl gewesen wäre, da er die Berechnung auf Botnet-PCs gegenüber der Berechnung auf speziell entworfenen Farmen stark benachteiligt hätte.
@David. Selbst mit einem speicherintensiven Algorithmus würde ein ASIC eine CPU übertreffen. Im schlimmsten Fall könnte der ASIC eine CPU sein, bei der alle unnötigen Opcodes entfernt und die verbleibenden optimiert wurden, wobei Standard-DD3-Chips für RAM verwendet werden. Aber es gibt noch mehr Raum für Optimierungen. Die Zugriffsmuster des RAM könnten für den Algorithmus optimiert werden (was in Allzweck-RAM unerwünscht wäre), und es ist sogar möglich, die Logik auf demselben Chip wie das RAM unterzubringen. Die Beschleunigung wäre im Vergleich zu der mit Bitcoin und Hunderten von Ausführungseinheiten auf dem Chip möglichen Beschleunigung winzig, aber eine Beschleunigung würde immer noch existieren.
@Kevin: Wie in der Frage angegeben, ist das Ziel ein Algorithmus, der auf einem ASIC nicht um Größenordnungen effizienter gemacht werden könnte.
Stimmt, das ist mir irgendwie entfallen. Es hängt vom jeweiligen Algorithmus ab, da nicht alle "speicherlastigen" Algorithmen im großen Ganzen Unmengen an Speicher benötigen. Einige (wenn auch nicht alle) könnten immer noch große Geschwindigkeitssteigerungen auf einem ASIC erzielen, insbesondere diejenigen, die so konzipiert sind, dass sie gerade schwer genug sind, um auf aktuellen GPUs langsam zu sein. Sogar die speicherintensivsten Algorithmen könnten von den reduzierten Kosten und dem Stromverbrauch profitieren, die mit einem ASIC möglich sind, was eine Beschleunigung ermöglicht, indem einfach mehr davon gekauft werden (aber immer noch nicht die Größenordnungen der Frage).

Langfristige Lösung: Wie wäre es, einen kostengünstigen ASIC in Standardhardware zu integrieren, die jeder hat, wie z. B. seinen Netzwerkrouter oder sein Kabelmodem, wodurch die Gewinnung von 51 % der Hashing-Leistung durch eine einzelne Entität unerschwinglich wird?

Vielleicht ein Algorithmus, der eine moderate Menge an Speicher benötigt, der für eine GPU praktisch wäre, aber nicht sehr praktisch, um ihn auf einem ASIC zu lokalisieren.

Häufiges Missverständnis. Die meisten Fabs verfügen jetzt über Logic-in-DRAM-Prozesse ; Ein speicherbandbreitenintensiver Algorithmus wäre auf diesen Chips obszön schneller als auf einer GPU oder CPU, die große, langsame Kupferstifte und PCB-Leiterbahnen verwenden müssen, um zu den Speicherchips zu gelangen.

Ich bezweifle, dass Sie jemals die Art von Problem finden werden, nach der Sie suchen. CPUs und sogar GPUs zahlen einen hohen Preis, um Alleskönner zu sein; Wenn Ihre kryptografische Funktion nicht so etwas wie "Starten Sie eine virtuelle Maschine mit Windows 95 und führen Sie dieses MS-DOS-Programm darauf aus" ist, wird jemand einen Weg finden, sie effizienter zu machen, indem er den Teil der CPU/GPU wegwirft, den er nicht hat. nicht brauchen.

Abgesehen davon glaube ich nicht, dass ASICs jemals eine kostengünstige Methode zum Minen sein werden. Sie spielen nur eine Rolle, wenn Sie sich Sorgen um Unternehmen mit tiefen Taschen machen, die von etwas anderem motiviert sind, als sie tiefer zu machen ("nationale Sicherheit").

lustig, dass Sie die nationale Sicherheit erwähnen, seit die NSA 2001 den SHA-256-Algorithmus veröffentlicht hat
Es ist auch in ihren Suite B-Protokollen enthalten und Russland verwendet sie ebenfalls. SHA-256 ist ziemlich sicher, es sei denn, Sie sind ein Typ mit einem Beweis für P = NP in Ihrer Gesäßtasche
"Starten Sie eine virtuelle Maschine mit Windows 95 und führen Sie dieses MS-DOS-Programm darauf aus" Ich erhalte 1,3 MB Win95/s

Wenn man eine Bibliothek von Proof-of-Work-Funktionen hätte, die grundlegend unterschiedliche Berechnungen durchführen, die unterschiedliche Algorithmen erfordern, die sowohl genetisch als auch zufällig ausgewählt sind, dann würden ASICs irrelevant werden. Dies würde jedoch einen vollständigen Neustart des Bitcoin erfordern. Es wird nicht gemacht. ASICs sind gekommen, um zu bleiben.

Der Fokus der Community sollte auf der Entwicklung von Open-Source-ASICs und der Sicherstellung ihrer gleichmäßigen Verteilung liegen. Am Ende bekommt alles seine eigene Hardware. Spieler haben zum Beispiel den GPU-Markt geschaffen.

Warum wurde dies herabgestuft? Alles, was ich gesagt habe, ist richtig
Die Änderung der Blockgenerierungsmethode ist etwas, dem die Mehrheit der Bitcoin-Kunden zustimmen muss. Die Community wird nicht zustimmen, ihre ASICs und GPUs wertlos zu machen.
Vor allem wenn man bedenkt, dass ASICS und GPUS mehr als 51 % der Rechenleistung ausmachen
Also wird mir niemand sagen, warum sie mich herabgestimmt haben? Ich kann bei Bedarf ein Java-Programm schreiben, das das widerspiegelt, was ich oben beschrieben habe. Sie können die Proof-of-Work-Berechnung mit jedem Block so ändern, dass ein anderer Satz von Algorithmen zur Auflösung erforderlich ist. Ein ASIC wäre dann nur für bestimmte Blöcke sinnvoll, aber nicht für alle. Doch irgendwie ist dies eine Herabstufung wert?