diff --git a/lib/script.js b/lib/script.js index 6b827b1..ccc80f5 100644 --- a/lib/script.js +++ b/lib/script.js @@ -191,7 +191,9 @@ Script.prototype.isPublicKeyHashOut = function() { Script.prototype.isPublicKeyHashIn = function() { return !!(this.chunks.length === 2 && this.chunks[0].buf && - this.chunks[1].buf); + this.chunks[0].buf.length === 0x47 && + this.chunks[1].buf && + this.chunks[1].buf.length === 0x21); }; /** @@ -225,6 +227,9 @@ Script.prototype.isScriptHashOut = function() { * Note that these are frequently indistinguishable from pubkeyhashin */ Script.prototype.isScriptHashIn = function() { + if (this.chunks.length === 0) { + return false; + } var chunk = this.chunks[this.chunks.length - 1]; if (!chunk) { return false; @@ -233,8 +238,11 @@ Script.prototype.isScriptHashIn = function() { if (!scriptBuf) { return false; } + console.log(this.toString()); var redeemScript = new Script(scriptBuf); var type = redeemScript.classify(); + console.log(redeemScript.toString()); + console.log(redeemScript.classify()); return type !== Script.types.UNKNOWN; }; @@ -294,11 +302,11 @@ Script.identifiers.PUBKEY_OUT = Script.prototype.isPublicKeyOut; Script.identifiers.PUBKEY_IN = Script.prototype.isPublicKeyIn; Script.identifiers.PUBKEYHASH_OUT = Script.prototype.isPublicKeyHashOut; Script.identifiers.PUBKEYHASH_IN = Script.prototype.isPublicKeyHashIn; -Script.identifiers.SCRIPTHASH_OUT = Script.prototype.isScriptHashOut; -Script.identifiers.SCRIPTHASH_IN = Script.prototype.isScriptHashIn; Script.identifiers.MULTISIG_OUT = Script.prototype.isMultisigOut; Script.identifiers.MULTISIG_IN = Script.prototype.isMultisigIn; Script.identifiers.OP_RETURN = Script.prototype.isOpReturn; +Script.identifiers.SCRIPTHASH_OUT = Script.prototype.isScriptHashOut; +Script.identifiers.SCRIPTHASH_IN = Script.prototype.isScriptHashIn; /** * @returns {object} The Script type if it is a known form,