Merkle Root vs Message Digest? [Duplikat]

Meine Frage bezieht sich auf den betrieblichen Unterschied zwischen einem Merkle-Root und einem Plain Old Message Digest .

Um eine Merkle-Wurzel zu berechnen , muss ich die folgenden Schritte ausführen:

  • hash jede Transaktion in einem Block
  • Erstellen Sie einen Merkle-Baum aus allen gehashten Transaktionen
  • Arbeiten Sie die Merkle-Baum-Hashing-Paare von Transaktionen zurück, bis ich die Merkle-Wurzel berechnet habe

Um einen einfachen alten Nachrichten-Digest zu erstellen, würde ich Folgendes tun:

  • Nehmen Sie alle Transaktionen in einem Block und hashen Sie sie gleichzeitig, um einen Message Digest zu erstellen

Meine Frage ist, inwiefern ist eine Merkle-Root aus betrieblicher Sicht vorteilhafter als ein einfacher alter Message Digest?

Antworten (1)

Anfangs sehen sie gleich aus, nur wenn man bedenkt, dass der Block einen Hash enthält.

Ein Merkle-Baum ist effizienter, um zu beweisen, dass eine Transaktion in einem Block enthalten ist, da es andernfalls notwendig ist, jede Transaktion zu haben und zu hashen, um zu beweisen, dass eine Transaktion mithilfe eines Nachrichtenauszugs enthalten ist, sodass ein vollständiger Knoten dies tun kann, aber ein SPV-Client (und ein beschnittener Knoten, der außerhalb der Blöcke schaut, die er behalten hat) kann dies nicht.

In diesen Antworten finden Sie weitere Informationen dazu, wie dies funktioniert: Merkle Root und Merkle Proofs

Also bieten sowohl ein Message Digest als auch ein Merkle Root die gleiche Funktion, aber ein Merkle Root ist effizienter?
@T-Pane Nicht ganz die gleiche Funktion, nur anfänglich. Wenn ich Message Digest habe, kann ich keine einzige Sache ändern, wie Sie verstehen, gilt das Gleiche für Merkle Tree, aber ich kann auf einem Merkle Tree wandeln. Die Technik wird in dieser Antwort angegeben .