Im Etherem-Blog
Vitalik sagt: "Aber wir speichern keine Geschichte, die älter als 5000 Blöcke ist.".
1) Ist zu verstehen, dass der Status Trie nicht den Status von Konten enthält, die während der letzten 5000 Blöcke nicht verwendet wurden?
2) Nehmen wir an, ein Typ erwacht nach 50 Jahren aus einem Winterschlaf und möchte eine Transaktion durchführen, die auf einen Block verweist, der vor Jahren passiert ist. Unter Berücksichtigung aller aktuellen Blockchain-Pruning-Algorithmen, die in Ethereum implementiert sind oder bald implementiert werden sollen; Wie würde das Protokoll darüber gehen? Ich nehme an, die meisten der typischen Full Nodes würden nicht einmal die Blöcke enthalten, die Transaktionen enthalten, die dieses bestimmte Konto auf ihren Festplatten erwähnen (gibt es noch einmal irgendwelche Blockchain- (nicht den Trie State) Pruning-Algorithmen, die gerade vorhanden sind?) Wahrscheinlich wäre es enthalten einige der Archivknoten. Wie würde das Protokoll darüber gehen?
Die Frage erstreckt sich also ein wenig über die Architektur von Ethereum selbst (es deutet darauf hin, dass wir tatsächlich einige Arten von Full-Nodes haben, solche, die alle Daten speichern, und andere, die sich entschieden haben, einige Pruning-Algorithmen zu verwenden.) Nicht, dass es die Kryptografie bedroht Sicherheit, da die jüngsten Hashes ausreichen würden, um zu überprüfen, ob die vor 50 Jahren platzierten korrekt sind, aber dazu müssten alle Blöcke erneut überprüft werden, sobald wir sie aus dem Zustand Trie gelöscht hätten. Eine andere Option wäre, einem Archivierungsknoten sofort zu VERTRAUEN, aber dann nicht die kryptografische Sicherheit, ABER die dezentrale Natur der Dienste leidet stark.
Neugierig bin ich.
Das ist falsch. Ich denke, die Trennung besteht darin, dass der Block nicht nur Änderungen am Zustand enthält, sondern auch die Zustandswurzel selbst, die unter Verwendung des gesamten aktuellen Zustands generiert wird. Im Wesentlichen bedeutet dies, dass für die letzten 5000 Blöcke der gesamte Zustand für jeden dieser Blöcke gespeichert wird, aber für Blöcke davor verworfen wird. Sie haben also den Status jedes Kontos in den Blöcken n bis n-5000, aber nicht davor.
Siehe auch #1. Die Person hätte keine Probleme, da ihr Konto im aktuellen Zustand noch vorhanden wäre. Ich bin mir jedoch nicht ganz sicher, was Sie mit "Verweisen auf einen Block, der vor Jahren passiert ist" meinen. Sie referenzieren keinen Block, wenn Sie eine Transaktion durchführen. Sie könnten jedoch verwirrt sein, da die Ethereum-Blockchain in 10 Jahren mit Sharding, Plasma, Casper usw. wahrscheinlich ziemlich anders aussehen wird.
Vega4
Vega4
Vega4
natewelch_
natewelch_
natewelch_
Vega4
natewelch_
Vega4