Festigkeit Überschreitet Blockgasgrenze bei Mokka-Tests mit Ganache-cli

Wie kann ich in diesem Fall das Gaslimit erhöhen? Die Fehlermeldung lautet „n: Exceeds block gas limit“ oder „base fee rises gas limit“.

Ich denke, es gibt eine Art API, die ich brauche, um das Blockgaslimit hier einzustellen .

Sind meine Verträge zu groß? Sollte ich stattdessen jeden Vertrag einzeln testen? Bitte beraten. Danke schön.

überschreitet die Blockgasgrenze Ganache

Antworten (2)

Die Fehlermeldung

"n: Blockgasgrenze überschritten"

bedeutet, dass Ihre Transaktion einen Gaswert deklariert hat, der größer ist als der im Netzwerk maximal zulässige Wert. Ein Kunde wird eine solche Transaktion ablehnen.

Mit ganache-cli können Sie mit einer größeren Gasmenge starten, die mit dem -lParameter verfügbar ist:

ganache-cli -l 8000000

Wird Ganache mit einem Blockgaslimit von 8M starten.


Aus der Readme-Dokumentation geht hervor, dass es einen Modus gibt, in dem Sie zusätzliche Optionen in einem Parameter übergeben, wenn Sie Ganache starten. Dort kannst du einstellen gasLimit.

const ganache = require("ganache-cli");
const options = { gasLimit: 8000000 };
const server = ganache.server(options);
server.listen(port, (err, blockchain) => {
    /* */
});
Hallo Ismael, wie kann ich diesen Befehl in meine Javascript-Datei einfügen, damit ich diese Datei während Mocha-Tests mit Ganache-cli ausführen kann? Danke
@user2965665 Wie startest du deine Ganache-Instanz? Sie können weitere Optionen im zusätzlichen Parameter übergeben, die Sie gasLimitvon dort aus festlegen können.
Danke schön. Ich habe es herausgefunden: const provider = ganache.provider(options);

Dank Ismaels Lösung:

const ganache = require('ganache-cli');
const Web3 = require('web3');

const options = { gasLimit: 8000000 };
const provider = ganache.provider(options);
// quote from doc "Both .provider() and .server() take a single object
// which allows you to specify behavior of ganache-cli"
// https://github.com/trufflesuite/ganache-cli#using-ganache-cli
const web3 = new Web3(provider);