Перемещение структуры в массив предотвращает ведение журнала

Я получаю странную ошибку в Solidity. У меня есть следующая публичная функция:

struct Bid {
    address bidder;
    uint amount; /* in wei */
    bool home; /* true=home, false=away */
    int64 line;
}

event BidPlaced(bytes32 indexed game_id, BookType book, address bidder, uint amount, bool home, int64 line);

function test(bytes32 game_id, bool home, int64 line) payable returns (int) {
    Game game = getGameById(game_id);
    Book book = game.books[uint(BookType.Spread)];
    Bid memory bid = Bid(msg.sender, msg.value, home, line);

    // problem is right here
    book.homeBids.push(bid);

    BidPlaced(game_id, BookType.Spread, msg.sender, msg.value, home, line);
    return 0;
}

Когда я вызываю функцию с помощью contract.test.call(...), она возвращает 0, но когда я запускаю contract.test.sendTransaction(...), событие BidPlaced не регистрируется.

Когда я проверяю квитанцию ​​о том, сколько газа используется, она показывает ожидаемое количество, поэтому я знаю, что ошибка не возникает.

Если я избавлюсь от book.homeBids.push(bid);строки, событие будет правильно зарегистрировано. Что в этой строке может вызвать проблему?

Ответы (1)

Выяснил ответ, это было тривиально, но я все равно оставлю его здесь для других, столкнувшихся с той же проблемой.

Сумма газа по умолчанию для моих транзакций составляла 90000, а оценка газа для функциональности была 110000, поэтому у транзакции заканчивался газ. Я увеличил газ, переданный в транзакцию, и это сработало:

contract.test.sendTransaction(..., { from: 0x00.., value: 10000, gas: 120000 })
Вы должны отметить свой ответ как правильный
@TjadenHess Мне нужно подождать еще 24 часа, чтобы сделать это, я сделаю это, как только смогу