Ich habe gelesen, dass Checkpoints in Bitcoin entfernt wurden, weil sie keinen sinnvollen Angriff verhinderten.
Warum sollte ein regulärer Checkpoint nicht Mehrheitsangriffe verhindern? Wenn beispielsweise alle N Blöcke ein Checkpoint erstellt wird und (zum Beispiel) 3/4 der Hash-Power zustimmen, wäre dies nicht möglich, um dies als Mechanismus zu verwenden, um eine dauerhafte Bestätigung der Transaktionen vor dem Checkpoint zu erstellen? Vorausgesetzt natürlich, dass die Clients nach diesen Prüfpunkten suchen und ihre Aufnahme in die gültige Kette erzwingen würden.
Das Problem ist, dass Sie davon ausgehen, dass ein Mehrheitsangriff ein Angriff ist, der verhindert werden kann. Es ist nicht. Es ist eine grundlegende Aufschlüsselung der Sicherheitsannahmen.
Die Annahme von Proof of Work (PoW) ist, dass die Mehrheit der Hashrate kooperieren und in einer einzigen Kette zusammenlaufen wird, weil dies finanziell am vorteilhaftesten ist. Wenn das nicht mehr der Fall ist, ist PoW kaputt und wir sollten uns einfach etwas anderem zuwenden – nicht versuchen, es zu reparieren.
Sie denken vielleicht, dass das Hinzufügen von Kontrollpunkten hilft, diese Situation zu verbessern, aber bedenken Sie Folgendes:
Entweder werden die Checkpoints für alte Blöcke (Wochen oder Monate alt) erstellt, in diesem Fall wird eindeutig nichts verhindert. Eine wochenlange Neuordnung würde die Währung und das Vertrauen in sie restlos zerstören und dadurch nicht verhindert werden.
Oder die Checkpoints werden für die letzten Blöcke (Tage oder Stunden vielleicht) erstellt, in diesem Fall können sie tatsächlich beeinflussen, welche Kette unter bestimmten Umständen im Netzwerk akzeptiert wird, aber gleichzeitig ersetzen sie effektiv den PoW-basierten Konsens durch "Entwicklerentscheidung". " Konsens ... etwas, das überhaupt kein komplexes Peer-to-Peer-Protokoll benötigt, da Entwickler effektiv Systeme ausführen müssen, um das System in Schach zu halten.
Also haben Checkpoints entweder eine Wirkung – und ändern die Sicherheitsannahmen in eine uninteressante, oder sie tun es nicht – und sie spielen keine Rolle.
Um Ihre Frage zu beantworten: Der Hauptgrund für das Entfernen von Checkpoints liegt in der Verwirrung, die sie verursachen. Sie lassen die Leute denken, dass sie Teil des Sicherheitsmodells des Systems sind (wie Ihre Frage zeigt). Das ist nicht der Fall. Es wurde als Notwendigkeit eingeführt, um eine Optimierung (Überspringen der Skriptvalidierung) und einen unabhängigen Denial-of-Service-Angriff (die Festplatte eines neuen Knotens, die während der Synchronisierung mit Blöcken mit geringem Schwierigkeitsgrad gefüllt wird) zu implementieren. Seit einigen Änderungen im P2P-Protokoll (Header-basierte Synchronisation) brauchen wir keine Checkpoints mehr, um diese Dinge sicher zu erledigen.
Nate Eldredge
verwirrt00
Willtech