У меня есть этот метод на контракте, который я тестирую на ринкеби.
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;
}
Независимо от того, насколько я установил лимит газа, транзакция все равно не выполняется, однако значение gasUsed, отображаемое при сканировании эфира, меньше, чем gasLimit (которое я установил на лимит сети). Кто-нибудь знает, в чем может быть проблема. Я использую web3 и использую инфуру через трюфельный HDWallet.
Попытка оценить стоимость газа с помощью web3 просто выдает ошибку. Ошибка, возвращаемая при вызове этого метода в блокчейне:
Error: Transaction ran out of gas. Please provide more gas:
Проверьте параметры вызова вашей функции, похоже, что одно из ваших обязательных предложений прерывает транзакцию.
gisdev_p
InfinityCounter
gisdev_p
InfinityCounter