Pruebas de solidez de la trufa: sin gas y supera el límite de gas del bloque

Estoy tratando de ejecutar una prueba básica con mi contrato, escrita con las pruebas de Solidez de Truffle (pruebas escritas en Solidez).

Cuando corro truffle test, obtengo

Error: VM Exception while processing transaction: out of gas

Nota: Esto es causado por el constructor del contrato new ..., que de hecho está haciendo muchas cosas. Y no puedo romper nada en mi código.

¿Hay alguna forma de hacer que esto funcione con una prueba escrita en Solidity? ¿Hay alguna forma de configurar la cantidad de gas que tiene disponible el contrato de prueba?

--

ACTUALIZAR:

En realidad, descubrí que cambiar el gasvalor de configuración truffle.jstiene un efecto. Sin embargo, estoy golpeando ahora otro obstáculo

Error: Error: Exceeds block gas limit

¿Supongo que no tengo otra opción que optimizar el despliegue (por lo tanto, el constructor) de mi contrato para hacerlo más ligero?

pruebe la solución en este problema de github: github.com/trufflesuite/truffle/issues/…

Respuestas (3)

Me encontré con el mismo problema hoy, pero para mí el problema era que mi archivo de prueba.sol aparentemente era demasiado grande. Así que dividí mis pruebas en dos archivos, y todas las pruebas funcionaron bien nuevamente.

Probablemente tenga sentido de todos modos estructurar los archivos de prueba en varias suites más pequeñas que en un archivo grande por el que tendría que desplazarse.

Agregue gas: 350000 a su archivo truffle.js, ejemplo mío a continuación

module.exports = {
  networks: {
     development: {
       host: "localhost",
       port: 8545,
       network_id: "*", // Match any network id
       gas: 3500000
     }
   },
   mocha: {
    useColors: true
   }
};

La nueva versión de trufa, la versión 4 en este momento ha añadido un control de gas a las pruebas. así que esto es necesario ahora.

Probablemente debería hacerlo más ligero.

Si está utilizando TestRPC o una cadena privada, puede establecer el gaslimit, pero es una propiedad de la red. Reservaría ese método para la solución de problemas, es decir, para confirmar con qué está tratando. Tenga en cuenta que la falta de gasolina a veces ocurre cuando el contrato throwses a propósito, por lo que puede ser engañoso.

Si no encuentra una manera de operar dentro de un presupuesto, probablemente se esté preparando para una decepción cuando intente implementar en la red en vivo.

Espero eso ayude.