Wie wird die Merkle-Root erstellt?
Beginne mit der ID jeder Transaktion im Block. Sie ist selbst ein doppelter SHA-256-Hash. Ordne die IDs, mit der Coinbase-Transaktion zuerst. Fasse benachbarte Hashes paarweise zusammen und hashe jedes Paar. Jetzt hast du halb so viele Hashes. Wiederhole den Vorgang, bis nur noch einer übrig ist: die Merkle-Root.
Hat eine Ebene eine ungerade Anzahl an Hashes, wird der letzte mit sich selbst gepaart. Ändere eine beliebige Transaktion, auch nur um einen Satoshi, und jeder Hash auf dem Weg nach oben ändert sich, einschließlich der Root. Probier es oben in der Demo aus.
Warum ein Baum statt eines einzigen großen Hashes?
Nachweise. Um zu zeigen, dass eine Transaktion in einem Block enthalten ist, brauchst du nur die Hashes entlang ihres Zweigs, nicht den ganzen Block. Bei einem Block mit etwa 4.000 Transaktionen reichen 12 davon, also ein paar hundert Bytes. Satoshis Whitepaper beschreibt Light Wallets, die Zahlungen so prüfen und dabei nur Block-Header speichern.
Das ist auch fürs Mining wichtig. Wenn ein Miner die Extra-Nonce in der Coinbase-Transaktion ändert, ändert sich die Merkle-Root. Dadurch erhält der Block-Header neue Nonces, die ausprobiert werden können.
Quellen
- Bitcoin: A Peer-to-Peer Electronic Cash System · Satoshi Nakamoto, 2008
- Referenz zur Blockchain: Header, Merkle-Bäume, Zielwert · Bitcoin-Entwicklerdokumentation
- Merkle-Baum · Bitcoin-Wiki
Die Live-Daten auf dieser Seite stammen von der CloudMineCrypto-API und aus öffentlichen Blockchain-Daten. Sie werden regelmäßig aktualisiert und sind an den jeweiligen Stellen gekennzeichnet. Nur zu Bildungszwecken, keine Finanzberatung.