add pubkey in pubkey out script types

This commit is contained in:
Manuel Araoz 2014-12-01 11:49:44 -03:00
parent 3e2bcaa297
commit 87c40193b9
2 changed files with 11 additions and 9 deletions

View File

@ -124,7 +124,7 @@ Script.fromString = function(str) {
});
i = i + 2;
} else {
throw new Error('Invalid script: '+JSON.stringify(str));
throw new Error('Invalid script: ' + JSON.stringify(str));
}
} else if (opcodenum === Opcode.map.OP_PUSHDATA1 ||
opcodenum === Opcode.map.OP_PUSHDATA2 ||
@ -200,14 +200,19 @@ Script.prototype.isPublicKeyHashIn = function() {
* @returns true if this is a public key output script
*/
Script.prototype.isPublicKeyOut = function() {
return false;
return this.chunks.length === 2 &&
Buffer.isBuffer(this.chunks[0].buf) &&
this.chunks[0].buf.length === 0x41 &&
this.chunks[1] === Opcode('OP_CHECKSIG').toNumber();
};
/**
* @returns true if this is a pay to public key input script
*/
Script.prototype.isPublicKeyIn = function() {
return false;
return this.chunks.length === 1 &&
Buffer.isBuffer(this.chunks[0].buf) &&
this.chunks[0].buf.length === 0x47;
};
@ -238,11 +243,8 @@ 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;
};

View File

@ -285,7 +285,7 @@ describe('Script', function() {
});
});
describe.only('#classify', function() {
describe('#classify', function() {
it('should classify public key hash out', function() {
Script('OP_DUP OP_HASH160 20 0000000000000000000000000000000000000000 OP_EQUALVERIFY OP_CHECKSIG').classify().should.equal(Script.types.PUBKEYHASH_OUT);
});
@ -309,10 +309,10 @@ describe('Script', function() {
Script('OP_RETURN 1 0x01').classify().should.equal(Script.types.OP_RETURN);
});
it('should classify public key out', function() {
Script('').classify().should.equal(Script.types.PUBKEY_OUT);
Script('41 0x0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 OP_CHECKSIG').classify().should.equal(Script.types.PUBKEY_OUT);
});
it('should classify public key in', function() {
Script('').classify().should.equal(Script.types.PUBKEY_IN);
Script('47 0x3044022007415aa37ce7eaa6146001ac8bdefca0ddcba0e37c5dc08c4ac99392124ebac802207d382307fd53f65778b07b9c63b6e196edeadf0be719130c5db21ff1e700d67501').classify().should.equal(Script.types.PUBKEY_IN);
});
});