diff --git a/lib/bcoin/script.js b/lib/bcoin/script.js index 63e9cda2..85bc0284 100644 --- a/lib/bcoin/script.js +++ b/lib/bcoin/script.js @@ -1017,7 +1017,7 @@ script.isMultisig = function isMultisig(s, pubs) { }); }).length; - return total >= m; + return total === n; }; script.isScripthash = function isScripthash(s, hash) { diff --git a/lib/bcoin/wallet.js b/lib/bcoin/wallet.js index d9b15955..e93e40e3 100644 --- a/lib/bcoin/wallet.js +++ b/lib/bcoin/wallet.js @@ -153,7 +153,7 @@ Wallet.prototype.multisig = function multisig(options) { }, this); // Use p2sh multisig by default - if (!options.type && this.keys.length > 1) + if (!options.type && (this.keys.length > 1 || this.n > 1)) this.type = 'scripthash'; if (this.m < 1 || this.m > this.n) diff --git a/test/wallet-test.js b/test/wallet-test.js index 6d0445bd..5dbcd2f7 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -72,16 +72,23 @@ describe('Wallet', function() { }); it('should multisign/verify TX', function() { - var w = bcoin.wallet(); - var k2 = bcoin.wallet().getPublicKey(); + var w = bcoin.wallet({ + multisig: { + type: 'multisig', + m: 1, + n: 2 + } + }); + var k2 = w.getPublicKey().concat(1); + w.addKey(k2); + assert.equal(w.getOwnAddress(), w.getFullAddress()); // Input transcation var src = bcoin.tx({ outputs: [{ value: 5460 * 2, minSignatures: 1, - keys: [ w.getPublicKey(), w.getPublicKey().concat(1) ] - // keys: [ w.getPublicKey(), k2 ] + keys: [ w.getPublicKey(), k2 ] }, { value: 5460 * 2, address: w.getAddress() + 'x'