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.
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!
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},
sombra
ruso
ismael