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.
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.
Zauberer von Ozzie
the default behavior is to validate every transaction (I think!)
: mit BitcoinCore ja, aber nicht "client-only" (SPV)