Glossar · im Detail

Merkle-Wurzel

Ein einzelner Hash im Block-Header, der sich auf jede Transaktion im Block verpflichtet.

Ein Block kann Tausende Transaktionen halten, aber sein Header ist nur 80 Bytes. Die Merkle-Wurzel ist, wie er sich in 32 Bytes auf alle commitet.

Wie sie gebaut wird

Nimm die txid jeder Transaktion. Paare sie und hashe jedes Paar mit doppeltem SHA-256. Paare die Ergebnisse und wiederhole, bis ein Hash übrig bleibt: die Wurzel. Hat eine Ebene eine ungerade Zahl Elemente, wird das letzte mit sich selbst gepaart.

Warum sie nützlich ist

Um zu beweisen, dass eine Transaktion in einem Block ist, brauchst du nur die Hashes entlang ihres Zweigs – etwa log2(n). Bei einem Block mit 4.000 Transaktionen sind das nur 12 Hashes. Satoshis Whitepaper nannte das Simplified Payment Verification (SPV).

Eine bekannte Eigenheit

Weil das letzte Element verdoppelt wird, können zwei verschiedene Transaktionslisten dieselbe Wurzel erzeugen. Das war der Bug CVE-2012-2459, und Bitcoin Core lehnt Blöcke, die auf diese Weise doppelte Transaktionen enthalten, inzwischen ab.