El despliegue del contrato de trufas supera el límite de gas del bloque o se queda sin gas

Tuve el mismo problema cuando intentaba implementar un contrato usando la consola de desarrollo de trufas. El contrato no es extremadamente grande, pero inicia otros dos contratos cuando se llama a una determinada función. (ya que no está abierto al público, lo siento, no puedo publicar el contrato aquí)

Encontré el error " out of gas " cuando no especificaba el gas usado en mi archivo 2_deploy_contract.js , pero cuando aumenté gradualmente el gas en algún momento, recibí el error " Exceeds block gas limit ".

Luego traté de especificar el parámetro "gas" en el archivo de configuración truffle.js . El problema es que no importa qué tan alto lo configure (por ejemplo, 10000000000000), todavía me da el mismo error: "Excede el límite de gas del bloque" .

 networks: {
  development: {
   host: "127.0.0.1",
   from: "0x627306090abab3a6e1400e9345bc60c78a8bef57",
   port: 9545,
   network_id: "*", // Match any network id
   gas: 18900000000000000000000000000
}

}

Y la parte más interesante de esto es que funcionó perfectamente bien en Remix pero no en la consola de desarrollo de trufas.

Respuestas (2)

Respuesta (descubrí la respuesta por mí mismo) :

El parámetro de gas en truffle.js es la cantidad máxima que está dispuesto a pagar por las implementaciones. ¡ No es el límite de gas de bloque de la cadena! Por lo tanto, no importa cuán grande sea, si el límite de gas del bloque es más pequeño que el gas que adjunta a una transacción, siempre obtendrá el mismo error "Excede el límite de gas del bloque". Lo que también explica por qué funcionó en Remix y no en mi cadena local.

Ahora la pregunta es ¿cómo cambio el límite de gas de bloque predeterminado para la cadena local de desarrollo de trufas? No veo el archivo genesis.json. El límite de gas del bloque codificado parece estar alrededor de 6700000.

Supongo que las soluciones son las siguientes: 1. cambiar la configuración del núcleo de trufa codificada para permitir un límite de gas de bloque más alto. 2. Desglosar el contrato para hacerlo más ligero. 3. conecta truffle a una red local que tú mismo configures o a la red de prueba en vivo, que puede o no permitir el gas requerido por el contrato. Así que siempre pruebe primero usando los requisitos de gas de la red principal.

¡Cualquier ayuda adicional es muy apreciada!

tanto en ganache (configuración-> cadena) como en ganache-cli - enlace a otro artículo puede establecer el límite de gas.
@sombra. Gracias. Ese enlace va a mi publicación. Lo acabo de resolver en la prueba de ganache de moca sin trufa. Mira la publicación :)
Si tienes más dudas es mejor crear una nueva pregunta.

Lo que más se mezcla es desarrollo y desarrollo. Cuando configura parámetros en truffle.js para el desarrollo , está configurando para la consola de truffle , cuando lo configura para desarrollar , lo está configurando para el desarrollo de truffle

por lo que debe agregar esto a su truffle.js y blocklimit estará bien.

desarrollar: { host: "localhost", puerto: 7546, gas: 50000000, gasLimit: 8000000, network_id: "*", // Coincide con cualquier ID de red},