Geschwindigkeit von Hashes

Hi ho liebe Leute der guten Unterhaltung, hallo lieber Roman

Ich sitze gerade im Park und habe mich gefragt wie lange die Berechnung eines Hashes dauert beziehungsweise wie sehr die Größe einer Datei eine Rolle dafür spielt.

Wird bei der Blockchain nur der letzte Block oder die gesamte Blochain gehasht?

Außerdem wäre es Theoretisch möglich mit zwei unterschiedlichen Dateien einen gleichen Hash zu errechnen. Auch wenn es megaaaaaaa unwahrscheinlich ist.

Wie will man zu 100% wissen das sha256 zu 100% sicher ist. Was würde passieren wenn eines Tages doch zwei gleiche hashes errechnet würde? Wäre es relevant? Würde das System crashen? Wie kann ich mir das als Laie vorstellen?

Meep meep euer Roadrunner

Kommt darauf an, wer berechnet und welcher Algorithmus (SHA-1, SHA-256,…) etc zugrunde liegt… also ob du das per Hand machst oder eben ein ASIC- Miner ^^
Ein aktueller ASIC Antminer T19 schafft beim Bitcoin minen ca. 84 Terahashes pro Sekunde… also 84 Billionen Hashes pro Sekunde. Wenn du das per Hand machst schaffst du ca 4 Hashes pro Stunde --> Siehe Video:

Es wird der Block-Header des vorherigen Blocks gehasht und ein Hash über alle Transaktionen im aktuellen Block erstellt.

Kurz: Ja, theoretisch ist das möglich.

Kann man nicht, nichts ist zu 100% sicher.

Naja kommt drauf an, welcher Hash, zweimal errechnet wird.
Wird z.B. zweimal der gleiche Private Key erstellt, und es liegt schon was drauf, dann kann ihn halt der zweite unbemerkt leer räumen, aber crashen würde deswegen Bitcoin nicht. Nur dumm für den, dessen Adresse es vorher war. :smiley:

2 Like

Einen Hash kann jeder Kartoffel Computer heutzutage im Bruchteil einer Sekunde berechnen. :smiley:
Das aufwendige beim Bitcoin ist ja erst, dass durch den Schwierigkeitsgrad Vorraussetzungen an die Hashes gestellt werden. Also dass er z.B. mit 5 Nullen anfangen muss. Dazu muss man halt zufälligen Inhalt mit in den Block schreiben und solange rumprobieren bis ein Hash mit den Vorgaben rauskommt.

Theoretisch gesehen: Sobald du im Fall von SHA256 mehr als 2^256 Eingaben hast, besteht die Chance, dass zwei mal der gleiche Hash entsteht.
Heißt aber nicht, dass das Verfahren unsicher ist, da es sich (eigentlich) nicht gewollt reproduzieren lässt. Ist halt eine krass kleine Wahrscheinlichkeit - so auch im Fall des Privatekey was Renna geschrieben hat.

Bei SHA-1 können aber inzwischen zwei unterschiedliche Dokumente mit den gleichen Hashes erzeugt werden.

Aber wenn SHA256 irgendwann mal in solche Regionen kommt und Quantencomputer bei jedem zu Hause stehen, dann kann man Bitcoin ja immer noch auf eine neue Technologie „upgraden“

1 Like

Und wie ist es mit Dateien die zum Beispiel 100 TB groß sind? Gibt es einen Rechner in dem man ausrechnen kann wie lange es dauern würde?

Kann man nicht so pauschal sagen. Bei großen Dateien liegt das Problem eher an der Lesegeschwindigkeit von deinem Speicher.
Wenn deine SATA SSD mit 500 MB/s deine 100 TB Datei liest, dauert dieser Vorgang alleine 55,5 Stunden.

Hier zwei Beispiele.

Filesize: 5,06 GB (5.443.010.560 Bytes)
SHA256 Calculation: 18,4s

Filesize: 5,11 MB (5.367.416 Bytes)
SHA256 Calculation: 0,0022s

@i7 7700 HQ , Samsung Evo Pro M.2. 3 GB/s Read

Wobei das Lesen der ISO Datei im ersten Fall aufgrund der tausend kleinen Dateien darin natürlich deutlich langsamer ist als die maximalen 3GB/s meiner SSD. Die angegebenen Zeiten sind also Lesezeit + Hashzeit.

Auf aktuellen Prozessoren dauert ein SHA256 Hash ca. 3*10^-8 s.

Bei sehr großen Dateien verwendet man aber Verfahren wie Hash-Tree, wo man die Datei z.B. in 1024 Byte große Datenblöcke aufsplittet und dann paralell rechnet. Und dann auch nicht mit den 4-8 Kernen einer CPU sondern mit den tausenden Shadereinheiten einer Grafikkarte.

3 Like

Danke für deinen Beitrag :slight_smile: ich finde es echt klasse wie hilfsbereit ihr seid

Du läufst immer auf:- Unmögliche ist da, um es möglich zu machen! Das finde ich schön Roadrunner, gute fragen :wink:

1 Like

Bitcoin nutzt sha256+

1 Like

Kurz: es ist linear abhängig. 10mal mehr Daten bedeuten 10mal längere Hashingzeit. Grob gesagt sind alle Hashes nichts anderes als klevere Summen, die immer in Stücken von x Bytes etwas ausrechnen. Hat man also 1 Million Bytes dauert das Zeit t1. Hat man 2 Millionen Bytes dauert es Zeit t1 mal 2, weil es doppelt so viele Stücke sind.

Video Antwort