From 1900e58e88010eef0b4b88ec13175311c50f91a9 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Tue, 29 May 2018 14:30:26 +0800 Subject: [PATCH 1/2] Subscribe to raw headers The old interface is deprecated Port of https://github.com/fyookball/electrum/commit/fe303c97c3d737b3e6464124420609cd52b92254 --- lib/network.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/network.py b/lib/network.py index 29c57b9b1..ffb424099 100644 --- a/lib/network.py +++ b/lib/network.py @@ -711,7 +711,7 @@ class Network(util.DaemonThread): interface.mode = 'default' interface.request = None self.interfaces[server] = interface - self.queue_request('blockchain.headers.subscribe', [], interface) + self.queue_request('blockchain.headers.subscribe', [True], interface) if server == self.default_server: self.switch_to_interface(server) #self.notify('interfaces') @@ -983,10 +983,9 @@ class Network(util.DaemonThread): self.stop_network() self.on_stop() - def on_notify_header(self, interface, header): - height = header.get('block_height') - if not height: - return + def on_notify_header(self, interface, header_dict): + header_hex, height = header_dict['hex'], header_dict['height'] + header = blockchain.deserialize_header(bfh(header_hex), height) if height < self.max_checkpoint(): self.connection_down(interface.server) return From b164cc4bba25693daedbb4519ff90ef9967737ca Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Wed, 30 May 2018 13:53:19 +0800 Subject: [PATCH 2/2] Pass raw=True when subscribing to headers Remove use of deprecated bitcoin address --- scripts/block_headers | 3 ++- scripts/watch_address | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/block_headers b/scripts/block_headers index 82f6b100f..14ae918a9 100755 --- a/scripts/block_headers +++ b/scripts/block_headers @@ -21,7 +21,8 @@ if not network.is_connected(): # 2. send the subscription callback = lambda response: print_msg(json_encode(response.get('result'))) -network.send([('blockchain.headers.subscribe',[])], callback) +network.send([('server.version',["block_headers script", "1.2"])], callback) +network.send([('blockchain.headers.subscribe',[True])], callback) # 3. wait for results while network.is_connected(): diff --git a/scripts/watch_address b/scripts/watch_address index 461e41863..a8446fc81 100755 --- a/scripts/watch_address +++ b/scripts/watch_address @@ -2,6 +2,7 @@ import sys import time +from electrum import bitcoin from electrum import SimpleConfig, Network from electrum.util import print_msg, json_encode @@ -11,6 +12,8 @@ except Exception: print("usage: watch_address ") sys.exit(1) +sh = bitcoin.address_to_scripthash(addr) + # start network c = SimpleConfig() network = Network(c) @@ -26,7 +29,7 @@ if not network.is_connected(): # 2. send the subscription callback = lambda response: print_msg(json_encode(response.get('result'))) -network.send([('blockchain.address.subscribe',[addr])], callback) +network.send([('blockchain.scripthash.subscribe',[sh])], callback) # 3. wait for results while network.is_connected():