advanceToBlock.js 612 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. }