electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit be7cb011a3e17c83e110f827026fd6a9b6859a9e
parent be8a87c322cfdb82cd0f84816726cd78881536d4
Author: Neil Booth <kyuupichan@gmail.com>
Date:   Mon, 31 Aug 2015 18:12:02 +0900

Simply verifier now network is in-process

Diffstat:
Mlib/verifier.py | 18++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/lib/verifier.py b/lib/verifier.py @@ -40,31 +40,25 @@ class SPV(ThreadJob): if tx_hash not in self.merkle_roots and tx_height <= lh: request = ('blockchain.transaction.get_merkle', [tx_hash, tx_height]) - self.network.send([request], self.merkle_response) + self.network.send([request], self.verify_merkle) self.print_error('requested merkle', tx_hash) self.merkle_roots[tx_hash] = None - def merkle_response(self, r): + def verify_merkle(self, r): if r.get('error'): self.print_error('received an error:', r) return params = r['params'] - result = r['result'] + merkle = r['result'] - # Get the header asynchronously - as a thread job we cannot block + # Verify the hash of the server-provided merkle branch to a + # transaction matches the merkle root of its block tx_hash = params[0] - request = ('network.get_header',[result.get('block_height')]) - self.network.send([request], partial(self.verify, tx_hash, result)) - - def verify(self, tx_hash, merkle, header): - '''Verify the hash of the server-provided merkle branch to a - transaction matches the merkle root of its block - ''' tx_height = merkle.get('block_height') pos = merkle.get('pos') merkle_root = self.hash_merkle_root(merkle['merkle'], tx_hash, pos) - header = header.get('result') + header = self.network.get_header(tx_height) if not header or header.get('merkle_root') != merkle_root: # FIXME: we should make a fresh connection to a server to # recover from this, as this TX will now never verify