improve script type tests. improve input/output data.

This commit is contained in:
Christopher Jeffrey 2015-12-22 14:50:07 -08:00
parent b16a86b2d4
commit 1c8604477f
5 changed files with 43 additions and 5 deletions

View File

@ -52,6 +52,7 @@ function Block(data, subtype) {
tx = bcoin.tx(tx);
tx.block = self.hash('hex');
tx.ts = tx.ts || self.ts;
// self.tx.push(tx.hash('hex'));
return tx;
});
this.invalid = !this._checkBlock();

View File

@ -51,7 +51,17 @@ function Input(options) {
}
Input.prototype.__defineGetter__('data', function() {
return Input.getData(this);
var data;
if (this._data)
return this._data;
data = Input.getData(this);
if (this.script.length && this.out.tx)
utils.hidden(this, '_data', data);
return data;
});
Input.prototype.__defineGetter__('addr', function() {

View File

@ -35,7 +35,17 @@ function Output(options) {
}
Output.prototype.__defineGetter__('data', function() {
return Output.getData(this);
var data;
if (this._data)
return this._data;
data = Output.getData(this);
if (this.script.length && this.value.cmpn(0) !== 0)
utils.hidden(this, '_data', data);
return data;
});
Output.prototype.__defineGetter__('addr', function() {

View File

@ -897,6 +897,8 @@ script.spendable = function spendable(s, lockTime) {
};
script.isPubkey = function isPubkey(s, key) {
s = script.subscript(s);
if (script.lockTime(s))
s = s.slice(3);
@ -914,6 +916,8 @@ script.isPubkey = function isPubkey(s, key) {
};
script.isPubkeyhash = function isPubkeyhash(s, hash) {
s = script.subscript(s);
if (script.lockTime(s))
s = s.slice(3);
@ -938,6 +942,8 @@ script.isPubkeyhash = function isPubkeyhash(s, hash) {
script.isMultisig = function isMultisig(s, pubs) {
var m, n, keys, isArray, total;
s = script.subscript(s);
if (script.lockTime(s))
s = s.slice(3);
@ -990,6 +996,8 @@ script.isMultisig = function isMultisig(s, pubs) {
};
script.isScripthash = function isScripthash(s, hash) {
s = script.subscript(s);
if (script.lockTime(s))
s = s.slice(3);
@ -1011,6 +1019,8 @@ script.isScripthash = function isScripthash(s, hash) {
};
script.isColored = function isColored(s) {
s = script.subscript(s);
if (s.length !== 2)
return false;
@ -1035,6 +1045,8 @@ script.standardInput = function standardInput(s) {
};
script.isPubkeyInput = function isPubkeyInput(s, key, tx, i) {
s = script.subscript(s);
if (s.length !== 1 || !Array.isArray(s[0]))
return false;
@ -1050,6 +1062,8 @@ script.isPubkeyInput = function isPubkeyInput(s, key, tx, i) {
};
script.isPubkeyhashInput = function isPubkeyhashInput(s, key) {
s = script.subscript(s);
if (s.length !== 2 || !Array.isArray(s[0]) || !Array.isArray(s[1]))
return false;
@ -1071,6 +1085,8 @@ script.isPubkeyhashInput = function isPubkeyhashInput(s, key) {
script.isMultisigInput = function isMultisigInput(s, pubs, tx, i) {
var i, res, o;
s = script.subscript(s);
if (s.length < 3)
return false;
@ -1095,6 +1111,8 @@ script.isMultisigInput = function isMultisigInput(s, pubs, tx, i) {
script.isScripthashInput = function isScripthashInput(s, redeem) {
var i, res, r, keys;
s = script.subscript(s);
if (s.length < 4)
return false;

View File

@ -53,7 +53,7 @@ function TX(data, block) {
}
if (!data.ts && block && block.hasTX(this.hash('hex'))) {
// if (!data.block && block) {
// if (block) {
this.ts = block.ts;
this.block = block.hash('hex');
}
@ -369,8 +369,7 @@ TX.prototype.scriptOutput = function scriptOutput(output, options) {
options = options || output;
var script = output.script;
var keys, m, n;
var hash, color;
var keys, m, n, hash, color;
if (Array.isArray(options.keys || options.address)) {
// Raw multisig transaction