From cf9e11e356326b1afa93a7d34e98ca55b6b7a9a6 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 23 Dec 2015 20:09:14 -0800 Subject: [PATCH] add ids to inputs and outputs without addresses. --- lib/bcoin/input.js | 21 ++++++++++++++++----- lib/bcoin/output.js | 13 +++++++++++-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/bcoin/input.js b/lib/bcoin/input.js index 41db717e..df0a384d 100644 --- a/lib/bcoin/input.js +++ b/lib/bcoin/input.js @@ -98,6 +98,17 @@ Input.prototype.__defineGetter__('tx', function() { return this.out.tx; }); +Input.prototype._id = function _id(prefix) { + var data = [].concat( + this.out.hash, + this.out.index, + bcoin.script.encode(this.script), + this.seq + ); + var hash = utils.toHex(utils.dsha256(data)); + return '[' + prefix + ':' + hash.slice(0, 7) + ']'; +}; + Input.getData = function getData(input) { if (!input || !input.script) return; @@ -136,7 +147,7 @@ Input.getData = function getData(input) { if (!input.out) { return utils.merge(schema, { type: 'unknown', - addr: '[unknown]', + addr: input._id('unknown'), none: true }); } @@ -147,7 +158,7 @@ Input.getData = function getData(input) { type: 'coinbase', coinbase: data, height: data.height || -1, - addr: '[coinbase]', + addr: input._id('coinbase'), flags: data.flags, text: data.text.join(''), none: true @@ -179,7 +190,7 @@ Input.getData = function getData(input) { return utils.merge(schema, { type: 'pubkey', sig: sub[0], - addr: '[unknown]', + addr: input._id('unknown'), none: true }); } @@ -225,7 +236,7 @@ Input.getData = function getData(input) { return utils.merge(schema, { type: 'multisig', sig: sub[0], - addr: '[unknown]', + addr: input._id('unknown'), multisig: { m: sig.length, n: null, @@ -240,7 +251,7 @@ Input.getData = function getData(input) { return utils.merge(schema, { type: 'unknown', - addr: '[unknown]', + addr: input._id('unknown'), none: true }); }; diff --git a/lib/bcoin/output.js b/lib/bcoin/output.js index fe9cfbe0..e5487048 100644 --- a/lib/bcoin/output.js +++ b/lib/bcoin/output.js @@ -67,6 +67,15 @@ Output.prototype.__defineGetter__('text', function() { return this.data.text; }); +Output.prototype._id = function _id(prefix) { + var data = [].concat( + this.value.toArray(), + bcoin.script.encode(this.script) + ); + var hash = utils.toHex(utils.dsha256(data)); + return '[' + prefix + ':' + hash.slice(0, 7) + ']'; +}; + Output.getData = function getData(output) { if (!output || !output.script) return; @@ -178,7 +187,7 @@ Output.getData = function getData(output) { ret = bcoin.script.colored(s); return utils.merge(schema, { type: 'colored', - addr: '[colored]', + addr: output._id('colored'), flags: ret, text: utils.array2utf8(ret), value: output.value, @@ -188,7 +197,7 @@ Output.getData = function getData(output) { return utils.merge(schema, { type: 'unknown', - addr: '[unknown]', + addr: output._id('unknown'), none: true }); };