diff --git a/browser/index.js b/browser/index.js
index 94301b52..21e964d7 100644
--- a/browser/index.js
+++ b/browser/index.js
@@ -31,8 +31,8 @@ function show(obj) {
floating.style.display = 'block';
}
-logger = new bcoin.logger({ level: 'debug' });
-logger.writeConsole = function(level, args) {
+logger = new bcoin.logger({ level: 'debug', console: true });
+logger.writeConsole = function(level, module, args) {
var name = bcoin.logger.levelsByVal[level];
var msg = util.format(args, false);
if (++scrollback > 1000) {
@@ -40,10 +40,21 @@ logger.writeConsole = function(level, args) {
scrollback = 1;
}
log.innerHTML += '' + util.now() + ' ';
- if (name === 'error')
- log.innerHTML += '[' + name + '] ';
- else
- log.innerHTML += '[' + name + '] ';
+ if (name === 'error') {
+ log.innerHTML += '';
+ log.innerHTML += '[';
+ log.innerHTML += name
+ log.innerHTML += '] ';
+ if (module)
+ log.innerHTML += '(' + module + ') ';
+ log.innerHTML += '';
+ } else {
+ log.innerHTML += '[';
+ log.innerHTML += name
+ log.innerHTML += '] ';
+ if (module)
+ log.innerHTML += '(' + module + ') ';
+ }
log.innerHTML += escape(msg) + '\n';
log.scrollTop = log.scrollHeight;
};
@@ -163,7 +174,7 @@ function setMouseup(el, obj) {
function formatWallet(wallet) {
var html = '';
- var key = wallet.master.toJSON(true).key;
+ var json = wallet.master.toJSON(true);
var i, tx, el;
html += 'Wallet
';
@@ -179,8 +190,8 @@ function formatWallet(wallet) {
html += 'Current Address: ' + wallet.getAddress() + '
';
}
- html += 'Extended Private Key: ' + key.xprivkey + '
';
- html += 'Mnemonic: ' + key.mnemonic.phrase + '
';
+ html += 'Extended Private Key: ' + json.key.xprivkey + '
';
+ html += 'Mnemonic: ' + json.mnemonic.phrase + '
';
wallet.getBalance().then(function(balance) {
html += 'Confirmed Balance: '
@@ -215,13 +226,14 @@ node = new bcoin.fullnode({
hash: true,
query: true,
prune: true,
- network: 'testnet',
+ network: 'main',
db: 'leveldb',
coinCache: 30000000,
+ logConsole: true,
logger: logger
});
-wdb = node.use(bcoin.walletdb);
+wdb = node.use(bcoin.walletplugin);
node.on('error', function(err) {
;
@@ -231,15 +243,17 @@ node.chain.on('block', addItem);
node.mempool.on('tx', addItem);
node.open().then(function() {
- node.connect().then(function() {
- node.startSync();
-
- wdb.primary.on('balance', function() {
- formatWallet(wdb.primary);
- });
+ return node.connect();
+}).then(function() {
+ node.startSync();
+ wdb.primary.on('balance', function() {
formatWallet(wdb.primary);
});
+
+ formatWallet(wdb.primary);
+}).catch(function(err) {
+ throw err;
});
})();
diff --git a/browser/server.js b/browser/server.js
index e0e680c9..c98ed884 100644
--- a/browser/server.js
+++ b/browser/server.js
@@ -20,7 +20,10 @@ proxy.on('error', function(err) {
console.error(err.stack + '');
});
-server = new HTTPBase();
+server = new HTTPBase({
+ port: +process.argv[2] || 8080,
+ sockets: false
+});
server.get('/favicon.ico', function(req, res) {
res.send(404, '', 'txt');
@@ -52,4 +55,4 @@ server.on('error', function(err) {
proxy.attach(server.server);
-server.listen(+process.argv[2] || 8080);
+server.open();
diff --git a/browser/wsproxy.js b/browser/wsproxy.js
index 0001c2c3..e0c0fbe6 100644
--- a/browser/wsproxy.js
+++ b/browser/wsproxy.js
@@ -225,7 +225,7 @@ WSProxy.prototype.attach = function attach(server) {
function SocketState(server, socket) {
this.pow = server.pow;
this.target = server.target;
- this.snonce = util.nonce(true);
+ this.snonce = util.nonce();
this.socket = null;
this.host = IP.normalize(socket.conn.remoteAddress);
this.remoteHost = null;
diff --git a/lib/env.js b/lib/env.js
index 054eb18b..11d42f7b 100644
--- a/lib/env.js
+++ b/lib/env.js
@@ -178,7 +178,7 @@ function Environment() {
// Miner
this.require('mining', './mining');
this.require('miner', './mining/miner');
- this.require('minerblock', './mining/minerblock');
+ this.require('template', './mining/template');
// Net
this.require('net', './net');
@@ -250,6 +250,7 @@ function Environment() {
this.require('path', './wallet/path');
this.require('walletkey', './wallet/walletkey');
this.require('walletdb', './wallet/walletdb');
+ this.require('walletplugin', './wallet/plugin');
// Workers
this.require('workers', './workers');
diff --git a/lib/http/rpcbase.js b/lib/http/rpcbase.js
index fb31f6e4..e9e8ef0a 100644
--- a/lib/http/rpcbase.js
+++ b/lib/http/rpcbase.js
@@ -70,7 +70,7 @@ RPCBase.prototype.call = co(function* call(body, query) {
assert(Array.isArray(cmd.params), 'Params must be an array.');
- enforce(!cmd.id || typeof cmd.id !== 'object', 'Invalid ID.');
+ assert(!cmd.id || typeof cmd.id !== 'object', 'Invalid ID.');
}
for (i = 0; i < cmds.length; i++) {
diff --git a/lib/node/logger.js b/lib/node/logger.js
index dbb991ad..707ce101 100644
--- a/lib/node/logger.js
+++ b/lib/node/logger.js
@@ -176,9 +176,6 @@ Logger.prototype.open = co(function* open() {
*/
Logger.prototype._open = co(function* open() {
- if (fs.unsupported)
- return;
-
if (!this.filename) {
this.closed = false;
return;
@@ -189,6 +186,11 @@ Logger.prototype._open = co(function* open() {
return;
}
+ if (fs.unsupported) {
+ this.closed = false;
+ return;
+ }
+
if (this.shrink)
yield this.truncate();
@@ -224,6 +226,12 @@ Logger.prototype._close = co(function* close() {
this.timer = null;
}
+ if (fs.unsupported) {
+ this.closed = true;
+ this.stream = null;
+ return;
+ }
+
if (this.stream) {
try {
this.closing = true;
@@ -324,6 +332,9 @@ Logger.prototype._reopen = co(function* reopen() {
if (this.closed)
return;
+ if (fs.unsupported)
+ return;
+
try {
this.stream = yield openStream(this.filename);
} catch (e) {
diff --git a/lib/wallet/walletdb.js b/lib/wallet/walletdb.js
index 7fdb9ce3..01bd6bf8 100644
--- a/lib/wallet/walletdb.js
+++ b/lib/wallet/walletdb.js
@@ -1472,26 +1472,17 @@ WalletDB.prototype.decryptKeys = co(function* decryptKeys(wallet, key) {
*/
WalletDB.prototype.resend = co(function* resend() {
- var iter, item, wid;
+ var i, keys, key, wid;
- iter = this.db.iterator({
+ keys = yield this.db.keys({
gte: layout.w(0x00000000),
lte: layout.w(0xffffffff)
});
- for (;;) {
- item = yield iter.next();
-
- if (!item)
- break;
-
- try {
- wid = layout.ww(item.key);
- yield this.resendPending(wid);
- } catch (e) {
- yield iter.end();
- throw e;
- }
+ for (i = 0; i < keys.length; i++) {
+ key = keys[i];
+ wid = layout.ww(key);
+ yield this.resendPending(wid);
}
});
diff --git a/package.json b/package.json
index 9939c609..25ebfec0 100644
--- a/package.json
+++ b/package.json
@@ -80,6 +80,7 @@
"./lib/net/dns": "./lib/net/dns-browser.js",
"./lib/net/tcp": "./lib/net/tcp-browser.js",
"./lib/net/upnp": "./lib/net/upnp-browser.js",
+ "./lib/utils/fs": "./browser/empty.js",
"./lib/utils/native": "./browser/empty.js",
"./lib/utils/nfkd": "./lib/utils/nfkd-browser.js",
"./lib/utils/nexttick": "./lib/utils/nexttick-browser.js",