要获取每日的开始区块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());

请注意,这里的时间戳是根据本地计算机的时间来计算的,因此如果您的本地计算机的时间与以太坊网络的时间不一致,则可能会出现错误

web3j 获取每日的开始区块id和结束区块id

原文地址: http://www.cveoy.top/t/topic/fHL6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录