Blockvalidierung: Wer macht das? Wie viel kostet es? Und ist es in allen Protokollen vorhanden?

Verschiedene Threads wurden gepostet, um diese Frage zu klären, aber es gibt einige Punkte, die ich bestätigen müsste:

  • Wenn Sie ein Full-Node werden (NICHT Miner, Sie haben gerade die vollständige Blockchain mit einem Wallet oder ähnlichem heruntergeladen), sind Sie automatisch ein Validator? Das bedeutet, dass jeder neue Block von Ihnen (und den restlichen Full-Nodes) validiert wird, um für alle anderen zu veröffentlichen, ob er vertrauenswürdig ist oder nicht. Oder gibt es niemanden, der nur ein "Validator" sein kann, und nur Miner können auch Validatoren sein?

  • Verbraucht der Blockvalidierungsprozess zu viel Energie? Oder Blöcke zu validieren ist keine "große Sache"?

  • In Protokollen, die PoW und PoS/DPoS (Bitcoin, Ethereum, Cardano, EOS...) verwenden, wird, sobald ein Block mit einer dieser Konsensverfahren erstellt und in die Kette aufgenommen wurde , immer diese "zweite" Validierung involviert sein für den Rest der Full-Nodes in diesem bestimmten Blockchain-Netzwerk? (Ich vermute, dass diese zweite Validierung in jedem von ihnen etwas anders funktionieren könnte, aber immer diese Validierung für den Rest der Knoten einschließt.)

  • Und schließlich: Was passiert, wenn ein Full-Node anfängt, neue Blöcke abzulehnen (er/sie hält das für nicht gültig), aber der Rest der Nodes sagt, dass das richtig ist? Stellen Sie sich einen Troll/Hacker vor, der anfängt zu sagen, dass alle Knoten ungültig sind, können diese Leute gesperrt werden? Oder wird diese Person einfach ignoriert?

Antworten (3)

Wenn Sie ein Full-Node werden (NICHT Miner, Sie haben gerade die vollständige Blockchain mit einem Wallet oder ähnlichem heruntergeladen), sind Sie automatisch ein Validator? Das bedeutet, dass jeder neue Block von Ihnen (und den restlichen Full-Nodes) validiert wird, um für alle anderen zu veröffentlichen, ob er vertrauenswürdig ist oder nicht. Oder gibt es niemanden, der nur ein "Validator" sein kann, und nur Miner können auch Validatoren sein?

Ja, alle Full Nodes validieren alle Transaktionen, bevor sie sie in ihren Mempool und alle Blöcke, die sie erhalten, einfügen. Sie veröffentlichen niemandem, ob es vertrauenswürdig ist oder nicht, jeder prüft selbst, ob es gültig ist.

Verbraucht der Blockvalidierungsprozess zu viel Energie? Oder Blöcke zu validieren ist keine "große Sache"?

NEIN.

In Protokollen, die PoW und PoS/DPoS (Bitcoin, Ethereum, Cardano, EOS...) verwenden, wird, sobald ein Block mit einer dieser Konsensverfahren erstellt und in die Kette aufgenommen wurde, immer diese "zweite" Validierung involviert sein für den Rest der Full-Nodes in diesem bestimmten Blockchain-Netzwerk? (Ich vermute, dass diese zweite Validierung in jedem von ihnen etwas anders funktionieren könnte, aber immer diese Validierung für den Rest der Knoten einschließt.)

Ich bin mir nicht sicher, was du hier genau meinst. Jeder vollständige Knoten validiert alle Blöcke einmal.

Und schließlich: Was passiert, wenn ein Full-Node anfängt, neue Blöcke abzulehnen (er/sie hält das für nicht gültig), aber der Rest der Nodes sagt, dass das richtig ist? Stellen Sie sich einen Troll/Hacker vor, der anfängt zu sagen, dass alle Knoten ungültig sind, können diese Leute gesperrt werden? Oder wird diese Person einfach ignoriert?

Wenn jemand gültige Blöcke ablehnt, wird er zurückgelassen, da die anderen Knoten ihre Kette weiter aufbauen. Niemand fragt jemanden, ob "andere Knoten gültig sind" oder "andere Blöcke gültig sind", sie fragen sich gegenseitig nach Blöcken, die sie selbst überprüfen, wenn sie sie erhalten. Wenn er versucht, einen ungültigen Block bereitzustellen, wenn er danach gefragt wird, wird er von anderen Nodes gesperrt. Das ist der springende Punkt bei Bitcoin, Sie müssen niemandem vertrauen, Sie überprüfen sich selbst.

Hallo Mike, ziemlich gute Antworten hier drüben! :) Interessant war die Aussage "man muss niemandem vertrauen, man prüft sich selbst". Was passiert, wenn Ihre Transaktion von einigen Nodes bestätigt wird (gute Validierung, Sie haben genügend Founds), aber von anderen abgelehnt wird? (Dies sollte nicht passieren, da alle die gleichen Regeln befolgen, aber stellen Sie sich vor, dass dies passieren könnte), oder mit anderen Worten, wie viele "gute" Validierungen sollten Ihre Transaktion erhalten, bevor sie in den Mempool gehen?
Jeder Knoten hat seinen eigenen Mempool. Solange Sie mit einem guten Knoten verbunden sind (dh nicht mit einem, der Ihre gültige Transaktion nicht absichtlich weiterleitet), wird Ihr TX schließlich an das gesamte Netzwerk weitergegeben und ein Miner wird es abholen und in einen Block legen. Denken Sie daran, dass Transaktionen nicht als endgültig gelten, bis sie sich in einem Block befinden und einige Bestätigungen haben.
Die Frage konzentrierte sich mehr darauf, was passiert, wenn eine Transaktion, beispielsweise TX1, über das Netzwerk verteilt wird und einige Knoten sie ablehnen (nicht gültig), andere jedoch akzeptieren (gültige Transaktion). Dies sollte nicht möglich sein, da alle den gleichen Regeln folgen, aber stellen Sie sich vor, dass dies passiert: - Wird ein Minimum oder eine "gültige Transaktionsbestätigung" benötigt, damit die Miner sie in einen neuen Block einchecken können?
@3Huhn passiert nichts, egal wer ablehnt, es zählt nur ob es in einem Block ist oder nicht. Wenn es einen Miner erreichen kann und er es in einen Block legt, gibt es kein Problem.
Hallo Mike. Wenn Sie wissen, dass ein Knoten, der eine ungültige Transaktion erkennt, diese nicht für den Rest "veröffentlicht", kann es passieren, dass eine ungültige Transaktion in einen Block gelangt und niemand als ungültig erkannt wird (aber einige Knoten haben es getan)? Ich würde sagen, dass dies ziemlich unwahrscheinlich ist (da viele Nodes Ihre Transaktion validieren, und ich denke, dass auch der Miner, der den neuen Block mit dem TX erstellt), aber ... passieren könnte?

Im Bitcoin-Netzwerk sind alle Full Nodes Validatoren. Jeder einzelne Node überprüft jeden Block, den er erhält, um sicherzustellen, dass der Arbeitsnachweis gültig ist, die Transaktionen mit der Merkle-Wurzel übereinstimmen, die Transaktionen selbst gültig sind, die Blockzeit/-größe gültig sind, neben anderen Konsensregeln.

Verbraucht der Blockvalidierungsprozess zu viel Energie?

Im Vergleich zum Mining ist die Blockvalidierung eher günstig. Es ist jedoch nicht kostenlos, und die Validierung sehr großer Blöcke kann relativ lange dauern. Dies ist einer der Gründe für das Limit von 20.000 MAX_SIGOPS pro Block.

Netzwerke wie Ethereum verwenden das Konzept von Max Gas, um den Arbeitsaufwand für die Validierung eines Blocks zu begrenzen, da das verbrauchte Gas ungefähr proportional zum Rechenaufwand ist, der für die Validierung eines Blocks erforderlich ist.

In Protokollen, die PoW und PoS/DPoS (Bitcoin, Ethereum, Cardano, EOS...) verwenden, wird, sobald ein Block mit einer dieser Konsensverfahren erstellt und in die Kette aufgenommen wurde, immer diese "zweite" Validierung involviert sein für den Rest der Full-Nodes in diesem bestimmten Blockchain-Netzwerk?

Ja, in jedem Netzwerk sollte jeder vollständige Knoten jeden empfangenen Block validieren, unabhängig von der Konstruktionsmethode.

Was passiert, wenn ein Full-Node anfängt, neue Blöcke abzulehnen (er/sie hält das für nicht gültig), aber der Rest der Nodes sagt, dass das richtig ist?

In Bitcoin wird ein Knoten, der falsche Daten liefert, wegen schlechter Aktionen von der Peer-Liste des Knotens gesperrt, dem er falsche Daten geliefert hat.

Hallo Raghav, danke für die Details :) Basierend auf Ihren Antworten und anderen Threads wird im Grunde jeder Knoten s own mempool where validate transactions. Now my concern is what happens when a transaction, TX1 for example, itüber das Netzwerk verteilt, und einige Knoten lehnen es ab (nicht gültig), andere akzeptieren es (gültige Transaktion). Dies sollte nicht möglich sein, da alle den gleichen Regeln folgen, aber stellen Sie sich vor, dass dies passiert: - Wird ein Minimum oder eine "gültige Transaktionsbestätigung" benötigt, damit die Miner sie in einen neuen Block einchecken können?
Und außerdem: - Gibt es einen Wert, der jeden TX als einzigartig identifiziert? Ob TX1 über das Netzwerk verteilt ist und in Millionen von Knoten (im Grunde Millionen von Mempools) existiert, was verhindert, dass TX in mehr Blöcke aufgenommen wird (also dupliziert wird und doppelte Ausgaben provoziert? Ich würde sagen, dass eine Art von Eine eindeutige Kennung sollte pro TX vorhanden sein, richtig? (Ob also ein TX bereits in die Blockchain aufgenommen wurde, wird nicht erneut aufgenommen).

Oder gibt es niemanden, der nur ein "Validator" sein kann, und nur Miner können auch Validatoren sein?

Es existiert vollständig und wird als vollständiger Knoten bezeichnet, was bedeutet, dass es sich um einen Knoten handelt, der alle Regeln validiert.

bist du automatisch validator?

Wie oben, ja, per Definition validiert der vollständige Knoten

Verbraucht der Blockvalidierungsprozess zu viel Energie? Oder Blöcke zu validieren ist keine "große Sache"?

Dies hängt von den Konsensregeln und der Implementierung des Knotens ab. Bei Bitcoin geht es darum, die Validierung so günstig wie möglich zu gestalten.

Wird diese „zweite“ Validierung für den Rest der Full-Nodes in diesem bestimmten Blockchain-Netzwerk immer involviert sein?

Wenn der Miner einen neuen Block erstellt, versucht er normalerweise, ihn so schnell wie möglich an das Netzwerk weiterzugeben, damit der Rest des Netzwerks darauf aufbauen kann, damit sein Block Teil der besten Kette wird.

Das bedeutet, dass der Block an andere Knoten gesendet wird und diese Knoten normalerweise den Block validieren und nur wenn er gültig ist, werden sie weiter an das Netzwerk weitergegeben und/oder darauf aufgebaut.

Was passiert, wenn ein Full-Node anfängt, neue Blöcke abzulehnen (er/sie hält das für nicht gültig), aber der Rest der Nodes sagt, dass das richtig ist?

Wenn ein Knoten einen Block ablehnt, setzt er normalerweise den Peer, der ihn gesendet hat, auf die schwarze Liste. Wenn es Meinungsverschiedenheiten darüber gibt, welche Blöcke gültig sind, wird das Netzwerk aufgeteilt und Sie haben zwei verschiedene Forks, die nicht kompatibel sind.