Transaktionsverifizierung durch Miner VS Full Node mit & ohne SegWit

Ich versuche, ein paar Lücken in meinem Verständnis der Transaktionsverifizierung zu schließen, und würde mich über jeden Einblick freuen.

Ohne SegWit

  1. Miner senden bei jeder Transaktion neue Blöcke, die die Signatur(en) enthalten.
  2. Bergleute können entscheiden, ob sie jede Transaktion im Block verifizieren wollen oder nicht. Sie haben einen Anreiz, jede Transaktion zu verifizieren, da sonst der Block ungültig sein könnte und sie ihre Belohnung verlieren würden.
  3. Full Nodes speichern alle Blockchain-Daten und können optional auch die Transaktionen verifizieren.

F1: Haben Full Nodes einen Anreiz, Transaktionen zu validieren, von denen sie nicht direkt profitieren? Wie oft validieren Full Nodes tatsächlich Transaktionen?

Mit SegWit

  1. Bergleute übertragen neue Blöcke, die den Zeugen enthalten können oder nicht.
  2. Wie zuvor werden die Bergleute dazu angeregt, die Transaktion zu validieren, aber auch dazu, den Zeugen wegzulassen, wenn neue Blöcke gesendet werden, um die Bandbreite zu minimieren.
  3. Vollständige Knoten können die Zeugendaten als Teil der vollständigen Blockchain speichern oder nicht.

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?

Antworten (1)

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.

Andrew Chow .... Dasselbe gilt für Transaktionen (beziehen Sie sich auf Mempool oder Tx von diesem verbotenen Miner?), und was ist IIRC?
@anacondabitch-Transaktionen ohne Zeugen gelten als ungültig, aber der Knoten, der sie gesendet hat, wird nicht unbedingt getrennt und gesperrt. IIRC ist die Abkürzung für „Wenn ich mich richtig erinnere“.