Welche Anzahl an Bestätigungen gilt für Geth PoA Clique als sicher?

In Ethereum PoW lautet die Empfehlung, mindestens 12 Bestätigungen abzuwarten.

[F] : Welche Regeln gelten für den Geth-PoA-Clique-Algorithmus?


Meine beste Vermutung bisher:

untere Grenze : Summe der Bestätigungsblockschwierigkeiten >= (Boden(N/2) + 1) * 2

Obergrenze : Summe der Bestätigungsblockschwierigkeiten <= N * 2

wobei N = Anzahl der Versiegeler im Netzwerk

Der Grund, warum ich mit 2 multipliziere, ist, dass Sealer in der Reihenfolge 2 zur Blockschwierigkeit beitragen, andernfalls ist es 1.


Aktualisieren . Nachdem ich das Castro/Liskov-Papier über PBFT ( http://pmg.csail.mit.edu/papers/osdi99.pdf ) gelesen habe, glaube ich, dass die 2*f + 1Bestätigungsregel für eine N = 3*f + 1Clique auch gilt. Zumindest als Untergrenze. Die Obergrenze könnte so bleiben wie sie ist. Siehe den Kommentar unten.

Es gibt einen Artikel von Vitalik blog.ethereum.org/2015/09/14/on-slow-and-fast-block-times , der die Transaktionsbestätigungszeit vs. Blockzeiten untersucht. Es gilt nicht direkt für PoA, aber Sie können es durch das byzantinische Fehlertoleranzmodell annähern, bei dem die Anzahl der Angreifer weniger als N/2 beträgt.
Ich habe gerade das Liskov-Papier über pBFT gelesen. Sie geben an, dass in einem System mit n = 3*f + 1, 2*f + 1 Bestätigungen benötigt werden, um die Konsistenz sicherzustellen. Ich glaube, das gilt auch für Clique. Ich konnte mit Clique ein Beispiel konstruieren, bei dem 50 % + 1 Bestätigungen nicht ausreichten, um das Entfernen von Transaktionen bei der Neuorganisation zu vermeiden. Bei PoW scheint das anders zu sein, da hier keine feste Anzahl von Knoten, sondern Rechenleistung im Spiel ist. Es geht also um den Rechenwettlauf zwischen falschen und ehrlichen Knoten (->51%).

Antworten (1)

Da bisher niemand eine Antwort gegeben hat, werde ich versuchen, meine Recherchen dazu zusammenzufassen. Wenn jemand eine bessere "Geschichte" liefern kann, werde ich das Häkchen darauf setzen.

Nachdem ich das pBFT-Papier von Castor/Liskov gelesen habe, glaube ich, dass die 66,6% + 1-Regel von pBFT auch für Clique gilt. Daher reichen 50 % + 1 nicht aus, um sicherzustellen, dass die Transaktion nach einer Reorganisation nicht aus der Kette entfernt werden kann.

Bisher habe ich nur ein Beispiel als Beweis: In einem System mit 5 Sealern (N = 5) könnte ich einen unehrlichen Sealer S3 haben, der das Netzwerk in {S1,S2,S3} und {S3,S4,S5 aufteilen kann } (zum Beispiel durch einen DDoS-Angriff), sodass {S2,S3} nicht mit {S4,S5} kommunizieren kann. Beide Netzwerke werden ihren eigenen Fork betreiben, solange S3 teilnimmt (50 % + 1). Wenn er an der Reihe ist, könnte er einen gültigen Block mit einer Transaktion TX vorschlagen und ihn nur an {S4,S5} veröffentlichen, während er auf der anderen Seite einen alternativen Block mit einer Transaktion mit doppelter Ausgabe TX erstellt, die nur an {S1,S2 veröffentlicht wird }. Nach 50 %+1 Bestätigungen in {S3,S4,S5} könnte er aufhören, Blöcke in diesem Subnetzwerk zu veröffentlichen, und {S1,S2,S3} schwerer werden lassen. Danach kann er die Blockade in der Kommunikation lösen, und das GHOST-Protokoll würde die Gabelung auflösen, indem es die schwerere Kette auswählt,

In diesem Sinne muss die Mindestanzahl der Bestätigungen sein: 66,6% + 1 [genauer: N - floor((N-1)/3)] verschiedene Sealer haben die Transaktion bestätigt, was analog zu pBFT ist.

Über "Obergrenze" wie oben in der Frage definiert (Summe der Bestätigungsblockschwierigkeiten <= N * 2). Dies macht eigentlich keinen Sinn, da S3 die beiden Forks lange genug laufen lassen könnte, um diese Bedingung zu erfüllen, und er später seinem gewünschten Zweig einen Vorteil verschaffen könnte, indem er die Kommunikation im anderen Zweig stoppt.

Ich hoffe jemand kann meine Analyse bestätigen.