show number of tx signatures in gui
[electrum-nvc.git] / lib / transaction.py
index 2c31c39..5cd2a5e 100644 (file)
@@ -540,8 +540,12 @@ class Transaction:
                     sig_list.append(NO_SIGNATURE)
                 sig_list = ''.join( map( lambda x: push_script(x), sig_list))
 
-                # extended pubkeys (with bip32 derivation)
-                x_pubkeys = txin['x_pubkeys']
+                if len(signatures) < n_sig:
+                    # extended pubkeys (with bip32 derivation)
+                    x_pubkeys = txin['x_pubkeys']
+                else:
+                    # if we have enough signatures, we use the actual pubkeys
+                    x_pubkeys = txin['pubkeys']
 
                 if not p2sh:
                     script = sig_list
@@ -595,34 +599,29 @@ class Transaction:
         self.raw = self.serialize( self.inputs, self.outputs )
 
 
-    def is_complete(self):
-        for i, txin in enumerate(self.inputs):
-            #redeem_script = txin.get('redeemScript')
-            #num, redeem_pubkeys = parse_redeemScript(redeem_script) if redeem_script else (1, [txin.get('redeemPubkey')])
-            pubkeys = txin['pubkeys']
-            signatures = txin.get("signatures",{})
-            if len(signatures) == txin['num_sig']:
-                continue
-            else:
-                return False
-        return True
+    def signature_count(self):
+        r = 0
+        s = 0
+        for txin in self.inputs:
+            signatures = txin.get("signatures",[])
+            s += len(signatures)
+            r += txin['num_sig']
+        return s, r
 
 
+    def is_complete(self):
+        s, r = self.signature_count()
+        return r == s
+
 
     def sign(self, keypairs):
         print_error("tx.sign(), keypairs:", keypairs)
 
         for i, txin in enumerate(self.inputs):
 
-            # if the input is multisig, parse redeem script
-            #redeem_script = txin.get('redeemScript')
-            #num, redeem_pubkeys = parse_redeemScript(redeem_script) if redeem_script else (1, [txin.get('redeemPubkey')])
             redeem_pubkeys = txin['pubkeys']
             num = len(redeem_pubkeys)
 
-            # add pubkeys
-            ### txin["pubkeys"] = redeem_pubkeys
-
             # get list of already existing signatures
             signatures = txin.get("signatures",{})
             # continue if this txin is complete