synchronous_get batch method for interface
[electrum-nvc.git] / scripts / validate_tx
index 8fb2778..153b4c9 100755 (executable)
@@ -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')