Zum Inhalt springen

Verständnisfragen zur Berechnung: Diffculty, Hashrate, Nonce


Empfohlene Beiträge

Liebes Forum, 

ich hoffe hier kann mir jemand etwas weiterhelfen. Ich bin absoluter Anfänger und bitte um Gnade.  
Ich versuche grade zu verstehen, wo genau die Schwierigkeit im Mining liegt. 

Kann mir vielleicht jemand an einem Beispiel weiter helfen: 
Block 570047
Aktuelle Hashrate liegt bei 44 EH/s
Difficulty des Blocks war: 6 379 265 451 411

Nach dem was ich gefunden habe sind also für die Berechnung: D * 2^32 Hashs, also 2,73*10^22 Hashs nötig, soweit richtig? 

Nun etwas tiefer: 
1. Wenn ich es richtig verstanden habe (Bitte um Korrektur!) ist das Ziel einen Hashwert zu finden, der der aktuellen Difficulty entspricht, bzw. diese unterbietet. 
Wie leite ich jetzt aus der Difficulty einen Hashwert hab, der mindestens erreicht werden muss? 

2. Das eigentliche Hashen geschieht mittels Veränderung der Nonce. Diese ist ein 32 Bit Feld und liegt damit im Bereich zwischen 0 und 2^32 = 4294967296 = 4,29 * 10^9 
Wenn die anderen Parameter des Blocks nicht geändert werden, können mit der Veränderung der Nonce allein also garnicht alle nötigen Berechnungen durchgeführt werden? 

Vielen Dank für Eure Hilfe!

Bearbeitet von foin95
Formatierung
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb foin95:

Nach dem was ich gefunden habe sind also für die Berechnung: D * 2^32 Hashs, also 2,73*10^22 Hashs nötig, soweit richtig? 

Nein, eine Anzahl der benötigen Hash´s kann nicht vorausbestimmt werden.

vor 2 Stunden schrieb foin95:

Nun etwas tiefer: 
1. Wenn ich es richtig verstanden habe (Bitte um Korrektur!) ist das Ziel einen Hashwert zu finden, der der aktuellen Difficulty entspricht, bzw. diese unterbietet. 

Das Ziel ist einen Block zu finden deren Hash SHA-256² den aktuellen Schwierigkeitsgrad min. erreicht. (führende Nullen)

vor 2 Stunden schrieb foin95:

Wie leite ich jetzt aus der Difficulty einen Hashwert hab, der mindestens erreicht werden muss? 

Der Hash (SHA-256²) wird von dem Block gebildet, den man an die Blockchain anhängen will, nicht von der "Difficulty".

vor 2 Stunden schrieb foin95:

2. Das eigentliche Hashen geschieht mittels Veränderung der Nonce. Diese ist ein 32 Bit Feld und liegt damit im Bereich zwischen 0 und 2^32 = 4294967296 = 4,29 * 10^9 
Wenn die anderen Parameter des Blocks nicht geändert werden, können mit der Veränderung der Nonce allein also garnicht alle nötigen Berechnungen durchgeführt werden? 

Nein, ein Hash geschieht mit einem Hash-Algorithmus z.B. SHA-256. Mit der Veränderung der Nonce können nun mehrere verschiedene SHA-256² Hash´s erzeugt werden.
Falls dieses 4Byte Feld für die Nonce im Block-Header nicht reicht, gibt es noch einen zweiten Parameter dafür. Weis ich aber jetzt auch nicht so aus dem Kopf wo der ist.

Edit: Hab jetzt doch nachgeschaut.
Es gibt ein "extraNonce" Feld innerhalb der ersten Transaktion des Blockes, welches dafür genutzt wird.

Näheres hier:  https://en.bitcoin.it/wiki/Block_hashing_algorithm

Bearbeitet von MixMax
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb foin95:

Wie leite ich jetzt aus der Difficulty einen Hashwert hab, der mindestens erreicht werden muss? 

Vorweg: Auf diesem Gebiet bin ich auch kein Profi ...

Hier ist Dein Block: https://www.blockchain.com/de/btc/block-height/570047

Und das ist der erfolgreich gefundene Hashwert: 0000000000000000000ffb0b75e32c361772de3c3fdf9c6c8ef7c935a2259a8c

Die Difficulty besagt nun lediglich wieviel 0-Bits zu Beginn eines Blockhashes stehen müssen damit dieser gültig ist.

Der Blockhash ist auch nur der gesamte Block + die Nonce durchgehasht. 

Je größer die Difficulty, desto mehr 0-Bits müssen zu Beginn des Hashes stehen.
Je mehr 0-Bytes vorne stehen müssen, desto mehr Nonce-Werte müssen "zur Verfügung stehen" um auf einen gültigen Hashwert zu kommen.
Je mehr Nonce-Werte "durchprobiert" werden müssen, desto länger dauert die Berechnung
Je länger die Berechnung des Durchprobierens dauert, desto mehr Hash-Leistung ist erforderlich um binnen zehn Minuten einen gültigen Block zu erzeugen.
 

(hoffentlich liege ich nicht allzu falsch ?!?)

Bearbeitet von Jokin
Link zu diesem Kommentar
Auf anderen Seiten teilen

Passt nach meiner Einschätzung  @Jokin

Einfach ausgedrückt läuft es doch so:
Nehmen wir mal an die "difficulty" sind 19 Nullen vorne wie im Beispiel.
Man hash´t nun den ganzen Block, den man gerne hätte 2 mal mit SHA-256. (2 mal, weil die paranoiden Entwickler gerne alles doppelt machen:lol: ).
Dann schaut man sich die ersten Zahlen an. Sind es 19 Nullen? Fertig, Feierabend. :cool:
Wenn nicht, Nonce++ dann noch mal hashen usw.

Edit: Weil ich ahne, dass jetzt wieder die Besserwisser aus den Ecken gekrabbelt kommen und wild anfangen mit Worten wie "hashMerkleRoot" und "Blockheader" um sich zu werfen, hier der Hinweis: Dies ist nur eine für Anfänger geeignete schemenhafte Darstellung des Minings, deren Einzelheiten aber etwas anders und komplexer sind.

Genauere Infos dazu gibt es auf der Wikipedia-Seite: https://en.bitcoin.it/wiki/Block_hashing_algorithm

Bearbeitet von MixMax
Link zu diesem Kommentar
Auf anderen Seiten teilen

Man kann zwar nicht ausrechnen wieviele Hashes man tatsächlich für einen Block berechnen muss, aber man kann es statistisch vorhersagen. Ich glaube das meint foin95.

Deine Rechnung macht auf den ersten Blick für mich Sinn. Kurzum: Mit 32 Bit kann man statistisch nur zu 50% einen Hash finden der mindestens 32 Nullen (in Bit) hat.Die aktuelle Difficulty verlangt aber 80 Nullen in Bits (20 in Hex).

Es gibt aber noch andere Möglichkeiten als die Nonce den Hash zu verändern: z..B. die Coinbase also die erste Transaktion des Blocks. Dort kann der Miner auch noch Zufallszahlen unterbringen (z.B. durch einen OP_RETURN Output) und damit neue Hashwert-Bereiche erschließen.

Bearbeitet von Tschaul
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.