add address.getType.

This commit is contained in:
Christopher Jeffrey 2016-02-11 01:59:03 -08:00
parent 173e133bf4
commit 158a35881c
3 changed files with 15 additions and 30 deletions

View File

@ -530,7 +530,19 @@ Address.validate = function validate(addr, prefix) {
return p.length !== 0;
};
Address.validateAddress = Address.validate;
Address.getType = function getType(addr) {
var prefix;
if (!addr || typeof addr !== 'string')
return 'unknown';
prefix = Address.prefixes[addr[0]];
if (!Address.validate(addr, prefix))
return 'unknown';
return prefix;
};
Address.prototype.toJSON = function toJSON(encrypt) {
return {

View File

@ -727,7 +727,7 @@ TX.prototype.scriptOutput = function scriptOutput(index, options) {
return;
script = bcoin.script.createMultisig(keys, m, n);
} else if (bcoin.address.validate(options.address, 'scripthash')) {
} else if (bcoin.address.getType(options.address) === 'scripthash') {
// P2SH Transaction
// https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki
// hash160 [20-byte-redeemscript-hash] equal

View File

@ -3,33 +3,6 @@ var bn = require('bn.js');
var bcoin = require('../');
var constants = bcoin.protocol.constants;
function printScript(input) {
var scripts = [];
var script = input.script;
scripts.push(script);
var prev = input.out.tx.outputs[input.out.index].script;
scripts.push(prev);
if (bcoin.script.isScripthash(prev)) {
var redeem = bcoin.script.decode(input.script[input.script.length - 1]);
scripts.push(redeem);
}
scripts = scripts.map(function(script) {
return script.map(function(chunk) {
if (Array.isArray(chunk)) {
if (chunk.length === 0)
return [0];
return [bcoin.utils.toHex(chunk)];
}
if (typeof chunk === 'number')
return [chunk];
return chunk;
});
});
scripts.forEach(function(script) {
console.log(script);
});
}
describe('Wallet', function() {
it('should generate new key and address', function() {
var w = bcoin.wallet();
@ -321,7 +294,7 @@ describe('Wallet', function() {
assert(result);
w1.sign(send);
// printScript(send.inputs[0]);
// console.log(bcoin.script.format(send.inputs[0]));
assert(!send.verify());
w2.sign(send);