advanceToBlock.js 605 B

12345678910111213141516171819202122
  1. export function advanceBlock() {
  2. return new Promise((resolve, reject) => {
  3. web3.currentProvider.sendAsync({
  4. jsonrpc: '2.0',
  5. method: 'evm_mine',
  6. id: Date.now(),
  7. }, (err, res) => {
  8. return err ? reject(err) : resolve(res)
  9. })
  10. })
  11. }
  12. // Advances the block number so that the last mined block is `number`.
  13. export default async function advanceToBlock(number) {
  14. if (web3.eth.blockNumber > number) {
  15. throw Error(`block number ${number} is in the past (current is ${web3.eth.blockNumber})`)
  16. }
  17. while (web3.eth.blockNumber < number) {
  18. await advanceBlock()
  19. }
  20. }