Soweit ich das beurteilen kann, speichert die Ethereum-Blockchain nur Konten und Guthaben – warum haben die ursprünglichen Bitcoin-Entwickler die Methode gewählt, alle Transaktionen zur Validierung zu speichern, anstatt nur Kontoguthaben? Es scheint, als würde das die Blockchain-Größe auf der Festplatte ziemlich reduzieren ...
Um sicherzustellen, dass ein Adresssaldo korrekt ist, müssen Sie überprüfen, ob alle Transaktionen an dieser Adresse gültig sind. Um also eine Liste mit vertrauenswürdigen Adressen und Guthaben zu erstellen, müssen Sie zunächst die gesamte Blockchain herunterladen und verifizieren.
So wie Bitcoin funktioniert, brauchen Sie eigentlich eine Liste von nicht ausgegebenen Transaktionsausgaben (UTXOs). Wenn Sie eine neue Transaktion zum Ausgeben von Coins erstellen, belasten Sie nicht nur eine Adresse; Sie müssen auf eine oder mehrere spezifische Ausgaben früherer Transaktionen verweisen, die Sie ausgeben. Diese vorherigen Ausgaben werden dann unbrauchbar, sodass Sie sie nicht erneut ausgeben können.
Bitcoin Core generiert tatsächlich eine indizierte Datenbank aller UTXOs und bezieht sich darauf, wenn Transaktionen auf Gültigkeit geprüft werden (da dies viel schneller ist, als direkt durch die Blockchain zu suchen). Dies ist die engste Analogie zu dem von Ihnen vorgeschlagenen "Ledger".
Sobald Sie dies getan haben, können Sie die Blockchain selbst löschen und einfach die UTXO-Datenbank behalten; Das ist im Grunde das, was die -prune
Option tut (siehe Wie kann ich Bitcoin im Pruning-Modus ausführen? ). Denken Sie jedoch daran, dass Bitcoin ein Peer-to-Peer-System ist. Sie behalten also die Blockchain, damit neue Benutzer sie bei Ihnen herunterladen können.
Genau die gleiche Frage wurde einem Bitcoin-Entwickler (Peter Todd) während der Bitcoin 2013 Conference gestellt.
Seine Antwort können Sie sich hier ansehen
Für diejenigen, die zu faul sind, sich das Video anzusehen, lautet die kurze Antwort, dass sie dies aus Sicherheitsgründen tun.
Ein netter Artikel vom Corda-Entwickler, der erklärt, warum Corda das einfache „Account/Balance“-Ledger aufgibt und UTXO-ähnliches Ledger verwendet.
https://www.corda.net/2016/12/09/rationale-tradeoffs-adopting-utxo-style-model/
Das UTXO-Modell hat diese Vorteile:
Kurz gesagt, der naive „Konto“-Ansatz ist völlig unsicher. Um die Unsicherheit zu beheben, ohne ein TXO-Modell zu verwenden, scheinen die Leute am Ende etwas zu schaffen, das komplexer, weniger parallelisierbar und weniger flexibel ist als das TXOUT-Modell.
Wie verhindern Sie beispielsweise, dass jemand eine Transaktion einfach erneut sendet, um eine Zahlung zu duplizieren? Die naive Lösung, jede neue Transaktion mit jedem tx in der Geschichte zu vergleichen, hat eine schreckliche Leistung und Skalierbarkeit und ist keine realistische Option. Die Verwendung einer Sequenznummer beendet die Parallelität (z. B. wenn Sie zwei Transaktionen durchführen und jemand zuerst die spätere hört, muss die erste blockiert werden; ebenso wie die Parallelität bei der Validierung) und hat den Overhead der Verfolgung von Sequenznummern.
Darüber hinaus wurden Systeme wie Bitcoin entwickelt, um Einwegadressen sowohl für den Datenschutz als auch für die effiziente Verknüpfung von Metadaten zu verwenden, z. B. woher wissen Sie, welche Rechnung bezahlt wurde? – indem Sie sehen, welche Ihrer Adressen bezahlt wurde. Wenn Sie Adressen nicht wiederverwenden, entfällt der potenzielle Nutzen des Kontomodells und Sie erhalten nur die Kosten.
Nate Eldredge
Stecknadelkopf
Morphus