Implementó un contrato usando Remix IDE para Rinkeby testnet.
La dirección y el código del contrato de Etherscan están aquí .
contrato ContadorSimple { contador int; constructor() público { contador = 0; } función getCounter() vista pública devuelve (int){ contador de retorno; } incremento de la función () público { contador += 1; } función decremento() público { contador -= 1; } }
Código de cliente JavaScript:
var contrato; $(documento).listo(función(){ contratoInit(); obtenerValorContador(); }) función initContract(){ web3 = new Web3(web3.currentProvider); var dirección = "0xc6482382047fb50e8e7b4658425c9756b28f995c"; var abi = [ ... ]; console.log('Crear contrato...'); contrato = new web3.eth.Contract(abi, dirección); consola.log(contrato) } // contrato de inicio () función obtenerValorContador(){ console.log('obtenerContador()...'); contract.methods.getCounter().call().then((resultado) => { consola.log(resultado); }).catch(función(error){ consola.log('err...\n'+err); }); }
Error:
Crear contrato...
(índice):86 o {_requestManager: e, giveProvider: MetamaskInpageProvider, proveedores: {…}, _provider: MetamaskInpageProvider, …}
(índice):94 obtenerContador()...
(índice): 99 err...
Error: los valores devueltos no son válidos, ¿se quedó sin gasolina?
NOTA:
Esto funciona bien en Remix IDE (cromo). Puedo incrementar/decrementar/getCounter... con la versión del compilador: 0.4.25+commit.59dbf8f1.Emscripten.clang.
¿Por qué falla al acceder usando ' dist/web3.min.js ' de Web3.js (Branch 1.0)?
Solucioné el error similar eliminando .json
archivos de la carpeta de compilación/contratos y luego ejecutándolos truffle migrate
en la terminal.
Sin embargo, el error ocurrió en Visual Studio Code, no en Remix IDE. Apareció después de correr truffle migrate --reset
.
Me gustaría agregar a este comentario, después de eliminar .json
archivos de la carpeta de compilación/contratos, el problema persistió hasta que eliminé archivos de la papelera 🗑 😅 Así que asegúrese de que la papelera esté vacía
Recibí ayuda de Veniamin .
Tuve el error "Error: no se pudo decodificar desde ABI: 0x". cuando la llamada recibe una solicitud con una dirección de contrato incorrecta
Cometí un error... ¡Estaba usando 'dirección de cuenta', en lugar de 'dirección de contrato'!
El código funciona, una vez que se utilizó la 'dirección del contrato' correcta.
Tuve el mismo problema y resultó que estaba en Metamask Mainnet en lugar de Rinkeby, donde se implementó mi contrato.
Su código parece ser correcto. Creo que su problema se debe a un error de Web3js. Eche un vistazo al problema informado en Github:
https://github.com/ethereum/web3.js/issues/1916
Le recomiendo que use web3.js 1.0.0-beta.35 en su lugar.
Error: Couldn't decode from ABI: 0x
.Yo también tuve este error. Se solucionó después de que cambié mi versión web3 a 2.0.0-alpha, que antes era 1.0.0-beta.55.
Con suerte, esto lo arreglará para usted.
En mi caso (estoy usando el servicio de blockchain de Azure), modifiqué mi archivo de contrato pero olvidé la compilación y lo implementé nuevamente en mi servicio de blockchain de Azure. En cambio, salto al truffle exec
comando directamente. Entonces, después de volver a hacer esos dos pasos faltantes, todo funciona bien.
Esto me pasó en mi aplicación de reacción.
Implementé un contrato con la red Ropsten, pero metamask estaba usando la cuenta de Rinkeby. Así que asegúrese de que cualquiera que sea la red que implementó, metamask debería estar usando una cuenta de esa red.
Otra vez tuve esto en next.js. esta ruta es una ruta dinámica, lo que significa que obtendrá el contrato por ${contractAddress}:
Router.push(`/campaigns/${recipient}/requests`);
en lugar de {recipient}
dirección, tuve que poner la dirección del contrato para buscar
En mi caso, estaba invocando un método de "vista" de un contrato implementado en un casco local.
y mi código nodejs se ve así: contract.methods().getterName().call()
y obtuve este error.
Pasé horas en esto y sin suerte. Por fin cambié a Rinkeby Test Network, implementé el contrato y llamé al método "ver" con casi el mismo código, todo salió bien.
entonces, la solución es:
Si está utilizando HardHat y se encuentra con este extraño problema, ¡cambie a Rinkeby!
RafiAlhamd
.json
no arreglaría eso. Es posible que desee agregar 'problema exacto' junto con error, para diferenciar 'su escenario' y la solución relacionada, para mayor claridad.RafiAlhamd