En pocas palabras, no entiendo por qué mi TimedCrowdsale desplegado nunca se abre
Implementación de un contrato TimeCrowdsale en la red de desarrollo de Truffle
En mi secuencia de comandos de migración, implemento el contrato TimeCrowdsale. Después de la implementación, me doy cuenta de que el crowdsale nunca llega al estado abierto. Cada vez que ejecuto el script de depuración obtengo el mismo resultado.
Executing crowdsale_debug.js crowdsale open?: false crowdsale opening time: 1641354700 crowdsale closing time: 1641355000 Latest block timestamp: 1641354615La función isOpen() de TimedCrowdsale.sol es la siguiente
function isOpen() public view returns (bool) { return block.timestamp >= _openingTime && block.timestamp <= _closingTime; }Sé que en las pruebas puedes usar los testhelpers de openzep para adelantar el tiempo. Pero, ¿cómo lo haré fuera de las pruebas?
La marca de tiempo del bloque es inferior a la hora de apertura. Entonces esta parte de la expresión devuelve false
// 1641354615 >= 1641354700 // false block.timestamp >= _openingTime lo que hace que la función isOpen() devuelva false .
Puedes incrementar el tiempo de Ganache (Red de desarrollo de Trufas) usando el evm_increaseTime JSON-RPC, pasándole la cantidad de segundos como único parámetro.
Fuera del script de prueba, puede enviar una solicitud CURL a su red local de Ganache:
curl -X POST \ http://localhost:7545 \ -H 'Content-Type: application/json' \ -d '{ "jsonrpc": "1.0", "id": "curltest", "method": "evm_increaseTime", "params": [ 100000 ] }'