Empujar una estructura a una matriz evita el registro

Recibo un error extraño en Solidity. Tengo la siguiente función pública:

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;
}

Cuando llamo a la función con contract.test.call(...), devuelve 0, pero cuando ejecuto contract.test.sendTransaction(...), el evento BidPlaced no se registra.

Cuando reviso el recibo para saber cuánto gas se está utilizando, muestra la cantidad esperada, por lo que sé que no se está generando un error.

Si me deshago de la book.homeBids.push(bid);línea, el evento se registra correctamente. ¿Qué pasa con esa línea podría causar un problema?

Respuestas (1)

Descubrí la respuesta, fue trivial, pero lo dejaré aquí de todos modos para otros que tengan el mismo problema.

La cantidad de gas predeterminada para mis transacciones era 90000 y la estimación de gas para la funcionalidad era 110000, por lo que la transacción se estaba quedando sin gas. Subí el gas pasado a la transacción y funcionó:

contract.test.sendTransaction(..., { from: 0x00.., value: 10000, gas: 120000 })
Debes marcar tu respuesta como correcta
@TjadenHess tengo que esperar 24 horas más para hacerlo, lo haré tan pronto como pueda