Skip to content

Commit

Permalink
Merge d83fc6e into 6ac5154
Browse files Browse the repository at this point in the history
  • Loading branch information
manan19 committed Jun 19, 2014
2 parents 6ac5154 + d83fc6e commit 8153c57
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 27 deletions.
17 changes: 17 additions & 0 deletions lib/Address.js
Original file line number Diff line number Diff line change
Expand Up @@ -168,5 +168,22 @@ Address.prototype.isScript = function() {
return this.isValid() && this.version() === this.network().P2SHVersion;
};

// returns the scriptPubKey
Address.prototype.getScriptPubKey = function() {
var version = this.version();
var livenet = networks.livenet;
var testnet = networks.testnet;

var script;
if (version === livenet.addressVersion || version === testnet.addressVersion)
script = Script.createPubKeyHashOut(this.payload());
else if (version === livenet.P2SHVersion || version === testnet.P2SHVersion)
script = Script.createP2SH(this.payload());
else
throw new Error('invalid address - unknown version');

return script;
};


module.exports = require('soop')(Address);
27 changes: 1 addition & 26 deletions lib/TransactionBuilder.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,31 +116,6 @@ function TransactionBuilder(opts) {

TransactionBuilder.FEE_PER_1000B_SAT = FEE_PER_1000B_SAT;

/*
* scriptForAddress
*
* Returns a scriptPubKey for the given address type
*/

TransactionBuilder.scriptForAddress = function(addressString) {

var livenet = networks.livenet;
var testnet = networks.testnet;
var address = new Address(addressString);

var version = address.version();
var script;
if (version === livenet.addressVersion || version === testnet.addressVersion)
script = Script.createPubKeyHashOut(address.payload());
else if (version === livenet.P2SHVersion || version === testnet.P2SHVersion)
script = Script.createP2SH(address.payload());
else
throw new Error('invalid output address');

return script;
};


TransactionBuilder._scriptForPubkeys = function(out) {

var l = out.pubkeys.length;
Expand All @@ -156,7 +131,7 @@ TransactionBuilder._scriptForPubkeys = function(out) {
TransactionBuilder._scriptForOut = function(out) {
var ret;
if (out.address)
ret = this.scriptForAddress(out.address);
ret = new Address(out.address).getScriptPubKey();
else if (out.pubkeys || out.nreq || out.nreq > 1)
ret = this._scriptForPubkeys(out);
else
Expand Down
16 changes: 16 additions & 0 deletions test/test.Address.js
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,22 @@ describe('Address', function() {
});
});

describe('#getScriptPubKey', function() {
var data = [
['76a91423b7530a00dd7951e11791c529389421c0b8d83b88ac', 'mimoZNLcP2rrMRgdeX5PSnR7AjCqQveZZ4'],
['a9147049be48e74a660157da3ed64569981592f7fa0587','2N3Ux1YTnt1ixofYvJfaabqZSj2MBF3jsmv'],
['76a914774e603bafb717bd3f070e68bbcccfd907c77d1388ac', 'mrPnbY1yKDBsdgbHbS7kJ8GVm8F66hWHLE'],
['76a914b00127584485a7cff0949ef0f6bc5575f06ce00d88ac', 'mwZabyZXg8JzUtFX1pkGygsMJjnuqiNhgd']
];

it('validate scriptPubKey for a given address', function() {
for(var i in data) {
var d = data[i];
var b = new Address(d[1]).getScriptPubKey().getBuffer();
b.toString('hex').should.equal(d[0]);
}
});
});

describe('#fromScriptPubKey', function() {

Expand Down
3 changes: 2 additions & 1 deletion test/test.TransactionBuilder.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ var bitcore = bitcore || require('../bitcore');
var should = chai.should();

var TransactionBuilder = bitcore.TransactionBuilder;
var Address = bitcore.Address;
var WalletKey = bitcore.WalletKey;
var Script = bitcore.Script;
var util = bitcore.util;
Expand Down Expand Up @@ -818,7 +819,7 @@ describe('TransactionBuilder', function() {
}];
//info.scriptBufHex,

var s = TransactionBuilder.scriptForAddress(info.address)
var s = new Address(info.address).getScriptPubKey()
.getBuffer().toString('hex');

var b = new TransactionBuilder(opts)
Expand Down

0 comments on commit 8153c57

Please sign in to comment.