commit
6e8d452174
@ -31,6 +31,15 @@ function main(parentServicesPath, additionalServices) {
|
|||||||
node.cli.main(parentServicesPath, additionalServices);
|
node.cli.main(parentServicesPath, additionalServices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Gracefully Shut Down
|
||||||
|
process.on('SIGTERM', function () {
|
||||||
|
console.log("Shutting down flocore-node")
|
||||||
|
node.stop(function() {
|
||||||
|
console.log("flocore-node successfully stopped!")
|
||||||
|
process.exit(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -201,12 +201,13 @@ function cleanShutdown(_process, node) {
|
|||||||
return _process.exit(1);
|
return _process.exit(1);
|
||||||
}
|
}
|
||||||
log.info('Halted');
|
log.info('Halted');
|
||||||
_process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function exitHandler(options, _process, node, err) {
|
function exitHandler(options, _process, node, err) {
|
||||||
if (err) {
|
// Handle and log errors other than SIGINT shutdown
|
||||||
|
if (err && err !== "SIGINT") {
|
||||||
log.error('uncaught exception:', err);
|
log.error('uncaught exception:', err);
|
||||||
if(err.stack) {
|
if(err.stack) {
|
||||||
log.error(err.stack);
|
log.error(err.stack);
|
||||||
@ -218,6 +219,7 @@ function exitHandler(options, _process, node, err) {
|
|||||||
_process.exit(-1);
|
_process.exit(-1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// Handle SIGINT (Ctrl+C)
|
||||||
if (options.sigint) {
|
if (options.sigint) {
|
||||||
if (!shuttingDown) {
|
if (!shuttingDown) {
|
||||||
shuttingDown = true;
|
shuttingDown = true;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var Block = require('fcoin').block;
|
var Block = require('fcoin').Block;
|
||||||
// stores -- block header as key, block itself as value (optionally)
|
// stores -- block header as key, block itself as value (optionally)
|
||||||
|
|
||||||
function Encoding(servicePrefix) {
|
function Encoding(servicePrefix) {
|
||||||
|
|||||||
@ -7,7 +7,8 @@ var index = require('../../');
|
|||||||
var log = index.log;
|
var log = index.log;
|
||||||
var utils = require('../../utils');
|
var utils = require('../../utils');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var BN = require('bn.js');
|
// var BN = require('bn.js');
|
||||||
|
var BN = require('bcrypto/lib/bn.js')
|
||||||
var consensus = require('fcoin').consensus;
|
var consensus = require('fcoin').consensus;
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var constants = require('../../constants');
|
var constants = require('../../constants');
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var tx = require('fcoin').tx;
|
var tx = require('fcoin').TX;
|
||||||
|
|
||||||
function Encoding(servicePrefix) {
|
function Encoding(servicePrefix) {
|
||||||
this.servicePrefix = servicePrefix;
|
this.servicePrefix = servicePrefix;
|
||||||
|
|||||||
@ -3,65 +3,50 @@
|
|||||||
var index = require('../../');
|
var index = require('../../');
|
||||||
var log = index.log;
|
var log = index.log;
|
||||||
var bcoin = require('fcoin');
|
var bcoin = require('fcoin');
|
||||||
var bzmq = require('bzmq');
|
// var bzmq = require('bzmq');
|
||||||
|
|
||||||
var Bcoin = function(options) {
|
var Bcoin = function(options) {
|
||||||
this._config = this._getConfig(options);
|
this._config = this._getConfig(options);
|
||||||
};
|
};
|
||||||
|
|
||||||
Bcoin.prototype.start = function(callback) {
|
Bcoin.prototype.start = function(callback) {
|
||||||
var self = this;
|
this._bcoin = new bcoin.FullNode(this._config);
|
||||||
self._bcoin = bcoin.fullnode(self._config);
|
|
||||||
|
|
||||||
bcoin.set(self._config.network || 'main')
|
log.info('Starting fcoin FullNode...');
|
||||||
const walletPlugin = bcoin.wallet.plugin;
|
|
||||||
|
|
||||||
// Make fcoin add the wallet plugin
|
this._bcoin.open().then(() => {
|
||||||
self._bcoin.use(walletPlugin)
|
this._bcoin.connect().then(() => {
|
||||||
// bzmq allows zmq connections to fcoin
|
this._bcoin.startSync();
|
||||||
self._bcoin.use(bzmq)
|
callback();
|
||||||
self._bzmq = self._bcoin.require('zmq')
|
});
|
||||||
|
|
||||||
log.info('Starting Fcoin full node...');
|
|
||||||
|
|
||||||
self._bcoin.open().then(function() {
|
|
||||||
|
|
||||||
// Startup the wallet plugin
|
|
||||||
self._walletdb = self._bcoin.require('walletdb');
|
|
||||||
self._walletdb.open().then(function() {
|
|
||||||
|
|
||||||
// Continue bcoin startup
|
|
||||||
self._bcoin.connect().then(function() {
|
|
||||||
log.info('Waiting for Fcoin to sync');
|
|
||||||
self._bcoin.startSync();
|
|
||||||
// this will instruct the p2p service to start trying to connect to bcoin right away
|
|
||||||
callback();
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Bcoin.prototype.stop = function() {
|
Bcoin.prototype.stop = function(callback) {
|
||||||
this._bcoin.stopSync();
|
this._bcoin.close().then(() => {
|
||||||
this._bcoin.disconnect();
|
log.info("fcoin shutdown")
|
||||||
this._bcoin.close();
|
callback()
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- privates
|
// --- privates
|
||||||
|
|
||||||
Bcoin.prototype._getConfig = function(options) {
|
Bcoin.prototype._getConfig = function(options) {
|
||||||
var config = {
|
var config = {
|
||||||
db: 'leveldb',
|
|
||||||
checkpoints: true,
|
|
||||||
network: options.network || 'main',
|
network: options.network || 'main',
|
||||||
listen: true,
|
port: options.port,
|
||||||
|
|
||||||
|
logFile: true,
|
||||||
logConsole: true,
|
logConsole: true,
|
||||||
logLevel: 'info',
|
logLevel: 'info',
|
||||||
port: options.port,
|
|
||||||
persistent: true,
|
// indexTx: true,
|
||||||
|
// indexAddress: true,
|
||||||
|
|
||||||
|
checkpoints: true,
|
||||||
|
memory: false,
|
||||||
workers: true,
|
workers: true,
|
||||||
config: true
|
listen: true
|
||||||
};
|
};
|
||||||
if (options.prefix) {
|
if (options.prefix) {
|
||||||
config.prefix = options.prefix;
|
config.prefix = options.prefix;
|
||||||
|
|||||||
@ -8,7 +8,8 @@ var log = index.log;
|
|||||||
var BaseService = require('../../service');
|
var BaseService = require('../../service');
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var Bcoin = require('./bcoin');
|
var Bcoin = require('./bcoin');
|
||||||
var BcoinTx = require('fcoin').tx;
|
var BcoinBlock = require('fcoin').Block;
|
||||||
|
var BcoinTx = require('fcoin').TX;
|
||||||
var Networks = require('flocore-lib').Networks;
|
var Networks = require('flocore-lib').Networks;
|
||||||
var BitcoreRPC = require('bitcoind-rpc');
|
var BitcoreRPC = require('bitcoind-rpc');
|
||||||
var LRU = require('lru-cache');
|
var LRU = require('lru-cache');
|
||||||
@ -89,7 +90,7 @@ P2P.prototype.getP2PBlock = function(opts, callback) {
|
|||||||
|
|
||||||
self.once(opts.blockHash, callback);
|
self.once(opts.blockHash, callback);
|
||||||
|
|
||||||
peer.sendMessage(self.messages.GetBlocks(blockFilter));
|
peer.sendMessage(self.messages.GetBlocks(blockFilter, { Block: BcoinBlock }));
|
||||||
};
|
};
|
||||||
|
|
||||||
P2P.prototype.getHeaders = function(filter) {
|
P2P.prototype.getHeaders = function(filter) {
|
||||||
@ -277,7 +278,7 @@ P2P.prototype._initP2P = function() {
|
|||||||
if (this.node.network === 'regtest') {
|
if (this.node.network === 'regtest') {
|
||||||
Networks.enableRegtest();
|
Networks.enableRegtest();
|
||||||
}
|
}
|
||||||
this.messages = new p2p.Messages({ network: Networks.get(this.node.network), Transaction: BcoinTx });
|
this.messages = new p2p.Messages({ network: Networks.get(this.node.network), Transaction: BcoinTx, Block: BcoinBlock });
|
||||||
this._peerHeights = [];
|
this._peerHeights = [];
|
||||||
this._peers = [];
|
this._peers = [];
|
||||||
this._peerIndex = 0;
|
this._peerIndex = 0;
|
||||||
@ -432,9 +433,6 @@ P2P.prototype._setResourceFilter = function(filter) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
P2P.prototype._startBcoin = function(callback) {
|
P2P.prototype._startBcoin = function(callback) {
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
var network;
|
var network;
|
||||||
var port;
|
var port;
|
||||||
if (['livenet', 'live', 'main', 'mainnet'].indexOf(this.node.network) !== -1) {
|
if (['livenet', 'live', 'main', 'mainnet'].indexOf(this.node.network) !== -1) {
|
||||||
@ -448,13 +446,13 @@ P2P.prototype._startBcoin = function(callback) {
|
|||||||
port = this._configPeers[0].port || 48444;
|
port = this._configPeers[0].port || 48444;
|
||||||
}
|
}
|
||||||
|
|
||||||
self._bcoin = new Bcoin({
|
this._bcoin = new Bcoin({
|
||||||
network: network,
|
network: network,
|
||||||
prefix: self.node.datadir,
|
prefix: this.node.datadir,
|
||||||
port: port
|
port: port
|
||||||
});
|
});
|
||||||
|
|
||||||
self._bcoin.start(callback);
|
this._bcoin.start(callback);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var Tx = require('fcoin').tx;
|
var Tx = require('fcoin').TX;
|
||||||
|
|
||||||
function Encoding(servicePrefix) {
|
function Encoding(servicePrefix) {
|
||||||
this.servicePrefix = servicePrefix;
|
this.servicePrefix = servicePrefix;
|
||||||
|
|||||||
3830
package-lock.json
generated
3830
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@ -5,7 +5,7 @@
|
|||||||
"node": ">=8.0.0"
|
"node": ">=8.0.0"
|
||||||
},
|
},
|
||||||
"author": "BitPay <dev@bitpay.com>",
|
"author": "BitPay <dev@bitpay.com>",
|
||||||
"version": "5.0.1",
|
"version": "5.0.2",
|
||||||
"main": "./index.js",
|
"main": "./index.js",
|
||||||
"repository": "git://github.com/oipwg/flocore-node.git",
|
"repository": "git://github.com/oipwg/flocore-node.git",
|
||||||
"homepage": "https://github.com/oipwg/flocore-node",
|
"homepage": "https://github.com/oipwg/flocore-node",
|
||||||
@ -32,23 +32,22 @@
|
|||||||
"bitcoind-rpc": "^0.7.2",
|
"bitcoind-rpc": "^0.7.2",
|
||||||
"bn.js": "^4.11.8",
|
"bn.js": "^4.11.8",
|
||||||
"body-parser": "^1.13.3",
|
"body-parser": "^1.13.3",
|
||||||
"bzmq": "^0.1.2",
|
|
||||||
"colors": "^1.1.2",
|
"colors": "^1.1.2",
|
||||||
"commander": "^2.8.1",
|
"commander": "^2.8.1",
|
||||||
"errno": "^0.1.4",
|
"errno": "^0.1.4",
|
||||||
"express": "^4.13.3",
|
"express": "^4.13.3",
|
||||||
"fcoin": "1.0.1",
|
"fcoin": "^1.1.0",
|
||||||
"flocore-lib": "0.15.1",
|
"flocore-lib": "^0.15.2",
|
||||||
"flocore-p2p": "5.0.0-beta.6",
|
"flocore-message": "^1.0.7",
|
||||||
|
"flocore-p2p": "^5.0.0-beta.8",
|
||||||
"florincoind-rpc": "0.7.1",
|
"florincoind-rpc": "0.7.1",
|
||||||
"flosight-api": "^5.0.0-beta.68",
|
"flosight-api": "^5.0.0-beta.73",
|
||||||
"flosight-ui": "^5.0.0-beta.72",
|
"flosight-ui": "^5.0.0-beta.72",
|
||||||
"leveldown": "^2.0.0",
|
"leveldown": "^2.0.0",
|
||||||
"levelup": "^2.0.0",
|
"levelup": "^2.0.0",
|
||||||
"liftoff": "^2.2.0",
|
"liftoff": "^2.2.0",
|
||||||
"lodash": "^4.17.4",
|
"lodash": "^4.17.12",
|
||||||
"lru-cache": "^4.1.1",
|
"lru-cache": "^4.1.1",
|
||||||
"memwatch-next": "^0.3.0",
|
|
||||||
"mkdirp": "0.5.0",
|
"mkdirp": "0.5.0",
|
||||||
"path-is-absolute": "^1.0.0",
|
"path-is-absolute": "^1.0.0",
|
||||||
"socket.io": "^1.4.5",
|
"socket.io": "^1.4.5",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user