mirror of
https://github.com/leporello-js/leporello-js
synced 2026-01-13 13:04:30 -08:00
33 lines
854 B
JavaScript
33 lines
854 B
JavaScript
import { ethers } from "ethers"
|
|
|
|
const URL = "https://eth-mainnet.public.blastapi.io"
|
|
|
|
const provider = await ethers.getDefaultProvider(URL)
|
|
|
|
const latest = await provider.getBlock("latest")
|
|
|
|
/*
|
|
Find ethereum block by timestamp using binary search
|
|
*/
|
|
async function getBlockNumberByTimestamp(
|
|
timestamp,
|
|
low = 0,
|
|
high = latest.number,
|
|
) {
|
|
if (low + 1 == high) {
|
|
return low
|
|
} else {
|
|
const mid = Math.floor((low + high) / 2)
|
|
const midBlock = await provider.getBlock(mid)
|
|
if (midBlock.timestamp > timestamp) {
|
|
return getBlockNumberByTimestamp(timestamp, low, mid)
|
|
} else {
|
|
return getBlockNumberByTimestamp(timestamp, mid, high)
|
|
}
|
|
}
|
|
}
|
|
|
|
const timestamp = new Date("2019-06-01").getTime() / 1000
|
|
const blockNumber = await getBlockNumberByTimestamp(timestamp)
|
|
const block = await provider.getBlock(blockNumber)
|