Check if a candidate block is ready to be claimed.

        block_header (BlockHeader): the block_header to be checked if it
            should be claimed
        Returns:
            Boolean: True if the candidate block_header should be claimed.

def check_publish_block(self, block_header):
        """Check if a candidate block is ready to be claimed.

        block_header (BlockHeader): the block_header to be checked if it
            should be claimed
        Returns:
            Boolean: True if the candidate block_header should be claimed.
        """
        if any(publisher_key != block_header.signer_public_key
               for publisher_key in self._valid_block_publishers):
            return False

        if self._min_wait_time == 0:
            return True

        if self._min_wait_time < 0:
            return False

        assert self._min_wait_time > 0

        if self._max_wait_time <= 0:
            return self._start_time + self._min_wait_time <= time.time()

        assert self._max_wait_time > 0

        if self._max_wait_time <= self._min_wait_time:
            return False

        assert 0 < self._min_wait_time < self._max_wait_time

        return self._start_time + self._wait_time <= time.time()