commit
05d8b7c76a
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
var common = require('./common'),
|
var common = require('./common'),
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
BlockDb = require('../../lib/BlockDb').class();
|
BlockDb = require('../../lib/BlockDb');
|
||||||
|
|
||||||
var bdb = new BlockDb();
|
var bdb = new BlockDb();
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ exports.show = function(req, res) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var option = req.query.q;
|
var option = req.query.q;
|
||||||
var statusObject = Status.new();
|
var statusObject = new Status();
|
||||||
|
|
||||||
var returnJsonp = function (err) {
|
var returnJsonp = function (err) {
|
||||||
if (err || ! statusObject)
|
if (err || ! statusObject)
|
||||||
|
|
|
@ -7,12 +7,10 @@ var Address = require('../models/Address');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var common = require('./common');
|
var common = require('./common');
|
||||||
|
|
||||||
var TransactionDb = require('../../lib/TransactionDb').class();
|
var Rpc = require('../../lib/Rpc');
|
||||||
var BlockDb = require('../../lib/BlockDb').class();
|
|
||||||
var Rpc = require('../../lib/Rpc').class();
|
|
||||||
|
|
||||||
var tDb = new TransactionDb();
|
var tDb = require('../../lib/TransactionDb').default();
|
||||||
var bdb = new BlockDb();
|
var bdb = require('../../lib/BlockDb').default();
|
||||||
|
|
||||||
exports.send = function(req, res) {
|
exports.send = function(req, res) {
|
||||||
Rpc.sendRawTransaction(req.body.rawtx, function(err, txid) {
|
Rpc.sendRawTransaction(req.body.rawtx, function(err, txid) {
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
require('classtool');
|
var imports = require('soop').imports();
|
||||||
|
|
||||||
|
|
||||||
function spec() {
|
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var BitcoreAddress = require('bitcore/Address').class();
|
var BitcoreAddress = require('bitcore/Address');
|
||||||
|
var BitcoreTransaction = require('bitcore/Transaction');
|
||||||
var BitcoreUtil = require('bitcore/util/util');
|
var BitcoreUtil = require('bitcore/util/util');
|
||||||
var TransactionDb = require('../../lib/TransactionDb').class();
|
var Parser = require('bitcore/util/BinaryParser');
|
||||||
var BitcoreTransaction = require('bitcore/Transaction').class();
|
|
||||||
var Parser = require('bitcore/util/BinaryParser').class();
|
|
||||||
var Buffer = require('buffer').Buffer;
|
var Buffer = require('buffer').Buffer;
|
||||||
|
var TransactionDb = imports.TransactionDb || require('../../lib/TransactionDb').default();
|
||||||
var CONCURRENCY = 5;
|
var CONCURRENCY = 5;
|
||||||
|
|
||||||
function Address(addrStr) {
|
function Address(addrStr) {
|
||||||
|
@ -87,7 +84,7 @@ function spec() {
|
||||||
if (!self.addrStr) return next();
|
if (!self.addrStr) return next();
|
||||||
|
|
||||||
var ret = [];
|
var ret = [];
|
||||||
var db = new TransactionDb();
|
var db = TransactionDb;
|
||||||
|
|
||||||
db.fromAddr(self.addrStr, function(err,txOut){
|
db.fromAddr(self.addrStr, function(err,txOut){
|
||||||
if (err) return next(err);
|
if (err) return next(err);
|
||||||
|
@ -96,11 +93,11 @@ function spec() {
|
||||||
async.eachLimit(txOut,CONCURRENCY,function (txItem, a_c) {
|
async.eachLimit(txOut,CONCURRENCY,function (txItem, a_c) {
|
||||||
db.fromIdInfoSimple(txItem.txid, function(err, info) {
|
db.fromIdInfoSimple(txItem.txid, function(err, info) {
|
||||||
|
|
||||||
|
var scriptPubKey = self._getScriptPubKey(info.hex, txItem.index);
|
||||||
|
|
||||||
// we are filtering out even unconfirmed spents!
|
// we are filtering out even unconfirmed spents!
|
||||||
// add || !txItem.spentIsConfirmed
|
// add || !txItem.spentIsConfirmed
|
||||||
|
if (!txItem.spentTxId) {
|
||||||
if (!txItem.spentTxId && info && info.hex) {
|
|
||||||
var scriptPubKey = self._getScriptPubKey(info.hex, txItem.index);
|
|
||||||
ret.push({
|
ret.push({
|
||||||
address: self.addrStr,
|
address: self.addrStr,
|
||||||
txid: txItem.txid,
|
txid: txItem.txid,
|
||||||
|
@ -124,7 +121,7 @@ function spec() {
|
||||||
if (!self.addrStr) return next();
|
if (!self.addrStr) return next();
|
||||||
|
|
||||||
var txs = [];
|
var txs = [];
|
||||||
var db = new TransactionDb();
|
var db = TransactionDb;
|
||||||
async.series([
|
async.series([
|
||||||
function (cb) {
|
function (cb) {
|
||||||
var seen={};
|
var seen={};
|
||||||
|
@ -188,7 +185,5 @@ function spec() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return Address;
|
module.exports = require('soop')(Address);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
//var imports = require('soop').imports();
|
||||||
|
|
||||||
require('classtool');
|
|
||||||
|
|
||||||
function spec() {
|
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var RpcClient = require('bitcore/RpcClient').class();
|
var RpcClient = require('bitcore/RpcClient');
|
||||||
var BlockDb = require('../../lib/BlockDb').class();
|
|
||||||
var config = require('../../config/config');
|
var config = require('../../config/config');
|
||||||
var rpc = new RpcClient(config.bitcoind);
|
var rpc = new RpcClient(config.bitcoind);
|
||||||
|
|
||||||
function Status() {
|
function Status() {
|
||||||
this.bDb = new BlockDb();
|
this.bDb = require('../../lib/BlockDb').default();
|
||||||
}
|
}
|
||||||
|
|
||||||
Status.prototype.getInfo = function(next) {
|
Status.prototype.getInfo = function(next) {
|
||||||
|
@ -105,8 +102,4 @@ function spec() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return Status;
|
module.exports = require('soop')(Status);
|
||||||
|
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ var util = require('util');
|
||||||
|
|
||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
var RpcClient = require('../node_modules/bitcore/RpcClient').class();
|
var RpcClient = require('../node_modules/bitcore/RpcClient');
|
||||||
|
|
||||||
var config = require('../config/config');
|
var config = require('../config/config');
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var T = require('../lib/TransactionDb').class();
|
var T = require('../lib/TransactionDb');
|
||||||
|
|
||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ first 10%
|
||||||
=> sacando los contenidos adentro de getblock from file de => 4.5s!!
|
=> sacando los contenidos adentro de getblock from file de => 4.5s!!
|
||||||
|
|
||||||
=> con base58 cpp => 21s
|
=> con base58 cpp => 21s
|
||||||
=> toda la testnet => 17m
|
=> toda la testnet => 17m !!
|
||||||
|
|
||||||
10% de blk2
|
10% de blk2
|
||||||
=> 50s con base58cpp
|
=> 50s con base58cpp
|
||||||
|
@ -54,3 +54,7 @@ first 10%
|
||||||
=> 15s comentando desde b.getStandardizedObject()
|
=> 15s comentando desde b.getStandardizedObject()
|
||||||
=> 39s comentando dps b.getStandardizedObject()
|
=> 39s comentando dps b.getStandardizedObject()
|
||||||
|
|
||||||
|
|
||||||
|
Mon Mar 10 11:59:25 ART 2014
|
||||||
|
10% de blk 0 (testnet)
|
||||||
|
=> 37s
|
||||||
|
|
|
@ -9,8 +9,8 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
*/
|
*/
|
||||||
var express = require('express'),
|
var express = require('express'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
PeerSync = require('./lib/PeerSync').class(),
|
PeerSync = require('./lib/PeerSync'),
|
||||||
HistoricSync = require('./lib/HistoricSync').class();
|
HistoricSync = require('./lib/HistoricSync');
|
||||||
|
|
||||||
//Initializing system variables
|
//Initializing system variables
|
||||||
var config = require('./config/config');
|
var config = require('./config/config');
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
var imports = require('soop').imports();
|
||||||
require('classtool');
|
var ThisParent = imports.parent || require('events').EventEmitter;
|
||||||
|
|
||||||
|
|
||||||
function spec(b) {
|
|
||||||
|
|
||||||
var superclass = b.superclass || require('events').EventEmitter;
|
|
||||||
var TIMESTAMP_PREFIX = 'bts-'; // b-ts-<ts> => <hash>
|
var TIMESTAMP_PREFIX = 'bts-'; // b-ts-<ts> => <hash>
|
||||||
var PREV_PREFIX = 'bpr-'; // b-prev-<hash> => <prev_hash>
|
var PREV_PREFIX = 'bpr-'; // b-prev-<hash> => <prev_hash>
|
||||||
var NEXT_PREFIX = 'bne-'; // b-next-<hash> => <next_hash>
|
var NEXT_PREFIX = 'bne-'; // b-next-<hash> => <next_hash>
|
||||||
|
@ -21,18 +16,17 @@ function spec(b) {
|
||||||
*/
|
*/
|
||||||
var levelup = require('levelup'),
|
var levelup = require('levelup'),
|
||||||
config = require('../config/config');
|
config = require('../config/config');
|
||||||
var db = b.db || levelup(config.leveldb + '/blocks',{maxOpenFiles: MAX_OPEN_FILES} );
|
var db = imports.db || levelup(config.leveldb + '/blocks',{maxOpenFiles: MAX_OPEN_FILES} );
|
||||||
var Rpc = b.rpc || require('./Rpc').class();
|
var Rpc = imports.rpc || require('./Rpc');
|
||||||
var PoolMatch = b.poolMatch || require('./PoolMatch').class(config);
|
var PoolMatch = imports.poolMatch || require('soop').load('./PoolMatch',config);
|
||||||
|
|
||||||
var TransactionDb = require('./TransactionDb.js').class();
|
var tDb = require('./TransactionDb.js').default();
|
||||||
|
|
||||||
var BlockDb = function() {
|
var BlockDb = function() {
|
||||||
BlockDb.super(this, arguments);
|
BlockDb.super(this, arguments);
|
||||||
this.poolMatch = new PoolMatch();
|
this.poolMatch = new PoolMatch();
|
||||||
};
|
};
|
||||||
|
BlockDb.parent = ThisParent;
|
||||||
BlockDb.superclass = superclass;
|
|
||||||
|
|
||||||
BlockDb.prototype.close = function(cb) {
|
BlockDb.prototype.close = function(cb) {
|
||||||
db.close(cb);
|
db.close(cb);
|
||||||
|
@ -167,10 +161,9 @@ function spec(b) {
|
||||||
};
|
};
|
||||||
|
|
||||||
BlockDb.prototype.getPoolInfo = function(tx, cb) {
|
BlockDb.prototype.getPoolInfo = function(tx, cb) {
|
||||||
var tr = new TransactionDb();
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
tr._getInfo(tx, function(e, a) {
|
tDb._getInfo(tx, function(e, a) {
|
||||||
if (e) return cb(false);
|
if (e) return cb(false);
|
||||||
|
|
||||||
if (a.isCoinBase) {
|
if (a.isCoinBase) {
|
||||||
|
@ -227,8 +220,4 @@ function spec(b) {
|
||||||
return Rpc.blockIndex(height,cb);
|
return Rpc.blockIndex(height,cb);
|
||||||
};
|
};
|
||||||
|
|
||||||
return BlockDb;
|
module.exports = require('soop')(BlockDb);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
var Block = require('bitcore/Block'),
|
||||||
require('classtool');
|
|
||||||
|
|
||||||
function spec() {
|
|
||||||
|
|
||||||
var Block = require('bitcore/Block').class(),
|
|
||||||
networks = require('bitcore/networks'),
|
networks = require('bitcore/networks'),
|
||||||
Parser = require('bitcore/util/BinaryParser').class(),
|
Parser = require('bitcore/util/BinaryParser'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
Buffer = require('buffer').Buffer,
|
Buffer = require('buffer').Buffer,
|
||||||
glob = require('glob'),
|
glob = require('glob'),
|
||||||
|
@ -156,7 +151,5 @@ function spec() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return BlockExtractor;
|
module.exports = require('soop')(BlockExtractor);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
require('classtool');
|
var imports = require('soop').imports();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function spec() {
|
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var RpcClient = require('bitcore/RpcClient').class();
|
|
||||||
var Script = require('bitcore/Script').class();
|
|
||||||
var networks = require('bitcore/networks');
|
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var config = require('../config/config');
|
var RpcClient = require('bitcore/RpcClient');
|
||||||
var Sync = require('./Sync').class();
|
var Script = require('bitcore/Script');
|
||||||
|
var networks = require('bitcore/networks');
|
||||||
|
var config = imports.config || require('../config/config');
|
||||||
|
var Sync = require('./Sync');
|
||||||
var sockets = require('../app/controllers/socket.js');
|
var sockets = require('../app/controllers/socket.js');
|
||||||
var BlockExtractor = require('./BlockExtractor.js').class();
|
var BlockExtractor = require('./BlockExtractor.js');
|
||||||
var buffertools = require('buffertools');
|
var buffertools = require('buffertools');
|
||||||
|
|
||||||
// var bitcoreUtil = require('bitcore/util/util');
|
// var bitcoreUtil = require('bitcore/util/util');
|
||||||
|
@ -238,32 +234,22 @@ function spec() {
|
||||||
function(err) {
|
function(err) {
|
||||||
if (err) return next(err);
|
if (err) return next(err);
|
||||||
var ret = false;
|
var ret = false;
|
||||||
if ( self.blockChainHeight === blockInfo.height || // Still the tip
|
if ( self.blockChainHeight === blockInfo.height ||
|
||||||
blockInfo.confirmations > 0) { // Or is confirmed
|
blockInfo.confirmations > 0) {
|
||||||
ret = false;
|
ret = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
oldtip = tip;
|
oldtip = tip;
|
||||||
tip = blockInfo.previousblockhash;
|
tip = blockInfo.previousblockhash;
|
||||||
p('Previous TIP is now orphan.');
|
assert(tip);
|
||||||
if (tip) {
|
p('Previous TIP is now orphan. Back to:' + tip);
|
||||||
p('\tGoing back to:' + tip);
|
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
p('\tNo able to recover last tip. A Total resync is needed.');
|
|
||||||
tip = self.genesis;
|
|
||||||
self.needResync = 1;
|
|
||||||
ret = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
},
|
},
|
||||||
function(err) {
|
function(err) {
|
||||||
self.startBlock = tip;
|
self.startBlock = tip;
|
||||||
if (!self.needResync) {
|
|
||||||
p('Resuming sync from block:'+tip);
|
p('Resuming sync from block:'+tip);
|
||||||
}
|
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -364,22 +350,15 @@ function spec() {
|
||||||
function(s_c) {
|
function(s_c) {
|
||||||
self.checkNetworkSettings(s_c);
|
self.checkNetworkSettings(s_c);
|
||||||
},
|
},
|
||||||
|
function(s_c) {
|
||||||
|
self.updateConnectedCountDB(s_c);
|
||||||
|
},
|
||||||
function(s_c) {
|
function(s_c) {
|
||||||
self.updateBlockChainHeight(s_c);
|
self.updateBlockChainHeight(s_c);
|
||||||
},
|
},
|
||||||
function(s_c) {
|
function(s_c) {
|
||||||
self.updateStartBlock(s_c);
|
self.updateStartBlock(s_c);
|
||||||
},
|
},
|
||||||
function(s_c) {
|
|
||||||
if (self.needResync) {
|
|
||||||
self.needResync=0;
|
|
||||||
self.sync.destroy(s_c);
|
|
||||||
}
|
|
||||||
else s_c();
|
|
||||||
},
|
|
||||||
function(s_c) {
|
|
||||||
self.updateConnectedCountDB(s_c);
|
|
||||||
},
|
|
||||||
function(s_c) {
|
function(s_c) {
|
||||||
self.prepareFileSync(opts, s_c);
|
self.prepareFileSync(opts, s_c);
|
||||||
},
|
},
|
||||||
|
@ -440,7 +419,5 @@ function spec() {
|
||||||
}, next);
|
}, next);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
return HistoricSync;
|
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
module.exports = require('soop')(HistoricSync);
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
require('classtool');
|
|
||||||
|
|
||||||
function spec() {
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var bitcoreUtil = require('bitcore/util/util');
|
var bitcoreUtil = require('bitcore/util/util');
|
||||||
var Sync = require('./Sync').class();
|
var Sync = require('./Sync');
|
||||||
var Peer = require('bitcore/Peer').class();
|
var Peer = require('bitcore/Peer');
|
||||||
var config = require('../config/config');
|
var config = require('../config/config');
|
||||||
var networks = require('bitcore/networks');
|
var networks = require('bitcore/networks');
|
||||||
|
|
||||||
|
@ -15,7 +12,7 @@ function spec() {
|
||||||
this.connected = false;
|
this.connected = false;
|
||||||
this.peerdb = undefined;
|
this.peerdb = undefined;
|
||||||
this.allowReorgs = false;
|
this.allowReorgs = false;
|
||||||
this.PeerManager = require('bitcore/PeerManager').createClass({
|
this.PeerManager = require('soop').load('../node_modules/bitcore/PeerManager',{
|
||||||
network: (config.network === 'testnet' ? networks.testnet : networks.livenet)
|
network: (config.network === 'testnet' ? networks.testnet : networks.livenet)
|
||||||
});
|
});
|
||||||
this.peerman = new this.PeerManager();
|
this.peerman = new this.PeerManager();
|
||||||
|
@ -121,7 +118,4 @@ function spec() {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
return PeerSync;
|
module.exports = require('soop')(PeerSync);
|
||||||
|
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
require('classtool');
|
var imports = require('soop').imports();
|
||||||
|
|
||||||
function spec(b) {
|
|
||||||
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var buffertools = require('buffertools');
|
var buffertools = require('buffertools');
|
||||||
var db = b.db || JSON.parse( fs.readFileSync(b.poolMatchFile || './poolMatchFile.json'));
|
var db = imports.db || JSON.parse( fs.readFileSync(imports.poolMatchFile || './poolMatchFile.json'));
|
||||||
|
|
||||||
var PoolMatch = function() {
|
var PoolMatch = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -32,7 +29,4 @@ function spec(b) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return PoolMatch;
|
module.exports = require('soop')(PoolMatch);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
|
14
lib/Rpc.js
14
lib/Rpc.js
|
@ -1,16 +1,14 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
require('classtool');
|
var imports = require('soop').imports();
|
||||||
|
|
||||||
|
var RpcClient = require('bitcore/RpcClient'),
|
||||||
function spec(b) {
|
BitcoreBlock = require('bitcore/Block'),
|
||||||
var RpcClient = require('bitcore/RpcClient').class(),
|
|
||||||
BitcoreBlock = require('bitcore/Block').class(),
|
|
||||||
bitcoreUtil = require('bitcore/util/util'),
|
bitcoreUtil = require('bitcore/util/util'),
|
||||||
util = require('util'),
|
util = require('util'),
|
||||||
config = require('../config/config');
|
config = require('../config/config');
|
||||||
|
|
||||||
var bitcoreRpc = b.bitcoreRpc || new RpcClient(config.bitcoind);
|
var bitcoreRpc = imports.bitcoreRpc || new RpcClient(config.bitcoind);
|
||||||
|
|
||||||
function Rpc() {
|
function Rpc() {
|
||||||
}
|
}
|
||||||
|
@ -107,8 +105,6 @@ function spec(b) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return Rpc;
|
module.exports = require('soop')(Rpc);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
17
lib/Sync.js
17
lib/Sync.js
|
@ -1,22 +1,17 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
require('classtool');
|
var imports = require('soop').imports();
|
||||||
|
|
||||||
|
|
||||||
function spec() {
|
|
||||||
var sockets = require('../app/controllers/socket.js');
|
var sockets = require('../app/controllers/socket.js');
|
||||||
var BlockDb = require('./BlockDb').class();
|
|
||||||
|
|
||||||
var TransactionDb = require('./TransactionDb').class();
|
var config = imports.config || require('../config/config');
|
||||||
var config = require('../config/config');
|
|
||||||
var networks = require('bitcore/networks');
|
var networks = require('bitcore/networks');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
|
|
||||||
|
|
||||||
function Sync(opts) {
|
function Sync(opts) {
|
||||||
this.opts = opts || {};
|
this.opts = opts || {};
|
||||||
this.bDb = new BlockDb(opts);
|
this.bDb = require('./BlockDb').default();
|
||||||
this.txDb = new TransactionDb(opts);
|
this.txDb = require('./TransactionDb').default();
|
||||||
this.txDb.on('tx_for_address', this.handleTxForAddress.bind(this));
|
this.txDb.on('tx_for_address', this.handleTxForAddress.bind(this));
|
||||||
this.txDb.on('new_tx', this.handleNewTx.bind(this));
|
this.txDb.on('new_tx', this.handleNewTx.bind(this));
|
||||||
this.bDb.on('new_block', this.handleNewBlock.bind(this));
|
this.bDb.on('new_block', this.handleNewBlock.bind(this));
|
||||||
|
@ -284,6 +279,4 @@ function spec() {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
return Sync;
|
module.exports = require('soop')(Sync);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
require('classtool');
|
var imports = require('soop').imports();
|
||||||
|
|
||||||
|
var ThisParent = imports.parent || require('events').EventEmitter;
|
||||||
function spec(b) {
|
|
||||||
|
|
||||||
var superclass = b.superclass || require('events').EventEmitter;
|
|
||||||
// blockHash -> txid mapping
|
// blockHash -> txid mapping
|
||||||
var IN_BLK_PREFIX = 'txb-'; //txb-<txid>-<block> => 1/0 (connected or not)
|
var IN_BLK_PREFIX = 'txb-'; //txb-<txid>-<block> => 1/0 (connected or not)
|
||||||
|
|
||||||
|
@ -28,24 +25,24 @@ function spec(b) {
|
||||||
/**
|
/**
|
||||||
* Module dependencies.
|
* Module dependencies.
|
||||||
*/
|
*/
|
||||||
var Rpc = b.rpc || require('./Rpc').class(),
|
var Rpc = imports.rpc || require('./Rpc'),
|
||||||
util = require('bitcore/util/util'),
|
util = require('bitcore/util/util'),
|
||||||
levelup = require('levelup'),
|
levelup = require('levelup'),
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
config = require('../config/config'),
|
config = require('../config/config'),
|
||||||
assert = require('assert');
|
assert = require('assert');
|
||||||
var db = b.db || levelup(config.leveldb + '/txs',{maxOpenFiles: MAX_OPEN_FILES} );
|
var db = imports.db || levelup(config.leveldb + '/txs',{maxOpenFiles: MAX_OPEN_FILES} );
|
||||||
var Script = require('bitcore/Script').class();
|
var Script = require('bitcore/Script');
|
||||||
// This is 0.1.2 = > c++ version of base57-native
|
// This is 0.1.2 = > c++ version of base57-native
|
||||||
var base58 = require('base58-native').base58Check;
|
var base58 = require('base58-native').base58Check;
|
||||||
var encodedData = require('bitcore/util/EncodedData').class({
|
var encodedData = require('soop').load('bitcore/util/EncodedData',{
|
||||||
base58: base58
|
base58: base58
|
||||||
});
|
});
|
||||||
var versionedData = require('bitcore/util/VersionedData').class({
|
var versionedData= require('soop').load('bitcore/util/VersionedData',{
|
||||||
superclass: encodedData
|
parent: encodedData
|
||||||
});
|
});
|
||||||
var Address = require('bitcore/Address').class({
|
var Address = require('soop').load('bitcore/Address',{
|
||||||
superclass: versionedData
|
parent: versionedData
|
||||||
});
|
});
|
||||||
var bitutil = require('bitcore/util/util');
|
var bitutil = require('bitcore/util/util');
|
||||||
var networks = require('bitcore/networks');
|
var networks = require('bitcore/networks');
|
||||||
|
@ -54,7 +51,7 @@ function spec(b) {
|
||||||
TransactionDb.super(this, arguments);
|
TransactionDb.super(this, arguments);
|
||||||
this.network = config.network === 'testnet' ? networks.testnet : networks.livenet;
|
this.network = config.network === 'testnet' ? networks.testnet : networks.livenet;
|
||||||
};
|
};
|
||||||
TransactionDb.superclass = superclass;
|
TransactionDb.parent = ThisParent;
|
||||||
|
|
||||||
TransactionDb.prototype.close = function(cb) {
|
TransactionDb.prototype.close = function(cb) {
|
||||||
db.close(cb);
|
db.close(cb);
|
||||||
|
@ -673,6 +670,7 @@ isspent
|
||||||
|
|
||||||
var k = FROM_BLK_PREFIX + hash;
|
var k = FROM_BLK_PREFIX + hash;
|
||||||
var k2 = IN_BLK_PREFIX;
|
var k2 = IN_BLK_PREFIX;
|
||||||
|
// This is slow, but prevent us to create a new block->tx index.
|
||||||
db.createReadStream({
|
db.createReadStream({
|
||||||
start: k,
|
start: k,
|
||||||
end: k + '~'
|
end: k + '~'
|
||||||
|
@ -727,6 +725,4 @@ isspent
|
||||||
return self.createFromArray(b.tx, b.hash, next);
|
return self.createFromArray(b.tx, b.hash, next);
|
||||||
};
|
};
|
||||||
|
|
||||||
return TransactionDb;
|
module.exports = require('soop')(TransactionDb);
|
||||||
}
|
|
||||||
module.defineClass(spec);
|
|
||||||
|
|
18
package.json
18
package.json
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "insight-bitcore-api",
|
"name": "insight-bitcore-api",
|
||||||
"description": "An open-source bitcoin blockchain API. The Insight API provides you with a convenient, powerful and simple way to query and broadcast data on the bitcoin network and build your own services with it.",
|
"description": "An open-source bitcoin blockchain API. The Insight API provides you with a convenient, powerful and simple way to query and broadcast data on the bitcoin network and build your own services with it.",
|
||||||
"version": "0.1.3",
|
"version": "0.1.4",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Ryan X Charles",
|
"name": "Ryan X Charles",
|
||||||
"email": "ryan@bitpay.com"
|
"email": "ryan@bitpay.com"
|
||||||
|
@ -36,13 +36,11 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"insight",
|
"insight",
|
||||||
"secret",
|
"insight api",
|
||||||
"enigma",
|
"blockchain",
|
||||||
"riddle",
|
"bitcoin api",
|
||||||
"mystification",
|
"blockchain api",
|
||||||
"puzzle",
|
"json",
|
||||||
"conundrum",
|
|
||||||
"api",
|
|
||||||
"bitcore"
|
"bitcore"
|
||||||
],
|
],
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -52,12 +50,13 @@
|
||||||
"start": "node node_modules/grunt-cli/bin/grunt"
|
"start": "node node_modules/grunt-cli/bin/grunt"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"bitcore": "~0.1.6",
|
||||||
"base58-native": "0.1.2",
|
"base58-native": "0.1.2",
|
||||||
"async": "*",
|
"async": "*",
|
||||||
"leveldown": "*",
|
"leveldown": "*",
|
||||||
"levelup": "*",
|
"levelup": "*",
|
||||||
"glob": "*",
|
"glob": "*",
|
||||||
"classtool": "*",
|
"soop": "git://github.com/gasteve/node-soop.git",
|
||||||
"commander": "*",
|
"commander": "*",
|
||||||
"bignum": "*",
|
"bignum": "*",
|
||||||
"express": "~3.4.7",
|
"express": "~3.4.7",
|
||||||
|
@ -67,7 +66,6 @@
|
||||||
"moment": "~2.5.0",
|
"moment": "~2.5.0",
|
||||||
"sinon": "~1.7.3",
|
"sinon": "~1.7.3",
|
||||||
"chai": "~1.8.1",
|
"chai": "~1.8.1",
|
||||||
"bitcore": "git://github.com/bitpay/bitcore.git",
|
|
||||||
"bufferput": "git://github.com/bitpay/node-bufferput.git",
|
"bufferput": "git://github.com/bitpay/node-bufferput.git",
|
||||||
"xmlhttprequest": "~1.6.0"
|
"xmlhttprequest": "~1.6.0"
|
||||||
},
|
},
|
||||||
|
|
|
@ -8,7 +8,7 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
var assert = require('assert'),
|
var assert = require('assert'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
util = require('util'),
|
util = require('util'),
|
||||||
TransactionDb = require('../../lib/TransactionDb').class();
|
TransactionDb = require('../../lib/TransactionDb').default();
|
||||||
|
|
||||||
var txItemsValid = JSON.parse(fs.readFileSync('test/integration/txitems.json'));
|
var txItemsValid = JSON.parse(fs.readFileSync('test/integration/txitems.json'));
|
||||||
var txDb;
|
var txDb;
|
||||||
|
@ -16,7 +16,7 @@ var txDb;
|
||||||
describe('TransactionDb fromIdWithInfo', function(){
|
describe('TransactionDb fromIdWithInfo', function(){
|
||||||
|
|
||||||
before(function(c) {
|
before(function(c) {
|
||||||
txDb = new TransactionDb();
|
txDb = TransactionDb;
|
||||||
return c();
|
return c();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ describe('TransactionDb fromIdWithInfo', function(){
|
||||||
describe('TransactionDb Outs', function(){
|
describe('TransactionDb Outs', function(){
|
||||||
|
|
||||||
before(function(c) {
|
before(function(c) {
|
||||||
txDb = new TransactionDb();
|
txDb = TransactionDb;
|
||||||
return c();
|
return c();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ var
|
||||||
util = require('util'),
|
util = require('util'),
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
config = require('../../config/config'),
|
config = require('../../config/config'),
|
||||||
TransactionDb = require('../../lib/TransactionDb').class();
|
TransactionDb = require('../../lib/TransactionDb').default();
|
||||||
|
|
||||||
var spentValid = JSON.parse(fs.readFileSync('test/integration/spent.json'));
|
var spentValid = JSON.parse(fs.readFileSync('test/integration/spent.json'));
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ var txDb;
|
||||||
describe('TransactionDb Expenses', function(){
|
describe('TransactionDb Expenses', function(){
|
||||||
|
|
||||||
before(function(c) {
|
before(function(c) {
|
||||||
txDb = new TransactionDb();
|
txDb = TransactionDb;
|
||||||
|
|
||||||
// lets spend!
|
// lets spend!
|
||||||
async.each(Object.keys(spentValid),
|
async.each(Object.keys(spentValid),
|
||||||
|
|
|
@ -6,8 +6,8 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
var assert = require('assert'),
|
var assert = require('assert'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
Address = require('../../app/models/Address').class(),
|
Address = require('../../app/models/Address'),
|
||||||
TransactionDb = require('../../lib/TransactionDb').class(),
|
TransactionDb = require('../../lib/TransactionDb').default(),
|
||||||
addrValid = JSON.parse(fs.readFileSync('test/integration/addr.json')),
|
addrValid = JSON.parse(fs.readFileSync('test/integration/addr.json')),
|
||||||
utxoValid = JSON.parse(fs.readFileSync('test/integration/utxo.json'));
|
utxoValid = JSON.parse(fs.readFileSync('test/integration/utxo.json'));
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ var txDb;
|
||||||
describe('Address balances', function() {
|
describe('Address balances', function() {
|
||||||
|
|
||||||
before(function(c) {
|
before(function(c) {
|
||||||
txDb = new TransactionDb();
|
txDb = TransactionDb;
|
||||||
return c();
|
return c();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -10,14 +10,14 @@ var TESTING_BLOCK = '000000000185678d3d7ecc9962c96418174431f93fe20bf216d55652724
|
||||||
var
|
var
|
||||||
assert = require('assert'),
|
assert = require('assert'),
|
||||||
// config = require('../../config/config'),
|
// config = require('../../config/config'),
|
||||||
BlockDb = require('../../lib/BlockDb').class();
|
BlockDb = require('../../lib/BlockDb').default();
|
||||||
|
|
||||||
var bDb;
|
var bDb;
|
||||||
|
|
||||||
describe('BlockDb fromHashWithInfo', function() {
|
describe('BlockDb fromHashWithInfo', function() {
|
||||||
|
|
||||||
before(function(c) {
|
before(function(c) {
|
||||||
bDb = new BlockDb();
|
bDb = BlockDb;
|
||||||
return c();
|
return c();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
var assert = require('assert'),
|
var assert = require('assert'),
|
||||||
config = require('../../config/config'),
|
config = require('../../config/config'),
|
||||||
BlockExtractor = require('../../lib/BlockExtractor').class(),
|
BlockExtractor = require('../../lib/BlockExtractor'),
|
||||||
networks = require('bitcore/networks'),
|
networks = require('bitcore/networks'),
|
||||||
util = require('bitcore/util/util');
|
util = require('bitcore/util/util');
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ var START_TS = 1;
|
||||||
var END_TS = '1296688928~'; // 2/2/2011 23:23PM
|
var END_TS = '1296688928~'; // 2/2/2011 23:23PM
|
||||||
|
|
||||||
var assert = require('assert'),
|
var assert = require('assert'),
|
||||||
BlockDb = require('../../lib/BlockDb').class();
|
BlockDb = require('../../lib/BlockDb').default();
|
||||||
|
|
||||||
var bDb;
|
var bDb;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ describe('BlockDb getBlocksByDate', function(){
|
||||||
|
|
||||||
|
|
||||||
before(function(c) {
|
before(function(c) {
|
||||||
bDb = new BlockDb();
|
bDb = BlockDb;
|
||||||
return c();
|
return c();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var BlockDb = require('../../lib/BlockDb').class();
|
var BlockDb = require('../../lib/BlockDb').default();
|
||||||
var height_needed = 180000;
|
var height_needed = 180000;
|
||||||
var bDb = new BlockDb();
|
var bDb = BlockDb;
|
||||||
|
|
||||||
var expect = require('chai').expect;
|
var expect = require('chai').expect;
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
var assert = require('assert'),
|
var assert = require('assert'),
|
||||||
Status = require('../../app/models/Status').class();
|
Status = require('../../app/models/Status');
|
||||||
|
|
||||||
describe('Status', function(){
|
describe('Status', function(){
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ var chai = require('chai'),
|
||||||
expect = chai.expect,
|
expect = chai.expect,
|
||||||
sinon = require('sinon');
|
sinon = require('sinon');
|
||||||
|
|
||||||
var PeerSync = require('../../lib/PeerSync.js').class();
|
var PeerSync = require('../../lib/PeerSync.js');
|
||||||
describe('PeerSync', function() {
|
describe('PeerSync', function() {
|
||||||
var ps;
|
var ps;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
var PeerSync = require('../lib/PeerSync').class();
|
var PeerSync = require('../lib/PeerSync');
|
||||||
|
|
||||||
var PROGRAM_VERSION = '0.1';
|
var PROGRAM_VERSION = '0.1';
|
||||||
var program = require('commander');
|
var program = require('commander');
|
||||||
|
|
|
@ -7,7 +7,7 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
var SYNC_VERSION = '0.1';
|
var SYNC_VERSION = '0.1';
|
||||||
var program = require('commander');
|
var program = require('commander');
|
||||||
var HistoricSync = require('../lib/HistoricSync').class();
|
var HistoricSync = require('../lib/HistoricSync');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
|
|
||||||
program
|
program
|
||||||
|
|
Loading…
Reference in New Issue