more docs. rename some functions.

This commit is contained in:
Christopher Jeffrey 2016-01-29 11:33:00 -08:00
parent 4412bd6900
commit 30ad543c31
6 changed files with 115 additions and 66 deletions

View File

@ -1250,8 +1250,8 @@ Usage:
output script and verify input. `index` is the index of the input being output script and verify input. `index` is the index of the input being
verified. `flags` is an object with boolean values. Keys can be of any of verified. `flags` is an object with boolean values. Keys can be of any of
bitcoind's script flags in lowercase. i.e. `minimaldata`, `cleanstack`, etc. bitcoind's script flags in lowercase. i.e. `minimaldata`, `cleanstack`, etc.
- __subscript(s, lastSep)__ - Return script from `lastSep` with codeseparators - __getSubscript(s, lastSep)__ - Return script from `lastSep` with
removed. codeseparators removed.
- __checksig(msg, sig, key)__ - Verify a signature against a hash and key. - __checksig(msg, sig, key)__ - Verify a signature against a hash and key.
- __sign(msg, key, type)__ - Create a bitcoin ecdsa signature from `msg` and a - __sign(msg, key, type)__ - Create a bitcoin ecdsa signature from `msg` and a
private key. Appends `type` to the signature (the sighash type). private key. Appends `type` to the signature (the sighash type).
@ -1266,11 +1266,11 @@ Usage:
- __createMultisig(keys, m, n)__ - Compile a standard multisig script from - __createMultisig(keys, m, n)__ - Compile a standard multisig script from
array of keys and `m` and `n` value. array of keys and `m` and `n` value.
- __createScripthash(s)__ - Compile a scripthash script from `s`. - __createScripthash(s)__ - Compile a scripthash script from `s`.
- __redeem(s)__ - Grab an deserialize redeem script from input script. - __getRedeem(s)__ - Grab an deserialize redeem script from input script.
- __standard(s)__ - Return standard output script type. `null` if unknown. - __getType(s)__ - Return standard output script type. `unknown` if unknown.
- __size(s)__ - Return script size in bytes. - __size(s)__ - Return script size in bytes.
- __isLocktime(s)__ - Returns true if script is a checklocktimeverify script. - __isLocktime(s)__ - Returns true if script is a checklocktimeverify script.
- __lockTime(s)__ - Return locktime value pushed onto the stack if - __getLockTime(s)__ - Return locktime value pushed onto the stack if
checklocktimeverify is used. checklocktimeverify is used.
- __getInputData(s, [prev])__ - Parse input and previous output scripts. - __getInputData(s, [prev])__ - Parse input and previous output scripts.
Extract as much data as possible. Same format as `Input` getters. Extract as much data as possible. Same format as `Input` getters.
@ -1284,7 +1284,7 @@ Usage:
- __isMultisig(s)__ - Returns true if script is multisig. - __isMultisig(s)__ - Returns true if script is multisig.
- __isScripthash(s)__ - Returns true if script is pay-to-scripthash. - __isScripthash(s)__ - Returns true if script is pay-to-scripthash.
- __isNulldata(s)__ - Returns true if script is nulldata. - __isNulldata(s)__ - Returns true if script is nulldata.
- __standardInput(s)__ - Same as `script.standard()`, but works on input - __getInputType(s)__ - Same as `script.getType()`, but works on input
scripts. scripts.
- __isPubkeyInput(s)__ - Returns true if script is pay-to-pubkey input script. - __isPubkeyInput(s)__ - Returns true if script is pay-to-pubkey input script.
- __isPubkeyhashInput(s)__ - Returns true if script is pay-to-pubkeyhash input - __isPubkeyhashInput(s)__ - Returns true if script is pay-to-pubkeyhash input
@ -1292,8 +1292,8 @@ Usage:
- __isMultisigInput(s)__ - Returns true if script is multisig input script. - __isMultisigInput(s)__ - Returns true if script is multisig input script.
- __isScripthashInput(s)__ - Returns true if script is pay-to-scripthash input - __isScripthashInput(s)__ - Returns true if script is pay-to-scripthash input
script. script.
- __coinbase(s)__ - Extract as much data as possible from a coinbase script - __getCoinbaseData(s)__ - Extract as much data as possible from a coinbase
including `height`, `extraNonce`, `flags`, and `text`. script including `height`, `extraNonce`, `flags`, and `text`.
- __isHash(data)__ - Returns true if data is the length of a ripemd hash. - __isHash(data)__ - Returns true if data is the length of a ripemd hash.
- __isKey(data)__ - Returns true if data is the length of a public key. - __isKey(data)__ - Returns true if data is the length of a public key.
- __isSignature(data)__ - Returns true if data is the length of a signature. - __isSignature(data)__ - Returns true if data is the length of a signature.
@ -1310,11 +1310,13 @@ Usage:
- __isLowDER(sig)__ - Returns true if sig has a low S value. - __isLowDER(sig)__ - Returns true if sig has a low S value.
- __format(s)__ - Format script to make it more human-readable for output and - __format(s)__ - Format script to make it more human-readable for output and
debugging. debugging.
- __pushOnly(s)__ - Returns true if script contains only push opcodes. - __isPushOnly(s)__ - Returns true if script contains only push opcodes.
- __sigops(s, [accurate])__ - Count number of sigops in script. Legacy counting - __getSigops(s, [accurate])__ - Count number of sigops in script. Legacy
by default. Set `accurate` to true for accurate counting. counting by default. Set `accurate` to true for accurate counting.
- __sigopsScripthash(s)__ - Count sigops in scripthash input + redeem script. - __getScripthashSigops(s)__ - Count sigops in scripthash input + redeem
- __args(s)__ - Return number of expected "input args" for output script type. script.
- __getArgs(s)__ - Return number of expected "input args" for output script
type.
#### TXPool (from EventEmitter) #### TXPool (from EventEmitter)
@ -1495,7 +1497,7 @@ Usage: `bcoin.tx([options], [block])`
txpool, or an object with txids as its keys and txs as its values. txpool, or an object with txids as its keys and txs as its values.
- __isFinal(height, ts)__ - Mimics the bitcoind `IsFinalTx()` function. Checks - __isFinal(height, ts)__ - Mimics the bitcoind `IsFinalTx()` function. Checks
the locktime and input sequences. Returns true or false. the locktime and input sequences. Returns true or false.
- __sigops([scripthash], [accurate])__ - Count sigops in transaction. Set - __getSigops([scripthash], [accurate])__ - Count sigops in transaction. Set
`scripthash=true` to count redeem script sigops. Set `accurate=true` for `scripthash=true` to count redeem script sigops. Set `accurate=true` for
accurate counting instead of legacy counting. accurate counting instead of legacy counting.
- __isStandard()__ - Mimics bitcoind's `IsStandardTx()` function. - __isStandard()__ - Mimics bitcoind's `IsStandardTx()` function.
@ -1547,11 +1549,15 @@ Usage: `bcoin.wallet(options)`
- Inherits all from EventEmitter. - Inherits all from EventEmitter.
- All options. - All options.
- TODO
##### Events: ##### Events:
- TODO - __balance(balance)__ - Emitted when balance is updated. `balance` is in
satoshis (big number).
- __tx(tx)__ - Emitted when a TX is added to the wallet's TXPool.
- __load(ts)__ - Emitted when the TXPool is finished loading. `ts` is the
timestamp of the last transaction in the pool.
- __error(err)__ - Emitted on error.
##### Methods: ##### Methods:
@ -1586,6 +1592,12 @@ Usage: `bcoin.wallet(options)`
scripts if possible. scripts if possible.
- __sign(tx)__ - Equivalent to calling both `scriptInputs(tx)` and - __sign(tx)__ - Equivalent to calling both `scriptInputs(tx)` and
`signInputs(tx)` in one go. `signInputs(tx)` in one go.
- __addTX(tx)__ - Add a transaction to the wallet's TXPool.
- __all()__ - Returns all transactions from the TXPool.
- __unspent()__ - Returns all TXes with unspent outputs from the TXPool.
- __pending()__ - Returns all TXes in the TXPool that have yet to be included
in a block.
- __balance()__ - Returns total balance of the TXPool.
- __fill(tx)__ - Attempt to `fillUnspent(tx)`. Return `null` if failed to reach - __fill(tx)__ - Attempt to `fillUnspent(tx)`. Return `null` if failed to reach
total output value. Return `tx` if successful. total output value. Return `tx` if successful.
- __toAddress()__ - Return blockchain-explorer-like data in the format of: - __toAddress()__ - Return blockchain-explorer-like data in the format of:
@ -1606,13 +1618,13 @@ Usage: `bcoin.wallet(options)`
##### Static: ##### Static:
- Inherits all from Function. - Inherits all from Function.
- __Wallet.toSecret(priv, compressed)__ - Convert a private key to a base58 - __toSecret(priv, compressed)__ - Convert a private key to a base58
string. Mimics the bitcoind CBitcoinSecret object for converting private keys string. Mimics the bitcoind CBitcoinSecret object for converting private keys
to and from base58 strings. The same format bitcoind uses for `dumpprivkey` to and from base58 strings. The same format bitcoind uses for `dumpprivkey`
and `importprivkey`. and `importprivkey`.
- __Wallet.fromSecret(priv)__ - Convert a base58 private key string to a - __fromSecret(priv)__ - Convert a base58 private key string to a
private key. See above for more information. private key. See above for more information.
- __key2hash([key])__ - Return hash of a public key (byte array). - __key2hash(key)__ - Return hash of a public key (byte array).
- __hash2addr(hash, [prefix])__ - Return address of hash. `prefix` can be - __hash2addr(hash, [prefix])__ - Return address of hash. `prefix` can be
`pubkey`, `pubkeyhash`, `multisig`, or `scripthash`. Only `scripthash` `pubkey`, `pubkeyhash`, `multisig`, or `scripthash`. Only `scripthash`
actually has a different base58 prefix. actually has a different base58 prefix.
@ -1628,7 +1640,42 @@ Usage: `bcoin.wallet(options)`
#### bcoin.utils #### bcoin.utils
TODO - __toArray(msg, [enc])__ - Converts `msg` to an array. `msg` can be a string
where `enc` can be null (for converting ascii to a byte array) or `hex`.
- __toBase58(arr)__ - Convert a byte array to base58.
- __fromBase58(msg)__ - Convert a base58 string to a byte array.
- __isBase58(msg)__ - Test `msg` to see if it is a base58 string.
- __ripemd160(data, [enc])__ - RIPEMD160 hash function. Returns byte array.
- __sha1(data, [enc])__ - SHA1 hash function. Returns byte array.
- __ripesha(data, [enc])__ - SHA256+RIPEMD160 hash function. Returns byte array.
- __checksum(data, [enc])__ - Create a checksum using a double SHA256.
- __sha256(data, [enc])__ - SHA256 hash function. Returns byte array.
- __dsha256(data, [enc])__ - Double SHA256 hash function. Returns byte array.
- __writeAscii(dst, str, off)__ - Write an ascii string to a byte array.
Returns number of bytes written.
- __readAscii(arr, off, len, printable)__ - Read ascii from a byte array. Set
`printable` to get only printable characters.
- __ascii2array(str)__ - Convert ASCII string to byte array.
- __array2ascii(arr)__ - Convert byte array to ASCII string.
- __array2utf8(arr)__ - Convert byte array to UTF8 string.
- __copy(src, dst, off, [force])__ - Copy data from `src` to `dst` at offset
`off`. Set `force` to increase `dst` size if necessary.
- __stringify(arr)__ - Convert byte array to ASCII string.
- __toHex(arr)__ - Convert byte array to hex string.
- __binaryInsert(list, item, compare, [search])__ - Do a binary insert on
`list`. `compare` is a compare callback. Set `search` for just a binary
search.
- __utils.isEqual(a, b)__ - Compare two byte arrays.
- __utils.nextTick(callback)__ - `process.nextTick` or `setImmediate` if
available.
- __utils.RequestCache__ - TODO.
- __utils.asyncify(callback)__ - Ensure that a callback executes asynchronously
by wrapping it in a nextTick.
- __utils.assert()__
- __utils.assert.equal()__
- __utils.btc()__ - Convert satoshis (big number) to BTC string.
- __utils.satoshi()__ - Convert BTC string (must have a decimal point) to
satoshis (big number).
#### Packet List #### Packet List

View File

@ -360,7 +360,7 @@ Block.prototype.verifyContext = function verifyContext() {
// Make sure the height contained in the coinbase is correct. // Make sure the height contained in the coinbase is correct.
if (this.version >= 2 && prev.isUpgraded(2)) { if (this.version >= 2 && prev.isUpgraded(2)) {
cb = bcoin.script.coinbase(this.txs[0].inputs[0].script); cb = bcoin.script.getCoinbaseData(this.txs[0].inputs[0].script);
// Make sure the coinbase is parseable. // Make sure the coinbase is parseable.
if (!cb) { if (!cb) {
@ -415,7 +415,7 @@ Block.prototype.verifyContext = function verifyContext() {
// Check for tx sigops limits // Check for tx sigops limits
// Bitcoind does not check for this when accepting // Bitcoind does not check for this when accepting
// a block even though it probably should. // a block even though it probably should.
// if (tx.sigops(true) > constants.script.maxTxSigops) { // if (tx.getSigops(true) > constants.script.maxTxSigops) {
// // Block 71036 abused checksig to // // Block 71036 abused checksig to
// // include a huge number of sigops. // // include a huge number of sigops.
// utils.debug('Block TX has too many sigops: %s', this.rhash); // utils.debug('Block TX has too many sigops: %s', this.rhash);
@ -427,9 +427,9 @@ Block.prototype.verifyContext = function verifyContext() {
// Start counting P2SH sigops once block // Start counting P2SH sigops once block
// timestamps reach March 31st, 2012. // timestamps reach March 31st, 2012.
if (this.ts >= constants.block.bip16time) if (this.ts >= constants.block.bip16time)
sigops += tx.sigops(true); sigops += tx.getSigops(true);
else else
sigops += tx.sigops(); sigops += tx.getSigops();
if (sigops > constants.script.maxBlockSigops) { if (sigops > constants.script.maxBlockSigops) {
utils.debug('Block has too many sigops: %s', this.rhash); utils.debug('Block has too many sigops: %s', this.rhash);

View File

@ -210,7 +210,7 @@ Input.getData = function getData(input) {
} }
if (input.out && +input.out.hash === 0) { if (input.out && +input.out.hash === 0) {
data = bcoin.script.coinbase(input.script); data = bcoin.script.getCoinbaseData(input.script);
return utils.merge(def, data, { return utils.merge(def, data, {
type: 'coinbase', type: 'coinbase',
none: true none: true

View File

@ -106,7 +106,7 @@ Output.prototype.__defineGetter__('n', function() {
}); });
Output.prototype.__defineGetter__('lock', function() { Output.prototype.__defineGetter__('lock', function() {
return bcoin.script.lockTime(this.script); return bcoin.script.getLockTime(this.script);
}); });
Output.prototype.__defineGetter__('flags', function() { Output.prototype.__defineGetter__('flags', function() {

View File

@ -202,7 +202,7 @@ script.verify = function verify(input, output, tx, i, flags) {
flags = {}; flags = {};
if (flags.sigpushonly !== false) { if (flags.sigpushonly !== false) {
if (!script.pushOnly(input)) if (!script.isPushOnly(input))
return false; return false;
} }
@ -223,7 +223,7 @@ script.verify = function verify(input, output, tx, i, flags) {
// If the script is P2SH, execute the real output script // If the script is P2SH, execute the real output script
if (flags.verifyp2sh !== false && script.isScripthash(output)) { if (flags.verifyp2sh !== false && script.isScripthash(output)) {
// P2SH can only have push ops in the scriptSig // P2SH can only have push ops in the scriptSig
if (!script.pushOnly(input)) if (!script.isPushOnly(input))
return false; return false;
// Reset the stack // Reset the stack
@ -258,7 +258,7 @@ script.verify = function verify(input, output, tx, i, flags) {
return true; return true;
}; };
script.subscript = function subscript(s, lastSep) { script.getSubscript = function getSubscript(s, lastSep) {
var i, res; var i, res;
if (!s) if (!s)
@ -831,7 +831,7 @@ script.execute = function execute(data, stack, tx, index, flags, recurse) {
type = sig[sig.length - 1]; type = sig[sig.length - 1];
subscript = script.subscript(data, lastSep); subscript = script.getSubscript(data, lastSep);
script.removeData(subscript, sig); script.removeData(subscript, sig);
hash = tx.signatureHash(index, subscript, type); hash = tx.signatureHash(index, subscript, type);
@ -877,7 +877,7 @@ script.execute = function execute(data, stack, tx, index, flags, recurse) {
if (stack.length < m + 1) if (stack.length < m + 1)
return false; return false;
subscript = script.subscript(data, lastSep); subscript = script.getSubscript(data, lastSep);
for (i = 0; i < m; i++) { for (i = 0; i < m; i++) {
sig = stack[stack.length - 1 - i]; sig = stack[stack.length - 1 - i];
@ -1180,20 +1180,20 @@ script.createScripthash = function createScripthash(s) {
]; ];
}; };
script.redeem = function redeem(s) { script.getRedeem = function getRedeem(s) {
if (!Array.isArray(s[s.length - 1])) if (!Array.isArray(s[s.length - 1]))
return; return;
return bcoin.script.decode(s[s.length - 1]); return bcoin.script.decode(s[s.length - 1]);
}; };
script.standard = function standard(s) { script.getType = function getType(s) {
return (script.isPubkey(s) && 'pubkey') return (script.isPubkey(s) && 'pubkey')
|| (script.isPubkeyhash(s) && 'pubkeyhash') || (script.isPubkeyhash(s) && 'pubkeyhash')
|| (script.isMultisig(s) && 'multisig') || (script.isMultisig(s) && 'multisig')
|| (script.isScripthash(s) && 'scripthash') || (script.isScripthash(s) && 'scripthash')
|| (script.isNulldata(s) && 'nulldata') || (script.isNulldata(s) && 'nulldata')
|| null; || 'unknown';
}; };
script.isStandard = function isStandard(s) { script.isStandard = function isStandard(s) {
@ -1260,7 +1260,7 @@ script.isLockTime = function isLockTime(s) {
return script._lockTime(s) != null; return script._lockTime(s) != null;
}; };
script.lockTime = function lockTime(s) { script.getLockTime = function getLockTime(s) {
var lockTime = script._lockTime(s); var lockTime = script._lockTime(s);
if (!lockTime) if (!lockTime)
@ -1272,7 +1272,7 @@ script.lockTime = function lockTime(s) {
script.getInputData = function getData(s, prev) { script.getInputData = function getData(s, prev) {
var output, type; var output, type;
if (prev && !script.isScripthash(prev)) { if (prev) {
output = script.getOutputData(prev); output = script.getOutputData(prev);
output.side = 'input'; output.side = 'input';
@ -1305,6 +1305,8 @@ script.getInputData = function getData(s, prev) {
type = 'multisig'; type = 'multisig';
else if (script.isScripthashInput(s)) else if (script.isScripthashInput(s))
type = 'scripthash'; type = 'scripthash';
else
type = 'unknown';
return script._getInputData(s, type); return script._getInputData(s, type);
}; };
@ -1353,10 +1355,10 @@ script._getInputData = function _getInputData(s, type) {
if (type === 'scripthash') { if (type === 'scripthash') {
raw = s[s.length - 1]; raw = s[s.length - 1];
redeem = script.decode(raw); redeem = script.decode(raw);
lock = script.lockTime(redeem); lock = script.getLockTime(redeem);
hash = bcoin.wallet.key2hash(raw); hash = bcoin.wallet.key2hash(raw);
address = bcoin.wallet.hash2addr(hash, 'scripthash'); address = bcoin.wallet.hash2addr(hash, 'scripthash');
output = script.getOutputData(script.subscript(redeem)); output = script.getOutputData(script.getSubscript(redeem));
input = script._getInputData(s.slice(0, -1), output.type); input = script._getInputData(s.slice(0, -1), output.type);
delete input.none; delete input.none;
return utils.merge(input, output, { return utils.merge(input, output, {
@ -1617,7 +1619,7 @@ script.isNulldata = function isNulldata(s) {
return s[1]; return s[1];
}; };
script.standardInput = function standardInput(s) { script.getInputType = function getInputType(s) {
return (script.isPubkeyInput(s) && 'pubkey') return (script.isPubkeyInput(s) && 'pubkey')
|| (script.isPubkeyhashInput(s) && 'pubkeyhash') || (script.isPubkeyhashInput(s) && 'pubkeyhash')
|| (script.isMultisigInput(s) && 'multisig') || (script.isMultisigInput(s) && 'multisig')
@ -1753,7 +1755,7 @@ script.isScripthashInput = function isScripthashInput(s, data, strict) {
// P2SH redeem scripts can be nonstandard: make // P2SH redeem scripts can be nonstandard: make
// it easier for other functions to parse this. // it easier for other functions to parse this.
redeem = script.subscript(script.decode(raw)); redeem = script.getSubscript(script.decode(raw));
// Get the "real" scriptSig // Get the "real" scriptSig
s = s.slice(0, -1); s = s.slice(0, -1);
@ -1775,7 +1777,7 @@ script.isScripthashInput = function isScripthashInput(s, data, strict) {
return raw; return raw;
}; };
script.coinbase = function coinbase(s) { script.getCoinbaseData = function getCoinbaseData(s) {
var coinbase, flags; var coinbase, flags;
coinbase = { coinbase = {
@ -2089,7 +2091,7 @@ script.format = function format(input, output) {
return scripts; return scripts;
}; };
script.pushOnly = function pushOnly(s) { script.isPushOnly = function isPushOnly(s) {
var i, op; var i, op;
for (i = 0; i < s.length; i++) { for (i = 0; i < s.length; i++) {
op = s[i]; op = s[i];
@ -2102,7 +2104,7 @@ script.pushOnly = function pushOnly(s) {
return true; return true;
}; };
script.sigops = function sigops(s, accurate) { script.getSigops = function getSigops(s, accurate) {
var i, op; var i, op;
var n = 0; var n = 0;
var lastOp = -1; var lastOp = -1;
@ -2128,19 +2130,19 @@ script.sigops = function sigops(s, accurate) {
return n; return n;
}; };
script.sigopsScripthash = function sigopsScripthash(s) { script.getScripthashSigops = function getScripthashSigops(s) {
if (!script.isScripthashInput(s)) if (!script.isScripthashInput(s))
return 0; return 0;
if (!script.pushOnly(s)) if (!script.isPushOnly(s))
return 0; return 0;
s = script.subscript(script.decode(s[s.length - 1])); s = script.getSubscript(script.decode(s[s.length - 1]));
return script.sigops(s, true); return script.getSigops(s, true);
}; };
script.args = function args(s) { script.getArgs = function getArgs(s) {
var keys, m; var keys, m;
if (script.isPubkey(s)) if (script.isPubkey(s))

View File

@ -188,7 +188,7 @@ TX.prototype.scriptInput = function scriptInput(index, pub, redeem) {
// P2SH // P2SH
if (bcoin.script.isScripthash(s)) { if (bcoin.script.isScripthash(s)) {
assert(redeem); assert(redeem);
s = bcoin.script.subscript(bcoin.script.decode(redeem)); s = bcoin.script.getSubscript(bcoin.script.decode(redeem));
} else { } else {
redeem = null; redeem = null;
} }
@ -262,7 +262,7 @@ TX.prototype.signature = function signature(index, key, type) {
// signing p2sh transactions. // signing p2sh transactions.
if (bcoin.script.isScripthash(s)) { if (bcoin.script.isScripthash(s)) {
s = bcoin.script.decode(input.script[input.script.length - 1]); s = bcoin.script.decode(input.script[input.script.length - 1]);
s = bcoin.script.subscript(s); s = bcoin.script.getSubscript(s);
} }
// Get the hash of the current tx, minus the other // Get the hash of the current tx, minus the other
@ -306,7 +306,7 @@ TX.prototype.signInput = function signInput(index, key, type) {
// signing p2sh transactions. // signing p2sh transactions.
if (bcoin.script.isScripthash(s)) { if (bcoin.script.isScripthash(s)) {
s = bcoin.script.decode(input.script[input.script.length - 1]); s = bcoin.script.decode(input.script[input.script.length - 1]);
s = bcoin.script.subscript(s); s = bcoin.script.getSubscript(s);
// Decrement `len` to avoid the redeem script // Decrement `len` to avoid the redeem script
len--; len--;
} }
@ -639,7 +639,7 @@ TX.prototype.scriptOutput = function scriptOutput(index, options) {
TX.prototype.getSubscript = function getSubscript(index) { TX.prototype.getSubscript = function getSubscript(index) {
var script = this.outputs[index].script; var script = this.outputs[index].script;
return bcoin.script.subscript(script); return bcoin.script.getSubscript(script);
}; };
TX.prototype.signatureHash = function signatureHash(index, s, type) { TX.prototype.signatureHash = function signatureHash(index, s, type) {
@ -651,7 +651,7 @@ TX.prototype.signatureHash = function signatureHash(index, s, type) {
s = this.inputs[index].out.tx.getSubscript(this.inputs[index].out.index); s = this.inputs[index].out.tx.getSubscript(this.inputs[index].out.index);
if (bcoin.script.isScripthash(s)) { if (bcoin.script.isScripthash(s)) {
s = this.inputs[index].script[this.inputs[index.script.length - 1]]; s = this.inputs[index].script[this.inputs[index.script.length - 1]];
s = bcoin.script.subscript(bcoin.script.decode(s)); s = bcoin.script.getSubscript(bcoin.script.decode(s));
} }
} }
@ -671,7 +671,7 @@ TX.prototype.signatureHash = function signatureHash(index, s, type) {
// assert(utils.isFinite(type)); // assert(utils.isFinite(type));
// Remove code separators. // Remove code separators.
// s = script.subscript(s); // s = script.getSubscript(s);
// Remove all signatures. // Remove all signatures.
for (i = 0; i < copy.inputs.length; i++) for (i = 0; i < copy.inputs.length; i++)
@ -815,7 +815,7 @@ TX.prototype.maxSize = function maxSize() {
// the isMultisig clause. // the isMultisig clause.
// OP_PUSHDATA2 [redeem] // OP_PUSHDATA2 [redeem]
size += 3 + s.length; size += 3 + s.length;
s = bcoin.script.subscript(bcoin.script.decode(s)); s = bcoin.script.getSubscript(bcoin.script.decode(s));
} }
if (bcoin.script.isPubkey(s)) { if (bcoin.script.isPubkey(s)) {
@ -1220,15 +1220,15 @@ TX.prototype.isFinal = function isFinal(height, ts) {
return true; return true;
}; };
TX.prototype.sigops = function sigops(scripthash, accurate) { TX.prototype.getSigops = function getSigops(scripthash, accurate) {
var n = 0; var n = 0;
this.inputs.forEach(function(input) { this.inputs.forEach(function(input) {
n += bcoin.script.sigops(input.script, accurate); n += bcoin.script.getSigops(input.script, accurate);
if (scripthash && !this.isCoinbase()) if (scripthash && !this.isCoinbase())
n += bcoin.script.sigopsScripthash(input.script); n += bcoin.script.getScripthashSigops(input.script);
}, this); }, this);
this.outputs.forEach(function(output) { this.outputs.forEach(function(output) {
n += bcoin.script.sigops(output.script, accurate); n += bcoin.script.getSigops(output.script, accurate);
}, this); }, this);
return n; return n;
}; };
@ -1249,13 +1249,13 @@ TX.prototype.isStandard = function isStandard() {
if (script.size(input.script) > 1650) if (script.size(input.script) > 1650)
return false; return false;
if (!bcoin.script.pushOnly(input.script)) if (!bcoin.script.isPushOnly(input.script))
return false; return false;
} }
for (i = 0; i < this.outputs.length; i++) { for (i = 0; i < this.outputs.length; i++) {
output = this.outputs[i]; output = this.outputs[i];
type = bcoin.script.standard(output.script); type = bcoin.script.getType(output.script);
if (!bcoin.script.isStandard(output.script)) if (!bcoin.script.isStandard(output.script))
return false; return false;
@ -1298,7 +1298,7 @@ TX.prototype.isStandardInputs = function isStandardInputs(flags) {
if (!prev) if (!prev)
return false; return false;
args = bcoin.script.args(prev.script); args = bcoin.script.getArgs(prev.script);
if (args < 0) if (args < 0)
return false; return false;
@ -1319,15 +1319,15 @@ TX.prototype.isStandardInputs = function isStandardInputs(flags) {
if (!Array.isArray(s)) if (!Array.isArray(s))
return false; return false;
s = bcoin.script.subscript(bcoin.script.decode(s)); s = bcoin.script.getSubscript(bcoin.script.decode(s));
if (bcoin.script.standard(s)) { if (bcoin.script.getType(s) !== 'unknown') {
targs = bcoin.script.args(s); targs = bcoin.script.getArgs(s);
if (targs < 0) if (targs < 0)
return false; return false;
args += targs; args += targs;
} else { } else {
return script.sigops(s, true) <= constants.script.maxScripthashSigops; return script.getSigops(s, true) <= constants.script.maxScripthashSigops;
} }
} }