final Hash chainHeadHash = blockchain.getChainHeadHash(); final Block minedBlock = new Block(
private MockPeerConnection setupPeer( final EthProtocolManager ethManager, final PeerSendHandler onSend) { final MockPeerConnection peer = setupPeerWithoutStatusExchange(ethManager, onSend); final StatusMessage statusMessage = StatusMessage.create( EthVersion.V63, 1, blockchain.getChainHead().getTotalDifficulty(), blockchain.getChainHeadHash(), blockchain.getBlockHeader(BlockHeader.GENESIS_BLOCK_NUMBER).get().getHash()); ethManager.processMessage(EthProtocol.ETH63, new DefaultMessage(peer, statusMessage)); return peer; }
@Test public void disconnectOnWrongChainId() { try (final EthProtocolManager ethManager = new EthProtocolManager(blockchain, protocolContext.getWorldStateArchive(), 1, true, 1, 1)) { final MessageData messageData = BlockHeadersMessage.create(Collections.singletonList(blockchain.getBlockHeader(1).get())); final MockPeerConnection peer = setupPeerWithoutStatusExchange(ethManager, (cap, msg, conn) -> {}); // Send status message with wrong chain final StatusMessage statusMessage = StatusMessage.create( EthVersion.V63, 2222, blockchain.getChainHead().getTotalDifficulty(), blockchain.getChainHeadHash(), blockchain.getBlockHeader(BlockHeader.GENESIS_BLOCK_NUMBER).get().getHash()); ethManager.processMessage(EthProtocol.ETH63, new DefaultMessage(peer, statusMessage)); ethManager.processMessage(EthProtocol.ETH63, new DefaultMessage(peer, messageData)); assertThat(peer.isDisconnected()).isTrue(); } }
private void assertBlockIsHead(final Blockchain blockchain, final Block head) { assertEquals(head.getHash(), blockchain.getChainHeadHash()); assertEquals(head.getHeader().getNumber(), blockchain.getChainHeadBlockNumber()); assertEquals(head.getHash(), blockchain.getChainHead().getHash()); }