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) {
|
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;
|
||||||
|
|
||||||
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 =
|
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) {
|
script.getInputAddress = function getInputAddress(s, prev) {
|
||||||
if (prev)
|
if (prev)
|
||||||
return script.getOutputAddress(prev);
|
return script.getOutputAddress(prev);
|
||||||
@ -1556,6 +1633,23 @@ script.getOutputAddress = function getOutputAddress(s) {
|
|||||||
return bcoin.address.toAddress(s[1], 'scripthash');
|
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) {
|
script.isPubkey = function isPubkey(s, key) {
|
||||||
var res;
|
var res;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user