Der Bitcoin-Client erstellt einen Merkle-Baum, um die Transaktionen darzustellen, und fügt dann die Wurzel dieses Baums in den Block-Header ein.
Aber normalerweise ist die Anzahl der Transaktionen keine Zweierpotenz. Wie stellt der Bitcoin-Client in diesem Fall die Transaktionen im Baum dar?
Wenn ich einen benutzerdefinierten Mining-Client schreiben würde, der einen Baum mit einer anderen „Form“ erstellt (Beispiel unten), was würde passieren?
Jedes Mal hasht es jede Transaktion mit der daneben, bis nur noch eine übrig ist.
Bei einer ungeraden Anzahl von Transaktionen wird die letzte erneut gehasht.
In diesem Beispiel beginnen wir mit 11, dann 6, dann 3, dann 2, dann 1.
Beim Versenden von Blöcken gibt es keine Möglichkeit, die Form des Merkle-Baums anzugeben. Wenn es anders ist, wird der Standardclient es einfach ablehnen.
Pieter Wuille
Nick Odell