Ethereum unter der Haube – Teil 7 (Blöcke)

Willkommen zurück und ein frohes neues Jahr. Ich bin froh, dass du immer noch bei mir bist, während wir uns in die Interna von Ethereum wagen. In Kapitel 6 haben wir Hashing besprochen. In diesem Abschnitt tauchen wir in Blöcke ein. Block ist ein großes Thema, das in einem einzigen mittleren Beitrag behandelt werden soll. Daher beabsichtige ich, Blöcke in zwei Teile und Teil 1 von Blöcken kurz aufzuteilen. In Block Teil 1 behandeln wir:

Kurzübersicht:

Wir tauchen ein wenig tiefer in unsere Reise zur Erforschung von Ethereum ein, aber es ist gut, innezuhalten und das, was wir bisher gelernt haben, zusammenzufassen. Ich habe einen öffentlichen Kern geschaffen, um unsere kollektiven Erinnerungen aufzufrischen Konzentrieren wir uns für diese Übersicht auf Teil 3 bis 6.

Blöcke:

Der Block ist der Kern des Konzepts einer BlockChain. Ein Block ist ein historischer Protokollführer der Liste der Transaktionen. In dieser Aussage sind viele Informationen enthalten. Ethereum hat wie sein Vorgänger Bitcoin das Konzept einer Blockchain. Um einen Block zu verstehen, nähern wir uns einem Block als Datenstruktur.

Das gelbe Papier von Ethereum, in dem ein Block als Sammlung von drei Entitäten definiert wird 1. Blockheader 2.Transaktionsliste 3.Ommers-Liste , formal definiert als:

Ein Block ist eine ähnliche Datenstruktur mit einer Reihe validierter Transaktionen.

Blockheader:

Blockheader, wie der Name schon sagt, ist der Header eines Blocks. Blockheader besteht aus 15 verschiedenen Feldern gemäß dem gelben Papier. Ich habe versucht, sie in einer Tabelle zu erfassen, ähnlich der folgenden :

Jedes dieser Felder benötigt ein eigenes Kapitel. Wir werden nicht auf die Details jedes dieser 15 Felder eingehen, sondern uns auf einige konzentrieren. Ich würde empfehlen, Teil-4 (The trie) als Auffrischung anzusehen. Nun zurück zu den Blockheaderfeldern

: Dieses Feld, da der Name auf den Keccak-Hash des Elternteils von diesem Block verweist. Die Feldgröße wäre eine 256-Bit-Funktion Keccak-Hash . In erster Linie gibt der Hash-Wert das unmittelbare übergeordnete Element dieses -Blocks an Ethereum verbindet einen Block mit einem anderen und bildet eine Kette von Blöcken.

: Dies bezieht sich auf die Keccak-Hash-Wurzel einer Sammlung des State Trie (Post-Execution), die seitdem aufgetreten ist die Erstellung von this block , einer {key, value} -Sammlung. Es gibt nur einen globalen Status, der kontinuierlich aktualisiert wird, und jeder Block hat den Root-Hash des Status Trie DB.

: Keccak-Hash des Stammknotens von Transaction Trie: Dieses Feld bezieht sich auf die Keccak-Hash-Wurzel einer Sammlung aller Transaktionsversuch, der seit der Erstellung von diesem Block stattgefunden hat.

: Keccak-Hash des Stammknotens von Transaction Trie: Dieses Feld bezieht sich auf die Keccak-Hash-Wurzel einer Sammlung aller Transaktionsversuch, der seit der Erstellung von diesem Block stattgefunden hat. Die Quittung (R) ist ein Tupel , das aus 4 Feldern besteht. Das gelbe Papier von Ethereum enthält einige Erwähnungen zum Stammfeld der Belege. Das Belegfeld ist eine Sammlung von

Die Felder Protokolle ( Rl ) und Bloom-Filterwurzel ( Rb ), die im gelben Papier ausführlich beschrieben werden. Bloom-Filter benötigen einen separaten Abschnitt, und ich plane, sie in Teil 8 zu erörtern. Lassen Sie uns Bloom-Filter jedoch zunächst als einen Algorithmus betrachten, der die Ergebnisse der Suchzeit beschleunigen kann.

Unten finden Sie eine kodifizierte Struktur des Ethereum Block-Headers in Elixir. Ich habe auch einen Link zur Go-Codebasis bereitgestellt.

Blockheader-Struktur:

Sehen Sie sich diese hervorragende visuelle Darstellung der Ethereum-Block-Struktur von Lucas Saldanha an, und es gibt verschiedene Links zu Versuchen.

Zusammenfassung:

Auf:

Im nächsten Abschnitt 8 werden wir die Blöcke, den Genesis-Block und die Blocküberprüfung weiter untersuchen, bis dahin erfahren Sie weiter.

Referenzen: