Gibt es ein Limit für die Transaktionsgröße?

Gibt es eine theoretische Grenze für die Größe der Transaktionsdaten, wenn Sie eine Transaktion an das Ethereum-Netzwerk senden?

Ref.

Gibt es eine (theoretische) Grenze für die Datenmenge, die ein Vertrag speichern kann?

Antworten (2)

Wow, das ist eine so interessante Frage! TL;DR : Die Transaktionsgrößengrenze liegt zum Zeitpunkt des Schreibens bei etwa 780 kB (etwa 3 Millionen Gas). Aber lesen Sie weiter.


Es gibt kein direktes oder festes Limit , weder für Transaktionsgrößen noch für Blockgrößen. Dies ist eine Stärke des Ethereum-Netzwerks, es skaliert.

Das bedeutet nicht, dass es keine Grenzen gibt. Es gibt das Blockgaslimit von derzeit 3.141.592 Gas, das maximal pro Block ausgegeben werden kann.

Das bedeutet, dass Sie theoretisch eine einzelne Transaktion erstellen könnten, die das gesamte Gas eines einzelnen Blocks verbraucht.

Versuchen wir, 256 kB Zufallsdaten mit einem Vertrag zu senden:

trx mit 256kb Zufallsdaten

Das würde fast 9 Millionen Gas verbrauchen, was derzeit nicht verfügbar ist. Mist versucht, die Transaktion zu erstellen, aber sie ist ungültig.

Versuchen wir, etwas nahe an der Gasgrenze zu erstellen, 44.444 zufällige Bytes :

44.000 zufällige Bytes

Diese Transaktion wurde durchgeführt, hier ist ein Explorer-Link . Hash:

I0207 11:47:14.558908 eth/api.go:946] Tx(0x25e54394ab4e5f17d6e1240c02c1a6c4bb675ef9471f1105b006988f5fe5aec1) to: 0xfcae7970392f510a985a7eaccd3820b7759d65d9
  • Wert: 60 Finney (0,06 Ether)
  • Benzin: 3131800
  • Gaspreis: 50 Gwei (0,00000005 Ether)
  • Nach Transaktion verbrauchtes Gas: 3031800
  • Tatsächliche Transaktionskosten: 151,59 Finney (0,15159 Ether)
  • Kumulativer Gasverbrauch: 3031800

Also habe ich gerade 44kB zur Blockchain in Block 967163 hinzugefügt .

Und jetzt beginnt die Skalierungsmagie von Ethereum zu wirken. In Block 967164 reagiert das Netzwerk auf den hohen Gasverbrauch und erhöht das Blockgaslimit auf 3.142.967 !

Gaslimit erhöht

Wenn also eine kontinuierliche Anforderung bei hohem Gasverbrauch besteht, kann das Gaslimit um plus/minus erhöht werden 1/1024, was ungefähr ist 0.09%. Siehe gelbes Papier, Gleichungen 40-42 .

Kurz gesagt, Grenze: Ja, zum Zeitpunkt des Schreibens etwa 780 KB für einen TX voller Null-Bytes oder 46 KB für einen TX voller Nicht-Null-Bytes. Feste Limits (wie bei Bitcoin): nein.

Update: In Homestead beträgt das Blockgaslimit jetzt 4.712.388 (1,5-mal PI Millionen) und der Gaspreis beträgt 20 GWei. (Die obige Methodik kann weiterhin verwendet werden.)
Ich habe das vielleicht übersehen, aber wie bedeutet 89kB == 3 Millionen Gas?
Ähm, ist es nicht. Gut erkannt. Es ist wahrscheinlich ungefähr 40 kB. Bitte rechnen Sie noch einmal nach, 3 Millionen Benzin sind auch veraltet. :-)
Sie haben tatsächlich 44.444 zufällige Bytes gesendet. Da Sie 178 Null-Bytes im Inneren hatten, war das intrinsische Gas 21.000 + (178 * 4) + (44.266 * 68) = 3.031.800. Das Gaslimit ist variabel (jetzt zum Beispiel 500.000 wegen des jüngsten Angriffs auf das Netzwerk), daher denke ich, dass es sich nicht lohnt, diesen Wert in der Antwort zu aktualisieren.
Mit dieser letzten Antwort bin ich etwas verwirrt. Ist das gasLimit immer noch gleich 3.141.388 gas oder wird es auf 4.712.388 aktualisiert? Vielen Dank
Es unterscheidet sich. derzeit rund 4.000.000. Einzelheiten finden Sie auf ethstats.net .
Seit dieser Commit -Veröffentlichung mit Geth v1.6.6 werden Transaktionen über 32 KB gelöscht.

Am 08.12.2017 beträgt das auf EthStats.net angegebene Gaslimit 6.700.314 .

Das Gaslimit blieb bei 4,7 Millionen „hängen“. Es wurde empfohlen , dass Miner ihre Einstellungen so ändern, dass das Gaslimit angehoben werden kann.

Wie in diesem Artikel beschrieben , ist dies geschehen.

Jedes hexadezimale Zeichen besteht aus 4 Bit. 2 Zeichen sind ein Byte.

Das gelbe Papier beschreibt die Gebühren für verschiedene Operationen.

Gelbe Papiergebühren

Mit ähnlichen Berechnungen wie denen von 5hcdn/Giuseppe Bertone können wir nun sehen, dass eine Transaktion (im Prinzip) **** halten könnte

(6.700.314 - 21.000) / 68 = 98.225 (abgerundet) Nicht-Null-Bytes.

EthGasStation-Statistiken

Nun ... die von EthGasStation bereitgestellten Daten lassen uns sehen, dass wir eine Transaktion mit einem Gaspreis von nur 0,5 Gwei abbauen könnten.

6,700,314 * 0.5 = 3,350,157 Gwei = 0.003350157 Ether.

Ein üblicherer Gaspreis von 20 Gwei würde ergeben:

6,700,314 * 20 = 40,201,884 Gwei = 0.040201884 Ether.

Bei einem aktuellen ETH-Preis von rund 315 US -Dollar würde es zwischen 1,05 und 12,66 US-Dollar kosten , so viele Daten an die Blockchain zu übermitteln.

"Stand 08.12.2017" Kommen Sie aus der Zukunft?
Nö. Ich bin Brite ;)