Socket
Socket
Sign inDemoInstall

insight-api

Package Overview
Dependencies
Maintainers
4
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

insight-api - npm Package Compare versions

Comparing version 5.0.0-beta.39 to 5.0.0-beta.40

regtest/subscriptions.js

2

lib/blocks.js

@@ -79,3 +79,3 @@ 'use strict';

if (!block) {
return self.common.handleErrors(null, res);
return self.common.handleErrors(new Error('block not in index'), res);
}

@@ -82,0 +82,0 @@

@@ -103,7 +103,7 @@ 'use strict';

this._bus.on('p2p/transaction', this.transactionEventHandler.bind(this));
this._bus.subscribe('p2p/transaction');
this._bus.on('mempool/transaction', this.transactionEventHandler.bind(this));
this._bus.subscribe('mempool/transaction');
this._bus.on('p2p/block', this.blockEventHandler.bind(this));
this._bus.subscribe('p2p/block');
this._bus.on('block/block', this.blockEventHandler.bind(this));
this._bus.subscribe('block/block');

@@ -110,0 +110,0 @@ callback();

{
"name": "insight-api",
"description": "A Bitcoin blockchain REST and web socket API service for Bitcore Node.",
"version": "5.0.0-beta.39",
"version": "5.0.0-beta.40",
"repository": "git://github.com/bitpay/insight-api.git",

@@ -6,0 +6,0 @@ "bugs": {

@@ -11,8 +11,8 @@ 'use strict';

var http = require('http');
var bitcore = require('bitcore-lib');
var exec = require('child_process').exec;
var bitcore = require('bitcore-lib');
var Block = bitcore.Block;
var rpc1Address;
var rpc2Address;
var tx1;
var tx2;
var block;
var blocksGenerated = 0;

@@ -28,8 +28,8 @@ var rpcConfig = {

var rpc1 = new RPC(rpcConfig);
rpcConfig.port++;
var rpc2 = new RPC(rpcConfig);
var rpc = new RPC(rpcConfig);
var debug = true;
var bitcoreDataDir = '/tmp/bitcore';
var bitcoinDataDirs = ['/tmp/bitcoin1', '/tmp/bitcoin2'];
var bitcoinDir = '/tmp/bitcoin';
var bitcoinDataDirs = [ bitcoinDir ];
var blocks= [];

@@ -44,3 +44,3 @@ var bitcoin = {

rpcpassword: 'localtest',
//printtoconsole: 1
//printtoconsole: 1,
rpcport: 58332,

@@ -81,2 +81,5 @@ },

'routePrefix': 'api'
},
'block': {
'readAheadBlockCount': 1
}

@@ -93,3 +96,3 @@ }

datadir: bitcoreDataDir,
exec: 'bitcored', //if this isn't on your PATH, then provide the absolute path, e.g. /usr/local/bin/bitcored
exec: 'bitcored', //if this isn't on your PATH, then provide the absolute path, e.g. /usr/local/bin/bitcored
args: ['start'],

@@ -99,20 +102,78 @@ process: null

var startBitcoind = function(count, callback) {
var request = function(httpOpts, callback) {
var listenCount = 0;
async.timesSeries(count, function(n, next) {
var request = http.request(httpOpts, function(res) {
var datadir = bitcoinDataDirs.shift();
if (res.statusCode !== 200 && res.statusCode !== 201) {
return callback('Error from bitcore-node webserver: ' + res.statusCode);
}
bitcoin.datadir = datadir;
bitcoin.args.datadir = datadir;
var resError;
var resData = '';
if (listenCount++ > 0) {
bitcoin.args.listen = 0;
bitcoin.args.rpcport++;
bitcoin.args.connect = '127.0.0.1';
res.on('error', function(e) {
resError = e;
});
res.on('data', function(data) {
resData += data;
});
res.on('end', function() {
if (resError) {
return callback(resError);
}
var data = JSON.parse(resData);
callback(null, data);
});
});
request.on('error', function(err) {
callback(err);
});
if (httpOpts.body) {
request.write(httpOpts.body);
} else {
request.write('');
}
request.end();
};
var waitForBlocksGenerated = function(callback) {
var httpOpts = {
hostname: 'localhost',
port: 53001,
path: '/api/status',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
rimraf(datadir, function(err) {
async.retry({ interval: 1000, times: 100 }, function(next) {
request(httpOpts, function(err, data) {
if (err) {
return next(err);
}
if (data.info.blocks !== blocksGenerated) {
return next(data);
}
next();
});
}, callback);
};
var resetDirs = function(dirs, callback) {
async.each(dirs, function(dir, next) {
rimraf(dir, function(err) {
if(err) {

@@ -122,57 +183,97 @@ return next(err);

mkdirp(datadir, function(err) {
mkdirp(dir, next);
if(err) {
return next(err);
}
});
var args = bitcoin.args;
var argList = Object.keys(args).map(function(key) {
return '-' + key + '=' + args[key];
});
}, callback);
var bitcoinProcess = spawn(bitcoin.exec, argList, bitcoin.opts);
bitcoin.processes.push(bitcoinProcess);
};
bitcoinProcess.stdout.on('data', function(data) {
var startBitcoind = function(callback) {
if (debug) {
process.stdout.write(data.toString());
}
var args = bitcoin.args;
var argList = Object.keys(args).map(function(key) {
return '-' + key + '=' + args[key];
});
});
var bitcoinProcess = spawn(bitcoin.exec, argList, bitcoin.opts);
bitcoin.processes.push(bitcoinProcess);
bitcoinProcess.stderr.on('data', function(data) {
bitcoinProcess.stdout.on('data', function(data) {
if (debug) {
process.stderr.write(data.toString());
}
if (debug) {
process.stdout.write(data.toString());
}
});
});
next();
bitcoinProcess.stderr.on('data', function(data) {
});
if (debug) {
process.stderr.write(data.toString());
}
});
});
callback();
};
var reportBitcoindsStarted = function() {
var pids = bitcoin.processes.map(function(process) {
return process.pid;
});
console.log(pids.length + ' bitcoind\'s started at pid(s): ' + pids);
};
var startBitcoinds = function(datadirs, callback) {
var listenCount = 0;
async.eachSeries(datadirs, function(datadir, next) {
bitcoin.datadir = datadir;
bitcoin.args.datadir = datadir;
if (listenCount++ > 0) {
bitcoin.args.listen = 0;
bitcoin.args.rpcport = bitcoin.args.rpcport + 1;
bitcoin.args.connect = '127.0.0.1';
}
startBitcoind(next);
}, function(err) {
if (err) {
return callback(err);
}
reportBitcoindsStarted();
callback();
});
};
var waitForBitcoinReady = function(rpc, callback) {
async.retry({ interval: 1000, times: 1000 }, function(next) {
rpc.getInfo(function(err) {
if (err) {
return callback(err);
return next(err);
}
var pids = bitcoin.processes.map(function(process) {
return process.pid;
});
console.log(count + ' bitcoind\'s started at pid(s): ' + pids);
callback();
next();
});
}, function(err) {
if (err) {
return callback(err);
}
setTimeout(callback, 2000);
});
};
var shutdownBitcoind = function(callback) {
bitcoin.processes.forEach(function(process) {
process.kill();
});
var process;
do {
process = bitcoin.processes.shift();
if (process) {
process.kill();
}
} while(process);
setTimeout(callback, 3000);

@@ -188,42 +289,17 @@ };

var writeBitcoreConf = function() {
fs.writeFileSync(bitcore.configFile.file, JSON.stringify(bitcore.configFile.conf));
};
var buildInitialChain = function(callback) {
async.waterfall([
var startBitcore = function(callback) {
var args = bitcore.args;
console.log('Using bitcored from: ');
async.series([
function(next) {
console.log('checking to see if bitcoind\'s are connected to each other.');
rpc1.getinfo(function(err, res) {
if (err || res.result.connections !== 1) {
next(err || new Error('bitcoind\'s not connected to each other.'));
}
next();
});
},
function(next) {
console.log('generating 101 blocks');
rpc1.generate(101, next);
},
function(res, next) {
console.log('getting new address from rpc2');
rpc2.getNewAddress(function(err, res) {
if (err) {
exec('which bitcored', function(err, stdout, stderr) {
if(err) {
return next(err);
}
rpc2Address = res.result;
console.log(rpc2Address);
next(null, rpc2Address);
});
},
function(addr, next) {
rpc1.sendToAddress(rpc2Address, 25, next);
},
function(res, next) {
tx1 = res.result;
console.log('TXID: ' + res.result);
console.log('generating 7 blocks');
rpc1.generate(7, next);
},
function(res, next) {
block = res.result[res.result.length - 1];
rpc2.getBalance(function(err, res) {
console.log(res);
console.log(stdout.toString('hex'), stderr.toString('hex'));
next();

@@ -233,50 +309,2 @@ });

function(next) {
console.log('getting new address from rpc1');
rpc1.getNewAddress(function(err, res) {
if (err) {
return next(err);
}
rpc1Address = res.result;
next(null, rpc1Address);
});
},
function(addr, next) {
rpc2.sendToAddress(rpc1Address, 20, next);
},
function(res, next) {
tx2 = res.result;
console.log('sending from rpc2Address TXID: ', res);
console.log('generating 6 blocks');
rpc2.generate(6, next);
}
], function(err) {
if (err) {
return callback(err);
}
rpc1.getInfo(function(err, res) {
console.log(res);
callback();
});
});
};
var startBitcore = function(callback) {
rimraf(bitcoreDataDir, function(err) {
if(err) {
return callback(err);
}
mkdirp(bitcoreDataDir, function(err) {
if(err) {
return callback(err);
}
fs.writeFileSync(bitcore.configFile.file, JSON.stringify(bitcore.configFile.conf));
var args = bitcore.args;
bitcore.process = spawn(bitcore.exec, args, bitcore.opts);

@@ -299,8 +327,6 @@

callback();
});
waitForBlocksGenerated(next);
}
], callback);
});
};

@@ -316,20 +342,36 @@

function(next) {
startBitcoind(2, next);
console.log('step 0: setting up directories.');
var dirs = bitcoinDataDirs.concat([bitcoreDataDir]);
resetDirs(dirs, function(err) {
if (err) {
return next(err);
}
writeBitcoreConf();
next();
});
},
function(next) {
setTimeout(function() {
buildInitialChain(next);
}, 8000);
startBitcoinds(bitcoinDataDirs, function(err) {
if (err) {
return next(err);
}
waitForBitcoinReady(rpc, function(err) {
if (err) {
return next(err);
}
blocksGenerated += 10;
rpc.generate(10, function(err, res) {
if (err) {
return next(err);
}
blocks = res.result;
next();
});
});
});
},
function(next) {
setTimeout(function() {
startBitcore(next);
}, 6000);
startBitcore(next);
}
], function(err) {
if (err) {
return done(err);
}
setTimeout(done, 2000);
});
], done);

@@ -346,38 +388,23 @@ });

var request = http.request('http://localhost:53001/api/blocks', function(res) {
var httpOpts = {
hostname: 'localhost',
port: 53001,
path: 'http://localhost:53001/api/blocks',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var error;
if (res.statusCode !== 200 && res.statusCode !== 201) {
request(httpOpts, function(err, data) {
if (error) {
return;
}
return done('Error from bitcore-node webserver: ' + res.statusCode);
if(err) {
return done(err);
}
var resError;
var resData = '';
expect(data.length).to.equal(10);
expect(data.blocks.length).to.equal(10);
done();
});
res.on('error', function(e) {
resError = e;
});
res.on('data', function(data) {
resData += data;
});
res.on('end', function() {
if (error) {
return;
}
var data = JSON.parse(resData);
expect(data.length).to.equal(114);
done();
});
});
request.write('');
request.end();
});

@@ -387,38 +414,22 @@

var request = http.request('http://localhost:53001/api/block/' + block, function(res) {
var httpOpts = {
hostname: 'localhost',
port: 53001,
path: 'http://localhost:53001/api/block/' + blocks[0],
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var error;
if (res.statusCode !== 200 && res.statusCode !== 201) {
request(httpOpts, function(err, data) {
if (error) {
return;
}
return done('Error from bitcore-node webserver: ' + res.statusCode);
if(err) {
return done(err);
}
var resError;
var resData = '';
res.on('error', function(e) {
resError = e;
});
res.on('data', function(data) {
resData += data;
});
res.on('end', function() {
if (error) {
return;
}
var data = JSON.parse(resData);
expect(data.hash).to.equal(block);
done();
});
expect(data.hash).to.equal(blocks[0]);
expect(data.height).to.equal(1);
done();
});
request.write('');
request.end();
});

@@ -428,40 +439,22 @@

var request = http.request('http://localhost:53001/api/block-index/' + '108', function(res) {
var httpOpts = {
hostname: 'localhost',
port: 53001,
path: 'http://localhost:53001/api/block-index/7',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var error;
if (res.statusCode !== 200 && res.statusCode !== 201) {
request(httpOpts, function(err, data) {
if (error) {
return;
}
return done('Error from bitcore-node webserver: ' + res.statusCode);
if(err) {
return done(err);
}
var resError;
var resData = '';
res.on('error', function(e) {
resError = e;
});
res.on('data', function(data) {
resData += data;
});
res.on('end', function() {
if (error) {
return;
}
var data = JSON.parse(resData);
console.log(resData);
expect(data.blockHash).to.equal(block);
done();
});
expect(data.blockHash).to.equal(blocks[6]);
done();
});
request.write('');
request.end();
});

@@ -471,45 +464,24 @@

var request = http.request('http://localhost:53001/api/rawblock/' + block, function(res) {
var httpOpts = {
hostname: 'localhost',
port: 53001,
path: 'http://localhost:53001/api/rawblock/' + blocks[4],
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var error;
if (res.statusCode !== 200 && res.statusCode !== 201) {
request(httpOpts, function(err, data) {
if (error) {
return;
}
return done('Error from bitcore-node webserver: ' + res.statusCode);
if(err) {
return done(err);
}
var resError;
var resData = '';
res.on('error', function(e) {
resError = e;
});
res.on('data', function(data) {
resData += data;
});
res.on('end', function() {
if (error) {
return;
}
var data = JSON.parse(resData);
console.log(resData);
expect(data.rawblock).to.not.be.null;
done();
});
var block = new Block(new Buffer(data.rawblock, 'hex'));
expect(block.hash).to.equal(blocks[4]);
done();
});
});
request.write('');
request.end();
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc