From 6c02e1692ac42cbc8432f51d0a56ef4a389edcc3 Mon Sep 17 00:00:00 2001
From: Daniel Cousens <github@dcousens.com>
Date: Fri, 13 Mar 2015 15:42:13 +1100
Subject: [PATCH] txbuilder: re-add verification optimizations

---
 src/transaction_builder.js | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/transaction_builder.js b/src/transaction_builder.js
index 52de58d..f860f95 100644
--- a/src/transaction_builder.js
+++ b/src/transaction_builder.js
@@ -373,14 +373,20 @@ TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hash
 
   // enforce signature order matches public keys
   if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
+    // maintain a local copy of unmatched signatures
+    var unmatched = input.signatures.slice()
+
     input.signatures = input.pubKeys.map(function (pubKey) {
       var match
 
       // check for any matching signatures
-      input.signatures.some(function (signature) {
+      unmatched.some(function (signature, i) {
         if (!pubKey.verify(signatureHash, signature)) return false
         match = signature
 
+        // remove matched signature from unmatched
+        unmatched.splice(i, 1)
+
         return true
       })