Trägt der Proof-of-Work direkt dazu bei, Doppelausgaben zu vermeiden?

Ich weiß, dass ähnliche Fragen schon früher gestellt wurden (z. B. Wie Arbeitsnachweise doppelte Ausgaben verhindern ), aber ich habe Mühe, mir die Lösung für Doppelausgaben vorzustellen, die direkt auf Arbeitsnachweise angewiesen sind.

Stellen Sie sich einen Miner vor, Bob, der versucht, 1 BTC doppelt auszugeben, indem er sowohl an Alice als auch an Jim sendet. Entweder kann er beide Transaktionen an Alice und Jim in einen einzigen fehlerhaften Block aufnehmen, den er schürft – in diesem Fall wird der Block sogar mit einem gültigen PoW abgelehnt. Oder er kann seine erste (gültige) Transaktion an Alice senden und jemand anderen abbauen lassen und später seinen eigenen schlechten Block mit der Transaktion an Jim abbauen, die wiederum abgelehnt wird, unabhängig davon, ob sie einen gültigen Proof-of-Work hat. Doppelausgaben sind also wirklich auf der Ebene der Transaktionsvalidierung geschützt, die jeder vollständige Knoten im Netzwerk durchführt? Das bedeutet, dass PoW Doppelausgaben nicht wirklich direkt stoppt – was Doppelausgaben stoppt, ist einfach, dass die Knoten zuvor bestätigte Transaktionen kennen. Und der Grund, warum wir darauf vertrauen können, dass alle Transaktionen auf der Blockchain „bestätigt“ sind, ist PoW?

Wenn das stimmt und PoW eher eine systemweite Lösung auf hoher Ebene ist, hier ist eine letzte Frage, die hoffentlich jemand klären kann: Warum können wir PoW nicht durch eine automatische 10-Minuten-Block-Hinzufügung basierend auf einem einfachen Zeitstempel ersetzen ? Liegt es daran, dass es sich um eine so geschäftskritische Aufgabe handelt (die das Vertrauen des gesamten Systems erfordert), dass wir im Gegensatz zur Schwierigkeitsberechnung (bei der wir uns auf Zeitstempel verlassen) eine Alternative finden müssen, bei der kein Zeitwert gefälscht werden kann? (auch wenn dies der Fall wäre, könnten einzelne Knoten es vermutlich zu gefälschten Zeiten ablehnen). Ist es falsch, Proof-of-Work im Grunde als Ersatz für das Vertrauen in einen (hackbaren/spoofbaren) Zeitstempelserver zu betrachten, der „Blockierungen alle 10 Minuten“ regulieren könnte?

Antworten (1)

Hier gibt es mehrere Definitionen des Begriffs „doppelte Ausgaben“. Zunächst gibt es die eigentliche Definition von Double Spending: das gleiche Geld mehrmals auszugeben. Ein einfaches Beispiel dafür ist die Münze an einer Schnur in einem Verkaufsautomaten. Sie befestigen eine Schnur an einer Münze, wenn Sie die Münze in die Maschine stecken, denkt sie, Sie hätten bezahlt, Sie bekommen, was Sie wollen, aus der Maschine, dann verwenden Sie die Schnur, um die Münze wieder herauszuziehen, damit sie wieder ausgegeben werden kann irgendwo anders.

Nach dieser Definition hat der Austausch von Waren stattgefunden, aber das Geld, mit dem er bezahlt wurde, wird vom Zahler verwendet, um später für eine andere Ware zu bezahlen. Tatsächlich haben Sie mehrere Transaktionen erstellt, die miteinander in Konflikt standen, und alle gelten im Buchhaltungssystem dieses Geldes als abgeschlossen (dh endgültig und unumkehrbar).

Dann gibt es noch die Definition von „Double Spending“ im Zusammenhang mit Bitcoin-Transaktionen. Double Spending wird oft verwendet, um zu sagen, dass es mehrere unbestätigte Transaktionen gibt, die miteinander in Konflikt stehen. Unbestätigte Transaktionen gelten jedoch nicht als abgewickelt, sodass Sie unter dieser Definition widersprüchliche nicht abgewickelte Transaktionen haben.

Das Ziel der Blockchain ist es, diese widersprüchlichen ungeklärten Transaktionen zu lösen. Der Zweck besteht darin, sicherzustellen, dass alle Transaktionen nicht miteinander in Konflikt geraten und dass sie als abgewickelt gelten. Um also keine doppelten Ausgaben zu haben, benötigen Sie zwei Eigenschaften für Transaktionen: irreversibel und konfliktfrei.

Der konfliktfreie Teil wird von Knoten behandelt. Nodes validieren Blöcke und Transaktionen. Sie lehnen Blöcke ab, wenn sie Transaktionen enthalten, die mit anderen Transaktionen in diesem Block oder in der Blockchain in Konflikt stehen. Das, was also den Konfliktaspekt doppelter Ausgaben verhindert, sind Knoten.

Der Proof of Work ermöglicht den irreversiblen Aspekt. Es erfordert, dass Miner Zeit und Energie aufwenden, um einen Block zu erstellen. Um den Inhalt eines Blocks zu ändern, muss man Zeit und Energie aufwenden, um einen neuen Block zu erstellen, der mit einem bereits vorhandenen kollidiert.

Der Proof of Work wird auch verwendet, um Blockchain-Konflikte zu lösen. Wenn es mehrere Kandidaten-Blockchains gibt, die von einem gemeinsamen Gabelungspunkt stammen, folgen die Knoten derjenigen, die die kumulativste Arbeit hat, da diese Kette diejenige ist, für deren Erstellung die meiste Energie aufgewendet wurde.

Der Kettenteil der Blockchain erzeugt einen Aufzinsungsfaktor, sodass Sie zum Ersetzen eines Blocks in der Blockchain auch die darüber liegenden Blöcke ersetzen müssen, was viel mehr Zeit und Energie kostet. Da es andere Leute gibt, die auf der ursprünglichen Blockchain minen, müssen Sie auch in der Lage sein, schneller als sie zu schürfen, damit Ihre Blockchain mehr Arbeit hat als das Original, damit Ihre von allen anderen akzeptiert wird.

Da das Ersetzen von Blöcken einen erheblichen Zeit- und Energieaufwand erfordert, kann man vernünftigerweise davon ausgehen, dass sich ein Block und die darin enthaltenen Transaktionen niemals ändern werden, wenn mehrere Blöcke darauf abgebaut wurden. Dies gibt uns den irreversiblen Aspekt. Aus diesem Grund wird gesagt, dass bestätigte Transaktionen irreversibel sind.

Warum können wir PoW nicht durch eine automatische 10-Minuten-Block-Hinzufügung basierend auf einem einfachen Zeitstempel ersetzen?

Denn das ist nicht dezentral. Wer erstellt die Blöcke? Wenn mehrere Personen Blöcke wie beim Mining erstellen können, durch welchen Mechanismus werden Verbindungen gebrochen? Wie lösen Sie zwei verschiedene Personen auf, die unterschiedliche Blöcke erstellen? Was hält jemanden davon ab, Zeitstempel zu fälschen und die Blockchain durch ihre eigene Version zu ersetzen?

Der einfachste Weg, diese Probleme zu lösen, besteht darin, Blöcke zu erstellen, die nur von einer begrenzten und vertrauenswürdigen Gruppe von Personen erstellt werden. Also ist es jetzt zentralisiert. Herzlichen Glückwunsch, Sie haben Paypal erstellt, aber weniger effizient.

Der ganze Zweck des Arbeitsnachweises besteht darin, ein dezentralisiertes System zu ermöglichen, in dem sich alle auf die Wahrheit einigen können, ohne dass eine zentrale Autorität vorschreibt, was diese Wahrheit ist. Wenn alle die gleichen Regeln befolgen, werden schließlich alle zu dem Schluss kommen, was die Wahrheit ist. Die Verwendung des Energieaufwands im Proof of Work verhindert, dass jemand die Geschichte mit verschiedenen Blöcken umschreibt, weil dies teuer ist. Der Gleichstand bei der Verwendung der Kette mit der meisten Arbeit ermöglicht es den Knoten, auf derselben Blockchain zusammenzulaufen. Die Nutzung des Proof of Work beantwortet die oben gestellten Fragen, ohne sich auf eine zentrale Instanz zu verlassen.

Zusammenfassend ermöglicht der Proof of Work, dass Transaktionen abgewickelt und unumkehrbar werden. Es ermöglicht Knoten, auf derselben Blockchain zu konvergieren, und macht es extrem teuer, bis zu einem Punkt, an dem es unmöglich teuer wird, die Geschichte neu zu schreiben, wodurch Transaktionen in der Blockchain unwiderruflich werden. Die eigentliche Sicherstellung, dass keine widersprüchlichen Transaktionen in der Blockchain existieren und damit echte Doppelausgaben zu verhindern, bleibt den Nodes überlassen, die die Blockchain validieren.

danke für die so umfassende antwort!
@Andrew Chow danke für die tolle Erklärung. Ich habe immer noch Zweifel an der Nützlichkeit des PoW. Was wäre, wenn es für jeden Blockkonflikt eine offensichtliche und unbestreitbare Wahrheit gibt und wir deshalb keinen Konsens mehr brauchen? Brauchen wir in dieser Situation noch das PoW?
Mit offensichtlicher und unbestreitbarer Wahrheit meine ich, wenn es einen Konflikt von Blöcken gibt, kann jeder Knoten zweifellos auf die gleiche Wahrheit schließen, von der einer die richtige ist, so wie wir immer schlussfolgern können, dass zwei größer als einer wahr sind.
@swampcypress Sicher, wenn es einen dezentralisierten Weg gäbe, bräuchten wir PoW nicht.