<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def block_header_verify( cls, headers_path, block_id, block_hash, block_header ):
 """ Given the block's numeric ID, its hash, and the bitcoind-returned block_data, use the SPV header chain to verify the block's integrity. block_header must be a dict with the following structure: * version: protocol version (int) * prevhash: previous block hash (hex str) * merkleroot: block Merkle root (hex str) * timestamp: UNIX time stamp (int) * bits: difficulty bits (hex str) * nonce: PoW nonce (int) * hash: block hash (hex str) (i.e. the format that the reference bitcoind returns via JSON RPC) Return True on success Return False on error """

        prev_header = cls.read_header( headers_path, block_id - 1 )
        prev_hash = prev_header['hash']
        return bits.block_header_verify( block_header, prev_hash, block_hash )