Ethereum Network Intelligence API
============
[![Build Status][travis-image]][travis-url] [![dependency status][dep-image]][dep-url]

This is the backend service which runs along with the node for tracking the ethereum network status, fetches information through the JSON-RPC and connects through WebSockets to [eth-netstats](https://github.com/cubedro/eth-netstats) and feed information constantly.

## Prerequisite
* cpp-ethereum
* node
* npm


## Installation on Ubuntu

Fetch and run the build shell. This will install everything you need: latest cpp-ethereum - CLI (develop branch), node.js, npm, pm2.

```
curl https://raw.githubusercontent.com/cubedro/eth-net-intelligence-api/master/bin/build.sh | sh
```

## Configuration

Configure the app modifying [processes.json](/eth-net-intelligence-api/blob/master/processes.json). Note that you have to modify the backup processes.json file located in `./bin/processes.json` (to allow you to set your env vars without being rewritten when updating).

```
"env":
	{
		"NODE_ENV"	: "production", // tell the client we're in production environment
		"RPC_HOST"	: "localhost", // eth JSON-RPC host
		"RPC_PORT"	: "8080", // eth JSON-RPC port
		"ETH_IMPLEMENTATION" : "cpp", // eth implementation: "cpp" or "go"
		"INSTANCE_NAME"	     : "",
		"WS_SERVER"	: "", // path to eth-netstats WebSockets api server
		"WS_SECRET"	: "", // WebSockets api server secret used for login
	}
```

## Run

Run it using pm2:

```
cd ~/bin
pm2 start processes.json
```

## Updating

To update the API client use the following commands:

```
pm2 kill
cd ~/bin/www
git pull
sudo npm update
sudo npm install
cd ..
pm2 start processes.json
```

[travis-image]: https://travis-ci.org/cubedro/eth-net-intelligence-api.svg
[travis-url]: https://travis-ci.org/cubedro/eth-net-intelligence-api
[dep-image]: https://david-dm.org/cubedro/eth-net-intelligence-api.svg
[dep-url]: https://david-dm.org/cubedro/eth-net-intelligence-api