Welche Mechanismen nutzen das Ethereum-Netzwerk, um zu entscheiden, wann ein Block B fertig ist und wir Block B+1 minen werden?

Ich weiß aus den Ethereum -Statistiken , dass ein Block im Durchschnitt innerhalb von 14 Sekunden abgebaut wird. Aber das ist nur der Durchschnitt. Ich möchte wissen, Schritt für Schritt, wenn möglich, was sind die Mechanismen, um zu sagen: " Okay, dieser Block ist fertig, lass uns einen neuen erstellen ".

Meiner Meinung nach ist es keine Begrenzung der Blockgröße (auch wenn es eine gibt), da sich das Ethereum-Netzwerk anpassen kann, wenn Transaktionen nicht mehr als 3 141 592 Gas verbrauchen , was viele Transaktionen darstellt.

Ich denke also, dass dies mit der Ankündigung zusammenhängt, die die Schwierigkeit auf einen Block/12 Sekunden festlegte. Aber ich bin mir nicht sicher.

Vielen Dank für Ihre wertvolle Zeit und Hilfe.

Antworten (1)

Ethereum ist also im Grunde eine Zustandsmaschine. Sie haben eine Datenbank mit Zuständen (z. B. Konten mit Beträgen). Wie ändern sich diese Zustände? durch über von Transaktionen. Das können Aufrufe give X ether from A to Bvon Smart Contracts sein. OK, die Transaktionen sind in einem Block zusammengefasst . Und hier wird es interessant.

Sie haben das Universum von Bergleuten , die daran arbeiten, Blöcke zu produzieren. Sie nehmen Transaktionen aus dem Pool, verarbeiten sie, bis sie das erreichen , weisen die Transaktionsgebühren und die Belohnung für den am Ende gefundenen Block gasLimitihrem bestimmten Konto (genannt das etherbase) zu und produzieren von hier aus eine zufällige Nonce . Die Nonce ist wichtig: Aus dieser Nonce und dem von Ihnen erstellten Block erstellen Sie einen Hash , der kompliziert genug ist, um Ihre Maschine viel arbeiten zu lassen (dh viel CPU, Speicher und Energie zu verbrauchen. Deshalb heißt es Arbeitsnachweis ). Sobald der Miner einen Hash hat, dies wird mit dem Ziel verglichen , das nichts anderes als 2**256 / Difficultyist. Je größer die Schwierigkeit, desto geringer sind die Chancen, einen Hash zu finden, der kleiner als das Ziel ist.

Da Sie aus Ihrem erstellten Block und Ihrer Nonce2**256 zufällig mögliche Hashes erzeugen können , ist Ihre Wahrscheinlichkeit, jederzeit einen gültigen Hash zu finden, . Der erste Miner, der einen Hash findet, der kleiner als das Ziel ist, gibt sein Ergebnis weiter. Wenn die anderen Miner diesen Block erhalten und ihn für gültig halten (indem sie seine Transaktionen wiederholen und Nonce und Hash verifizieren ), wird er in ihre jeweilige Blockchain aufgenommen .1/D

Nun die Frage: Wie schaffen sie es, im Durchschnitt etwa 14 Sekunden zu erreichen? Nun, es gibt eine Schwierigkeitsberechnungsfunktion (siehe diesen Beitrag für eine hervorragende Erklärung), die jedes Mal, wenn ein Block erstellt wird, neu berechnet wird. Dann sehen Sie, dass Sie basierend auf dem, was Sie zum Erstellen des letzten Blocks benötigen, die Schwierigkeit anpassen, um eine Zeit zwischen 10und 19Sekunden erreichen zu können. Natürlich wird diese Schwierigkeit auch entlang des neuen Blocks validiert.

Um Ihre Frage zu beantworten, difficultybezieht sich der auf Daten aus dem übergeordneten Block , nämlich die Schwierigkeit , Blocknummer und Zeit dieses übergeordneten Blocks und die Zeit des aktuellen Blocks .

Beachten Sie, dass Bergleute Gewinnmaximierer sind, und die Arbeit zum Erstellen eines Blocks mit 0 Transaktionen ist in probabilistischer Hinsicht die gleiche wie die Arbeit zum Erstellen eines Blocks mit den vom System maximal zulässigen Transaktionen ( gasLimit). Sie werden so viele Transaktionen wie möglich einbeziehen wollen, um die TX-Gebühren zu erhalten.