reindex option for sync
This commit is contained in:
parent
89657e971e
commit
8a1aa6b8fd
|
@ -36,6 +36,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"classtool": "*",
|
"classtool": "*",
|
||||||
|
"commander": "*",
|
||||||
"express": "~3.4.7",
|
"express": "~3.4.7",
|
||||||
"jade": "~1.0.2",
|
"jade": "~1.0.2",
|
||||||
"mongoose": "~3.8.3",
|
"mongoose": "~3.8.3",
|
||||||
|
|
69
util/sync.js
69
util/sync.js
|
@ -1,8 +1,11 @@
|
||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
|
||||||
|
|
||||||
require('buffertools').extend();
|
require('buffertools').extend();
|
||||||
|
|
||||||
|
var SYNC_VERSION = '0.1';
|
||||||
|
var program = require('commander');
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var RpcClient = require('../node_modules/bitcore/RpcClient').class();
|
var RpcClient = require('../node_modules/bitcore/RpcClient').class();
|
||||||
var networks = require('../node_modules/bitcore/networks');
|
var networks = require('../node_modules/bitcore/networks');
|
||||||
|
@ -11,10 +14,37 @@ var Block = require('../app/models/Block');
|
||||||
var config = require('../config/config');
|
var config = require('../config/config');
|
||||||
var mongoose = require('mongoose');
|
var mongoose = require('mongoose');
|
||||||
|
|
||||||
var networkName = process.argv[2] || 'testnet';
|
program
|
||||||
|
.version(SYNC_VERSION)
|
||||||
|
.option('-N --network [livenet]', 'Set bitcoin network [livenet]', 'livenet')
|
||||||
|
.option('-R --reindex', 'Force reindexing', '0')
|
||||||
|
.parse(process.argv);
|
||||||
|
|
||||||
|
var networkName = program.network;
|
||||||
var network = networkName == 'testnet' ? networks.testnet : networks.livenet;
|
var network = networkName == 'testnet' ? networks.testnet : networks.livenet;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mongoose.connect(config.db);
|
||||||
|
var db = mongoose.connection;
|
||||||
|
var rpc = new RpcClient(config.bitcoind);
|
||||||
|
|
||||||
|
|
||||||
|
db.on('error', console.error.bind(console, 'connection error:'));
|
||||||
|
|
||||||
|
db.once('open', function callback () {
|
||||||
|
|
||||||
|
syncBlocks(network, program.reindex, function(err) {
|
||||||
|
if (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
mongoose.connection.close();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function getNextBlock(blockHash,cb) {
|
function getNextBlock(blockHash,cb) {
|
||||||
|
|
||||||
if ( !blockHash ) {
|
if ( !blockHash ) {
|
||||||
|
@ -47,43 +77,26 @@ function getNextBlock(blockHash,cb) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncBlocks(network, cb) {
|
function syncBlocks(network, reindex, cb) {
|
||||||
|
|
||||||
|
var genesisHash = network.genesisBlock.hash.reverse().toString('hex');
|
||||||
|
|
||||||
|
if (reindex)
|
||||||
|
return getNextBlock(genesisHash, cb);
|
||||||
|
|
||||||
|
|
||||||
Block.findOne({}, {}, { sort: { 'confirmations' : 1 } }, function(err, block) {
|
Block.findOne({}, {}, { sort: { 'confirmations' : 1 } }, function(err, block) {
|
||||||
if (err) {
|
if (err) return cb(err);
|
||||||
return cb(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var nextHash =
|
var nextHash =
|
||||||
block && block.hash
|
block && block.hash
|
||||||
? block.hash
|
? block.hash
|
||||||
: network.genesisBlock.hash.reverse().toString('hex')
|
: genesisHash
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
console.log('Starting at hash: ' + nextHash);
|
console.log('Starting at hash: ' + nextHash);
|
||||||
getNextBlock(nextHash, cb);
|
return getNextBlock(nextHash, cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mongoose.connect(config.db);
|
|
||||||
|
|
||||||
var db = mongoose.connection;
|
|
||||||
var rpc = new RpcClient(config.bitcoind);
|
|
||||||
|
|
||||||
|
|
||||||
db.on('error', console.error.bind(console, 'connection error:'));
|
|
||||||
db.once('open', function callback () {
|
|
||||||
syncBlocks(network, function(err) {
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
mongoose.connection.close();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue