Was sind die Vertrauensannahmen in --assumed-valid in Bitcoin Core 0.14?

Bitte helfen Sie mir, die Vertrauensannahmen in den folgenden drei Fällen zu verstehen und zu unterscheiden. Erläutern Sie bitte insbesondere die möglichen Angriffe (wenn auch völlig theoretisch) und vertrauen Sie darauf, die Funktionalität zu erhalten.

Fall 1: Bitcoin Core vor 0,14 ohne angenommene Gültigkeit und wo jeder Knoten eine vollständige Signaturüberprüfung durchführt.

Fall 2: Bitcoin Core 0.14 mit den angenommenen gültigen Blöcken mit übersprungener Signaturvalidierung für Blöcke vor der Veröffentlichung. Das bedeutet, dass die Blocksignaturen korrekt sind, weil Bitcoin-Core-Entwickler darauf signiert haben.

Fall 3: (Hypothetisch): Bitcoin Core 0.14 mit UTXO-Set, das den Snapshot der UTXO-Datenbank enthält. Dies würde auf ähnliche Weise wie angenommen-gültig erfolgen. Dies würde die komplette IBD überspringen und für Quickstart-beschnittene Knoten wirklich nützlich sein.

Ich hätte gerne Antworten auf die folgenden 2 Fragen:

Q1) Was sind die möglichen Angriffe (wenn auch völlig theoretisch), die in Fall 2 möglich sind, aber nicht in Fall 1. Bitte erläutern Sie die Änderung des Sicherheitsmodells, die erforderlich ist, um von Fall 1 zu Fall 2 zu wechseln.

F2) Was sind die möglichen Angriffe (wenn auch völlig theoretisch), die in Fall 3 möglich sind, aber nicht in Fall 2. Mir scheint, dass das Sicherheitsmodell in Fall 3 dasselbe ist wie das in Fall 2. Wenn ich Kernentwicklern mit Signatur vertraue -Validierung, könnte genauso gut darauf vertrauen, dass sie das richtige UTXO-Set geben.

Antworten (1)

Q1) Was sind die möglichen Angriffe (wenn auch völlig theoretisch), die in Fall 2 möglich sind, aber nicht in Fall 1. Bitte erläutern Sie die Änderung des Sicherheitsmodells, die erforderlich ist, um von Fall 1 zu Fall 2 zu wechseln.

Keiner. Wenn es zufällig eine Verzweigung gibt, die dazu führt, dass sich der angenommene gültige Block nicht mehr in der längsten Kette befindet, werden Sie weiterhin alle Signaturen in der längsten Kette validieren. Wenn Ihnen jemand eine „gefälschte“ Blockchain geben würde, die den angenommenen gültigen Block nicht enthält, würden Sie denselben Validierungsprozess durchführen wie ohne den angenommenen gültigen Block. Angenommen, gültig ändert die Sicherheitsannahmen nicht, da der angenommene gültige Block nicht in der Blockchain sein muss, anders als bei Checkpoints.

F2) Was sind die möglichen Angriffe (wenn auch völlig theoretisch), die in Fall 3 möglich sind, aber nicht in Fall 2. Mir scheint, dass das Sicherheitsmodell in Fall 3 dasselbe ist wie das in Fall 2. Wenn ich Kernentwicklern mit Signatur vertraue -Validierung, könnte genauso gut darauf vertrauen, dass sie das richtige UTXO-Set geben.

Nein, Fall 3 hat völlig andere Sicherheitsannahmen als gültig anzunehmen. Sie vertrauen darauf, dass die Core-Entwickler Ihnen das richtige UTXO-Set zur Verfügung stellen, und Sie vertrauen darauf, dass Sie beim Start die richtige Blockchain verwenden. Wenn Sie gültig annehmen, vertrauen Sie nicht oder gehen davon aus, dass Sie die richtige Blockchain verwenden, validieren Sie immer noch fast alles. Selbst wenn der angenommene gültige Block falsch ist, können und werden Sie mit „als gültig annehmen“ immer noch die richtige Blockchain verwenden und genauso viel Signaturvalidierung durchführen, um auf der richtigen Blockchain zu sein wie Software ohne als gültig annehmen.

In Bezug auf Q1 gibt es einen kleinen Unterschied, wenn Entwickler (und alle, die die Codeänderungen überprüfen) sich mit Minern verschwören würden, um eine Kette mit mehr Arbeit mit ungültigen Signaturen aufzubauen (und wochenlang unentdeckt bleiben) und sie dann als gültig einzuschließen. Dieselben Leute haben diese Macht jedoch bereits, indem sie einfach den Code ändern – was viel weniger offensichtlich wäre.
@PieterWuille, Warum kann nicht dieselbe Logik auf das angenommene UTXO-Set angewendet werden? oder sogar allgemein jede Form von Validierung, die von Software durchgeführt wird. Wenn ich den Softwareentwicklern vertraue, dass sie keinerlei Verschleierung im Code vornehmen, kann ich genauso gut der Ausgabe der Validierung vertrauen. Warum ist die Signaturvalidierung eine so spezielle Form der Validierung?
Wenn Sie einem UTXO-Set vertrauen, das Ihnen jemand gibt, kann dieser jemand kontrollieren, welche Kette Sie akzeptieren, ohne Hashpower zu benötigen (obwohl es offensichtlich wäre). Der Wert von -assumevalid kann das nicht, er kann die Validierung nur überspringen, wenn dies effektiv die beste Kette ist, die Sie kennen lernen.
@PieterWuille Ich glaube immer noch nicht, dass das sankets Frage vollständig beantwortet. Wenn Sie einem UTXO-Set vertrauen, das aus derselben Quelle wie Ihre Bitcoin-Software stammt, ist es nichts anderes, als einfach dieser Software zu vertrauen. Wie Sie bereits betont haben, haben die Entwickler bereits die Macht, eine bösartige Binärdatei zu veröffentlichen, die der falschen Kette folgt. Wenn Sie die Software selbst vollständig auditieren, sollte dies auch das vollständige Auditieren des UTXO-Sets beinhalten. Ich sehe keinen Unterschied im Sicherheitsprofil.
Dies ist eine verwandte Diskussion, und ich würde mich über Ihren Beitrag freuen: reddit.com/r/BitcoinDiscussion/comments/bskw25/…