Ich versuche, ein paar Lücken in meinem Verständnis der Transaktionsverifizierung zu schließen, und würde mich über jeden Einblick freuen.
F1: Haben Full Nodes einen Anreiz, Transaktionen zu validieren, von denen sie nicht direkt profitieren? Wie oft validieren Full Nodes tatsächlich Transaktionen?
F2: Wenn ein Full Node eine Transaktion validieren wollte, aber der Miner den Zeugen nicht als Teil des neuen Blocks übertragen hat, von wem würde der Full Node die Signatur anfordern? Soweit ich weiß, gibt es Pläne, langfristig Zeugen „zu beschneiden“, um die Größe der gesamten Blockchain zu minimieren, aber was erzwingt die kurzfristige Beibehaltung der Signaturen?
Haben Full Nodes einen Anreiz, Transaktionen zu validieren, von denen sie nicht direkt profitieren?
Ja. Wenn sie nicht alle Blöcke und Transaktionen validieren, könnten sie auf einem Blockchain-Fork landen, der von einem Angreifer erleichtert werden könnte. Durch die Validierung aller Blöcke und Transaktionen können sie sicher sein, dass sich der Knoten in der richtigen Blockchain befindet.
Wie oft validieren Full Nodes tatsächlich Transaktionen?
Für immer neue Blöcke und Transaktionen. Jeder einzelne neue Block und jede Transaktion, die von einem Knoten empfangen wird, wird gemäß den Konsensregeln des Knotens vollständig validiert. Während der anfänglichen Blockchain-Synchronisierung werden Transaktionen und Blöcke nur teilweise validiert (Signaturen werden nicht validiert) bis zu einem bestimmten hartcodierten Block-Hash und nur dann, wenn dieser Block-Hash Teil der Kette des besten Headers ist.
Wenn ein Full Node eine Transaktion validieren wollte, aber der Miner den Zeugen nicht als Teil des neuen Blocks übertragen hat, von wem würde der Full Node die Signatur anfordern? Soweit ich weiß, gibt es Pläne, langfristig Zeugen „zu beschneiden“, um die Größe der gesamten Blockchain zu minimieren, aber was erzwingt die kurzfristige Beibehaltung der Signaturen?
Segwit-Knoten fragen immer nach dem Block mit Zeugen. Wenn ein Block ohne Zeugen an sie gesendet wird, obwohl nach Zeugen gefragt wird, wird der Block als ungültig betrachtet und der Knoten, der den Block gesendet hat, wird vorübergehend von dem Knoten getrennt und gesperrt. Dasselbe gilt für Transaktionen, aber ohne die Trennung und das Verbot von IIRC. Um immer sicherzustellen, dass ein Block mit einem Zeugen kommt, wird ein Segwit-Knoten niemals einen Block von einem Nicht-Segwit-Knoten anfordern.
Benutzer380208
Andreas Chow