Kann die Transaktionsvalidierung wirklich kostenlos sein?

Wenn Sie eine Transaktion nicht validieren, besteht die Gefahr, dass Sie sich darauf verlassen, sie verbreiten oder sie in einen Block aufnehmen, den Sie abbauen. Aus diesem Grund besteht das Standardverhalten darin, jede Transaktion zu validieren (glaube ich!). Ansonsten verlässt man sich teilweise auf die kostenlose Transaktionsvalidierung, die sich aufgrund der Risiken als nicht kostenlos herausstellt. Es gibt derzeit keine einfache Möglichkeit, für die Transaktionsvalidierung zu bezahlen, um diese Risiken zu mindern. Ich denke, das sollte es geben.

Einige Leute bei Microsoft haben etwas über die Idee nachgeforscht, Anreize für die Transaktionsweitergabe zu schaffen (was notwendigerweise eine Validierung für diejenigen erfordern würde, die bezahlt werden).

Ich frage mich, ob es sich lohnt, eine Idee, die ich hatte, zu entwickeln und sie der Bitcoin-Entwicklerliste vorzustellen. Es heißt "bonded proof" und besteht aus einer Proof-Nachricht, die ein gültiger Block ist (außer dass sein Hash nicht niedrig genug ist) und dem TXOut, das die Bindung ist. Es ist kein tatsächlicher Beweis, sondern ein vorläufiger Beweis, der verifiziert und, falls er sich als falsch herausstellt, eingelöst werden kann. Der gebundene Beweis wird von der Bitcoin-Adresse signiert, die die Bindung hält. Ich stelle mir vor, dass der TxOut mindestens das 100-fache einer Standard-Tx-Gebühr halten müsste, aber da nicht erwartet wird, dass er jemals eingelöst wird, könnte er weitaus mehr halten, nur als Zeichen des guten Glaubens.

Wenn der Beweis falsch ist, kann der Ersteller eines solchen Verbundbeweises damit rechnen, dass der Verbundbeweis in einem Block eingelöst wird. Die „Transaktion“, die einen solchen fehlgeschlagenen Verbundnachweis einlöst, müsste die gesamte Nachweisnachricht enthalten, plus einen Index in den Block, um die ungültige Transaktion zu identifizieren, plus eine BTC-Adresse („Widerlegung“), um einen Teil der Bindung zu erhalten (z 50 %). Die Blockvalidierung müsste dann überprüfen, ob die identifizierte Transaktion tatsächlich ungültig war, und dies würde dazu führen, dass (sagen wir 50 %) der TxOut, der die Anleihe hält, in die Coinbase-Transaktion übertragen wird, während der Rest an die Widerlegungsadresse gehen würde.

Bergleuten steht es frei, solche Bonded Proofs zu ignorieren oder sie zu verwenden, wenn sie wertvoll erscheinen, aber ich schlage den folgenden Mechanismus als Standard vor: Der Ersteller eines Bonded Proof ("schwach") Blocks würde eine Gebühr verlangen indem es zur Coinbase-Transaktion im schwachen Block gemacht wird. Miner würden eine Transaktion hinzufügen, die diese Gebühr an die Adresse in der schwachen Coinbase-Transaktion sendet, wenn sie den Block-Assembler ermutigen wollen. Jedes Mal, wenn ein Knoten eine brandneue Transaktion zu übertragen hat, würde er standardmäßig einen schwachen Block mit der neuen Transaktion darin erstellen, solange der Betreiber ein TxOut für die Bindung angegeben hat.

Egoistische Bergleute könnten dies abschalten, wenn sie diejenigen betrügen wollen, die diese Blöcke zusammenstellen, so wie sie es bereits tun (wahrscheinlich, weil es schwierig ist, dies nicht zu tun) für diejenigen, die Transaktionen verbreiten. Ich vermute, Verhalten wäre besser als das. Tausende von Menschen haben Full Nodes ohne Entschädigung ausgeführt, und dies macht es nur einfacher, sie zu belohnen und ihnen den zeitaufwändigen Validierungsschritt auszulagern, den sie ohnehin (standardmäßig) durchführen.

Darüber hinaus hätten Nicht-Mining-Knoten einen Anreiz, diese schwachen Blöcke zu validieren, um eine ungültige Transaktion zu finden (Betrüger auszurotten, die sich nicht die Mühe machen, zu validieren) und den Proof-Block einzulösen.

Die Idee des gebundenen Beweises spricht mich nicht nur im Fall der schwachen Blockvalidierung an, sondern als allgemeiner Mechanismus. In Bezug auf das Lightning Network wird es nicht so genannt, aber die Idee ist sehr ähnlich: Hilfsbereites Verhalten motivieren und gleichzeitig verlangen, dass der Helfer etwas Bitcoin auf die Behauptung setzt, dass er hilft.

the default behavior is to validate every transaction (I think!): mit BitcoinCore ja, aber nicht "client-only" (SPV)

Antworten (1)

Es gibt derzeit keine einfache Möglichkeit, für die Transaktionsvalidierung zu bezahlen, um diese Risiken zu mindern. Ich denke, das sollte es geben.

Diese Aussage ist falsch. Transaktionen beinhalten eine Gebühr, die der Miner erhält, der den Block findet. Daher ist es im Interesse des Miners, Transaktionen einzubeziehen und somit zu validieren.

Sobald Transaktionen in Blöcken sind, ist es im Interesse aller anderen, sie für sich selbst zu validieren, und sie gehen dabei kein Risiko ein. (Sie würden riskieren, das NICHT zu tun.)

Derzeit gibt es kein wirkliches Problem, dass Transaktionen stecken bleiben, weil „es zu riskant ist, sie zu validieren“. Es gibt einige Bergleute, die leere Blöcke abbauen, möglicherweise aus diesem Grund, aber wahrscheinlicher aufgrund von Faulheit und Missverständnissen. Und das wird jedes Mal, wenn sich die Blockbelohnungen halbieren, noch weniger ein Problem.

Sie haben Recht, wenn wir über bestätigte Transaktionen oder über Miner sprechen. Aber wenn wir die Diskussion auf Nicht-Miner und unbestätigte Transaktionen beschränken, ist die Aussage wahr, oder?
Diese Knoten stellen einen Dienst für das Netzwerk bereit, indem sie ein wenig CPU-Validierung und Bandbreitenausbreitung von Transaktionen aufwenden. Es besteht jedoch kein Risiko: Wenn Sie die Transaktion für ungültig halten, löschen Sie sie einfach und sperren den Benutzer, der sie gesendet hat. Wenn nicht, propagieren Sie. Wenn sich herausstellt, dass Ihr Upstream-Peer es sowieso für ungültig hält, wird es im schlimmsten Fall die Verbindung trennen und Sie sperren. Vielleicht nicht angenehm, aber wenn es wirklich ein Problem auf Ihrer Seite ist (veraltete Version vielleicht), dann ist das ein gutes Zeichen dafür, dass ein menschliches Eingreifen erforderlich ist. Besser eine solche Warnung haben, als sie gar nicht zu bemerken.
Für mich fällt alles in eine von drei Kategorien: Nutzen, Kosten oder neutral. Unannehmlichkeiten sind immer Kosten. Aber es ist nicht hoch, was ich denke, ist Ihr Punkt. Es scheint nur eine Gelegenheit für eine Tragödie der Commons zu sein, wenn die Transaktionsrate höher ist und die Leute es nicht mögen, dass ihre CPU ständig am Laufen ist, also schalten sie ihren Knoten ab.
"Upstream" in meinem vorherigen Kommentar sollte "Downstream" sein. - Man könnte sagen, dass Ihr Knoten durch die Weiterleitung von Transaktionen nach Rückmeldungen über den Zustand des Netzwerks sowie über seinen eigenen Zustand sucht. Wenn andere anfangen, diese weitergeleiteten Transaktionen abzulehnen (Ihren Knoten zu sperren), wissen Sie, dass etwas nicht stimmt (entweder Ihr eigener Knoten oder das Netzwerk). Vielleicht kein überzeugender Anreiz, viel Arbeit zu leisten, aber da es so billig ist, eigentlich trotzdem klug.