solidity智能合约测试工具 hardhat框架测试代码里怎么设置区块高度和当前时间或是已过去多少时间

solidity智能合约测试工具 hardhat框架测试代码里怎么设置区块高度和当前时间或是已过去多少时间

请先 登录 后评论

最佳答案 2021-05-25 14:39

有 rpc 方法可以设置时间, 区块应该不可以设置, 你可以写脚本自动出指定数量的区块,应该可以达到你的需要。

你可以通过以下代码设置时间和出块:

advanceTime = (time) => {
  return new Promise((resolve, reject) => {
    web3.currentProvider.send({
      jsonrpc: '2.0',
      method: 'evm_increaseTime',
      params: [time],
      id: new Date().getTime()
    }, (err, result) => {
      if (err) { return reject(err) }
      return resolve(result)
    })
  })
}

advanceBlock = () => {
  return new Promise((resolve, reject) => {
    web3.currentProvider.send({
      jsonrpc: '2.0',
      method: 'evm_mine',
      id: new Date().getTime()
    }, (err, result) => {
      if (err) { return reject(err) }
      const newBlockHash = web3.eth.getBlock('latest').hash

      return resolve(newBlockHash)
    })
  })
}
请先 登录 后评论

其它 0 个回答