advanceToBlock.js 647 B

123456789101112131415161718192021222324252627
  1. 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. 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. }
  21. module.exports = {
  22. advanceBlock,
  23. advanceToBlock,
  24. };