Fehler Ganache: Gas ausgegangen - Funktioniert in Remix/Nicht von dApp

Ich arbeite an einer Anwendung, die personenbezogene Daten auf/von der Ethereum-Blockchain speichert und abruft. Ich arbeite nur daran, um meine Solidity- und SC-Expertise zu verbessern und mich mit der Umgebung vertraut zu machen.

Situation: Ich verwende Remix, um meine Solidity-Verträge zu codieren. Ich betreibe eine Ganache-Cli auf localhost, die als private Eth-Blockchain fungiert. Mit node.js/express habe ich eine Anwendung erstellt, die auf localhost an einer anderen Adresse gehostet wird. Es gibt eine bestimmte Funktion, die ein Profil erstellt und 6 Parameter (davon 5 Zeichenfolgen) aufnimmt. Das Ausführen dieser Funktion in Remix funktioniert einwandfrei, das Ausführen dieser Funktion in der dApp sendet einen "run out of gas error". Wenn ich eine Funktion einstelle, die nur 3/6 Parameter benötigt, funktioniert sie so, wie sie sollte; wenn ich noch einen hinzufüge kommt der "run out gas"-error.

Ich habe versucht, das Gaslimit des Ganache-Cli manuell auf einen hohen Wert (24 Millionen) zu setzen, und dasselbe getan, als ich es mit Remix bereitgestellt habe. Trotzdem bekomme ich es nicht zum Laufen.

Hat jemand eine Ahnung, was hier das Problem sein könnte? Vielen Dank im Voraus.

Antworten (1)

Geben Sie Gas für die Transaktion?

Wenn Sie ganache-cli starten, überschreiten Sie das Blockgaslimit, das das Maximum ist, das eine Transaktion verwenden kann.

Aber Bibliotheken wie web3.js haben einen Standardwert von 90.000 Gas, um mehr zu verwenden, müssen Sie das Gas explizit in der Transaktion festlegen.

Ja, ich habe es tatsächlich mit dem Flag -l gesetzt. Hat sich anscheinend nichts geändert. Am Ende habe ich es auf Rinkeby mit MetaMask ausgeführt und es traten keine Probleme auf.
Durch das Übergeben des Flags -l wird das Block-Gas-Limit festgelegt, aber Sie können das Gas-Limit für die Transaktion festlegen, indem Sie einen zusätzlichen Parameter übergeben: myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', gas: 1000000}). Einige Bibliotheken wie web3.js haben einen Standardparameter von 90k, was möglicherweise nicht ausreicht.
Sauber! Gut zu wissen. Werde diese Funktion mal testen. Am Ende habe ich es auf Rinkeby bereitgestellt und Metamask verwendet, und alles hat funktioniert. Es war ein Vererbungsproblem mit Ganache, denke ich.