Ich möchte eine Schätzung erhalten, wie viel es kosten würde, beliebig viele Elemente in einer Zuordnung des Formulars zu speichern BYTES32 -> BYTES32
. Ich sehe hier , dass eine STORAGEADD
Operation 20000 Gas kostet, was meiner Meinung nach die Anweisung ist, einem Mapping ein Element hinzuzufügen (ist es richtig?) .
Der Gaspreis beträgt heute 20 gwei, also 20 * 10^9 wei, was mir insgesamt 20000 * 20 * 10^9 * 10^-18 = 0,0004 Ether ~ 0,0048 USD (mit 1 ETH = 12 USD) ergibt.
Ist es richtig und gibt es eine Begrenzung, wie viele Elemente ich in das Mapping einfügen kann (ohne Berücksichtigung von Gaspreisbeschränkungen)?
Der Gesamtspeicher besteht aus 32-Byte-Slots, die mit 256 Bit adressiert werden. Dies gibt uns 2^256 * 32
zu verwendende Bytes. Wenn Sie ein Element zu a hinzufügen mapping
, wird es an einen zufälligen Ort im Speicher gesendet, der von berechnet wird sha3
, siehe diese Antwort .
Das Hinzufügen eines Elements zu einer Zuordnung wird niemals fehlschlagen, da es immer einen sha3
-berechneten Ort gibt, an dem die Informationen abgelegt werden können. Je näher Sie Einfügungen kommen, desto höher ist natürlich 2^256
die Wahrscheinlichkeit, dass Sie schließlich etwas anderes überschreiben.
Siehe diese Antwort auf eine ähnliche Frage. Kurz gesagt: Sie können beliebig viele Elemente in einem Mapping speichern.
Arran Schlossberg