wallet/bcoin: refactor exposure.

This commit is contained in:
Christopher Jeffrey 2017-12-12 22:32:27 -08:00
parent 425b8780f7
commit 99a7eb5fa5
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
10 changed files with 113 additions and 139 deletions

View File

@ -28,7 +28,7 @@ const node = new Node({
logFile: true, logFile: true,
logConsole: true, logConsole: true,
logLevel: 'debug', logLevel: 'debug',
db: 'leveldb', memory: false,
workers: true, workers: true,
listen: true, listen: true,
loader: require loader: require

View File

@ -25,115 +25,107 @@ const bcoin = exports;
*/ */
bcoin.set = function set(network) { bcoin.set = function set(network) {
bcoin.network.set(network); bcoin.Network.set(network);
return bcoin; return bcoin;
}; };
/**
* Cache all necessary modules.
*/
bcoin.cache = function cache() {
;
};
/* /*
* Expose * Expose
*/ */
/*
// Blockchain // Blockchain
bcoin.blockchain = require('./blockchain'); bcoin.blockchain = require('./blockchain');
bcoin.chain = require('./blockchain/chain'); bcoin.Chain = require('./blockchain/chain');
bcoin.chaindb = require('./blockchain/chaindb'); bcoin.ChainEntry = require('./blockchain/chainentry');
bcoin.chainentry = require('./blockchain/chainentry'); */
// BTC // BTC
bcoin.btc = require('./btc'); bcoin.btc = require('./btc');
bcoin.amount = require('./btc/amount'); bcoin.Amount = require('./btc/amount');
bcoin.uri = require('./btc/uri'); bcoin.URI = require('./btc/uri');
// Coins // Coins
bcoin.coins = require('./coins'); bcoin.coins = require('./coins');
bcoin.coinview = require('./coins/coinview'); bcoin.Coins = require('./coins/coins');
bcoin.CoinEntry = require('./coins/coinentry');
bcoin.CoinView = require('./coins/coinview');
// HD // HD
bcoin.hd = require('./hd'); bcoin.hd = require('./hd');
bcoin.HDPrivateKey = require('./hd/private');
bcoin.HDPublicKey = require('./hd/public');
bcoin.Mnemonic = require('./hd/mnemonic');
/*
// Mempool // Mempool
bcoin.txmempool = require('./mempool'); bcoin.mempool = require('./mempool');
bcoin.fees = require('./mempool/fees'); bcoin.Fees = require('./mempool/fees');
bcoin.mempool = require('./mempool/mempool'); bcoin.Mempool = require('./mempool/mempool');
bcoin.mempoolentry = require('./mempool/mempoolentry'); bcoin.MempoolEntry = require('./mempool/mempoolentry');
// Miner // Miner
bcoin.mining = require('./mining'); bcoin.mining = require('./mining');
bcoin.miner = require('./mining/miner'); bcoin.Miner = require('./mining/miner');
bcoin.template = require('./mining/template');
// Net // Net
bcoin.net = require('./net'); bcoin.net = require('./net');
bcoin.bip150 = require('./net/bip150');
bcoin.bip151 = require('./net/bip151');
bcoin.bip152 = require('./net/bip152');
bcoin.netaddress = require('./net/netaddress');
bcoin.packets = require('./net/packets'); bcoin.packets = require('./net/packets');
bcoin.peer = require('./net/peer'); bcoin.Peer = require('./net/peer');
bcoin.pool = require('./net/pool'); bcoin.Pool = require('./net/pool');
// Node // Node
bcoin.node = require('./node'); bcoin.node = require('./node');
bcoin.fullnode = require('./node/fullnode'); bcoin.Node = require('./node/node');
bcoin.spvnode = require('./node/spvnode'); bcoin.FullNode = require('./node/fullnode');
bcoin.SPVNode = require('./node/spvnode');
*/
// Primitives // Primitives
bcoin.primitives = require('./primitives'); bcoin.primitives = require('./primitives');
bcoin.address = require('./primitives/address'); bcoin.Address = require('./primitives/address');
bcoin.block = require('./primitives/block'); bcoin.Block = require('./primitives/block');
bcoin.coin = require('./primitives/coin'); bcoin.Coin = require('./primitives/coin');
bcoin.headers = require('./primitives/headers'); bcoin.Headers = require('./primitives/headers');
bcoin.input = require('./primitives/input'); bcoin.Input = require('./primitives/input');
bcoin.invitem = require('./primitives/invitem'); bcoin.InvItem = require('./primitives/invitem');
bcoin.keyring = require('./primitives/keyring'); bcoin.KeyRing = require('./primitives/keyring');
bcoin.merkleblock = require('./primitives/merkleblock'); bcoin.MerkleBlock = require('./primitives/merkleblock');
bcoin.mtx = require('./primitives/mtx'); bcoin.MTX = require('./primitives/mtx');
bcoin.outpoint = require('./primitives/outpoint'); bcoin.Outpoint = require('./primitives/outpoint');
bcoin.output = require('./primitives/output'); bcoin.Output = require('./primitives/output');
bcoin.tx = require('./primitives/tx'); bcoin.TX = require('./primitives/tx');
// Protocol // Protocol
bcoin.protocol = require('./protocol'); bcoin.protocol = require('./protocol');
bcoin.consensus = require('./protocol/consensus'); bcoin.consensus = require('./protocol/consensus');
bcoin.errors = require('./protocol/errors'); bcoin.Network = require('./protocol/network');
bcoin.network = require('./protocol/network');
bcoin.networks = require('./protocol/networks'); bcoin.networks = require('./protocol/networks');
bcoin.policy = require('./protocol/policy'); bcoin.policy = require('./protocol/policy');
bcoin.timedata = require('./protocol/timedata');
// Script // Script
bcoin.txscript = require('./script'); bcoin.script = require('./script');
bcoin.opcode = require('./script/opcode'); bcoin.Opcode = require('./script/opcode');
bcoin.program = require('./script/program'); bcoin.Program = require('./script/program');
bcoin.script = require('./script/script'); bcoin.Script = require('./script/script');
bcoin.scriptnum = require('./script/scriptnum'); bcoin.ScriptNum = require('./script/scriptnum');
bcoin.sigcache = require('./script/sigcache'); bcoin.SigCache = require('./script/sigcache');
bcoin.stack = require('./script/stack'); bcoin.Stack = require('./script/stack');
bcoin.witness = require('./script/witness'); bcoin.Witness = require('./script/witness');
// Utils // Utils
bcoin.utils = require('./utils'); bcoin.utils = require('./utils');
bcoin.co = require('./utils/co');
bcoin.lock = require('./utils/lock');
bcoin.util = require('./utils/util'); bcoin.util = require('./utils/util');
/*
// Wallet // Wallet
bcoin.wallet = require('./wallet'); bcoin.wallet = require('./wallet');
bcoin.path = require('./wallet/path'); bcoin.WalletDB = require('./wallet/walletdb');
bcoin.walletkey = require('./wallet/walletkey');
bcoin.walletdb = require('./wallet/walletdb');
// Workers // Workers
bcoin.workers = require('./workers'); bcoin.workers = require('./workers');
bcoin.workerpool = require('./workers/workerpool'); bcoin.WorkerPool = require('./workers/workerpool');
*/
// Package Info // Package Info
bcoin.pkg = require('./pkg'); bcoin.pkg = require('./pkg');

View File

@ -28,7 +28,7 @@ const bcoin = exports;
*/ */
bcoin.define = function define(name, path) { bcoin.define = function define(name, path) {
let cache; let cache = null;
Object.defineProperty(bcoin, name, { Object.defineProperty(bcoin, name, {
get() { get() {
if (!cache) if (!cache)
@ -44,131 +44,103 @@ bcoin.define = function define(name, path) {
*/ */
bcoin.set = function set(network) { bcoin.set = function set(network) {
bcoin.network.set(network); bcoin.Network.set(network);
return bcoin; return bcoin;
}; };
/**
* Cache all necessary modules.
*/
bcoin.cache = function cache() {
bcoin.blockchain;
bcoin.btc;
bcoin.coins;
bcoin.crypto;
bcoin.hd;
bcoin.http;
bcoin.txmempool;
bcoin.mining;
bcoin.net;
bcoin.node;
bcoin.primitives;
bcoin.protocol;
bcoin.txscript;
bcoin.utils;
bcoin.wallet;
bcoin.workers;
bcoin.pkg;
};
/* /*
* Expose * Expose
*/ */
// Blockchain // Blockchain
bcoin.define('blockchain', './blockchain'); bcoin.define('blockchain', './blockchain');
bcoin.define('chain', './blockchain/chain'); bcoin.define('Chain', './blockchain/chain');
bcoin.define('chaindb', './blockchain/chaindb'); bcoin.define('ChainEntry', './blockchain/chainentry');
bcoin.define('chainentry', './blockchain/chainentry');
// BTC // BTC
bcoin.define('btc', './btc'); bcoin.define('btc', './btc');
bcoin.define('amount', './btc/amount'); bcoin.define('Amount', './btc/amount');
bcoin.define('uri', './btc/uri'); bcoin.define('URI', './btc/uri');
// Coins // Coins
bcoin.define('coins', './coins'); bcoin.define('coins', './coins');
bcoin.define('coinview', './coins/coinview'); bcoin.define('Coins', './coins/coins');
bcoin.define('CoinEntry', './coins/coinentry');
bcoin.define('CoinView', './coins/coinview');
// HD // HD
bcoin.define('hd', './hd'); bcoin.define('hd', './hd');
bcoin.define('HDPrivateKey', './hd/private');
bcoin.define('HDPublicKey', './hd/public');
bcoin.define('Mnemonic', './hd/mnemonic');
// Mempool // Mempool
bcoin.define('txmempool', './mempool'); bcoin.define('mempool', './mempool');
bcoin.define('fees', './mempool/fees'); bcoin.define('Fees', './mempool/fees');
bcoin.define('mempool', './mempool/mempool'); bcoin.define('Mempool', './mempool/mempool');
bcoin.define('mempoolentry', './mempool/mempoolentry'); bcoin.define('MempoolEntry', './mempool/mempoolentry');
// Miner // Miner
bcoin.define('mining', './mining'); bcoin.define('mining', './mining');
bcoin.define('miner', './mining/miner'); bcoin.define('Miner', './mining/miner');
bcoin.define('template', './mining/template');
// Net // Net
bcoin.define('net', './net'); bcoin.define('net', './net');
bcoin.define('bip150', './net/bip150');
bcoin.define('bip151', './net/bip151');
bcoin.define('bip152', './net/bip152');
bcoin.define('netaddress', './net/netaddress');
bcoin.define('packets', './net/packets'); bcoin.define('packets', './net/packets');
bcoin.define('peer', './net/peer'); bcoin.define('Peer', './net/peer');
bcoin.define('pool', './net/pool'); bcoin.define('Pool', './net/pool');
// Node // Node
bcoin.define('node', './node'); bcoin.define('node', './node');
bcoin.define('fullnode', './node/fullnode'); bcoin.define('Node', './node/node');
bcoin.define('spvnode', './node/spvnode'); bcoin.define('FullNode', './node/fullnode');
bcoin.define('SPVNode', './node/spvnode');
// Primitives // Primitives
bcoin.define('primitives', './primitives'); bcoin.define('primitives', './primitives');
bcoin.define('address', './primitives/address'); bcoin.define('Address', './primitives/address');
bcoin.define('block', './primitives/block'); bcoin.define('Block', './primitives/block');
bcoin.define('coin', './primitives/coin'); bcoin.define('Coin', './primitives/coin');
bcoin.define('headers', './primitives/headers'); bcoin.define('Headers', './primitives/headers');
bcoin.define('input', './primitives/input'); bcoin.define('Input', './primitives/input');
bcoin.define('invitem', './primitives/invitem'); bcoin.define('InvItem', './primitives/invitem');
bcoin.define('keyring', './primitives/keyring'); bcoin.define('KeyRing', './primitives/keyring');
bcoin.define('merkleblock', './primitives/merkleblock'); bcoin.define('MerkleBlock', './primitives/merkleblock');
bcoin.define('mtx', './primitives/mtx'); bcoin.define('MTX', './primitives/mtx');
bcoin.define('outpoint', './primitives/outpoint'); bcoin.define('Outpoint', './primitives/outpoint');
bcoin.define('output', './primitives/output'); bcoin.define('Output', './primitives/output');
bcoin.define('tx', './primitives/tx'); bcoin.define('TX', './primitives/tx');
// Protocol // Protocol
bcoin.define('protocol', './protocol'); bcoin.define('protocol', './protocol');
bcoin.define('consensus', './protocol/consensus'); bcoin.define('consensus', './protocol/consensus');
bcoin.define('errors', './protocol/errors'); bcoin.define('Network', './protocol/network');
bcoin.define('network', './protocol/network');
bcoin.define('networks', './protocol/networks'); bcoin.define('networks', './protocol/networks');
bcoin.define('policy', './protocol/policy'); bcoin.define('policy', './protocol/policy');
bcoin.define('timedata', './protocol/timedata');
// Script // Script
bcoin.define('txscript', './script'); bcoin.define('script', './script');
bcoin.define('opcode', './script/opcode'); bcoin.define('Opcode', './script/opcode');
bcoin.define('program', './script/program'); bcoin.define('Program', './script/program');
bcoin.define('script', './script/script'); bcoin.define('Script', './script/script');
bcoin.define('scriptnum', './script/scriptnum'); bcoin.define('ScriptNum', './script/scriptnum');
bcoin.define('sigcache', './script/sigcache'); bcoin.define('SigCache', './script/sigcache');
bcoin.define('stack', './script/stack'); bcoin.define('Stack', './script/stack');
bcoin.define('witness', './script/witness'); bcoin.define('Witness', './script/witness');
// Utils // Utils
bcoin.define('utils', './utils'); bcoin.define('utils', './utils');
bcoin.define('co', './utils/co');
bcoin.define('lock', './utils/lock');
bcoin.define('util', './utils/util'); bcoin.define('util', './utils/util');
// Wallet // Wallet
bcoin.define('wallet', './wallet'); bcoin.define('wallet', './wallet');
bcoin.define('path', './wallet/path'); bcoin.define('Path', './wallet/path');
bcoin.define('walletkey', './wallet/walletkey'); bcoin.define('WalletKey', './wallet/walletkey');
bcoin.define('walletdb', './wallet/walletdb'); bcoin.define('WalletDB', './wallet/walletdb');
// Workers // Workers
bcoin.define('workers', './workers'); bcoin.define('workers', './workers');
bcoin.define('workerpool', './workers/workerpool'); bcoin.define('WorkerPool', './workers/workerpool');
// Package Info // Package Info
bcoin.define('pkg', './pkg'); bcoin.define('pkg', './pkg');

View File

@ -447,7 +447,7 @@ class HTTP extends Server {
const start = valid.i32(0, -1); const start = valid.i32(0, -1);
const end = valid.i32(1, -1); const end = valid.i32(1, -1);
return await this.chain.getHashes(start, end); return this.chain.getHashes(start, end);
}); });
socket.hook('add filter', (...args) => { socket.hook('add filter', (...args) => {

View File

@ -13,7 +13,7 @@ const Chain = require('../blockchain/chain');
const Pool = require('../net/pool'); const Pool = require('../net/pool');
const Node = require('./node'); const Node = require('./node');
const HTTP = require('./http'); const HTTP = require('./http');
const RPC = require('../rpc'); const RPC = require('./rpc');
/** /**
* SPV Node * SPV Node

View File

@ -11,7 +11,7 @@
* @const {String} * @const {String}
*/ */
exports.version = 'v1.0.0-beta.14'; exports.version = 'v1.0.0-beta.16';
/** /**
* Repository URL. * Repository URL.

View File

@ -13,7 +13,7 @@
exports.Account = require('./account'); exports.Account = require('./account');
exports.Client = require('./client'); exports.Client = require('./client');
exports.common = require('./common'); exports.common = require('./common');
exports.HTTPServer = require('./http'); exports.HTTP = require('./http');
exports.layout = require('./layout'); exports.layout = require('./layout');
exports.MasterKey = require('./masterkey'); exports.MasterKey = require('./masterkey');
exports.NodeClient = require('./nodeclient'); exports.NodeClient = require('./nodeclient');
@ -21,7 +21,7 @@ exports.Path = require('./path');
exports.plugin = require('./plugin'); exports.plugin = require('./plugin');
exports.records = require('./records'); exports.records = require('./records');
exports.RPC = require('./rpc'); exports.RPC = require('./rpc');
exports.server = require('./server'); exports.Node = require('./node');
exports.TXDB = require('./txdb'); exports.TXDB = require('./txdb');
exports.WalletDB = require('./walletdb'); exports.WalletDB = require('./walletdb');
exports.Wallet = require('./wallet'); exports.Wallet = require('./wallet');

View File

@ -68,6 +68,7 @@ class WalletDB extends EventEmitter {
this.wallets = new Map(); this.wallets = new Map();
this.depth = 0; this.depth = 0;
this.rescanning = false; this.rescanning = false;
this.filterSent = false;
// Wallet read lock. // Wallet read lock.
this.readLock = new MapLock(); this.readLock = new MapLock();
@ -125,6 +126,10 @@ class WalletDB extends EventEmitter {
} }
}); });
this.client.on('disconnect', async () => {
this.filterSent = false;
});
this.client.bind('block connect', async (entry, txs) => { this.client.bind('block connect', async (entry, txs) => {
try { try {
await this.addBlock(entry, txs); await this.addBlock(entry, txs);
@ -519,6 +524,7 @@ class WalletDB extends EventEmitter {
this.logger.info('Sending filter to server (%dmb).', this.logger.info('Sending filter to server (%dmb).',
this.filter.size / 8 / (1 << 20)); this.filter.size / 8 / (1 << 20));
this.filterSent = true;
return this.client.setFilter(this.filter); return this.client.setFilter(this.filter);
} }
@ -530,6 +536,8 @@ class WalletDB extends EventEmitter {
*/ */
addFilter(data) { addFilter(data) {
if (!this.filterSent)
return undefined;
return this.client.addFilter(data); return this.client.addFilter(data);
} }
@ -540,6 +548,8 @@ class WalletDB extends EventEmitter {
*/ */
resetFilter() { resetFilter() {
if (!this.filterSent)
return undefined;
return this.client.resetFilter(); return this.client.resetFilter();
} }