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.
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:
Überprüfen Sie die Parameter Ihres Funktionsaufrufs, es sieht so aus, als würde eine Ihrer Anforderungsklauseln die Transaktion unterbrechen.
gisdev_p
InfinityCounter
gisdev_p
InfinityCounter