Creé una aplicación web que interactúa con un contrato inteligente, utilizando el paquete web truffle unbox. Mi contrato tiene una variable llamada suma y 2 funciones: una llamada respuesta que incrementa la variable suma después de que se ejecuta y otra función llamada total que devuelve el valor de la variable suma. En mi app.js tengo el código:
SmartContract.deployed().then(function(contratoInstancia) {
contractInstance.answer(1, {gas: 140000, from: web3.eth.accounts[0]}).then(function(v) {
return contractInstance.total.call().then(function(total){
$("#total").html(total.toString());
});
});
}
Mi pregunta es si la llamada contractInstansce.total se ejecutará después de que se extraiga la llamada de transacción contractInstance.answer, de modo que la variable total en mi index.html tenga el valor actualizado. También es necesaria la palabra "return" después de una llamada de transacción función, como respuesta en este ejemplo, para que la siguiente función de llamada de contrato, como total en este ejemplo, se ejecute después de que se extraiga la transacción?
Usé testrpc para probar si mi aplicación web funciona como se esperaba, pero en testrpc los bloques se extraen instantáneamente, por lo que no estoy seguro de si el código que escribí será correcto si uso esta aplicación en la red testnet.
¡Muchas gracias por su tiempo!
Mi pregunta es si la llamada contractInstansce.total se ejecutará después de que se extraiga la transacción llamada contractInstance.answer.
No, contractInstance.answer
devolverá el hash de la transacción (que puede que aún no se haya extraído).
Considere usar la versión web3 1.0.x. Tiene eventos, que puedes escuchar http://web3js.readthedocs.io/en/1.0/web3-eth-contract.html?highlight=contract#id15
contractInstance.methods.answer().send({from: '_address'})
.on('transactionHash', function(hash){
...
})
.on('receipt', function(receipt){
...// your transaction is mined here
})
.on('confirmation', function(confirmationNumber, receipt){
...
})
.on('error', console.error);
kati
Víctor Baranov
npm view web3
, actualice su paquete.json con él e instálelokati
Víctor Baranov
getTxCallBack
la función aquí: ethereum.stackexchange.com/questions/18884/…kati
david callanan