|
January 12, 2014, 10:15:45 PM |
|
Wisitor, ich hoffe, ich kann Dir Deine Fragen so halbwegs erklären, falls ich grundlegend falsch liege, mögen mich bitte die Experten korrigieren.
Zuerst sollte einmal klar sein, was eine Hashfunktion ist. Eine Hashfunktion berechnet aus Input einen Output. Die Hashfunktionen sind so beschaffen, dass man bei gegebenen Output nicht zurückrechnen kann, was der Input war. Hauptanwendung ist die Verschlüsselung und Speicherung von Paßwörtern.
Bei den Bitcoins wird die Hashfunktion SHA256 verwendet, was die genau macht ist in Wikipedia erklärt. Da bei den Bitcoins ist der Input und der Output beides ein 256 bit langer Datenblock ist, der in 8 Teile aufgespalten wird, die iterativ (hintereinader) mit einfachsten Rechenoperationen verknüpft werden, geht das recht leicht in einem ASIC Chip.
Der Asic wird mit einem Startwert gefüttert, dann rechnet er selbstständig in jedem Schritt einen neuen Hashwert, und der Output der aktuellen Rechnung ist der Input für die nächste. Wenn der ASIC jetzt einen Output gefunden hat, der mit genügend vielen Nullen beginnt, braucht er nur mehr den vorletzten Input an den Computer senden, das ist die Lösung das nächsten Blocks, sofern das Bitcoin Netzwerk den Hash mehrheitlich akzeptiert.
Zusammenfassend, braucht man für eine SHA256 ASIC einige 256 bit breite Speicherregister, einige 256 bit breite Konstanten und einige grundlegende Rechenoperationen wie addieren, AND, XOR, NOT,> Das geht sich mit 20000 Gates am ASIC aus.
Scrypt basiert auch auf Hashfunktionen, nur mit dem Unterschied:
- sie werden mehrfach hintereinander angewendet - es gibt bei jedem Aufruf der Hashfunktion eine Umwandlung des Inputs aufgrund einer Tabelle mit bijektiven Pseudozufallszahlen, diese Tabelle hat 2^256 Einträge, das ergibt einen Speicherbedarf von 2^256*256 bits, das ist wesentlich mehr als jeder Computer Hauptspeicher hat. Der Trick dabei ist, dass man nur den Bereich der Tabelle mit Pseudozufallszahlen berechnet, der gerade gebraucht wird, das geht mit einer mehrfach hintereinander aufgerufenen Funktion (Salsa20/8), für die es aber auch schon ASICs gibt. Dann kommt man mit einigen kB Speicher aus.
Die Entwicklung von ASICs für Script ist IMHO nur eine Frage der Zeit, die ASICs Chips sind eben viel komplexer, da sie SHA256, Salsa20/8 und Zugriff auf Speicher brauchen, und sie werden aufgrund der höheren Rechenleistung für Scrypt immer viel langsamer als SHA256 ASICs sein.
|