diff --git a/bin/node b/bin/node index 823ab159..98f02a08 100755 --- a/bin/node +++ b/bin/node @@ -9,12 +9,12 @@ process.on('uncaughtException', function(err) { process.exit(1); }); -var node = bcoin.fullnode({ - // passphrase: 'node', +var node = new bcoin.fullnode({ prune: process.argv.indexOf('--prune') !== -1, useCheckpoints: process.argv.indexOf('--checkpoints') !== -1, listen: process.argv.indexOf('--listen') !== -1, selfish: process.argv.indexOf('--selfish') !== -1, + broadcast: process.argv.indexOf('--broadcast') !== -1, mine: process.argv.indexOf('--mine') !== -1 }); diff --git a/lib/bcoin/fullnode.js b/lib/bcoin/fullnode.js index a6b72c96..dfcaf525 100644 --- a/lib/bcoin/fullnode.js +++ b/lib/bcoin/fullnode.js @@ -87,6 +87,7 @@ Fullnode.prototype._init = function _init() { witness: network.witness, listen: this.options.listen, selfish: this.options.selfish, + broadcast: this.options.broadcast, spv: false }); diff --git a/lib/bcoin/pool.js b/lib/bcoin/pool.js index 98ba0707..eb3417d9 100644 --- a/lib/bcoin/pool.js +++ b/lib/bcoin/pool.js @@ -229,9 +229,23 @@ Pool.prototype.connect = function connect() { if (this.connected) return; - if (this.mempool && this.options.broadcast) { - this.mempool.on('tx', function(tx) { - self.broadcast(tx); + if (this.options.broadcast) { + if (this.mempool) { + this.mempool.on('tx', function(tx) { + self.broadcast(tx); + }); + } + + // Normally we would also broadcast + // competing chains, but we want to + // avoid getting banned if an evil + // miner sends us an invalid competing + // chain that we can't connect and + // verify yet. + this.chain.on('block', function(block) { + if (!self.synced) + return; + self.broadcast(block); }); }