@Test public void testEthBlockNumber() { buildResponse( "{\n" + " \"id\":83,\n" + " \"jsonrpc\": \"2.0\",\n" + " \"result\": \"0x4b7\"\n" + "}" ); EthBlockNumber ethBlockNumber = deserialiseResponse(EthBlockNumber.class); assertThat(ethBlockNumber.getBlockNumber(), equalTo(BigInteger.valueOf(1207L))); }
public BigInteger getBlockNumber() { return Numeric.decodeQuantity(getResult()); } }
@Override public BigInteger execute(final JsonRequestFactories node) { try { final org.web3j.protocol.core.methods.response.EthBlockNumber result = node.eth().ethBlockNumber().send(); assertThat(result).isNotNull(); assertThat(result.hasError()).isFalse(); return result.getBlockNumber(); } catch (final IOException e) { throw new RuntimeException(e); } } }
EthBlockNumber ethBlockNumber = new EthBlockNumber(); ethBlockNumber.setResult(Numeric.encodeQuantity(blockNumber)); return ethBlockNumber; }));
@Test public void testEthBlockNumber() throws Exception { EthBlockNumber ethBlockNumber = web3j.ethBlockNumber().send(); assertTrue(ethBlockNumber.getBlockNumber().signum() == 1); }
public long getCurrentBlockNumber() { try { return web3j.ethBlockNumber().send().getBlockNumber().longValue(); } catch (IOException e) { throw new IOError(e); } }
@Scheduled(fixedRate = 60000) public void reportEthereumFullNode() { try { EthBlockNumber ethBlockNumber = web3j.ethBlockNumber().send(); NetPeerCount netPeerCount = web3j.netPeerCount().send(); LOG.info("Ethereum Node: netPeerCount={} ethBlockNumber={}", netPeerCount.getQuantity(), ethBlockNumber.getBlockNumber()); } catch (Exception e) { LOG.error("Could not fetch the current ethBlockNumber or netPeerCount. Please, check Ethereum full node connection. Cause: {}", e.getMessage()); } } }
/** * {inheritDoc} */ @Override public BigInteger getCurrentBlockNumber() { try { final EthBlockNumber ethBlockNumber = web3j.ethBlockNumber().send(); return ethBlockNumber.getBlockNumber(); } catch (IOException e) { throw new BlockchainException("Error when obtaining the current block number", e); } }
@ScalarFunction("eth_blockNumber") @Description("Returns current block number") @SqlType(StandardTypes.BIGINT) public static long ethBlockNumber() throws IOException { return web3j.ethBlockNumber().send().getBlockNumber().longValue(); }
@InvokeOnHeader(Web3jConstants.ETH_BLOCK_NUMBER) void ethBlockNumber(Message message) throws IOException { Request<?, EthBlockNumber> request = web3j.ethBlockNumber(); setRequestId(message, request); EthBlockNumber response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.getBlockNumber()); } }
@Override public void start() throws Exception { if (started) { LOG.warn("{} is already running.", EthereumMonitor.class.getName()); return; } // Check if node is up-to-date BigInteger blockNumber = web3j.ethBlockNumber().send().getBlockNumber(); Block highestBlock = web3j.ethGetBlockByNumber(() -> new DefaultBlockParameterNumber(blockNumber).getValue(), false).send().getBlock(); Instant latestBlockTime = Instant.ofEpochSecond(highestBlock.getTimestamp().longValue()); LOG.info("Highest ethereum block number from fullnode: {}. Time: {}", blockNumber, latestBlockTime); if (latestBlockTime.isBefore(Instant.now().minus(10, MINUTES))) { LOG.warn("Ethereum fullnode does not seem to be up-to-date"); } else { LOG.info("Ethereum fullnode seems to be up-to-date"); } messageService.send(new BlockNREthereumMessage(highestBlock.getNumber().longValue(), new Date().getTime())); started = true; monitorBlockNumbers(highestBlock.getNumber()); monitorPendingTransactions(); monitorBuildingTransactions(); monitorProcessedTransactions(); }
private long findBlockByTimestamp(long timestamp, long offset) throws IOException { long startBlock = 1L; long currentBlock = web3j.ethBlockNumber().send().getBlockNumber().longValue(); if (currentBlock <= 1) { return currentBlock; } long low = startBlock; long high = currentBlock; long middle = low + (high - low) / 2; while(low <= high) { middle = low + (high - low) / 2; long ts = web3j.ethGetBlockByNumber(DefaultBlockParameter.valueOf(BigInteger.valueOf(middle)), false).send().getBlock().getTimestamp().longValue(); if (ts < timestamp) { low = middle + 1; } else if (ts > timestamp) { high = middle - 1; } else { return middle; } } return middle + offset; } }
private void monitorBuildingTransactions() { Long startBlock = configHolder.getEthereumNodeStartBlock(); web3j.catchUpToLatestAndSubscribeToNewTransactionsObservable(new DefaultBlockParameterNumber(startBlock)) .subscribe(web3jTx -> { try { if (!monitoredAddresses.contains(web3jTx.getTo())) return; EthereumTransactionAdapter tx = new EthereumTransactionAdapter( web3jTx, web3j, investorService); processBuildingTransaction(tx); BigInteger currentBlockNr = web3j.ethBlockNumber().send().getBlockNumber(); if (isConfirmed(tx, currentBlockNr)) { confirmTransaction(tx); } else { unconfirmedTransactions.add(tx); } } catch (Throwable t) { LOG.error("Error while processing transaction.", t); } }, t -> LOG.error("Error during scanning of transactions.", t)); }
log.info("current block number: " + blockNumber.getBlockNumber()); ImmutableList.Builder<ConnectorSplit> splits = ImmutableList.builder(); for (long i = blockRange.getStartBlock(); i <= (blockRange.getEndBlock() == -1 ? blockNumber.getBlockNumber().longValue() : blockRange.getEndBlock()); i++) { EthereumSplit split = new EthereumSplit(i, EthereumTable.valueOf(tableHandle.getTableName().toUpperCase())); splits.add(split); for (long i = 1; i <= blockNumber.getBlockNumber().longValue(); i++) { EthereumSplit split = new EthereumSplit(i, EthereumTable.valueOf(tableHandle.getTableName().toUpperCase())); splits.add(split);
.sendAsync() .thenApply(ethBlockNumber -> builder.withDetail("blockNumber", ethBlockNumber.getBlockNumber())));
BigInteger blockNumber = ethBlockNumber.getBlockNumber(); System.out.println(blockNumber);