Wenn ich das Yellow Paper durchlese , kann ich sehen, dass jeder Block-Header den Keccak 256-Hash der Wurzel des Trie für Transaktionen und Transaktionsbelege enthält. Ich habe Mühe zu verstehen, wie und wo sie erstellt werden.
Wie hängen der Transactions Trie und der Transaction Receipts Trie für einen bestimmten Block zusammen?
Ist es der Fall, dass, wenn der Weltzustand aktualisiert wird, indem die Transaktionen durchlaufen werden, die Transaktionen und Transaktionsbelege in ihren jeweiligen Versuchen gespeichert werden?
Transaktionsversuche und Transaktionsempfangsversuche sind in der Tat unabhängige Datenstrukturen mit unterschiedlichen Wurzeln, die im Blockchain-Header gespeichert sind und sich sowohl in Zweck als auch Inhalt unterscheiden .
Zweck :
Transaktionsversuche : zeichnet Transaktionsanforderungsvektoren auf
Transaktionsempfangsversuche : Zeichnet das Transaktionsergebnis auf
Inhalt :
Parameter, die beim Erstellen eines Transaktionsversuchs verwendet werden [Einzelheiten in Abschnitt 4.3 des gelben Papiers] :
Parameter, die beim Erstellen eines Transaktionsbelegversuchs verwendet werden [Einzelheiten in Abschnitt 4.4.1 des gelben Papiers] :
In https://blog.ethereum.org/2015/11/15/merkling-in-ethereum gab Vitalik Buterin ein Beispiel für die Verwendung der verschiedenen Bäume (Transaktionen, Quittungen, Zustandsbäume).
Die erste wird vom Transaktionsbaum behandelt ; die dritte und vierte werden vom Zustandsbaum und die zweite vom Empfangsbaum behandelt . Die ersten vier sind ziemlich einfach zu berechnen; Der Server findet einfach das Objekt, holt den Merkle-Zweig (die Liste der Hashes, die vom Objekt zur Baumwurzel aufsteigen) und antwortet dem Light-Client mit dem Zweig zurück. Der fünftewird ebenfalls vom Zustandsbaum behandelt, aber die Art und Weise, wie sie berechnet wird, ist komplexer. Hier müssen wir einen sogenannten Merkle-Zustandsübergangsbeweis konstruieren. Im Wesentlichen ist es ein Beweis, der die Behauptung aufstellt: „Wenn Sie Transaktion T auf dem Zustand mit Wurzel S ausführen, wird das Ergebnis ein Zustand mit Wurzel S‘, mit Log L und Ausgabe O sein“ („Ausgabe“ existiert als Konzept in Ethereum, weil jede Transaktion ein Funktionsaufruf ist; es ist theoretisch nicht notwendig).
Quittungen dienen im Wesentlichen zum Nachweis von Protokollen und Ereignissen .
Lee
Zanzu
Lee
Zanzu
Alper
transaction request vectors
@zanzu