Difficulty <-> Blockhash

Hallo,
Ich habe eine Frage:
Wie kann man die Difficulty genau einsehen?
Wo steht, welche Difficulty gerade genau gefordert ist?
Wie genau misst man die Difficulty und wie validiert man, dass der neue Block-hash dieser entspricht?

Ich habe mal gehört, dass es neben der Anzahl an Nullen am Anfang des Hashes noch mehr Kriterien gibt, die gefordert sind, damit der Hash gültig ist und der Block somit akzeptiert wird.
Dass ein Hash mit mit einer vorangestellten 0 mehr doppelt so schwer zu finden ist, ist ja schon oft gesagt worden aber um die Diff. statt um 100% nur um 0,5 oder 1 % hochzuschrauben gibt es noch andere Kriterien. Soweit ich weiß hat es mit den folgenden Zeichen zu tun, die nach den Nullen stehen.

Kennt sich da jemand aus und/oder weiß, wo das und weitere Details über die Funktionsweise von BTC nachgelesen werden können?
Vielleicht hat jemand ein Buch gelesen, das diese Sachen erklärt.
evtl. Mastering Bitcoin von A.A. (Das hab ich noch nicht gelesen)
Kann das jemand empfehlen?

LG

Infos zu solchen recht verbreiteten Frahen erhältst du am besten über die Suchfunktion (Suchfeld mit der Lupe oben).

Damit findest du z.B. folgende Threads zum Thema:
Mining Difficulty
Steigt die Difficulty linear oder exponentiell?

Hier gibt es zum Einstieg einen einführenden Blocktrainer-Artikel:

Falls dann noch Fragen offen sind, einfach nochmal melden.

1 „Gefällt mir“

Vielen Dank.
super, dass es dazu schon was gibt.
Dann lese ich das alles mal durch.

1 „Gefällt mir“

Danke dir,
Das hilft mir sehr weiter. Genau das habe ich gesucht.
Jetzt verstehe ich besser, was die Difficulty genau aussagt und wie sie gemessen wird…

Ich habe die ganzen Threads durchgelesen und bin gerade im Kapitel 7.3.1 des Buchs:
Bitcoin begreifen

Ich schreibe hierzu weitere Fragen rein, die ich mir beim Lesen stelle.
Evtl. beantworten sie sich von selbst beim Weiterlesen, sie sind aber dennoch wichtig, deshalb notiere ich sie hier noch.

folgender Satz:
"Der Proof of Work ist dann gültig, wenn der hash des Block Headers–die Block ID–kleiner oder gleich einem vereinbarten Zielwert ist, der im Block Header steht, wie Abbildung 154 darstellt.

erstmal:
Block-Header-Hash = Block-ID = Block-Hash(ugs.) ?

wenn nur der Block-Header gehasht wird, der Block-Hash (Block-ID) also nur abhängig von dem Block-Header ist, dann stellt sich mir die Frage, welche Bestandteile der Header hat. Und wovon der Header abhängt.
Meine Annahme:
Bestandteile des Block-Headers:

  • Nonce
  • Diff.-Target
  • Timestamp
  • Blockhash (ID) des vorigen Blocks
  • Blockhash (ID) dieses Blocks

Wenn im Block-Header die TX nicht enthalten sind, verstehe ich nicht, warum folgender Satz so oder so ähnlich oft gesagt wird:
„Um einen neuen gültigen Hash zu erzeugen wird einfach irgendwas im Block verändert, wodurch sich der Blockhash verändert. z.B. wird die nonce hochgezählt, der Timestamp wird leicht verändert, die TXs werden in einer anderen Reihenfolge sortiert,…“

Mir geht es jetzt um die TXs.
Wenn die TXs keinen Einfluss auf den Block-Header haben, dann haben die ja auch keinen Einfluss auf den Block-Hash.
Ich schätze mal, dass sie einen Einfluss auf den Block-Hash haben, ich verstehe nur noch nicht, wie.

Was ich auch noch nicht ganz durchdrungen habe, ist des genaue Aufbau eines Blocks (Was genau ist der Block-header, welche Unterschiede haben verschiedene Templates,…)

Ich lese erstmal weiter und wenn ich dadurch nicht zu einer Lösung/Antwort komme, schreibe ich das hier nochmal rein.
Wenn ich eine Antwort finde, schreibe ich das hier auch rein.

LG

1 „Gefällt mir“

:white_check_mark:

Fast richtig. Den Hash des aktuellen Blocks brauchst du nicht, da man ihn einfach aus dem Header berechnen kann. Dafür gibt es aber noch eine Version (hier irrelevant) und eine Merkle Root:

  • Nonce
  • Diff.-Target
  • Timestamp
  • Blockhash des vorherigen Blocks
  • Merkle Root
  • Version

Quelle: Mastering Bitcoin - Block Header

Das hast du dir genau richtig überlegt!

Das Geheimnis ist die Merkle Root. Alle Transaktionen des Blocks werden separat gehasht. Anschließend werden immer paarweise zwei Hashes durch einen einzelnen Hash der aneinandergereihten Einzel-Hashes ersetzt. Den Prozess wiederholt man iterativ, bis am Ende nur noch ein Hash übrig bleibt, die Merkle Root.

Sollte man Details einer einzelnen Transaktion oder deren Reihenfolge ändern, ändert sich auch die Merkle Root. Sie ist also ein Fingerabdruck aller Transaktionen.

Quelle: Mastering Bitcoin - Merkle Tree

Falls Englisch ok ist, kannst du ja mal hier reinschauen:
Mastering Bitcoin - Block Structure
Learn me a Bitcoin - Beginners - Blocks
Learn me a Bitcoin - Technical - Blocks

Sehr cool,

Ja. Englisch ist ok.
Danke

Hier simpel an mathematischen Beispielen veranschaulicht:

vielen Dank, habe es angeschaut.
Das ist seeehr gut erklärt. Voll gut.

1 „Gefällt mir“

Ich lese mir grade die Sachen stück für stück durch. Die Quellen sind echt Gold (oder BTC) wert.

durch die Tools auf dieser Seite, die du mir geschickt hast
Blocks | What is a Block in Bitcoin?

hab ich herausgefunden, dass die Merkle Root gleich der TX ID ist, wenn nur eine einzige TX im Block (also nur die Coinbase-TX) enthalten ist.

Bei allen Blöcken, die ich in Mempool.space aufgerufen habe, war das auch so.
—>fand ich interessant.

Falls das doch nicht stimmt, bitte sagen.

guten Rutsch ins neue Jahr.

Freut mich! :smiley:

Damit weißt du mehr als ich, aber ich glaube dir das gerne. :sweat_smile:

Danke, ebenso! :champagne: