Merge pull request #4 from oipwg/update-fcoin

Update fcoin to 1.1.0
This commit is contained in:
Sky Young 2019-07-25 10:53:23 -06:00 committed by GitHub
commit 6e8d452174
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1687 additions and 2259 deletions

View File

@ -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)
})
})
}); });
} }

View File

@ -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;

View File

@ -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) {

View File

@ -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');

View File

@ -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;

View File

@ -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;

View File

@ -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);
}; };

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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",