diff --git a/package-lock.json b/package-lock.json index cb6a7d0..40c384f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3620,6 +3620,15 @@ } } }, + "ethereum-block-by-date": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ethereum-block-by-date/-/ethereum-block-by-date-1.4.0.tgz", + "integrity": "sha512-3D+6esxU9bQDyFev9/9C6+Wqpb+HdSyeKnAhktIZXOQjgPdGRc4zwr/FdrgMfrJlB9Ee4cG9psu7eCgYQ3szaA==", + "dev": true, + "requires": { + "moment": "^2.29.1" + } + }, "ethereum-common": { "version": "0.0.18", "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", @@ -6040,6 +6049,12 @@ "integrity": "sha512-Yp4o3/ZA15wsXqJTT+R+9w2AYIkD1i80Lds47wDbuUhOvQvm+O2EfjFZSz0pMgZZSPHRhGxgcd2+GL4+jZMtdw==", "dev": true }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9470,7 +9485,7 @@ "dev": true }, "websocket": { - "version": "github:web3-js/WebSocket-Node#905deb4812572b344f5801f8c9ce8bb02799d82e", + "version": "github:web3-js/WebSocket-Node#ef5ea2f41daf4a2113b80c9223df884b4d56c400", "from": "github:web3-js/WebSocket-Node#polyfill/globalThis", "dev": true, "requires": { @@ -9916,4 +9931,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 07e8b89..b89c360 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^4.2.1", "eth-provider": "^0.2.5", + "ethereum-block-by-date": "^1.4.0", "homedir": "^0.6.0", "promptly": "^3.0.3", "solc": "^0.6.8", diff --git a/scripts/find-block-for-date.js b/scripts/find-block-for-date.js new file mode 100644 index 0000000..690faa9 --- /dev/null +++ b/scripts/find-block-for-date.js @@ -0,0 +1,19 @@ +const promptly = require('promptly'); +const EthDater = require('ethereum-block-by-date'); +const initKredits = require('./helpers/init_kredits.js'); + +module.exports = async function(callback) { + let kredits; + try { kredits = await initKredits(web3); } catch(e) { callback(e); return; } + + const dater = new EthDater(kredits.provider); + const dateStr = await promptly.prompt('Specify a date and time (e.g. 2021-05-07T14:00:40Z): '); + const blockData = await dater.getDate(dateStr, true); + + console.log(` +The closest block is #${blockData.block}: +https://rinkeby.etherscan.io/block/${blockData.block} +`); + + callback(); +}