Die Vertragsbereitstellung löst einen Block-Gas-Limit-Fehler aus

Ich versuche, einen Smart Contract in einem Testnetzwerk mit einer [Meteor DApp][1] bereitzustellen. Ich habe diese Parameter für den Genesis-Block:

gasLimit: "0x1388"

Jedes Mal, wenn ich versuche, einen einzelnen Vertrag bereitzustellen, erhalte ich jedoch die folgende Fehlermeldung:

Error: Exceeds block gas limit

Irgendeine Idee, was ich hier tun kann?

Antworten (2)

Da Sie dies in einem Testnetz tun, können Sie Ihren Genesis-Block so ändern, dass er ein 0x2fefd8Gaslimit hat, das mit dem des Hauptnetzes identisch ist (3.141.592 Gas). Sie müssen diese Testkette auch zurücksetzen, da Sie den Genesis-Block ändern werden.

Das Blockgaslimit von PI Millionen kann während der Bereitstellung einiger Verträge erreicht werden.

Hier ist ein Prozess, der helfen kann, und versuchen Sie, nach jedem Schritt erneut bereitzustellen.

  1. Ein schneller Lösungsversuch ist die Verwendung von Soliditys --optimize Flag .
  2. Wenn weitere Untersuchungen erforderlich sind, versuchen Sie festzustellen, wie weit Ihr Einsatz über der Blockgasgrenze liegt. Beginnen Sie mit dem Auskommentieren von Teilen des Vertrags und prüfen Sie, ob Teile tatsächlich entfernt werden können.
  3. Wenn es eine gemeinsam genutzte Logik gibt, stellen Sie sicher, dass Sie sie als Funktion umgestalten, da dies die Größe des Bytecodes reduziert und niedrigere Gaskosten während der Bereitstellung bedeutet.
  4. Wenn der Vertrag zu viel Logik hat, dann ist es notwendig, den Vertrag aufzuteilen. Die Aufteilung in Bibliotheken kann hilfreich sein. Eine Aufteilung in mehrere Verträge, bei denen jeder Vertrag nur ein paar Funktionen hat, muss möglicherweise ebenfalls durchgeführt werden.
Ich erhalte diesen Fehler bei jedem einzelnen Vertrag, unabhängig von seiner Komplexität. Ich habe dieses Netzwerk gerade eingerichtet, also könnte ich bei der Konfiguration etwas falsch gemacht haben