Transaktion ohne Gas, aber weniger als das Gaslimit verbrauchtes Gas

Ich habe diese Methode in einem Vertrag, den ich auf Rinkeby teste

function addMatch(string _name, uint _fixtureId, uint8 _home, uint8 away, uint _start) public onlyOwner returns (uint8) {
    require(_home < NUM_TEAMS && _away < NUM_TEAMS && _home != _away);
    require(_start >= now);
    Match memory newMatch = Match({
        home: _home,
        away: _away, 
        fixtureId: uint2str(_fixtureId),
        winner: 0, 
        start: _start, 
        name: _name
    });
    uint8 matchId = uint8(matches.push(newMatch));
    string memory url = strConcat(
        "json(https://api.basketball-matches.org/[my api key]/", 
        newMatch.fixtureId,
        ").[?(@.status=='FINISHED')].result[scoreHome,scoreAway]");
    bytes32 oraclizeId = oraclize_query(_start + QUERY_INTERVAL, "URL", url);
    oraclizeIds[oraclizeId] = matchId;
    emit MatchCreated(matchId);
    return matchId;
}

Egal wie hoch ich das Gaslimit für die Transaktion einstelle, schlägt immer noch fehl, jedoch ist das beim Ether-Scan angezeigte gasUsed geringer als das gasLimit (das ich auf das Limit des Netzwerks eingestellt habe). Hat jemand eine Ahnung, was das Problem sein könnte. Ich verwende web3 und Infura über das Trüffel-HDWallet-Angebot.

Geben Sie hier die Bildbeschreibung ein

Der Versuch, die Gaskosten mit web3 zu schätzen, wirft nur einen Fehler. Der Fehler, der zurückgegeben wird, wenn ich diese Methode in der Blockchain aufrufe, ist:

Error: Transaction ran out of gas. Please provide more gas:
Könnte sein, dass eine Ihrer require-Klauseln die Transaktion unterbricht
@gisdev_p scheint es gewesen zu sein, Zeitzonen vergessen, aber warum einen Gasfehler auslösen, muss das gesamte verbleibende Gas verbraucht werden? Denken Sie auch daran, Ihren Kommentar zu einer Antwort zu machen, damit ich Ihnen den Vertreter geben kann
Es sollte nicht alles Gas verbrauchen, und ich glaube nicht, dass es das tut. Zumindest im Screenshot Ihrer Frage ist das verwendete Gas anders und viel kleiner als das maximale Gas
Seltsamer Fehler, in einem solchen Fall dann zurückzugeben, aber danke für Ihre Hilfe

Antworten (1)

Überprüfen Sie die Parameter Ihres Funktionsaufrufs, es sieht so aus, als würde eine Ihrer Anforderungsklauseln die Transaktion unterbrechen.