add more extractor functions.
This commit is contained in:
parent
4e34d3d0ca
commit
a3fc9159a0
@ -1201,10 +1201,22 @@ script.createNulldata = function createNulldata(flags) {
|
||||
};
|
||||
|
||||
script.getRedeem = function getRedeem(s) {
|
||||
if (!Array.isArray(s[s.length - 1]))
|
||||
var raw, redeem;
|
||||
|
||||
raw = s[s.length - 1];
|
||||
|
||||
if (!Array.isArray(raw))
|
||||
return;
|
||||
|
||||
return script.decode(s[s.length - 1]);
|
||||
if (raw._redeem)
|
||||
return raw._redeem;
|
||||
|
||||
redeem = script.decode(raw);
|
||||
|
||||
utils.hidden(redeem, '_raw', raw);
|
||||
utils.hidden(raw, '_redeem', redeem);
|
||||
|
||||
return redeem;
|
||||
};
|
||||
|
||||
script.getType =
|
||||
@ -1521,6 +1533,71 @@ script.getUnknownData = function getUnknownData(s) {
|
||||
};
|
||||
};
|
||||
|
||||
script.getInputKeys = function getInputKeys(s, prev) {
|
||||
if (script.isScripthashInput(s))
|
||||
return script.getOutputKeys(script.getRedeem(s));
|
||||
|
||||
if (prev)
|
||||
return script.getOutputKeys(prev);
|
||||
|
||||
if (script.isPubkeyhashInput(s))
|
||||
return [s[1]];
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
script.getOutputKeys = function getOutputKeys(s) {
|
||||
if (script.isPubkey(s))
|
||||
return [s[0]];
|
||||
|
||||
if (script.isMultisig(s))
|
||||
return s.slice(1, -2);
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
script.getInputKeyHashes = function getInputKeyHashes(s, prev) {
|
||||
if (script.isScripthashInput(s))
|
||||
return script.getOutputKeyHashes(script.getRedeem(s));
|
||||
|
||||
if (prev)
|
||||
return script.getOuputKeyHashes(prev);
|
||||
|
||||
if (script.isPubkeyhashInput(s))
|
||||
return [bcoin.address.hash160(s[1])];
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
script.getOuputKeyHashes = function getOuputKeyHashes(s) {
|
||||
if (script.isPubkey(s))
|
||||
return [bcoin.address.hash160(s[0])];
|
||||
|
||||
if (script.isPubkeyhash(s))
|
||||
return [s[2]];
|
||||
|
||||
if (script.isMultisig(s)) {
|
||||
return s.slice(1, -2).map(function(key) {
|
||||
return bcoin.address.hash160(key);
|
||||
});
|
||||
}
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
script.getInputScripthash = function getInputScripthash(s, prev) {
|
||||
if (prev)
|
||||
return script.getOutputScripthash(prev);
|
||||
|
||||
if (script.isScripthashInput(s))
|
||||
return bcoin.address.hash160(s[s.length - 1]);
|
||||
};
|
||||
|
||||
script.getOutputScripthash = function getOutputScripthash(s) {
|
||||
if (script.isScripthash(s))
|
||||
return s[1];
|
||||
};
|
||||
|
||||
script.getInputAddress = function getInputAddress(s, prev) {
|
||||
if (prev)
|
||||
return script.getOutputAddress(prev);
|
||||
@ -1556,6 +1633,23 @@ script.getOutputAddress = function getOutputAddress(s) {
|
||||
return bcoin.address.toAddress(s[1], 'scripthash');
|
||||
};
|
||||
|
||||
script.getInputMN = function getInputMN(s, prev) {
|
||||
if (script.isScripthashInput(s))
|
||||
return script.getOutputMN(script.getRedeem(s));
|
||||
|
||||
if (prev)
|
||||
return script.getOuputMN(prev);
|
||||
|
||||
return { m: 1, n: 1 };
|
||||
};
|
||||
|
||||
script.getOuputMN = function getOuputMN(s) {
|
||||
if (script.isMultisig(s))
|
||||
return { m: s[0], n: s[s.length - 2] };
|
||||
|
||||
return { m: 1, n: 1 };
|
||||
};
|
||||
|
||||
script.isPubkey = function isPubkey(s, key) {
|
||||
var res;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user