code: def get_ancestor_hash(self, block_number: int) -> Hash32:
          
          ancestor_depth = self.block_number - block_number - 1
          is_ancestor_depth_out_of_range = (
              ancestor_depth >= MAX_PREV_HEADER_DEPTH or
              ancestor_depth < 0 or
              block_number < 0
          )
          if is_ancestor_depth_out_of_range:
              return Hash32(b'')
  
          try:
              return nth(ancestor_depth, self.execution_context.prev_hashes)
          except StopIteration:
              # Ancestor with specified depth not present
              return Hash32(b'')
docs: Return the hash for the ancestor block with number ``block_number``.
          Return the empty bytestring ``b''`` if the block number is outside of the
          range of available block numbers (typically the last 255 blocks).