show raw_output_script for unspent outputs.
[electrum-server.git] / modules / python_bitcoin / composed.py
index 5f17d70..c8b0f4a 100644 (file)
@@ -31,6 +31,7 @@ class StatementLine:
         self.output_loaded = None
         self.input_point = None
         self.input_loaded = None
+        self.raw_output_script = None
 
     def is_loaded(self):
         with self.lock:
@@ -73,7 +74,8 @@ class PaymentHistory:
             else:
                 statement_line.input_point = inpoint
         self.finish_if_done()
-        self.load_tx_info(inpoint, statement_line, True)
+        if not ec:
+            self.load_tx_info(inpoint, statement_line, True)
 
     def finish_if_done(self):
         with self.lock:
@@ -81,8 +83,12 @@ class PaymentHistory:
                 return
         result = []
         for line in self.statement:
-            line.input_loaded["value"] = -line.output_loaded["value"]
-            result.append(line.input_loaded)
+            if line.input_point:
+                line.input_loaded["value"] = -line.output_loaded["value"]
+                result.append(line.input_loaded)
+            else:
+                line.output_loaded["raw_output_script"] = \
+                    line.raw_output_script
             result.append(line.output_loaded)
         self.handle_finish(result)
         self.stop()
@@ -132,7 +138,11 @@ class PaymentHistory:
         if info["is_in"] == 1:
             info["inputs"][info["pos"]] = self.address
         else:
-            info["value"] = tx.outputs[info["pos"]].value
+            our_output = tx.outputs[info["pos"]]
+            info["value"] = our_output.value
+            with statement_line.lock:
+                statement_line.raw_output_script = \
+                    str(bitcoin.save_script(our_output.output_script))
         if not [empty_in for empty_in in info["inputs"] if empty_in is None]:
             # We have the sole input
             assert(info["is_in"] == 1)
@@ -170,11 +180,14 @@ def payment_history(chain, address, handle_finish):
 if __name__ == "__main__":
     def finish(result):
         print result
+    def last(ec, depth):
+        print "D:", depth
 
     service = bitcoin.async_service(1)
     prefix = "/home/genjix/libbitcoin/database"
     chain = bitcoin.bdb_blockchain(service, prefix)
-    address = "1LzBzVqEeuQyjD2mRWHes3dgWrT9titxvq"
+    chain.fetch_last_depth(last)
+    address = "1Pbn3DLXfjqF1fFV9YPdvpvyzejZwkHhZE"
     print "Looking up", address
     payment_history(chain, address, finish)
     raw_input()