Web3js

如何獲取最接近給定時間戳的塊號?

  • November 15, 2019

web3 中是否有任何方法(學)允許在給定日期獲取塊號?

特別是,我有兩個日期作為輸入,我想有效地獲取這兩個日期之間的所有事件。我知道我可以通過擁有塊號來做到這一點:

contract.Event({}, { fromBlock: 100000, toBlock: 121212 })

但是s可以這樣做Date嗎?謝謝!

Ethfinex 剛剛發布了一個可以做到這一點的函式。

它是“像素完美”,但到目前為止它工作得非常好,你給它一個時間戳,它會向後移動區塊鏈,直到找到一個非常接近的塊。

在我的測試中,它總是能找到最近的塊,你可能需要稍微調整一下。

https://github.com/ethfinex/efx-trustless-vol/blob/master/src/lib/getBlockByTime.js

這是一些結果

tgt timestamp   -> 1545523200
tgt date        -> 2018-12-23T00:00:00Z

block timestamp -> 1545523212
block date      -> 2018-12-23T00:00:12Z

requests made   -> 3

tgt timestamp   -> 1545609600
tgt date        -> 2018-12-24T00:00:00Z

block timestamp -> 1545609592
block date      -> 2018-12-23T23:59:52Z

requests made   -> 4

引用自:https://ethereum.stackexchange.com/questions/49486