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.