Cómo configurar el gas de bloque máximo en ganache-cli

Estoy ejecutando ganache-cli, que parece tener un máximo de gas en bloque de alrededor de 6,5 millones. Toda la investigación que he hecho sobre esta pregunta parece proporcionar respuestas de los propios usuarios estableciendo el LÍMITE de gas del usuario (no lo que quiero) o estableciendo una cantidad de gas solo para la creación del contrato, tampoco lo que quiero.

Lo que tengo es un contrato inteligente en el que quiero ejecutar millones de pruebas unitarias automatizadas en un bucle "for" en el lado de Solidity. El contrato inteligente contiene aleatoriedad, por lo que cada vez que se repite se genera un resultado diferente. Necesito asegurarme de que, con millones de pruebas unitarias, todos los resultados aleatorios alcancen su valor esperado.

El problema es que solo puedo hacer unos 20 "bucles" antes de llegar a los 6,5 millones de gas. Intenté hacer un bucle for en el lado de javascript web3 con Metamask, sin embargo, el problema aquí es que aparecerá Metamask pidiéndome que confirme la transacción cada vez que quiera ejecutar estos 20 "bucles". Entonces, 100 pruebas unitarias me requerirían hacer clic 5 veces. ¿Un millón? Un lote horrible.

¿Cómo haría para hacer esto? Pensé que si había una manera de aumentar el máximo de gas del bloque, podría aumentar el tamaño de mi circuito a por lo menos 1000 o más.

O si conoce una solución alternativa, cómo podría automatizar millones de pruebas unitarias, sería genial.

Respuestas (2)

Hay una manera de aumentar el gasLimit. Usarás una bandera cuando inicies ganache-cli para hacerlo. Según el LÉAME , use -lo --gasLimit(el límite de gas del bloque (predeterminado en 0x6691b7)).

Sin embargo, si tiene que hacer esto, no podrá hacerlo en la red principal.

Gran parte del desarrollo de Ethereum son decisiones de diseño sobre lo que sucede dentro y fuera de la cadena. Debido al bloqueo gasLimit, muchas decisiones, como esta, concluyen en algún tipo de mecanismo fuera de cadena.

Para extender la respuesta anterior, puede usar --gasLimit=0x1fffffffffffff.

Esto establecerá el límite de gas del bloque en 2 ^ 53 - 1, que resulta ser el número entero seguro máximo de Javascript .

No puede usar un valor mayor que ese, porque Ganache se implementó en Javascript, y no se molestaron en usar un BigNumberpara este campo en lugar de otros campos (por ejemplo, al configurar --account=address,balance, puede usar un valor mayor que el entero seguro máximo de Javascript para la parte del equilibrio, porque probablemente se convierta en BigNumberlugar de Number).