Quiero obtener los datos de retorno escritos en la función de solidez en web3js. Estoy usando el web3.min.js
paquete de la tienda de mascotas de trufas como la biblioteca web3. Todo funciona bien cuando se llama a la función, devuelve los datos de transacción de los que solía web3.eth.getTransactionReciept
obtener los detalles y también se usa el gas. Ahora quiero los datos que devuelven mi método de solidez.
function helloworld() public returns (string) {
return "helloworld";
}
la parte js
<script>
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:7545"));
}
web3.eth.defaultAccount = web3.eth.accounts[0];
console.log('web3.eth.accounts :', web3.eth.accounts);
var walletContractJSONabiGlobal;
$.getJSON('./contracts/Wallet.json',async function(walletContractJSONabi) {
walletContractJSONabiGlobal = walletContractJSONabi;
var walletContract = web3.eth.contract(walletContractJSONabi.abi);
var walletInstance = walletContract.at('0xc74c8d941494495a4f65c42bebc556398e1f028d');
walletInstance.helloworld((err,data)=>{
if (err) {
console.log('err :', err);
} else {
console.log('data :', data);
}
})
})
</script>
Obtengo los datos en la consola.
datos: 0x988d4bd3169a4d752f6e4ac230d01840f2f7b4cc8e87d768a8e41b6fe867740d
Hice el web3.toAscii(this transaction is)
pero no está obteniendo el resultado adecuado que se esperaba ya que este no es un valor hexadecimal
Cuando la salida deweb3.eth.getTransactionReciept
blockHash : "0x552a93b0035571b93e4a1a89daa445663b0ddb29974078cdf9a250b7f873ca96" blockNumber : 10 contractAddress : null cumulativeGasUsed : 21899 gasUsed : 21899 logs : [] logsBloom : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" status : "0x01" transactionHash : "0x988d4bd3169a4d752f6e4ac230d01840f2f7b4cc8e87d768a8e41b6fe867740d"índice de transacción: 0
por favor ayuda en esto gracias
Esto puede estar marcado como duplicado, solo para ayudarte. no puedes
Los valores de retorno solo están disponibles para otros contratos. Como cliente de software que firma y envía una transacción, obtiene un recibo de transacción y luego, después de esperar a que se extraiga la transacción, puede inspeccionar los registros o inspeccionar otras funciones en modo de solo lectura (ya sea que la función de contrato sea o view
, pure
o lo invoca con el .call()
método JavaScript) para descubrir qué hay de nuevo en el estado del contrato. Los valores de retorno de la función de cambio de estado están fuera de alcance.
Espero eso ayude.
Aniketh Saha
.call()
método pero venía indefinido, luego descubrí que estaba usando el antiguo web3, lo actualicé y ahora está.call()
funcionando.Rob Hitchens
Aniketh Saha