Vertrag funktioniert auf Javascript VM und nicht auf Web3 Provider, warum?

Hier ist der Code:

Telefonvertrag:

pragma solidity ^0.4.24;

contract Caller {

    address public called_address;

    constructor() public payable {

    }

    function set_address(address _addy) public {
        called_address = address(_addy);
    }
    function () public payable{
        Called c = Called(called_address);
        if (c.get() > 10 ){
            revert("Too much sauce");
        }
        c.set();
    }

}

interface Called{

    function set() external;
    function get() external view returns (uint);
}

Genannter Vertrag:

pragma solidity ^0.4.24;

contract Called{

    uint public number;

    function myuint() public view returns(uint _number) {
        _number = number;
    }

    function set() public {
        number++;
    }

    function get() public view returns (uint){
        return number;
    }
}

Wenn ich die Fallback-Funktion aufrufe, bekomme ich eine Fehlermeldung. Dies geschieht nur bei Verwendung des Web3-Anbieters, funktioniert aber gut in JavaScript VM. Auch diese Frage gesehen

Ist es ein Fehler in Remix? Hat mein Code einen Fehler? Warum erhalte ich in den verschiedenen Umgebungen unterschiedliche Ergebnisse?

Antworten (1)

Die aktuelle Online-Version von Remix (0.6.4) weist einige Fehler im Zusammenhang mit der Kommunikation zwischen Verträgen auf, die bei Verwendung externer Web3-Anbieter oder -Einrichtungen vorhanden sind. Versuchen Sie, die aktuelle Alpha-Version ( http://remix-alpha.ethereum.org ) zu verwenden, und wenn dann alles in Ordnung ist, wechseln Sie einfach darauf. Die aktuelle Alpha-Version soll kurz die aktuelle Online-Version (als Version 0.7.0) sein.