add getKey functions to TX.
This commit is contained in:
parent
bb9974b818
commit
1caa0804d9
112
lib/bcoin/tx.js
112
lib/bcoin/tx.js
@ -713,6 +713,118 @@ TX.prototype.inputAddrs = function inputAddrs() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TX.getInputKey = function(input) {
|
||||||
|
if (!input || !input.script) return;
|
||||||
|
|
||||||
|
var script = input.script;
|
||||||
|
|
||||||
|
if (bcoin.script.isPubkeyhashInput(script)) {
|
||||||
|
var scriptSig = utils.toHex(script[0]);
|
||||||
|
var pubKey = script[1];
|
||||||
|
var hash = utils.ripesha(pubKey);
|
||||||
|
var addr = bcoin.wallet.hash2addr(hash);
|
||||||
|
return {
|
||||||
|
sig: scriptSig,
|
||||||
|
pub: pubKey,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!input.out.tx)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var output = input.out.tx.outputs[input.out.index];
|
||||||
|
|
||||||
|
if (bcoin.script.isScripthash(script)) {
|
||||||
|
var pub = script[script.length - 1];
|
||||||
|
var hash = utils.ripesha(pub);
|
||||||
|
var addr = bcoin.wallet.hash2addr(hash, 'script');
|
||||||
|
var redeem = bcoin.script.decode(pub);
|
||||||
|
var keys = TX.getOutputKey({ script: redeem });
|
||||||
|
keys.pub = pub;
|
||||||
|
keys.hash = hash;
|
||||||
|
keys.addr = addr;
|
||||||
|
keys.p2sh = {
|
||||||
|
sig: null,
|
||||||
|
redeem: redeem,
|
||||||
|
pub: pub,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr
|
||||||
|
};
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TX.getOutputKey(output);
|
||||||
|
};
|
||||||
|
|
||||||
|
TX.getOutputKey = function(output) {
|
||||||
|
if (!output || !output.script) return;
|
||||||
|
|
||||||
|
var script = output.script;
|
||||||
|
|
||||||
|
if (bcoin.script.isPubkeyhash(script)) {
|
||||||
|
var hash = script[2];
|
||||||
|
var addr = bcoin.wallet.hash2addr(hash);
|
||||||
|
return {
|
||||||
|
sig: null,
|
||||||
|
pub: null,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bcoin.script.isSimplePubkeyhash(script)) {
|
||||||
|
var pubKey = script[0];
|
||||||
|
var hash = utils.ripesha(pubKey);
|
||||||
|
var addr = bcoin.wallet.hash2addr(hash);
|
||||||
|
return {
|
||||||
|
sig: null,
|
||||||
|
pub: pubKey,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var pubKeys = bcoin.script.isMultisig(script);
|
||||||
|
if (pubKeys) {
|
||||||
|
var keys = pubKeys.map(function(pubKey) {
|
||||||
|
var hash = utils.ripesha(pubKey);
|
||||||
|
var addr = bcoin.wallet.hash2addr(hash);
|
||||||
|
return {
|
||||||
|
pub: pubKey,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
sig: null,
|
||||||
|
pub: keys[0].pub,
|
||||||
|
hash: keys[0].hash,
|
||||||
|
addr: keys[0].addr,
|
||||||
|
multisig: keys
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bcoin.script.isScripthash(script, scriptHash)) {
|
||||||
|
var hash = utils.toHex(s[1]);
|
||||||
|
var addr = bcoin.wallet.hash2addr(hash, 'script');
|
||||||
|
return {
|
||||||
|
sig: null,
|
||||||
|
pub: null,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr,
|
||||||
|
p2sh: {
|
||||||
|
sig: null,
|
||||||
|
redeem: null,
|
||||||
|
pub: null,
|
||||||
|
hash: hash,
|
||||||
|
addr: addr
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
TX.prototype.getFee = function getFee() {
|
TX.prototype.getFee = function getFee() {
|
||||||
return this.funds('in').sub(this.funds('out'));
|
return this.funds('in').sub(this.funds('out'));
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user