implement Script.buildPublicKeyHashOut()

This commit is contained in:
Manuel Araoz 2014-12-04 11:01:23 -03:00
parent 163925c754
commit b87e687fd9
2 changed files with 15 additions and 5 deletions

View File

@ -3,6 +3,8 @@
var BufferReader = require('./encoding/bufferreader');
var BufferWriter = require('./encoding/bufferwriter');
var Opcode = require('./opcode');
var Address = require('./address');
var PublicKey = require('./publickey');
var Script = function Script(from) {
if (!(this instanceof Script)) {
@ -445,8 +447,16 @@ Script.buildMultisigOut = function(pubkeys, m) {
* address or public key
*/
Script.buildPublicKeyHashOut = function(to) {
console.log(to);
return new Script();
if (to instanceof PublicKey) {
to = to.toAddress();
}
var s = new Script();
s.add(Opcode('OP_DUP'))
.add(Opcode('OP_HASH160'))
.add(to.hashBuffer)
.add(Opcode('OP_EQUALVERIFY'))
.add(Opcode('OP_CHECKSIG'));
return s;
};
/**

View File

@ -404,21 +404,21 @@ describe('Script', function() {
var address = Address.fromString('1NaTVwXDDUJaXDQajoa9MqHhz4uTxtgK14');
var s = Script.buildPublicKeyHashOut(address);
should.exist(s);
s.toString().should.equal('OP_DUP OP_HASH160 ecae7d092947b7ee4998e254aa48900d26d2ce1d OP_EQUALVERIFY OP_CHECKSIG');
s.toString().should.equal('OP_DUP OP_HASH160 20 0xecae7d092947b7ee4998e254aa48900d26d2ce1d OP_EQUALVERIFY OP_CHECKSIG');
s.isPublicKeyHashOut().should.equal(true);
});
it('should create script from testnet address', function() {
var address = Address.fromString('mxRN6AQJaDi5R6KmvMaEmZGe3n5ScV9u33');
var s = Script.buildPublicKeyHashOut(address);
should.exist(s);
s.toString().should.equal('OP_DUP OP_HASH160 b96b816f378babb1fe585b7be7a2cd16eb99b3e4 OP_EQUALVERIFY OP_CHECKSIG');
s.toString().should.equal('OP_DUP OP_HASH160 20 0xb96b816f378babb1fe585b7be7a2cd16eb99b3e4 OP_EQUALVERIFY OP_CHECKSIG');
s.isPublicKeyHashOut().should.equal(true);
});
it('should create script from public key', function() {
var pubkey = new PublicKey('022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da');
var s = Script.buildPublicKeyHashOut(pubkey);
should.exist(s);
s.toString().should.equal('OP_DUP OP_HASH160 9674af7395592ec5d91573aa8d6557de55f60147 OP_EQUALVERIFY OP_CHECKSIG');
s.toString().should.equal('OP_DUP OP_HASH160 20 0x9674af7395592ec5d91573aa8d6557de55f60147 OP_EQUALVERIFY OP_CHECKSIG');
s.isPublicKeyHashOut().should.equal(true);
});
});