class NodeBlockProcessor implements BlockProcessor {

    @Override
    public void processGetBlock(@Nonnull final MessageChannel sender, @Nonnull final byte[] hash) {
        logger.trace("Processing get block {} from {}", Hex.toHexString(hash).substring(0, 10), sender.getPeerNodeID().toString());
        final Block block = blockSyncService.getBlockFromStoreOrBlockchain(hash);

        if (block == null) {
            return;
        }

        nodeInformation.addBlockToNode(new Keccak256(hash), sender.getPeerNodeID());
        sender.sendMessage(new BlockMessage(block));
    }

    public  NodeBlockProcessor(
            @Nonnull final BlockStore store,
            @Nonnull final Blockchain blockchain,
            @Nonnull final BlockNodeInformation nodeInformation,
            @Nonnull final BlockSyncService blockSyncService,
            @Nonnull final SyncConfiguration syncConfiguration);

}