more fixes. cleanup.

This commit is contained in:
Christopher Jeffrey 2016-04-15 06:44:34 -07:00
parent e3595906c9
commit 72e907f81e
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
21 changed files with 54 additions and 120 deletions

View File

@ -113,7 +113,7 @@ Block.prototype.getRaw = function getRaw() {
}; };
Block.prototype._getSize = function _getSize() { Block.prototype._getSize = function _getSize() {
var sizes = bcoin.protocol.framer.block._sizes(this); var sizes = bcoin.protocol.framer.block.sizes(this);
this._size = sizes.size; this._size = sizes.size;
this._witnessSize = sizes.witnessSize; this._witnessSize = sizes.witnessSize;
}; };

View File

@ -28,6 +28,7 @@ function Bloom(size, n, tweak) {
this.size = size; this.size = size;
this.n = n; this.n = n;
this.tweak = tweak; this.tweak = tweak;
this.update = null;
this.reset(); this.reset();
} }

View File

@ -2314,7 +2314,7 @@ Chain.prototype.checkFinal = function checkFinal(prev, tx, flags, callback, forc
if (err) if (err)
return callback(err); return callback(err);
return callback(null, tx.isFinal(ts, height)); return callback(null, tx.isFinal(height, ts));
} }
if (flags & constants.flags.MEDIAN_TIME_PAST) if (flags & constants.flags.MEDIAN_TIME_PAST)

View File

@ -225,28 +225,6 @@ Coin.fromRaw = function fromRaw(data, enc) {
return new Coin(Coin._fromRaw(data, enc)); return new Coin(Coin._fromRaw(data, enc));
}; };
Coin.prototype.toUTXO = function toUTXO(enc) {
var data = bcoin.protocol.framer.utxo(this);
if (enc === 'hex')
data = utils.toHex(data);
return data;
};
Coin._fromUTXO = function _fromUTXO(data, enc) {
if (enc === 'hex')
data = new Buffer(data, 'hex');
data = bcoin.protocol.parser.parseUTXO(data);
return data;
};
Coin.fromUTXO = function fromUTXO(data, enc) {
return new Coin(Coin._fromUTXO(data, enc));
};
/** /**
* Serialize the coin to an "extended" format, * Serialize the coin to an "extended" format,
* including both the hash and the index. * including both the hash and the index.

View File

@ -115,9 +115,9 @@ Coins.prototype.remove = function remove(index) {
* @returns {Coin} * @returns {Coin}
*/ */
Coins.prototype.spend = function spend(hash, index) { Coins.prototype.spend = function spend(index) {
var coin = this.get(hash, index); var coin = this.get(index);
this.remove(hash, index); this.remove(index);
return coin; return coin;
}; };
@ -169,7 +169,7 @@ Coins.prototype.fill = function fill(tx, spend) {
* @returns {Number} Total. * @returns {Number} Total.
*/ */
Coins.prototype.count = function count(index) { Coins.prototype.count = function count() {
return this.outputs.reduce(function(total, output) { return this.outputs.reduce(function(total, output) {
if (!output) if (!output)
return total; return total;
@ -177,10 +177,13 @@ Coins.prototype.count = function count(index) {
}, 0); }, 0);
}; };
Coins.prototype.forEach = function forEach(callback, context) { /**
this.outputs.forEach(function(output, i) { * Convert collection to an array.
callback.call(context || this, output, i); * @returns {Coin[]}
}, this); */
Coins.prototype.toArray = function toArray() {
return this.outputs.filter(Boolean);
}; };
/** /**

View File

@ -91,7 +91,7 @@ CoinView.prototype.count = function count(hash) {
CoinView.prototype.has = function has(hash, index) { CoinView.prototype.has = function has(hash, index) {
if (!this.coins[hash]) if (!this.coins[hash])
return; return false;
return this.coins[hash].has(index); return this.coins[hash].has(index);
}; };

View File

@ -196,7 +196,9 @@ function Environment(options) {
this.coins = require('./coins')(this); this.coins = require('./coins')(this);
this.coinview = require('./coinview')(this); this.coinview = require('./coinview')(this);
this.tx = require('./tx')(this); this.tx = require('./tx')(this);
this.transaction = this.tx;
this.mtx = require('./mtx')(this); this.mtx = require('./mtx')(this);
this.mutabletransaction = this.mtx;
this.txdb = require('./txdb')(this); this.txdb = require('./txdb')(this);
this.abstractblock = require('./abstractblock')(this); this.abstractblock = require('./abstractblock')(this);
this.compactblock = require('./compactblock')(this); this.compactblock = require('./compactblock')(this);

View File

@ -110,7 +110,7 @@ Fullnode.prototype._init = function _init() {
key: this.options.sslKey, key: this.options.sslKey,
cert: this.options.sslCert, cert: this.options.sslCert,
port: this.options.httpPort || 8080, port: this.options.httpPort || 8080,
host: '0.0.0.0' host: this.options.httpHost || '0.0.0.0'
}); });
// Bind to errors // Bind to errors

View File

@ -855,7 +855,7 @@ HDPrivateKey.fromJSON = function fromJSON(json, passphrase) {
* @returns {Boolean} * @returns {Boolean}
*/ */
HDPublicKey.isHDPrivateKey = function isHDPrivateKey(obj) { HDPrivateKey.isHDPrivateKey = function isHDPrivateKey(obj) {
return obj && obj.isPrivate && typeof obj.derive === 'function'; return obj && obj.isPrivate && typeof obj.derive === 'function';
}; };

View File

@ -79,7 +79,7 @@ Headers.prototype.getSize = function getSize() {
Headers.prototype.getRaw = function getRaw() { Headers.prototype.getRaw = function getRaw() {
if (!this._raw) { if (!this._raw) {
this._raw = bcoin.protocol.framer.headers(this); this._raw = bcoin.protocol.framer.headers([this]);
this._size = this._raw.length; this._size = this._raw.length;
} }
return this._raw; return this._raw;
@ -95,7 +95,6 @@ Headers.prototype.inspect = function inspect() {
var copy = bcoin.headers(this); var copy = bcoin.headers(this);
copy.__proto__ = null; copy.__proto__ = null;
delete copy._raw; delete copy._raw;
delete copy._chain;
copy.hash = this.hash('hex'); copy.hash = this.hash('hex');
copy.rhash = this.rhash; copy.rhash = this.rhash;
copy.date = new Date((copy.ts || 0) * 1000).toISOString(); copy.date = new Date((copy.ts || 0) * 1000).toISOString();
@ -131,7 +130,7 @@ Headers._fromRaw = function _fromRaw(data, enc) {
if (enc === 'hex') if (enc === 'hex')
data = new Buffer(data, 'hex'); data = new Buffer(data, 'hex');
return bcoin.protocol.parser.parseHeaders(data); return bcoin.protocol.parser.parseHeaders(data)[0];
}; };
/** /**

View File

@ -335,7 +335,7 @@ Client.prototype.getWallet = function getWallet(id, passphrase, callback) {
return callback(e); return callback(e);
} }
json.provider = new bcoin.http.provider(self.url); json.provider = new bcoin.http.provider(self.uri);
return callback(null, new bcoin.wallet(json)); return callback(null, new bcoin.wallet(json));
}); });
@ -361,7 +361,7 @@ Client.prototype.createWallet = function createWallet(options, callback) {
return callback(e); return callback(e);
} }
json.provider = new bcoin.http.provider(self.url); json.provider = new bcoin.http.provider(self.uri);
return callback(null, new bcoin.wallet(json)); return callback(null, new bcoin.wallet(json));
}); });
@ -435,7 +435,7 @@ Client.prototype.getWalletPending = function getPending(id, callback) {
try { try {
body = body.map(function(data) { body = body.map(function(data) {
return bcoin.coin.fromJSON(data); return bcoin.tx.fromJSON(data);
}); });
} catch (e) { } catch (e) {
return callback(e); return callback(e);
@ -474,7 +474,7 @@ Client.prototype.getWalletBalance = function getBalance(id, callback) {
* @param {Function} callback - Returns [Error, {@link TX}[]]. * @param {Function} callback - Returns [Error, {@link TX}[]].
*/ */
Client.prototype.getWalletLast = function getLast(id, limit, callback) { Client.prototype.getWalletLast = function getWalletLast(id, limit, callback) {
var options = { limit: limit }; var options = { limit: limit };
return this._get('/wallet/' + id + '/tx/last', options, function(err, body) { return this._get('/wallet/' + id + '/tx/last', options, function(err, body) {
if (err) if (err)

View File

@ -20,14 +20,14 @@ var Client = bcoin.http.client;
* @param {String} uri * @param {String} uri
*/ */
function Provider(url) { function Provider(uri) {
if (!(this instanceof Provider)) if (!(this instanceof Provider))
return new Provider(url); return new Provider(uri);
EventEmitter.call(this); EventEmitter.call(this);
this.client = new Client(url); this.client = new Client(uri);
this.url = url; this.uri = uri;
this.id = null; this.id = null;
this._init(); this._init();
} }

View File

@ -169,7 +169,7 @@ KeyPair._fromSecret = function _fromSecret(secret) {
privateKey = p.readBytes(32); privateKey = p.readBytes(32);
if (p.left() > 1) { if (p.left() > 4) {
assert(p.readU8() === 1); assert(p.readU8() === 1);
compressed = true; compressed = true;
} }

View File

@ -80,7 +80,6 @@ function Mempool(options) {
this.relayPriority = this.options.relayPriority !== false; this.relayPriority = this.options.relayPriority !== false;
this.requireStandard = this.options.requireStandard !== false; this.requireStandard = this.options.requireStandard !== false;
this.rejectInsaneFees = this.options.rejectInsaneFees !== false; this.rejectInsaneFees = this.options.rejectInsaneFees !== false;
this.relay = this.options.relay || false;
// Use an in-memory binary search tree by default // Use an in-memory binary search tree by default
this.backend = this.options.memory === false ? 'leveldb' : 'memory'; this.backend = this.options.memory === false ? 'leveldb' : 'memory';

View File

@ -32,7 +32,7 @@ function Output(options, tx) {
value = options.value; value = options.value;
if (typeof value === 'number') { if (typeof value === 'number') {
assert(value % 1 === 0); assert(value % 1 === 0, 'Output value cannot be a float.');
value = new bn(value); value = new bn(value);
} }

View File

@ -296,10 +296,6 @@ Framer.prototype.getBlocks = function getBlocks(data) {
return this.packet('getblocks', Framer.getBlocks(data)); return this.packet('getblocks', Framer.getBlocks(data));
}; };
Framer.prototype.utxo = function _coin(coin) {
return this.packet('utxo', Framer.coin(coin, false));
};
/** /**
* Create a tx packet with a header. * Create a tx packet with a header.
* @param {TX} tx - See {@link Framer.tx}. * @param {TX} tx - See {@link Framer.tx}.
@ -356,8 +352,8 @@ Framer.prototype.merkleBlock = function merkleBlock(block) {
* @returns {Buffer} headers packet. * @returns {Buffer} headers packet.
*/ */
Framer.prototype.headers = function headers(block) { Framer.prototype.headers = function _headers(headers) {
return this.packet('headers', Framer.headers(block)); return this.packet('headers', Framer.headers(headers));
}; };
/** /**
@ -640,26 +636,6 @@ Framer._getBlocks = function _getBlocks(data, writer, headers) {
return p; return p;
}; };
Framer.utxo = function _utxo(coin, writer) {
var p = new BufferWriter(writer);
var height = coin.height;
if (height === -1)
height = 0x7fffffff;
assert(coin.value.byteLength() <= 8);
p.writeU32(coin.version);
p.writeU32(height);
p.write64(coin.value);
Framer.script(coin.script, p);
if (!writer)
p = p.render();
return p;
};
/** /**
* Serialize a coin. * Serialize a coin.
* @param {NakedCoin|Coin} coin * @param {NakedCoin|Coin} coin
@ -1361,7 +1337,7 @@ Framer.filterClear = function filterClear() {
* @returns {Object} In the form of `{size: Number, witnessSize: Number}`. * @returns {Object} In the form of `{size: Number, witnessSize: Number}`.
*/ */
Framer.block._sizes = function blockSizes(block) { Framer.block.sizes = function blockSizes(block) {
var writer = new BufferWriter(); var writer = new BufferWriter();
Framer.witnessBlock(block, writer); Framer.witnessBlock(block, writer);
return { return {
@ -1377,7 +1353,7 @@ Framer.block._sizes = function blockSizes(block) {
* @returns {Object} In the form of `{size: Number, witnessSize: Number}`. * @returns {Object} In the form of `{size: Number, witnessSize: Number}`.
*/ */
Framer.tx._sizes = function txSizes(tx) { Framer.tx.sizes = function txSizes(tx) {
var writer = new BufferWriter(); var writer = new BufferWriter();
Framer.renderTX(tx, true, writer); Framer.renderTX(tx, true, writer);
return { return {
@ -1393,7 +1369,7 @@ Framer.tx._sizes = function txSizes(tx) {
*/ */
Framer.block.witnessSize = function blockWitnessSize(block) { Framer.block.witnessSize = function blockWitnessSize(block) {
return Framer.block._sizes(block).size; return Framer.block.sizes(block).size;
}; };
/** /**
@ -1403,7 +1379,7 @@ Framer.block.witnessSize = function blockWitnessSize(block) {
*/ */
Framer.tx.witnessSize = function txWitnessSize(tx) { Framer.tx.witnessSize = function txWitnessSize(tx) {
return Framer.tx._sizes(tx).size; return Framer.tx.sizes(tx).size;
}; };
/** /**
@ -1437,7 +1413,7 @@ Framer.tx.size = function txSize(tx) {
*/ */
Framer.block.virtualSize = function blockVirtualSize(block) { Framer.block.virtualSize = function blockVirtualSize(block) {
var sizes = Framer.block._sizes(block); var sizes = Framer.block.sizes(block);
var base = sizes.size - sizes.witnessSize; var base = sizes.size - sizes.witnessSize;
return (base * 4 + sizes.witnessSize + 3) / 4 | 0; return (base * 4 + sizes.witnessSize + 3) / 4 | 0;
}; };
@ -1449,7 +1425,7 @@ Framer.block.virtualSize = function blockVirtualSize(block) {
*/ */
Framer.tx.virtualSize = function txVirtualSize(tx) { Framer.tx.virtualSize = function txVirtualSize(tx) {
var sizes = Framer.tx._sizes(tx); var sizes = Framer.tx.sizes(tx);
var base = sizes.size - sizes.witnessSize; var base = sizes.size - sizes.witnessSize;
return (base * 4 + sizes.witnessSize + 3) / 4 | 0; return (base * 4 + sizes.witnessSize + 3) / 4 | 0;
}; };

View File

@ -33,7 +33,6 @@ function Parser() {
this.pendingTotal = 0; this.pendingTotal = 0;
this.waiting = 24; this.waiting = 24;
this.packet = null; this.packet = null;
this.version = constants.minVersion;
} }
utils.inherits(Parser, EventEmitter); utils.inherits(Parser, EventEmitter);
@ -1032,29 +1031,6 @@ Parser.parseOutput = function parseOutput(p) {
}; };
}; };
Parser.parseUTXO = function parseUTXO(p) {
var version, height, value, script;
p = new BufferReader(p);
p.start();
version = p.readU32();
height = p.readU32();
value = p.read64();
script = Parser.parseScript(p);
if (height === 0x7fffffff)
height = -1;
return {
version: version,
height: height,
value: value,
script: script,
_size: p.end()
};
};
/** /**
* @typedef {Object} NakedCoin * @typedef {Object} NakedCoin
* @global * @global

View File

@ -825,7 +825,7 @@ Script.prototype.encode = function encode() {
*/ */
Script.prototype.getSubscript = function getSubscript(lastSep) { Script.prototype.getSubscript = function getSubscript(lastSep) {
var res = []; var code = [];
var i; var i;
if (lastSep == null) if (lastSep == null)
@ -835,18 +835,18 @@ Script.prototype.getSubscript = function getSubscript(lastSep) {
for (i = lastSep + 1; i < this.code.length; i++) { for (i = lastSep + 1; i < this.code.length; i++) {
if (this.code[i] !== opcodes.OP_CODESEPARATOR) if (this.code[i] !== opcodes.OP_CODESEPARATOR)
res.push(this.code[i]); code.push(this.code[i]);
} }
// Optimization: avoid re-rendering // Optimization: avoid re-rendering
// of the script in 99.9% of cases. // of the script in 99.9% of cases.
if (res.length === this.code.length) { if (code.length === this.code.length) {
res = this.clone(); code = this.clone();
res.raw = this.raw; code.raw = this.raw;
return res; return code;
} }
return new Script(res); return new Script(code);
}; };
Script.prototype._next = function _next(to, code, ip) { Script.prototype._next = function _next(to, code, ip) {
@ -1657,6 +1657,8 @@ Script.array = function(value) {
Script.prototype.removeData = function removeData(data) { Script.prototype.removeData = function removeData(data) {
for (var i = this.code.length - 1; i >= 0; i--) { for (var i = this.code.length - 1; i >= 0; i--) {
if (!Buffer.isBuffer(this.code[i]))
continue;
if (utils.isEqual(this.code[i], data)) if (utils.isEqual(this.code[i], data))
this.code.splice(i, 1); this.code.splice(i, 1);
} }
@ -3452,9 +3454,7 @@ Script.sign = function sign(msg, key, type) {
// Add the sighash type as a single byte // Add the sighash type as a single byte
// to the signature. // to the signature.
sig = Buffer.concat([sig, new Buffer([type])]); return Buffer.concat([sig, new Buffer([type])]);
return sig;
}; };
/** /**

View File

@ -277,7 +277,7 @@ TX.prototype.getRaw = function getRaw() {
else else
raw = bcoin.protocol.framer.tx(this); raw = bcoin.protocol.framer.tx(this);
// this._raw = raw; this._raw = raw;
this._size = raw.length; this._size = raw.length;
this._witnessSize = raw._witnessSize; this._witnessSize = raw._witnessSize;

View File

@ -776,11 +776,11 @@ Wallet.prototype.fillCoins = function fillCoins(tx, callback) {
* @param {Function} callback - Returns [Error, {@link Coin}]. * @param {Function} callback - Returns [Error, {@link Coin}].
*/ */
Wallet.prototype.getCoin = function getCoin(id, callback) { Wallet.prototype.getCoin = function getCoin(hash, index, callback) {
if (!this.provider) if (!this.provider)
return callback(new Error('No wallet provider available.')); return callback(new Error('No wallet provider available.'));
return this.provider.getCoin(id, callback); return this.provider.getCoin(hash, index, callback);
}; };
/** /**

View File

@ -1162,8 +1162,8 @@ Provider.prototype.update = function update(wallet, address) {
* @param {Function} callback * @param {Function} callback
*/ */
Provider.prototype.zap = function zap(wallet, address) { Provider.prototype.zap = function zap(now, age, callback) {
return this.db.zapWallet(wallet, address); return this.db.zapWallet(this.id, now, age, callback);
}; };
WalletDB.Provider = Provider; WalletDB.Provider = Provider;