Alte Transaktionen in der Blockchain

Nach vielen Recherchen im Netz kann ich immer noch herausfinden, ob die folgende Idee relevant ist oder nicht:

Ich weiß (oder zumindest glaube ich zu wissen), dass jede Transaktion alle Bitcoins verbraucht, die an den Eingangsadressen vorhanden sind. Wenn sich also eine Bitcoin-Adresse in den Eingaben einer Transaktion befindet, müssen Sie sich nicht alle Transaktionen ansehen, die älter als diese sind, um zu wissen, wie viele Bitcoins für diese Adresse vorhanden sind. Das bedeutet, dass wir all diese älteren Transaktionen aus den Blöcken entfernen könnten, die nur ihre Hashes über den Merkle-Pruning-Trick behalten. Mit der Zeit werden die Merkle-Bäume in jedem alten Block immer kleiner, sodass Platz gespart werden kann.

Ich verstehe, dass ein Teil der Transaktionen für immer gelöscht wird, aber die Anzahl der Bitcoins für jede Bitcoin-Adresse wird korrekt bleiben, und vielleicht ist das der Preis, den man zahlen muss, um eine überschaubare Blockchain zu behalten.

Gibt es schon Arbeiten in diese Richtung? Ist das eine dumme Idee?

Ich danke Ihnen für Ihre Hilfe

Antworten (1)

Eine Transaktion verbraucht alle Münzen für die verbundenen Transaktionsausgänge. Aber eine Bitcoin-Adresse kann mehrere Transaktionen haben. Auch wenn eine Transaktion verbraucht wird, bedeutet das nicht, dass die Adresse keine anderen Coins hat.

Ihre allgemeine Vorstellung ist jedoch richtig. Sie können eine Transaktion entfernen, sobald alle ihre Ausgaben ausgegeben wurden (eine Transaktion kann mehr als eine Ausgabe haben, daher müssen Sie jede Ausgabe verfolgen). Dies wurde diskutiert und sogar in alternativen Bitcoin-Clients implementiert. Ich weiß nicht, ob oder wann es im Referenzclient (bitcoind/bitcoin-qt) implementiert werden könnte.

Ich habe eine Implementierung, an der ich gearbeitet habe und die eine SQL-Datenbank verwendet. Bisher hat es die Blockchain bis August 2013 verarbeitet und es gibt 2.000.000 Transaktionen mit nicht ausgegebenen Ausgaben. Die Datenbank selbst ist derzeit etwa 1,2 GB groß, also eine erhebliche Einsparung gegenüber der gesamten Blockchain (15,1 GB auf meinem System). Der Nachteil ist, dass Sie nicht die vollständige Blockchain an andere Knoten liefern können (ich behalte nur die letzten 30 Tage). Sie würden also immer noch vollständige Nodes benötigen, um die Blockchain bereitzustellen oder Sites/Torrents herunterzuladen, damit ein neuer Node auf den neuesten Stand gebracht werden kann.