Ahora estoy tratando de eliminar mi primera Dapp (usando el complemento Metamask). todo va a estar bien, pero no puedo obtener una cosa: ¿Es posible recibir el retorno de la función, usando Web3 (no JS VM!)
Por ejemplo, tengo un contrato simple como este:
pragma solidity ^0.4.0;
contract test {
int32 data = 123;
function getData() returns (int32) {
return data;
}
}
Cuando llamo getData()
con la máquina virtual JS, funciona bien:
Pero con seleccionado Inject web3
(Metamask) devuelve información sobre la nueva transacción, en lugar de123
Tampoco puedo recibir ningún dato de la consola JS (Metamask):
Para la pregunta, lo más simple es hacer getData
constante como:
function getData() constant returns (int32)
Otra opción es usar un evento: ¿Cómo obtener valores de retorno cuando se llama a la función con argumento?
constant
modificador solucionó todo, ¡muchas gracias!¿Intentó usar la función de llamada de forma asíncrona?
contract.getData.call().then(function(result) {
console.log(result);
});
ética
sergey potekhin
ética