Vertrag immer ohne Benzin in Remix

Ich versuche, meinen Vertrag mit dem neuesten ganache-cli v6.0.3 (ganache-core: 2.0.2) mit Remix (http!-Version) auf http://remix.ethereum.org zu testen und bereitzustellen . Nachdem ich also ganache-cli ohne zusätzliche Parameter auf dem Standardport 8545 gestartet habe, verbinde ich mich mit Remix über den Web3-Provider http://127.0.0.1:8545 und meine Konten werden angezeigt, wie von Ganache angezeigt.

Dies ist der Vertrag, den ich bereitstellen möchte:

pragma solidity ^0.4.20;

contract Test {

    uint[4] public arr; // [0,0,0,0]
    event TestLog(string logmessage);

    function Test() public {
        arr[0] = 1; // [1,0,0,0]
    }

    function checkArray() public {
        if(arr[0] == 1) { // arr == [1,?,?,?]
            arr[1] = 1;
            arr[0] = 0; // switch values [0,1,0,0]
        }
        TestLog("some log");
    }

}

Es funktioniert gut mit der eingebauten Javascript-VM in Remix:[vm] from:0xca3...a733c, to:Test.checkArray() 0x692...77b3a, value:0 wei, data:0x7b3...f7296, 1 logs, hash:0xa6f...87209

Wenn ich versuche, die checkArray-Funktion in Remix auszuführen, die über den Web3-Provider mit Ganache verbunden ist, erhalte ich eine transact to Test.checkArray errored: VM Exception while processing transaction: out of gasFehlermeldung.

Was mache ich hier falsch? Das Aufstocken von gasLimit mit ganache-cli -l 5000000hat nicht geholfen, ebenso wie noch höhere Werte und ein Folgetest mit einem sehr kleinen gasPrice und einem hohen Gaslimit. Ist es ein Remix-Problem, beim Erstellen der Transaktion falsche Gaslimits auf der Remix-Website festzulegen? Ich habe es auch auf einem privaten Geth-Knoten mit dem gleichen Ergebnis versucht: kein Benzin mehr ...

Jede Hilfe gerne willkommen!

Antworten (2)

Dies scheint ein Testrpc/Ganache-Bug zu sein. Die Leitung, die Probleme macht, ist das Setzen bzw. Zurücksetzen des Array-Wertes an Position 0 auf Null arr[0] = 0;.

Ich habe Rinkeby mit demselben Vertrag verwendet und es funktioniert wie ursprünglich erwartet. Sie können es hier testen: https://rinkeby.etherscan.io/address/0x78aC7667BdeDC3b1CdF43611AdF7a88e05b600F5

Da dies einige sehr grundlegende Funktionen sind, muss ich sagen: was zum Teufel?

Meiner Meinung nach ist die Einstellung arr[0]falsch, da dieses Element nicht vorhanden ist. Es ist / war immer am Ende des Arrays. Verwenden Sie arr.push(1), um die Länge des Arrays zu erweitern.

Ich hoffe es hilft.