I am creating smart contracts with truffle and testrpc. When writing unit tests I wish to change the block time to simulate different times that smart contracts may be called. How does one set evm_increaseTime inside truffle console?


1 Answer 1


You need to send JSON-RPC request to testrpc. Here is a helper function to call it from console:

const increaseTime = addSeconds => {
        jsonrpc: "2.0", 
        method: "evm_increaseTime", 
        params: [addSeconds], id: 0

Now you can use it to adjust time of the next block:

truffle(development)> web3.eth.getBlock(web3.eth.blockNumber).timestamp
truffle(development)> increaseTime(12345)
{ id: 0, jsonrpc: '2.0', result: 1500312345 }
truffle(development)> web3.eth.sendTransaction({from: web3.eth.accounts[0]})
truffle(development)> web3.eth.getBlock(web3.eth.blockNumber).timestamp
  • 2
    This doesn't work anymore. Using truffle 5.0.30 and web3 1.2.0, I'm getting Uncaught TypeError: callback is not a function Aug 7, 2019 at 13:45
  • I'm also seeing this failure. Dec 2, 2019 at 23:35
  • 2
    As Paul and Alex said, this answer should be updated. See this question/answer pair in order to make it work: ethereum.stackexchange.com/questions/67354/…
    – viarnes
    Jan 28, 2020 at 15:00

Not the answer you're looking for? Browse other questions tagged or ask your own question.