synchronous_get batch method for interface
This commit is contained in:
@@ -11,18 +11,7 @@ except:
|
||||
|
||||
i = Interface({'server':'electrum.novit.ro:50001:t'})
|
||||
i.start()
|
||||
i.send([('blockchain.address.get_history',[addr])])
|
||||
h = i.synchronous_get([ ('blockchain.address.get_history',[addr]) ])[0]
|
||||
for item in h:
|
||||
print item['tx_hash'], item['value']
|
||||
|
||||
while True:
|
||||
try:
|
||||
r = i.responses.get(True, 100000000000)
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
method = r.get('method')
|
||||
if method == 'blockchain.address.get_history':
|
||||
confirmed = unconfirmed = 0
|
||||
h = r.get('result')
|
||||
for item in h:
|
||||
print item['tx_hash'], item['value']
|
||||
|
||||
break
|
||||
|
||||
@@ -21,29 +21,6 @@ i = Interface({'server':'ecdsa.org:50002:s'})
|
||||
i.start()
|
||||
|
||||
|
||||
def get_header(i, block_height):
|
||||
i.send([('blockchain.block.get_header',[block_height])])
|
||||
while True:
|
||||
r = i.responses.get(True, 100000000000)
|
||||
method = r.get('method')
|
||||
if method == 'blockchain.block.get_header':
|
||||
break
|
||||
return r.get('result')
|
||||
|
||||
|
||||
|
||||
def get_merkle(i, tx_hash):
|
||||
|
||||
i.send([('blockchain.transaction.get_merkle',[tx_hash])])
|
||||
while True:
|
||||
r = i.responses.get(True, 100000000000)
|
||||
method = r.get('method')
|
||||
if method == 'blockchain.transaction.get_merkle':
|
||||
break
|
||||
|
||||
return r.get('result')
|
||||
|
||||
|
||||
def merkle_root(merkle):
|
||||
|
||||
merkle = map (lambda tx_hash: tx_hash.decode('hex')[::-1], merkle)
|
||||
@@ -70,16 +47,23 @@ def hash_header(res):
|
||||
|
||||
|
||||
def verify_tx(tx_hash):
|
||||
res = get_merkle(i, tx_hash)
|
||||
|
||||
res = i.synchronous_get([ ('blockchain.transaction.get_merkle',[tx_hash]) ])[0]
|
||||
assert tx_hash in res.get('merkle')
|
||||
assert res.get('merkle_root') == merkle_root(res['merkle'])
|
||||
block_height = res.get('block_height')
|
||||
_hash = None
|
||||
print block_height
|
||||
|
||||
headers_requests = []
|
||||
for height in range(block_height-10,block_height+10):
|
||||
header = get_header(i, height)
|
||||
headers_requests.append( ('blockchain.block.get_header',[height]) )
|
||||
res = i.synchronous_get(headers_requests)
|
||||
|
||||
_hash = None
|
||||
for header in res:
|
||||
if _hash: assert _hash == header.get('prev_block_hash')
|
||||
_hash = hash_header(header)
|
||||
#print _hash
|
||||
print _hash
|
||||
if height==block_height:
|
||||
assert header.get('merkle_root') == res.get('merkle_root')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user