Gibt es eine theoretische Grenze für die Datenmenge, die ein Vertrag speichern kann, während er in einem privaten Netz läuft, in dem Gas keine Rolle spielt?
Kontext: In einer Finanz-DApp, die globale Zahlungssysteme ersetzen soll, ist der tx/s-Durchsatz sicherlich ein limitierender Faktor, der viel diskutiert wird. Aber darum geht es mir hier nicht. Kann ein Vertrag 1 GB, 1 TB, ... Daten in einem Vertrag speichern? Die Daten würden nicht auf einmal geschrieben, sondern würden sich im Laufe der Zeit ansammeln.
Beispiel: Nehmen wir ein Best-Case-Szenario an, in dem wir es schaffen, eine einzelne Transaktion von Token, die auf einem Smart Contract leben, in 100 Bytes zu quetschen. Bei einem Durchsatz von 1000 tps würde dies 100*1000*3600*24*31*12 = 3,2 TB/Jahr ergeben. Sie können gerne raten, ob / wann dies möglich sein wird.
Vertragsspeicher ist ein Schlüssel von 32 Bytes und ein Wert von 32 Bytes, sodass ein einzelner Vertrag maximal etwa 1,46 GB (32^32) speichern kann.
FALSCH. Es gibt 2^256 verschiedene Schlüssel, und jeder Schlüssel kann 32 Bytes speichern, also könnten insgesamt 2^261 Bytes gespeichert werden. Das heißt, bis dahin wird die Ethereum-Blockchain wahrscheinlich aufgrund einer Hash-Kollision brechen....
break
, wird die ganze Blockchain scheitern? Gibt es keine Prüfungen auf doppelte Hashes? Muss die Transaktion zurückgespult/wiederholt werden, bis keine Kollision mehr auftritt?Vertragsspeicher ist ein Schlüssel von 32 Bytes und ein Wert von 32 Bytes, sodass ein einzelner Vertrag maximal etwa 2^261 Bytes (2^256 * 32b) speichern kann.
In einer privaten Kette, in der Gas keine Rolle spielt, können 2 ^ 160 Verträge erstellt werden, da der Adressraum 160 Bit beträgt, vorausgesetzt, er kann vollständig verwendet werden. Theoretisch sind also etwa 2^421 Bytes das Maximum, das Verträge speichern können.
struct
, der größer als 32 Bytes sein kann? @eth♦
Maran
SCBürgel