合约如何模拟时间的推移?

我有一个合约,质押的资金需要在一段时间之后解锁,如何进行模拟测试。

请先 登录 后评论

最佳答案 2020-01-17 22:39

两个方式:

  1. 一个是在测试时,把合约的时间等比例缩短,比如1天缩短为一秒。
  2. 把合约部署到ganane, ganane 提供了让时间推进的方法 evm_increaseTime

使用方法: 在部署合约后,用truffle console 进入控制台,如果要让时间往前推移一天(86400秒)使用以下命令:

// 调整时间 86400 = 1 day 
> web3.currentProvider.send({ jsonrpc: '2.0', method: 'evm_increaseTime', params: [86400], id: new Date().getTime() }, (err, result) => {})
// 出块 
> web3.currentProvider.send({ jsonrpc: '2.0', method: 'evm_mine', id: new Date().getTime() }, (err, result) => {})

// 调用合约
> let mc = await MyContract.deployed();
> mc.MyMethod()

参考这篇文章

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,3770 浏览
  • 会飞的猪 提出于 2020-01-09 15:25