Пример #1
0
    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']
        }
Пример #2
0
    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']
        }