Logik des Ethereum-Konsenses - Teil 2

Konsenslogik mit einem Beispiel

  1. Person A generiert eine Transaktion, um etwas Ether an Person B zu übergeben
  2. Die Transaktion wird auf dem Knoten übermittelt
  3. Der Knoten leitet diese unbestätigte Transaktion dann an das gesamte verbundene Netzwerk weiter
  4. Die Miner holen die unbestätigte Transaktion ab
  5. Sie versuchen, zufällig die Nonce zu generieren, um den richtigen Hash zu finden
  6. Einer der Miner findet also die richtige Nonce, um den Block zu generieren
  7. Nun schickt dieser Miner diesen Block an den Peer, der dann weiter an die nächsten Peers sendet und nach und nach erhält jeder den Block
  8. Jeder überprüft die Arbeit, ob sie die Kriterien erfüllt
  9. Sobald sie zufrieden sind, nehmen sie diesen Block in ihr Hauptbuch auf
  10. Bergmann wird belohnt
  11. Das Guthaben von B wird aktualisiert
  12. Somit ist die Zahlung von A nun bestätigt
  13. Genauso wie A denke, dass mehrere Transaktionen zur Weitergabe von Äther gleichzeitig aufgerufen wurden
  14. Sagen wir von C->D, E->F, GH usw.

Fragen:

  1. Wie bestimmt ein Miner in Ethereum, wie viele Transaktionen in den Block aufgenommen werden sollen?
  2. Basiert es auf der Gesamtzahl der Transaktionen oder dem Gesamtpreis oder der Gesamtgröße?
  3. Wird auch ein Konzept der Wartezeit angewendet, dh wenn es weniger unbestätigte Transaktionen gibt, warten die Miner eine bestimmte Zeit und gruppieren dann alle verfügbaren Transaktionen, um einen Block zu generieren?

Antworten (2)

Q1 und Q2: Die Anzahl der Transaktionen in einem Block wird durch das Blockgaslimit geregelt – ein Rechenlimit, das die maximale Anzahl an Berechnungen darstellt, die ein Miner durchführen wird, um den vollständigen Satz von Transaktionen in einem bestimmten Block auszuführen. Jede Transaktion wird aus einer Reihe von Anweisungen gebildet, und jeder Anweisung ist ein Gaspreis zugeordnet. Die Gaspreise werden im Anhang G des Ethereum-Gelbpapiers veröffentlicht .

Q3: Genau genommen gibt es keine direkte Wartezeit (gemessen in Rohzeit). Die Schwierigkeit der Proof-of-Work-Berechnung ist jedoch so eingestellt, dass die Zeit zwischen Blockerstellungen im Durchschnitt einem vordefinierten Intervall entspricht, von dem bekannt ist, dass es ein stabiles System aufrechterhält .

Wenn in diesem Intervall keine Transaktionen stattfinden, wird dennoch ein Block generiert. Dies ist immer noch nützlich, da neue Blöcke frühere Blöcke verstärken.

Miner werden auch für die Transaktionen belohnt, die in einem Block enthalten sind, den sie erfolgreich abbauen, daher werden sie dazu angeregt, so viele Transaktionen wie möglich einzubeziehen – innerhalb des Blockgaslimits. Dies hält Bergleute davon ab, die Liste der Transaktionen, die sie in einen Block aufnehmen, zu kürzen, obwohl ein Bergmann dies streng genommen tun könnte. Wenn alle Miner eine solche Strategie übernehmen würden, würde es einen Effizienzverlust geben (Transaktionsrückstand wächst), aber die Integrität der Blockchain geht nicht verloren.

Vielen Dank für die Antwort! Was ich verstanden habe, ist, dass sich das Gaslimit für einen Block vom Transaktionsgaslimit unterscheidet. Beim Einbeziehen der Transaktionen summiert es jedes Gaslimit einzeln und überprüft dann, ob es das Blockgaslimit überschreitet. Wenn dies der Fall ist, wird die letzte Transaktion nicht eingeschlossen und der Block zur Verarbeitung abgeschlossen. Was ist also das Blockgaslimit? Ändert sich das wenn ja auf welcher Grundlage?
In der Tat: Es gibt separate Gaslimits für Transaktionen und Blöcke. Weitere Einzelheiten finden Sie unter: bitcoin.stackexchange.com/questions/39132/…
Danke für das Teilen dieses Links! Habe aber das blockspezifische Gaslimit nicht darin gefunden
Es befindet sich im 3. Absatz der obersten Antwort, mit Details in Referenz [3] in derselben Antwort.
Zum Testen habe ich 300 Transaktionen in meiner privaten Blockchain generiert. Jedes Mal wurden 3 Blöcke erstellt, dh der erste 119, der zweite 119 und der letzte 62 Transaktionen. Als ich den Blockheader für 119 Transaktionen überprüft habe, liegt er bei etwa Gas Limit 4.712.388 m/s Gas Used 4.635.407 m/s, zweites Gas Limit 4.714.578 m/s Gas Used 4.635.407 m/s. Bedeutet das also, dass das Gaslimit für Blockheader irgendwo bei 4.714.578 liegt?
  1. Der Miner beeinflusst , welche Transaktionen in den Block aufgenommen werden. Er wird jedoch dazu angeregt, so viele TXs mit hohen Gaspreisen wie möglich einzubeziehen, um eine maximale Entschädigung zu erhalten

  2. Ja, jeder Block hat ein Gaslimit . Wenn also zu viele unbestätigte TXs vorhanden sind, werden nicht alle in den Block aufgenommen. Stattdessen werden Transaktionen verarbeitet, bis das Blockgaslimit erreicht ist. Diese Gasgrenze liegt zum Zeitpunkt des Schreibens bei etwa 4.000.000. Das Protokoll ermöglicht eine dynamische Anpassung dieses Limits (~0,09 % pro Block) relativ zur Netzwerkauslastung. Ethereum ist also so gebaut, dass es sich allmählich an eine höhere Auslastung anpasst.

  3. Wartezeiten gibt es meines Wissens nicht . Wenn ein Miner den erforderlichen Hash erraten kann, wird der Block abgebaut. Wenn dies nicht der Fall wäre, gäbe es niemals einen Block mit geringerem Gasverbrauch und somit keine Anpassung des Gaslimits nach unten.

Danke für deine Antwort Simon! Können Sie bitte näher erläutern (~ 0,09 % pro Block) Punkt. Bedeutet das, dass schrittweise mehr Transaktionen in einen einzelnen Block aufgenommen werden, dh das Gaslimit eines Blocks wird erhöht.
Bergleute beeinflussen die Anzahl der Transaktionen in ihrem Block, und tatsächlich haben sie die vollständige Kontrolle darüber. Ein Miner kann so viele oder wenige Transaktionen einschließen, wie er möchte, solange das Gesamtgaslimit unter dem Blockgaslimit bleibt. Zusätzlich wird die Anpassung des Gaslimits vom Miner beeinflusst, der das Limit um einen kleinen Prozentsatz nach oben oder unten anpassen darf.
Tjaden, kannst du bitte einen Hinweis auf diese Ansicht geben
Danke für den Hinweis @TjadenHess. Würden Sie zustimmen, dass ein Miner normalerweise keinen Gebrauch von dieser Macht macht? Er wird dazu angeregt, so viele TXs wie möglich einzubeziehen und diejenigen mit höheren Gaspreisen zu nehmen, um die maximale Auszahlung zu erhalten.
@Susmit Afaik, ja, solange die Netzwerkauslastung (Anzahl der ausstehenden Transaktionen) das Blockgaslimit überschreitet, wird sie um 1/1024 (0,09%) pro Block nach oben angepasst