Testrpc
evm_increaseTime
不增加時間戳
我怎樣才能解決這個問題?
看:
$ truffle console truffle(development)> web3.eth.getBlock("latest").timestamp > 1506694386 truffle(development)> web3.currentProvider.send({jsonrpc: "2.0", method: "evm_increaseTime", params: [500000], id: 123}) { id: 123, jsonrpc: '2.0', result: 500000 } truffle(development)> web3.currentProvider.send({jsonrpc: "2.0", method: "evm_increaseTime", params: [500000], id: 123}) { id: 123, jsonrpc: '2.0', result: 1000000 }
使用
evm_increaseTime
時,結果返回一個附加到 0 的值,而不是添加到塊時間上。預期
result
值應該是 1506694386 + 500000,但它返回的是 0 + 500000。你的環境
- 使用版本:v4.1.3
- 作業系統和版本:Mac OSX
編輯:關於強制挖礦的建議:
如果我在 perform 之前(甚至之後)探勘一個塊
evm_increaseTime
,它沒有任何區別:$ truffle console truffle(development)> web3.eth.getBlock("latest").timestamp 1506739091 truffle(development)> web3.currentProvider.send({jsonrpc: "2.0", method: "evm_mine", params: [], id: 0}) { id: 0, jsonrpc: '2.0', result: [] } truffle(development)> web3.eth.getBlock("latest").timestamp 1506739124 truffle(development)> web3.eth.getBlock("latest").timestamp 1506739124 truffle(development)> web3.currentProvider.send({jsonrpc: "2.0", method: "evm_increaseTime", params: [500000], id: 123}) { id: 123, jsonrpc: '2.0', result: 500000 } truffle(development)> web3.currentProvider.send({jsonrpc: "2.0", method: "evm_mine", params: [], id: 0}) { id: 0, jsonrpc: '2.0', result: [] } truffle(development)> web3.currentProvider.send({jsonrpc: "2.0", method: "evm_increaseTime", params: [500000], id: 123}) { id: 123, jsonrpc: '2.0', result: 1000000 }
查看 testrpc 文件 https://github.com/ethereumjs/testrpc:
evm_increaseTime :及時向前跳轉。採用一個參數,即增加的時間量(以秒為單位)。返回總時間調整,以秒為單位。
因此,您進行的第一次呼叫返回 500000 並且第二次呼叫返回總時間調整 500000 + 500000 = 1000000 是正常的。
為了使這些調整有效,您需要在執行 evm_increaseTime 後強制探勘一個塊:
web3.currentProvider.send({jsonrpc: "2.0", method: "evm_mine", params: [], id: 0})
之後,您可以使用以下命令檢查目前時間戳:
web3.eth.getBlock(web3.eth.blockNumber).timestamp