def _parse_header(self, electrum_header: Dict): header_hex = serialize_header(electrum_header) blockhash_from_header = blockheader_to_blockhash(header_hex) if electrum_header['block_height'] in self._checkpoints: if self._checkpoints[electrum_header['block_height']] != blockhash_from_header: raise exceptions.NetworkHeadersInconsistencyException header_data = deserialize_header(header_hex) return { 'block_hash': blockhash_from_header, 'block_height': electrum_header['block_height'], 'header_bytes': binascii.unhexlify(header_hex), 'prev_block_hash': header_data['prev_block_hash'], 'timestamp': header_data['timestamp'] }
def _parse_header(self, electrum_header: Dict): if electrum_header.get('hex'): header_hex = electrum_header['hex'] # protocol 1.4 else: header_hex = serialize_header(electrum_header) electrum_header['height'] = electrum_header['block_height'] # some servers with protocol 1.4 that answers with 1.2 expected answer :-( blockhash_from_header = blockheader_to_blockhash(header_hex) if electrum_header['height'] in self._checkpoints: if self._checkpoints[ electrum_header['height']] != blockhash_from_header: raise exceptions.NetworkHeadersInconsistencyException header_data = deserialize_header(header_hex) header_bytes = binascii.unhexlify(header_hex) verify_pow(header_bytes, binascii.unhexlify(header_data['hash'])) return { 'block_hash': blockhash_from_header, 'block_height': electrum_header['height'], 'header_bytes': header_bytes, 'prev_block_hash': header_data['prev_block_hash'], 'timestamp': header_data['timestamp'] }