Was ist die genaue „längste Kette“-Regel, die im Ethereum „Homestead“-Protokoll implementiert ist?

Dieses Papier aus dem Jahr 2016 behauptet (in Abschnitt 3.3.2, wo es um die tatsächliche Ethereum-Implementierung im Gegensatz zur Spezifikation geht):

Obwohl Onkelblöcke, die in einem Block enthalten sind, eine Belohnung erhalten, zählen sie nicht zur Gesamtschwierigkeit einer Kette , dh Ethereum verwendet eine längste Kettenregel mit zusätzlichen Belohnungen für Onkelblöcke. Dies widerspricht eindeutig der Behauptung von Ethereum, ein Blockchain-Protokoll zu verwenden, das GHOST adaptiert

(Hervorhebung im Original). Die einzige angebotene Referenz bezieht sich auf dieses Papier , das anscheinend eine gegensätzliche Behauptung aufstellt, nämlich:

Eine Variante von GHOST wurde vom Ethereum-Projekt übernommen und implementiert.

Der einzige Verweis ist auf ethereum.org, also hilft das auch nicht. Mir ist die umfangreiche Dokumentation bekannt , die die Regeln von Ethereum für die Belohnung von Ommer/Onkel-Blöcken beschreibt und häufig sagt, dass sie „zur Sicherheit beitragen“. Allerdings scheint die konkrete Frage, ob Ommer/Onkel bei der Bestimmung der längsten Kette gezählt werden, nicht so eindeutig dokumentiert zu sein.

Das erste Papier behauptet weiter:

Ethereum hat kürzlich auch seinen Algorithmus für die längste Kette modifiziert, um einheitliches Tie-Breaking zu integrieren …[was] es einem selbstsüchtigen Bergmann ermöglicht, seine Chancen zu erhöhen, zur ehrlichen Kette aufzuschließen

Und in diesem Fall Links zu einem bestimmten Commit sowie zu diesem Artikel über optimale egoistische Mining-Strategien , der darauf hinweist, dass einheitliches Tie-Breaking ein spezifischer Kompromiss ist, der Angriffe für stark vernetzte und koordinierte Angreifer viel schwieriger macht, während Angriffe für weniger einfacher werden verbundene oder koordinierte. Da es sich bei diesem Papier jedoch um ein Papier über Bitcoin handelt und eine Nicht-Onkel-Zählungsregel für die längste Kette angenommen wird (und die strategischen Implikationen von Ommer/Onkel-Belohnungen nicht ausdrücklich berücksichtigt), bewertet es die realen Auswirkungen des einheitlichen Gleichstandsbruchs in Ethereum muss immer noch wissen, ob Ommer/Onkel-Schwierigkeit überhaupt gezählt wird oder nicht.

Also, was machen die Ethereum-Knoten in Homestead in Bezug auf ihre eigentlich längste Kettenregel?

Zählen sie den Onkel-Schwierigkeitsgrad als Beitrag zur längsten Kette? Und machen sie immer noch einheitliches Tie-Breaking? Wurden weitere Änderungen vorgenommen? Zum Beispiel wurde SPV-Mining in Bitcoin weit verbreitet, obwohl es in den offiziellen Versionen nicht wirklich implementiert wurde. Theoretisch schreibt Ethereum vor, dass Blöcke in der Hauptkette vollständig validiert werden, während Ommer/Onkel-Blöcke nur ihre Header validieren lassen. Allerdings wurden sowohl Block-Zeitstempel als auch die Transaktionsaufnahme aus strategischen Gründen von Bergleuten zuvor definitiv optimiert.

Was ich möchte, ist nur die beste Antwort auf diese Frage, die wir derzeit für die Knoten erhalten können, die tatsächlich auf Pools, Clients usw Dokumentation. Die Antworten müssen von den Entwicklern tatsächlicher Clients wie Geth und Parity kommen und/oder direkt zu Repositories verlinken, die zeigen, wie die Regel tatsächlich implementiert wird.

Ich möchte fragen, ob das Kind des Onkelblocks eine Belohnung bekommt?

Antworten (3)

Ethereum ermittelt die längste Kette anhand der Gesamtschwierigkeit , die im Blockheader eingebettet ist. Krawatten werden nach dem Zufallsprinzip gebrochen.

Die Gesamtschwierigkeit ist die einfache Summe der Blockschwierigkeitswerte ohne explizite Zählung der Onkel. Die Schwierigkeit wird basierend auf der Eltern-Schwierigkeit und dem Zeitstempel, dem Block-Zeitstempel und der Blocknummer berechnet , wiederum ohne Bezugnahme auf Onkel.

All dies mit Ausnahme des Tiebreaks ist konsenskritisch und daher kann davon ausgegangen werden, dass es für alle Clients gleich ist.

Danke für die Klarheit: Bestätigt die Punkte des Papiers von 1) Onkel zählen nicht zur Gesamtschwierigkeit 2) Geth implementiert einheitliches Tie-Breaking (obwohl andere Clients dies möglicherweise nicht tun).
@all: Müssen die verlinkten Fragen hier neu oder verbessert beantwortet oder das Whitepaper geklärt werden? Zum Beispiel Teile wie „Beitrag zur Sicherheit der Hauptkette“ .
Das war doch sicher ein Fehler? Vitaliks Blogbeitrag, der die Blockzeit von ~12 Sekunden rechtfertigte, stützte sich auf den Sicherheitsvorteil von GHOST, aber wenn Onkel nicht zu den Schwierigkeiten zählen, gibt es keinen Sicherheitsvorteil. Derzeit scheint Ethereum anfällig für ~34 % Angriffe zu sein, basierend auf der Analyse in eprint.iacr.org/2015/1019.pdf . (Dies ist eine theoretische Untergrenze, wenn man davon ausgeht, dass diskrete Runden der Informationsverbreitung 12,6 Sekunden dauern. Die Realität könnte also etwas anders aussehen, aber ein Angriff von 35 bis 40 % erscheint sehr plausibel.)
Meinen Sie damit, dass Ethereum jetzt wie bei Bitcoin die Auswahl der längsten Kette verwendet und der einzige Unterschied darin besteht, dass Ethereum Onkelblöcke anregt?
@MWH und die Schwierigkeit wird auch anhand der Ausgaberate des Onkels angepasst, aber ja, es sieht so aus, als ob "am längsten" / "am schwersten" auf der Gesamtschwierigkeit entlang der Kette basiert, keine Onkel.

Die Dinge haben sich geändert, seit die Antwort von Nick gepostet wurde.

Insbesondere mit der Einführung von EIP 100 (das im Juni 2017 akzeptiert wurde – nur 3 Monate nach Nicks Antwort), wodurch der Schwierigkeitsberechnungsalgorithmus geändert wird, um Uncles einzubeziehen.

Ich bin neu bei Ethereum, also verstehe ich nicht ganz, welche Auswirkungen das hat. Wenn es also jemand erklären könnte, wäre das großartig.

Neue Links zum Code:

Längste Kette basierend auf Gesamtschwierigkeit.

Schwierigkeitsberechnung (jetzt auch abhängig von Onkeln)

Ich denke, Sie beantworten eine andere, aber relevante Frage. Das EIP passt die Schwierigkeits-Targeting-Formel an, um sie an die Ommer-Ausgabe anzupassen. Dies bedeutet jedoch nicht, dass für die Berechnung der "schwersten" Kette eine andere Schwierigkeit verwendet wird.

Es wird hier angegeben, dass das GHOST-Protokoll in Ethereum nicht verwendet wird. Warum hat Ethereum das GHOST-Protokoll aufgegeben?

und dass es 2 Wochen nach dem Mainet-Start aufgegeben wurde und dass Ethereum eine modifizierte Version des Inclusive-Protokolls verwendet