From de62831851a58601fcdf6fe32502efcb2e0e8c2b Mon Sep 17 00:00:00 2001 From: eordano Date: Wed, 25 Mar 2015 17:52:18 -0300 Subject: [PATCH] Improve initialization of a simple node --- api/controllers/transactions.js | 2 +- lib/node.js | 38 +++++++++++++++++++++++++++++---- lib/services/address.js | 1 + 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/api/controllers/transactions.js b/api/controllers/transactions.js index 388f297a..2dd73599 100644 --- a/api/controllers/transactions.js +++ b/api/controllers/transactions.js @@ -25,7 +25,7 @@ Transactions.setNode = function(aNode) { * Finds a transaction by its hash */ Transactions.txHashParam = function(req, res, next, txHash) { - node.getTransaction(txHash) + node.transactionService.getTransaction(txHash) .then(function(tx) { req.tx = tx; }) diff --git a/lib/node.js b/lib/node.js index f9e7d8c9..36c8f309 100644 --- a/lib/node.js +++ b/lib/node.js @@ -4,22 +4,31 @@ var util = require('util'); var EventEmitter = require('eventemitter2').EventEmitter2; var bitcore = require('bitcore'); +var config = require('config'); var p2p = require('bitcore-p2p'); var messages = new p2p.Messages(); var $ = bitcore.util.preconditions; +var Promise = require('bluebird'); +var RPC = require('bitcoind-rpc'); var NetworkMonitor = require('./networkmonitor'); var EventBus = require('./eventbus'); -var BlockService = require('./services/block.js'); -var BitcoreNode = function(bus, networkMonitor) { +var LevelUp = require('levelup'); +var BlockService = require('./services/block'); +var TransactionService = require('./services/transaction'); +var AddressService = require('./services/address'); + +var BitcoreNode = function(bus, networkMonitor, blockService, transactionService, addressService) { $.checkArgument(bus); $.checkArgument(networkMonitor); var self = this; this.bus = bus; this.networkMonitor = networkMonitor; - this.blockService = new BlockService(); + this.addressService = addressService; + this.transactionService = transactionService; + this.blockService = blockService; this.bus.register(bitcore.Block, this.blockService.onBlock.bind(this.blockService)); @@ -38,9 +47,30 @@ util.inherits(BitcoreNode, EventEmitter); BitcoreNode.create = function(opts) { opts = opts || {}; + var bus = new EventBus(); + var networkMonitor = NetworkMonitor.create(bus, opts.NetworkMonitor); - return new BitcoreNode(bus, networkMonitor); + + var database = new LevelUp(opts.LevelUp || config.get('LevelUp')); + var rpc = Promise.promisifyAll(new RPC(config.get('RPC'))); + + var transactionService = new TransactionService({ + rpc: rpc, + database: database + }); + var blockService = new BlockService({ + rpc: rpc, + database: database, + transactionService: transactionService + }); + var addressService = new AddressService({ + rpc: rpc, + database: database, + transactionService: transactionService, + blockService: blockService + }); + return new BitcoreNode(bus, networkMonitor, blockService, transactionService, addressService); }; BitcoreNode.prototype.start = function() { diff --git a/lib/services/address.js b/lib/services/address.js index 47c37896..76e6092e 100644 --- a/lib/services/address.js +++ b/lib/services/address.js @@ -3,6 +3,7 @@ var Promise = require('bluebird'); var bitcore = require('bitcore'); var TransactionService = require('./transaction'); +var RPC = require('bitcoind-rpc'); var _ = bitcore.deps._; var NULLTXHASH = bitcore.util.buffer.emptyBuffer(32).toString('hex');