Error Ganache: Quedarse sin gasolina - Funciona en Remix/No desde dApp

Estoy trabajando en una aplicación que almacena y recupera datos personales en/desde la cadena de bloques ethereum. Solo estoy trabajando en esto para mejorar mi experiencia en Solidity y SC y sentirme cómodo con el medio ambiente.

Situación: estoy usando remix para codificar mis contratos de Solidity. Ejecuto un ganache-cli en localhost que funciona como la cadena de bloques eth privada. Usando node.js/express, construí una aplicación que está alojada en localhost en una dirección diferente. Hay una función particular que crea un perfil, tomando en 6 parámetros (de los cuales 5 cadenas). La ejecución de esta función desde dentro de Remix funciona bien, la ejecución de esta función desde la dApp envía un "error de falta de gas". Si configuro una función que solo toma 3/6 parámetros, funciona como debería; si agrego uno más, aparece el error "gaso agotado".

Intenté configurar manualmente el límite de gas del ganache-cli en algo alto (24 millones) e hice lo mismo al implementarlo con Remix. Aún así, no puedo hacer que funcione.

¿Alguien tiene alguna idea de cuál podría ser el problema aquí? Gracias de antemano.

Respuestas (1)

¿Prepara gas para la transacción?

Al iniciar ganache-cli, pasa el límite de gas del bloque, que es el máximo que puede usar una transacción.

Pero las bibliotecas como web3.js tienen un valor predeterminado de gas de 90k, para usar más, debe configurar explícitamente el gas en la transacción.

Sí, en realidad lo configuré usando el indicador -l. No parecía cambiar nada. Terminé ejecutándolo en Rinkeby usando MetaMask y no ocurrieron problemas extraños.
Pasar el indicador -l establecerá el límite de gas del bloque, pero puede establecer el límite de gas para la transacción pasando un parámetro adicional: myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', gas: 1000000}). Algunas bibliotecas como web3.js tienen un parámetro predeterminado de 90k que podría no ser suficiente.
¡Limpio! Bueno saber. Verificaré esa funcionalidad. Al final lo implementé en Rinkeby y usé metamask y todo funcionó. Creo que fue un problema heredado con ganache.