web3j 获取每日的开始区块id和结束区块id
要获取每日的开始区块id和结束区块id,您需要通过web3j连接到以太坊节点,然后使用以下代码:
// 连接到以太坊节点
Web3j web3j = Web3j.build(new HttpService("http://localhost:8545"));
// 获取当前以太坊网络的最新区块号
EthBlockNumber blockNumber = web3j.ethBlockNumber().send();
BigInteger latestBlockNumber = blockNumber.getBlockNumber();
// 计算昨天的时间戳
long yesterdayTimestamp = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1);
// 获取昨天的开始区块id
EthBlock.Block yesterdayStartBlock = null;
for (long i = latestBlockNumber.longValue(); i >= 0; i--) {
EthBlock.Block block = web3j.ethGetBlockByNumber(DefaultBlockParameter.valueOf(BigInteger.valueOf(i)), false).send().getBlock();
if (block.getTimestamp().longValue() < yesterdayTimestamp) {
yesterdayStartBlock = block;
break;
}
}
// 获取昨天的结束区块id
EthBlock.Block yesterdayEndBlock = null;
for (long i = yesterdayStartBlock.getNumber().longValue(); i <= latestBlockNumber.longValue(); i++) {
EthBlock.Block block = web3j.ethGetBlockByNumber(DefaultBlockParameter.valueOf(BigInteger.valueOf(i)), false).send().getBlock();
if (block.getTimestamp().longValue() >= yesterdayTimestamp) {
yesterdayEndBlock = block;
break;
}
}
// 打印昨天的开始区块id和结束区块id
System.out.println("Yesterday's start block number: " + yesterdayStartBlock.getNumber());
System.out.println("Yesterday's end block number: " + yesterdayEndBlock.getNumber());
请注意,这里的时间戳是根据本地计算机的时间来计算的,因此如果您的本地计算机的时间与以太坊网络的时间不一致,则可能会出现错误
原文地址: http://www.cveoy.top/t/topic/fHL6 著作权归作者所有。请勿转载和采集!