¿Cómo simular múltiples transacciones consecutivas y obtener el estado resultante?

Estoy tratando de simular una transacción en la cadena de bloques pública que invoca el método de un contrato con ciertos parámetros. Luego quiero hacer una transacción de seguimiento con alguna otra llamada de método.

Pensé que puedo usar call()la función en la consola de JavaScript para invocar un método sin publicar una transacción real, por ejemplo:

var abi = [...];
var contractAddress = "0x...";
var contract = web3.eth.contract(abi).at(contractAddress);
contract.updateSomething.call(...);    // change some values

El problema ahora es: ¿Cómo puedo hacer otra llamada que use el estado actualizado del contrato?

Si solo uso otro, call()devuelve el valor anterior, no el actualizado.

...
contract.updateSomething.call(...);    // change some values
contract.readSomething.call();         // returns old value

Respuestas (1)

Tienes que esperar hasta que se extraiga la transacción. Una forma de lograrlo es hacer que el método updateSomethiggenere un evento y hacer que su programa escuche dichos eventos. Cuando se extraen las transacciones, se generará un evento y se llamará a su devolución de llamada.