Estoy usando un contrato de trufa para conectarme entre la interfaz y el contrato inteligente. Actualmente, puedo llamar al método en un contrato inteligente y puedo consumir ether con éxito.
const result = await instance.adoptCreeptomas(
aquaQuantity,
firaQuantity,
aetherQuantity,
gaiaQuantity,
referrer,
{ from: accountAddress, value: ether(sendingEther) }
);
Pero antes de eso, primero quiero probar el método. Así que me muevo a este método:
const data = await instance.adoptCreeptomas.call(
aquaQuantity,
firaQuantity,
aetherQuantity,
gaiaQuantity,
referrer,
{ from: accountAddress, value: ether(sendingEther) }
);
Pero al llamar a esto, encuentro la siguiente excepción:
errores.js:38 No detectado (en promesa) Error: respuesta JSON RPC no válida: {"id":6,"jsonrpc":"2.0","error":{"code":-32603}}
Estoy usando ganache para blockchain local y metamask para proveedor. Por favor, ayúdame a averiguar por qué.
Gracias
Por favor, mira la diferencia entre transaction
y call
.
La sintaxis .call()
en truffle-contract es explícitamente para realizar una llamada , mientras que la sintaxis de la llamada directa con el nombre del método :
Llamamos directamente a la función sendCoin de la abstracción. Esto dará como resultado una transacción por defecto (es decir, escribir datos) en lugar de una llamada.
Puedo decir por la firma de su método que adoptCreeptomas
persiste algún cambio en la red. Así que deshazte de él .call
y mira qué pasa.
hqt
adoptCreeptomas
persiste algunos datos en la cadena de bloques (y también consume éter). Por eso creo que primero deberíamos "probar" el método. Me basé en esto: ethereum.stackexchange.com/questions/765/… (Recomendación de llamar primero, luego enviar transacción)hqt
verbigracia
verbigracia
web3.eth.contract
es compatible.hqt
web3.eth.contract
existe. Pero no sé cómo usar este método. gracias.hqt
verbigracia
verbigracia