Wie setzt man den Ethereum Smart Contract ein, der mehr als 4,7 Mio. Gas im Ropsten-Netzwerk benötigt?

Mein intelligenter Vertrag ist wirklich riesig – er erfordert 5,6 Millionen Gas bei der Bereitstellung. Ich konnte es einmal bereitstellen , aber etwas hat sich geändert und ich kann es nicht mehr tun.

Ich habe versucht, Miner mit einem höheren Blockgaslimit auszuführen, gethbekomme aber immer noch exceeds block gas limit: https://stackoverflow.com/questions/51437227/geth-targetgaslimit-not-working

Wie kann ich das im Ropsten-Netzwerk (Testnet) machen?

Teilen Sie es in mehrere Verträge

Antworten (2)

Letztendlich müssen Sie die Größe Ihres Kontrakts reduzieren, da es keine Möglichkeit gibt, das Gaslimit für eine einzelne Transaktion zu umgehen.

Sie können dies auf verschiedene Arten tun:

  • Stellen Sie sicher, dass Sie Ihren Code so schreiben, dass er nach Möglichkeit wiederverwendbare Funktionen enthält
  • Stellen Sie sicher, dass Sie den Code mit dem Soliditätsoptimierer kompilieren
  • Verwenden Sie nach Möglichkeit vorhandene, kampferprobte Bibliotheken
  • Teilen Sie Ihren Vertrag in mehrere kleinere Verträge oder Bibliotheken auf, die aufeinander verweisen, um Transaktionen unterhalb des Gaslimits zu erstellen
Alternativ können Sie es auf ein Testnetz mit einem höheren Gaslimit wie Kovan setzen.
> Es gibt keine Möglichkeit, das Gaslimit für eine einzelne Transaktion zu umgehen. Wie habe ich das einmal gemacht?
Das Ropsten-Gaslimit ist nicht wirklich festgelegt, liegt aber meistens bei 4,7 Millionen. Wenn Sie ein Miner sind, können Sie das Gaslimit vorübergehend erhöhen. Das ist wahrscheinlich passiert, als Ihre Transaktion akzeptiert wurde. Denken Sie unbedingt darüber nach, Ihren Kontakt modular und versionierbar zu gestalten.
Ich kann wie für Ropsten abbauen, es ist nicht so schwierig wie für das Hauptnetz. > "Wenn Sie ein Miner sind, können Sie das Gaslimit vorübergehend erhöhen", habe ich versucht ( stackoverflow.com/questions/51437227/… ), wie kann ich das tun?

Ich habe keine Ahnung, was falsch ist, aber ich konnte mit Remix veröffentlichen, das mit dem lokalen Geth-Miner-Knoten verbunden ist:

$geth --verbosity "4" -rpc --nousb --ipcdisable --rpcaddr "127.0.0.1" --rpccorsdomain " " --rpcvhosts " " --syncmode "fast" --rpcapi="db,personal,eth ,net,web3,admin" --cache=2048 --testnet --mine --targetgaslimit 7000000

https://ropsten.etherscan.io/tx/0x75139eb7f94e1a8769dee35b63f0492893da550e5538dfd67a889203d510c833

Keine Ahnung, aber ich kann es nicht wiederholen. Wovon hängt es ab? Sieht nach einer Netzwerkbeschränkung aus. Soweit ich weiß, wird das Blockgaslimit durch die Abstimmung der Knoten bestimmt. Bedeutet das, dass die meisten Bergleute einfach für einen größeren Betrag als den Standard stimmen sollten? Wie hat es ein paar Mal für mich funktioniert?