Gibt es eine praktische Möglichkeit für Ethereum-Netzwerke, beträchtlich große Datenmengen zu verarbeiten, die von umfangreichen Verträgen verwendet werden?

Es ist kein Geheimnis, dass ein einziger Vertrag möglicherweise eine ziemlich große Datenmenge speichern kann ( 1 , 2 ). Natürlich braucht es etwas Gas, aber es scheint das Gesamtvolumen der im gesamten Netzwerk zu speichernden Daten nicht streng zu begrenzen. Es gibt auch empfohlene Möglichkeiten, dies zu vermeiden (wie IPFS / Swarm), aber auch diese sind nicht restriktiv. Auch wenn sie ineffizient sind, können diese datenverbrauchenden Verträge erstellt und mit Daten gefüllt und für einige Zeit in der Tiefe des Netzwerks gehalten werden.

Nun, unter der Annahme, dass die Blockchain verteilt ist, wie werden wir zB mit ein paar TB schweren Verträgen umgehen? Bedeutet das, dass das Netzwerk diese Terabytes auf alle Knoten verteilen müsste, um richtig zu funktionieren? Vielleicht gibt es eine Art Aufbewahrungsort für solche "verlorenen Steine"?

Oder übersehe ich einen Punkt?

Antworten (1)

Ein SSTOREWert ungleich Null kostet 20.000 Gas. Jeder SSTOREkann 32 Bytes an Informationen speichern.

Überprüfen Sie meine Mathematik:

1TB / 32 bytes = 31,250,000,000

31,250,000,000 * 20,000 gas * 1 gwei/gas = 625,000 ether * $750/ether = $468,750,000

Also ja, ein Vertrag könnte ein Terabyte an Daten speichern und von allen Knoten verlangen, dass sie diese replizieren. Aber es würde Hunderte von Millionen Dollar kosten, dies zu tun.

Die von Verträgen gespeicherten Daten sind eigentlich kein Teil der Hauptblockkettenstruktur, da sie durch erneutes Ausführen aller Transaktionen berechnet werden können. Es ist also denkbar, dass Knoten diese Daten einfach nicht speichern können, bis sie benötigt werden (an diesem Punkt wäre die Rekonstruktion rechnerisch teuer). Je nachdem, wie die Daten ursprünglich erstellt wurden, können die Transaktionen selbst jedoch genauso umfangreich sein. (Beachten Sie, dass Gas auch für die Nutzlast einer Transaktion bezahlt werden muss.)

Ich kenne die Details der geplanten Sharding-Arbeit nicht, aber ich stelle mir vor, dass nicht jeder Knoten benötigt wird, um alle Daten zu speichern. Dies könnte auch die Speicherkosten pro Knoten verringern.

Danke, du hast die Dinge sehr gut erklärt. Die Kostspieligkeit könnte in der Tat eine echte Grenze darstellen. Wahrscheinlich habe ich das unterschätzt