Was ist ein Mittelstand? Wie beschleunigt die Verwendung eines Midstates das Hashing?

Dies definiert „Midstate“ als den „vorberechneten Hash-Status nach dem Hashing der ersten Hälfte der Daten“.

Ich habe gehört, dass "midstate" im Zusammenhang mit der Beschleunigung des Hashings verwendet wird. Wie beschleunigt die Verwendung eines Midstates das Hashing?

Mögliches Duplikat von bitcoin.stackexchange.com/q/5034/18196 .

Antworten (2)

Die Leute sprechen oft über SHA256, als wäre es eine einzelne Operation, aber das ist es nicht. Stattdessen wird die Eingabe in 64-Byte-Blöcke aufgeteilt, und dann wird jeder Block in eine Komprimierungsfunktion eingefügt. Der Zustand des Hashs während des Hashings hängt nicht von zukünftigen Teilen der Daten ab. Da sich die Nonce im zweiten Chunk befindet, ändert das Ändern der Nonce nicht den Status der Hash-Funktion nach dem Hashen des ersten Chunks.

Dies ist in anderen Anwendungen nützlich. Wenn Sie beispielsweise eine große Datei hashen, bedeutet dies, dass Sie sie hashen können, ohne die gesamte Datei auf einmal in den Speicher zu laden oder sie mehrmals von der Festplatte zu laden.

Die praktische Konsequenz daraus für Bitcoin-Miner ist, dass Sie in 99,99999998 % der Zeit nur 2 Iterationen der SHA256-Komprimierungsfunktion benötigen, um eine mögliche Blocklösung zu prüfen, anstatt 3. Mit anderen Worten, Sie können 50 % schneller minen. Da dies natürlich alle anderen tun, bedeutet das nur, dass die Schwierigkeit für alle höher ist.

Midstate ist buchstäblich der Zustand auf halbem Weg durch das Hashing.

Siehe auch: Hatte Satoshi beabsichtigt, Midstate-Berechnungen zuzulassen, um das Hashing zu beschleunigen?

Ich dachte, es wäre in 32 - Bit -Blöcke aufgeteilt. So interpretiere ich es zumindest sha256_generic.c.
@Geremia Es wird in 64-Byte-Blöcke aufgeteilt und dann jeweils 32 Bit in das Nachrichtenzeitplan-Array kopiert. 16 mal 32 geteilt durch 8 ergibt 64.
Aber wir sprechen hier von doppeltem SHA-256 (SHA-256d). Wie wirkt sich das auf die Dinge aus?
SHA-256d ( b) bei der Eingabe dataist: b=SHA(a=SHA(data)). So ist ader "Mittelstaat"?
@Geremia aist nicht der Mittelstaat selbst. Sie können den Mittelzustand für effizientere Berechnungen verwenden, ada sich die erste Hälfte von datanicht ändert. bmuss von Grund auf neu erstellt werden (obwohl die Berechnung nur einen einzigen SHA-256-Block umfasst , da sie anur 32 Bytes lang ist ).b

Sofern ich nicht anders korrigiert werde, biete ich diese Analogie an:

Da sind zwei Schränke voller Akten. Sie haben Schrank 1 bereits durchsucht (persönlich oder von einem anderen Team erledigt) und möchten sich die Zeit ersparen, denselben Schrank am nächsten Tag erneut zu durchsuchen. Sie versiegeln also (kryptographisch) die Tür, um sicherzustellen, dass der Zustand erhalten bleibt (niemand ändert Dateien). So können Sie sich auf den zweiten Schrank konzentrieren.

Auch hier bin ich auf dem Zaun, ob ich kommentieren oder antworten soll, aber ich habe mich für Letzteres entschieden

Das scheint keine sehr gute Analogie zu sein. Sie versuchen nicht, den Suchraum einzugrenzen, sondern einzelne Versuche zu beschleunigen.