echo

Install prerequisites

Install golang.

We install the golang language to be able to build Geth / go-ethereum, the official golang implementation of the Ethereum protocol. This might not be necessary in other SO.

 

[root@echo ~]$ sudo yum -y update

[root@echo ~]$ sudo yum -y install golang

[root@echo ~]$ sudo yum -y install gmp-devel

Install  git

Now we install git using yum to be able to clone the go-ethereum repository. Once we've done it we clone the github repository to our local device.

 

[root@echo ~]$ sudo yum -y install git

[root@echo ~]$ git clone GitHub - ethereum/go-ethereum: Go implementation of the Ethereum protocol

Install geth

Once we have cloned the repository we build the project using the rule geth of the Makefile. It is also possible to use the all rule to build all the executables but it was not not necessary in this case.

 

[root@echo ~]$ make go-ethereum/geth

[root@echo ~]$ ls -al build/bin/geth

[jestape@echo]$ export PATH=/home/jestape/go-ethereum/build/bin:$PATH

Init private blockchain

Now that we have installed our prerequisites we have to initialized our private blockchain (sidechain). To do so we create a directory in which we'll store all the data generated and we create the genesis file. (Genesis file explanation: https://medium.com/taipei-ethereum-meetup/beginners-guide-to-ethereum-3-explain-the-genesis-file-and-use-it-to-customize-your-blockchain-552eb6265145 )

 

[jestape@echo ]$ mkdir private-blockchain

[jestape@echo ~]$ cd private-blockchain/

[jestape@echo private-blockchain]$ vim genesis.json

[jestape@echo private-blockchain]  mkdir costaflores-node

[jestape@echo costaflores-node]$ geth --datadir /home/jestape/private-blockchain/costaflores-node init ../genesis.json

 

 


 

genesis.json content:

 

{

 "nonce": "0x0000000000000042",

 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

 "difficulty": "0x400",

 "alloc": {}, 

 "coinbase": "0x0000000000000000000000000000000000000000",

 "timestamp": "0x00",

 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

 "extraData": "0x436861696e536b696c6c732047656e6573697320426c6f636b",

 "gasLimit": "0xffffffff",

 "config": {

    "chainId": ---,

    "homesteadBlock": 0,

    "eip155Block": 0,

    "eip158Block": 0

 }

}


Running the node (costaflores-node1)

Creating an account.

After having initialised our private blockchain we have to create a new account on the node to mine. 

 

[jestape@echo costaflores-node]$ geth --datadir /home/jestape/private-blockchain/costaflores-node/ account new

INFO [11-29|16:49:24.814] Maximum peer count                       ETH=25 LES=0 total=25

Your new account is locked with a password. Please give a password. Do not forget this password.

Passphrase: ************

Repeat passphrase: ************

Address: {d542791cfed183f9ac52f207706f30f0ce3df231}

[jestape@echo costaflores-node]$ vim password.txt

 

Booting the node.

The last step we must take is to boot the node in the background. This node is identified as "costaflores-node1" and it's accesible through HTTP 10.112.48.25:8545 from anywhere. To pair with this node you must use UPD 10.112.48.25:30303. 

 

[jestape@echo costaflores-node]$  nohup ./../../go-ethereum/build/bin/geth --identity "costaflores-node1" --networkid ** --datadir "/home/jestape/private-blockchain/costaflores-node" --nodiscover --rpc --rpcaddr 10.112.48.25 --rpcport "8545" --port "30303" --rpccorsdomain "*" --nat "any" --rpcapi eth,web3,personal,net --unlock "0xD542791cfeD183F9aC52f207706f30f0ce3dF231" --password "/home/jestape/private-blockchain/costaflores-node/password.txt" --mine --verbosity 5 >> geth.log &

 

 

INFO [12-07|14:45:19.581] HTTP endpoint opened                     url=http://10.112.48.25:8545                                   cors=* vhosts=localhost

INFO [12-07|14:45:19.578] Started P2P networking                   self="enode://38418871173ac795eddea15d28f9b13f6af29ca318cabbd0a4708bc39379d8b16a04edc7d47c1a70a1017d11304a46a9bb813740feea6efa0a6572fb60971f59@127.0.0.1:30303?discport=0"

Install monitoring tool (https://medium.com/@jake.henningsgaard/monitoring-the-ethereum-blockchain-24384064fad3 )

[root@echo mbarrow]# sudo yum install epel-release

Failed to set locale, defaulting to C

Loaded plugins: fastestmirror

Determining fastest mirrors

  • base:

mirror.gadix.com

  • extras:

mirror.gadix.com

  • updates:

mirror.gadix.com

base                                                                                                                                                          | 3.6 kB  00:00:00     

extras                                                                                                                                                        | 3.4 kB  00:00:00     

updates                                                                                                                                                       | 3.4 kB  00:00:00     

(1/4): base/7/x86_64/group_gz                                                                                                                                 | 166 kB  00:00:00     

(2/4): extras/7/x86_64/primary_db                                                                                                                             | 156 kB  00:00:00     

(3/4): base/7/x86_64/primary_db                                                                                                                               | 6.0 MB  00:00:00     

(4/4): updates/7/x86_64/primary_db                                                                                                                            | 1.3 MB  00:00:00     

Resolving Dependencies

--> Running transaction check

---> Package epel-release.noarch 0:7-11 will be installed

--> Finished Dependency Resolution

 

Dependencies Resolved

 

=====================================================================================================================================================================================

 Package                                         Arch                                      Version                                   Repository                                 Size

=====================================================================================================================================================================================

Installing:

 epel-release                                    noarch                                    7-11                                      extras                                     15 k

 

Transaction Summary

=====================================================================================================================================================================================

Install  1 Package

 

Total download size: 15 k

Installed size: 24 k

Is this ok [y/d/N]: y

Downloading packages:

epel-release-7-11.noarch.rpm                                                                                                                                  |  15 kB  00:00:00     

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  Installing : epel-release-7-11.noarch                                                                                                                                          1/1 

  Verifying  : epel-release-7-11.noarch                                                                                                                                          1/1 

 

Installed:

  epel-release.noarch 0:7-11                                                                                                                                                         

 

Complete!

[root@echo mbarrow]# curl --silent --location https://rpm.nodesource.com/setup_6.x| sudo bash -

 

## Installing the NodeSource Node.js 6.x LTS Boron repo...

 

 

## Inspecting system...

 

+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release

+ uname -m

 

## Confirming "el7-x86_64" is supported...

 

+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_6.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

 

## Downloading release setup RPM...

 

+ mktemp

+ curl -sL -o '/tmp/tmp.mM60sPPSY4' 'https://rpm.nodesource.com/pub_6.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

 

## Installing release setup RPM...

 

+ rpm -i --nosignature --force '/tmp/tmp.mM60sPPSY4'

 

## Cleaning up...

 

+ rm -f '/tmp/tmp.mM60sPPSY4'

 

## Checking for existing installations...

 

+ rpm -qa 'node|npm' | grep -v nodesource

 

## Run `sudo yum install -y nodejs` to install Node.js 6.x LTS Boron and npm.

## You may also need development tools to build native addons:

     sudo yum install gcc-c++ make

## To install the Yarn package manager, run:

     curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

     sudo yum install yarn

 

[root@echo mbarrow]# sudo yum install nodejs

Failed to set locale, defaulting to C

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

epel/x86_64/metalink                                                                                                                                          |  33 kB  00:00:00     

  • base:

mirror.gadix.com

  • epel:

mirror.uv.es

  • extras:

mirror.gadix.com

  • updates:

mirror.gadix.com

epel                                                                                                                                                          | 4.7 kB  00:00:00     

nodesource                                                                                                                                                    | 2.5 kB  00:00:00     

(1/4): epel/x86_64/group_gz                                                                                                                                   |  88 kB  00:00:00     

(2/4): epel/x86_64/updateinfo                                                                                                                                 | 952 kB  00:00:00     

(3/4): nodesource/x86_64/primary_db                                                                                                                           |  58 kB  00:00:00     

(4/4): epel/x86_64/primary_db                                                                                                                                 | 6.6 MB  00:00:00     

Resolving Dependencies

--> Running transaction check

---> Package nodejs.x86_64 2:6.16.0-1nodesource will be installed

--> Finished Dependency Resolution

 

Dependencies Resolved

 

=====================================================================================================================================================================================

 Package                                Arch                                   Version                                              Repository                                  Size

=====================================================================================================================================================================================

Installing:

 nodejs                                 x86_64                                 2:6.16.0-1nodesource                                 nodesource                                  13 M

 

Transaction Summary

=====================================================================================================================================================================================

Install  1 Package

 

Total download size: 13 M

Installed size: 39 M

Is this ok [y/d/N]: y

Downloading packages:

warning: /var/cache/yum/x86_64/7/nodesource/packages/nodejs-6.16.0-1nodesource.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 34fa74dd: NOKEY  ]  0.0 B/s |  12 MB  --:--:-- ETA 

Public key for nodejs-6.16.0-1nodesource.x86_64.rpm is not installed

nodejs-6.16.0-1nodesource.x86_64.rpm                                                                                                                          |  13 MB  00:00:00     

Retrieving key from file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL

Importing GPG key 0x34FA74DD:

 Userid     : "NodeSource <gpg-rpm@nodesource.com>"

 Fingerprint: 2e55 207a 95d9 944b 0cc9 3261 5ddb e8d4 34fa 74dd

 Package    : nodesource-release-el7-1.noarch (installed)

 From       : /etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL

Is this ok [y/N]: y

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Warning: RPMDB altered outside of yum.

  Installing : 2:nodejs-6.16.0-1nodesource.x86_64                                                                                                                                1/1 

  Verifying  : 2:nodejs-6.16.0-1nodesource.x86_64                                                                                                                                1/1 

 

Installed:

  nodejs.x86_64 2:6.16.0-1nodesource                                                                                                                                                 

 

Complete!

sudo yum install gcc-c++ make

Verify that it is working with:

[root@echo mbarrow]# node -v

v6.16.0

[root@echo mbarrow]# npm -v

3.10.10

npm install

npm WARN deprecated jade@1.11.0: Jade has been renamed to pug, please install the latest version of pug instead of jade

npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

npm WARN deprecated graceful-fs@1.1.14: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js

npm WARN deprecated graceful-fs@3.0.11: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js

npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

npm WARN deprecated coffee-script@1.3.3: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)

npm WARN deprecated graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js

npm WARN deprecated jade@1.9.2: Jade has been renamed to pug, please install the latest version of pug instead of jade

npm WARN deprecated constantinople@3.0.2: Please update to at least constantinople 3.1.1

npm WARN deprecated transformers@2.1.0: Deprecated, use jstransformer

eth-netstats@0.0.9 /home/jestape/private-blockchain/eth-netstats

├─┬ body-parser@1.13.3 

│ ├── bytes@2.1.0 

│ ├── content-type@1.0.4 

│ ├── depd@1.0.1 

│ ├─┬ http-errors@1.3.1 

│ │ ├── inherits@2.0.3 

│ │ └── statuses@1.5.0 

│ ├── iconv-lite@0.4.11 

│ ├─┬ on-finished@2.3.0 

│ │ └── ee-first@1.1.1 

│ ├── qs@4.0.0 

│ ├─┬ raw-body@2.1.7 

│ │ ├── bytes@2.4.0 

│ │ ├── iconv-lite@0.4.13 

│ │ └── unpipe@1.0.0 

│ └─┬ type-is@1.6.16 

│   ├── media-typer@0.3.0 

│   └─┬ mime-types@2.1.21 

│     └── mime-db@1.37.0 

├─┬ chalk@1.1.1 

│ ├── ansi-styles@2.2.1 

│ ├── escape-string-regexp@1.0.5 

│ ├─┬ has-ansi@2.0.0 

│ │ └── ansi-regex@2.1.1 

│ ├── strip-ansi@3.0.1 

│ └── supports-color@2.0.0 

├── d3@3.5.6 

├─┬ debug@2.2.0 

│ └── ms@0.7.1 

├─┬ express@4.13.3 

│ ├─┬ accepts@1.2.13 

│ │ └── negotiator@0.5.3 

│ ├── array-flatten@1.1.1 

│ ├── content-disposition@0.5.0 

│ ├── cookie@0.1.3 

│ ├── cookie-signature@1.0.6 

│ ├── escape-html@1.0.2 

│ ├── etag@1.7.0 

│ ├── finalhandler@0.4.0 

│ ├── fresh@0.3.0 

│ ├── merge-descriptors@1.0.0 

│ ├── methods@1.1.2 

│ ├── parseurl@1.3.2 

│ ├── path-to-regexp@0.1.7 

│ ├─┬ proxy-addr@1.0.10 

│ │ ├── forwarded@0.1.2 

│ │ └── ipaddr.js@1.0.5 

│ ├── range-parser@1.0.3 

│ ├─┬ send@0.13.0 

│ │ ├── destroy@1.0.3 

│ │ ├── mime@1.3.4 

│ │ └── statuses@1.2.1 

│ ├─┬ serve-static@1.10.3 

│ │ ├── escape-html@1.0.3 

│ │ └─┬ send@0.13.2 

│ │   ├── depd@1.1.2 

│ │   ├── destroy@1.0.4 

│ │   └── statuses@1.2.1 

│ ├── utils-merge@1.0.0 

│ └── vary@1.0.1 

├─┬ geoip-lite@1.1.6 

│ ├── async@0.1.22 

│ ├── colors@0.6.0-1 

│ ├─┬ glob@3.2.11 

│ │ └── minimatch@0.3.0 

│ ├── lazy@1.0.11 

│ ├─┬ rimraf@2.0.3 

│ │ └── graceful-fs@1.1.14 

│ └─┬ unzip@0.0.4 

│   ├─┬ binary@0.3.0 

│   │ ├── buffers@0.1.1 

│   │ └─┬ chainsaw@0.1.0 

│   │   └── traverse@0.3.9 

│   ├─┬ fstream@0.1.31 

│   │ └─┬ graceful-fs@3.0.11 

│   │   └── natives@1.1.6 

│   └─┬ pullstream@0.0.4 

│     ├── over@0.0.5 

│     └── stream-buffers@0.2.6 

├─┬ grunt@0.4.5 

│ ├── coffee-script@1.3.3 

│ ├── colors@0.6.2 

│ ├── dateformat@1.0.2-1.2.3 

│ ├── eventemitter2@0.4.14 

│ ├── exit@0.1.2 

│ ├─┬ findup-sync@0.1.3 

│ │ └── lodash@2.4.2 

│ ├── getobject@0.1.0 

│ ├─┬ glob@3.1.21 

│ │ ├── graceful-fs@1.2.3 

│ │ └── inherits@1.0.2 

│ ├─┬ grunt-legacy-log@0.1.3 

│ │ ├── colors@0.6.2 

│ │ ├─┬ grunt-legacy-log-utils@0.1.1 

│ │ │ ├── colors@0.6.2 

│ │ │ ├── lodash@2.4.2 

│ │ │ └── underscore.string@2.3.3 

│ │ ├── lodash@2.4.2 

│ │ └── underscore.string@2.3.3 

│ ├─┬ grunt-legacy-util@0.2.0 

│ │ └── lodash@0.9.2 

│ ├── hooker@0.2.3 

│ ├── iconv-lite@0.2.11 

│ ├─┬ js-yaml@2.0.5 

│ │ ├─┬ argparse@0.1.16 

│ │ │ ├── underscore@1.7.0 

│ │ │ └── underscore.string@2.4.0 

│ │ └── esprima@1.0.4 

│ ├── lodash@0.9.2 

│ ├─┬ minimatch@0.2.14 

│ │ ├── lru-cache@2.7.3 

│ │ └── sigmund@1.0.1 

│ ├─┬ nopt@1.0.10 

│ │ └── abbrev@1.1.1 

│ ├── rimraf@2.2.8 

│ ├── underscore.string@2.2.1 

│ └── which@1.0.9 

├─┬ grunt-contrib-clean@0.6.0 

│ └── rimraf@2.2.8 

├─┬ grunt-contrib-concat@0.5.1 

│ ├─┬ chalk@0.5.1 

│ │ ├── ansi-styles@1.1.0 

│ │ ├─┬ has-ansi@0.1.0 

│ │ │ └── ansi-regex@0.2.1 

│ │ ├── strip-ansi@0.3.0 

│ │ └── supports-color@0.2.0 

│ └─┬ source-map@0.3.0 

│   └── amdefine@1.0.1 

├─┬ grunt-contrib-copy@0.8.2 

│ └── file-sync-cmp@0.1.1 

├─┬ grunt-contrib-cssmin@0.12.3 

│ ├─┬ clean-css@3.4.28 

│ │ ├─┬ commander@2.8.1 

│ │ │ └── graceful-readlink@1.0.1 

│ │ └── source-map@0.4.4 

│ └─┬ maxmin@1.1.0 

│   ├─┬ figures@1.7.0 

│   │ └── object-assign@4.1.1 

│   ├─┬ gzip-size@1.0.0 

│   │ ├─┬ browserify-zlib@0.1.4 

│   │ │ └── pako@0.2.9 

│   │ └─┬ concat-stream@1.6.2 

│   │   ├── buffer-from@1.1.1 

│   │   ├─┬ readable-stream@2.3.6 

│   │   │ ├── core-util-is@1.0.2 

│   │   │ ├── isarray@1.0.0 

│   │   │ ├── process-nextick-args@2.0.0 

│   │   │ ├── safe-buffer@5.1.2 

│   │   │ ├── string_decoder@1.1.1 

│   │   │ └── util-deprecate@1.0.2 

│   │   └── typedarray@0.0.6 

│   └─┬ pretty-bytes@1.0.4 

│     ├── get-stdin@4.0.1 

│     └─┬ meow@3.7.0 

│       ├─┬ camelcase-keys@2.1.0 

│       │ └── camelcase@2.1.1 

│       ├─┬ loud-rejection@1.6.0 

│       │ ├─┬ currently-unhandled@0.4.1 

│       │ │ └── array-find-index@1.0.2 

│       │ └── signal-exit@3.0.2 

│       ├── map-obj@1.0.1 

│       ├── minimist@1.2.0 

│       ├─┬ normalize-package-data@2.4.0 

│       │ ├── hosted-git-info@2.7.1 

│       │ ├─┬ is-builtin-module@1.0.0 

│       │ │ └── builtin-modules@1.1.1 

│       │ ├── semver@5.6.0 

│       │ └─┬ validate-npm-package-license@3.0.4 

│       │   ├─┬ spdx-correct@3.1.0 

│       │   │ └── spdx-license-ids@3.0.3 

│       │   └─┬ spdx-expression-parse@3.0.0 

│       │     └── spdx-exceptions@2.2.0 

│       ├─┬ read-pkg-up@1.0.1 

│       │ ├─┬ find-up@1.1.2 

│       │ │ ├── path-exists@2.1.0 

│       │ │ └─┬ pinkie-promise@2.0.1 

│       │ │   └── pinkie@2.0.4 

│       │ └─┬ read-pkg@1.1.0 

│       │   ├─┬ load-json-file@1.1.0 

│       │   │ ├── graceful-fs@4.1.15 

│       │   │ ├─┬ parse-json@2.2.0 

│       │   │ │ └─┬ error-ex@1.3.2 

│       │   │ │   └── is-arrayish@0.2.1 

│       │   │ ├── pify@2.3.0 

│       │   │ └─┬ strip-bom@2.0.0 

│       │   │   └── is-utf8@0.2.1 

│       │   └─┬ path-type@1.1.0 

│       │     └── graceful-fs@4.1.15 

│       ├─┬ redent@1.0.0 

│       │ ├─┬ indent-string@2.1.0 

│       │ │ └─┬ repeating@2.0.1 

│       │ │   └─┬ is-finite@1.0.2 

│       │ │     └── number-is-nan@1.0.1 

│       │ └── strip-indent@1.0.1 

│       └── trim-newlines@1.0.0 

├─┬ grunt-contrib-jade@0.14.1 

│ ├─┬ chalk@0.5.1 

│ │ ├── ansi-styles@1.1.0 

│ │ ├─┬ has-ansi@0.1.0 

│ │ │ └── ansi-regex@0.2.1 

│ │ ├── strip-ansi@0.3.0 

│ │ └── supports-color@0.2.0 

│ └─┬ jade@1.9.2 

│   └── commander@2.6.0 

├─┬ grunt-contrib-uglify@0.9.2 

│ ├─┬ uglify-js@2.8.29 

│ │ ├── source-map@0.5.7 

│ │ ├── uglify-to-browserify@1.0.2 

│ │ └─┬ yargs@3.10.0 

│ │   ├── camelcase@1.2.1 

│ │   ├─┬ cliui@2.1.0 

│ │   │ ├─┬ center-align@0.1.3 

│ │   │ │ ├─┬ align-text@0.1.4 

│ │   │ │ │ ├─┬ kind-of@3.2.2 

│ │   │ │ │ │ └── is-buffer@1.1.6 

│ │   │ │ │ ├── longest@1.0.1 

│ │   │ │ │ └── repeat-string@1.6.1 

│ │   │ │ └── lazy-cache@1.0.4 

│ │   │ ├── right-align@0.1.3 

│ │   │ └── wordwrap@0.0.2 

│ │   ├── decamelize@1.2.0 

│ │   └── window-size@0.1.0 

│ └── uri-path@0.0.2 

├─┬ jade@1.11.0 

│ ├── character-parser@1.2.1 

│ ├── commander@2.6.0 

│ ├─┬ constantinople@3.0.2 

│ │ └── acorn@2.7.0 

│ ├─┬ jstransformer@0.0.2 

│ │ ├── is-promise@2.1.0 

│ │ └─┬ promise@6.1.0 

│ │   └── asap@1.0.0 

│ ├─┬ mkdirp@0.5.1 

│ │ └── minimist@0.0.8 

│ ├─┬ transformers@2.1.0 

│ │ ├─┬ css@1.0.8 

│ │ │ ├── css-parse@1.0.4 

│ │ │ └── css-stringify@1.0.5 

│ │ ├─┬ promise@2.0.0 

│ │ │ └── is-promise@1.0.1 

│ │ └─┬ uglify-js@2.2.5 

│ │   ├─┬ optimist@0.3.7 

│ │   │ └── wordwrap@0.0.3 

│ │   └── source-map@0.1.43 

│ ├─┬ uglify-js@2.8.29 

│ │ └── source-map@0.5.7 

│ ├── void-elements@2.0.1 

│ └─┬ with@4.0.3 

│   ├── acorn@1.2.2 

│   └── acorn-globals@1.0.9 

├── lodash@3.10.1 

├─┬ primus@6.1.0 

│ ├─┬ access-control@1.0.1 

│ │ ├── millisecond@0.1.2 

│ │ ├── setheader@1.0.1 

│ │ └── vary@1.1.2 

│ ├── asyncemit@3.0.1 

│ ├─┬ create-server@1.0.1 

│ │ └── connected@0.0.2 

│ ├─┬ diagnostics@1.1.1 

│ │ ├─┬ colorspace@1.1.1 

│ │ │ ├─┬ color@3.0.0 

│ │ │ │ ├─┬ color-convert@1.9.3 

│ │ │ │ │ └── color-name@1.1.3 

│ │ │ │ └─┬ color-string@1.5.3 

│ │ │ │   └─┬ simple-swizzle@0.2.2 

│ │ │ │     └── is-arrayish@0.3.2 

│ │ │ └── text-hex@1.0.0 

│ │ ├─┬ enabled@1.0.2 

│ │ │ └── env-variable@0.0.5 

│ │ └─┬ kuler@1.0.1 

│ │   └── colornames@1.1.1 

│ ├── eventemitter3@2.0.3 

│ ├── forwarded-for@1.0.1 

│ ├─┬ fusing@1.0.0 

│ │ ├── emits@3.0.0 

│ │ └─┬ predefine@0.1.2 

│ │   └── extendible@0.1.1 

│ ├─┬ setheader@0.0.4 

│ │ └── debug@0.7.4 

│ ├── ultron@1.1.1 

│ └── yeast@0.1.2 

├── primus-emit@1.0.0 

├── primus-spark-latency@0.1.1 

└─┬ ws@1.1.5 

  ├── options@0.0.6 

  └── ultron@1.0.2 

 

[root@echo eth-netstats]# sudo npm install -g grunt-cli

/usr/bin/grunt -> /usr/lib/node_modules/grunt-cli/bin/grunt

/usr/lib

└─┬ grunt-cli@1.3.2 

  ├── grunt-known-options@1.1.1 

  ├── interpret@1.1.0 

  ├─┬ liftoff@2.5.0 

  │ ├── extend@3.0.2 

  │ ├─┬ findup-sync@2.0.0 

  │ │ ├── detect-file@1.0.0 

  │ │ ├─┬ is-glob@3.1.0 

  │ │ │ └── is-extglob@2.1.1 

  │ │ ├─┬ micromatch@3.1.10 

  │ │ │ ├── arr-diff@4.0.0 

  │ │ │ ├── array-unique@0.3.2 

  │ │ │ ├─┬ braces@2.3.2 

  │ │ │ │ ├── arr-flatten@1.1.0 

  │ │ │ │ ├─┬ extend-shallow@2.0.1 

  │ │ │ │ │ └── is-extendable@0.1.1 

  │ │ │ │ ├─┬ fill-range@4.0.0 

  │ │ │ │ │ ├── extend-shallow@2.0.1 

  │ │ │ │ │ ├─┬ is-number@3.0.0 

  │ │ │ │ │ │ └─┬ kind-of@3.2.2 

  │ │ │ │ │ │   └── is-buffer@1.1.6 

  │ │ │ │ │ ├── repeat-string@1.6.1 

  │ │ │ │ │ └── to-regex-range@2.1.1 

  │ │ │ │ ├── repeat-element@1.1.3 

  │ │ │ │ ├─┬ snapdragon-node@2.1.1 

  │ │ │ │ │ ├─┬ define-property@1.0.0 

  │ │ │ │ │ │ └─┬ is-descriptor@1.0.2 

  │ │ │ │ │ │   ├── is-accessor-descriptor@1.0.0 

  │ │ │ │ │ │   └── is-data-descriptor@1.0.0 

  │ │ │ │ │ └─┬ snapdragon-util@3.0.1 

  │ │ │ │ │   └── kind-of@3.2.2 

  │ │ │ │ └── split-string@3.1.0 

  │ │ │ ├─┬ define-property@2.0.2 

  │ │ │ │ └─┬ is-descriptor@1.0.2 

  │ │ │ │   ├── is-accessor-descriptor@1.0.0 

  │ │ │ │   └── is-data-descriptor@1.0.0 

  │ │ │ ├─┬ extend-shallow@3.0.2 

  │ │ │ │ ├── assign-symbols@1.0.0 

  │ │ │ │ └── is-extendable@1.0.1 

  │ │ │ ├─┬ extglob@2.0.4 

  │ │ │ │ ├─┬ define-property@1.0.0 

  │ │ │ │ │ └─┬ is-descriptor@1.0.2 

  │ │ │ │ │   ├── is-accessor-descriptor@1.0.0 

  │ │ │ │ │   └── is-data-descriptor@1.0.0 

  │ │ │ │ ├─┬ expand-brackets@2.1.4 

  │ │ │ │ │ ├── define-property@0.2.5 

  │ │ │ │ │ ├── extend-shallow@2.0.1 

  │ │ │ │ │ └── posix-character-classes@0.1.1 

  │ │ │ │ └── extend-shallow@2.0.1 

  │ │ │ ├── fragment-cache@0.2.1 

  │ │ │ ├── kind-of@6.0.2 

  │ │ │ ├─┬ nanomatch@1.2.13 

  │ │ │ │ └── is-windows@1.0.2 

  │ │ │ ├─┬ regex-not@1.0.2 

  │ │ │ │ └─┬ safe-regex@1.1.0 

  │ │ │ │   └── ret@0.1.15 

  │ │ │ ├─┬ snapdragon@0.8.2 

  │ │ │ │ ├─┬ base@0.11.2 

  │ │ │ │ │ ├─┬ cache-base@1.0.1 

  │ │ │ │ │ │ ├─┬ collection-visit@1.0.0 

  │ │ │ │ │ │ │ ├── map-visit@1.0.0 

  │ │ │ │ │ │ │ └── object-visit@1.0.1 

  │ │ │ │ │ │ ├── get-value@2.0.6 

  │ │ │ │ │ │ ├─┬ has-value@1.0.0 

  │ │ │ │ │ │ │ └─┬ has-values@1.0.0 

  │ │ │ │ │ │ │   └── kind-of@4.0.0 

  │ │ │ │ │ │ ├─┬ set-value@2.0.0 

  │ │ │ │ │ │ │ └── extend-shallow@2.0.1 

  │ │ │ │ │ │ ├─┬ to-object-path@0.3.0 

  │ │ │ │ │ │ │ └── kind-of@3.2.2 

  │ │ │ │ │ │ ├─┬ union-value@1.0.0 

  │ │ │ │ │ │ │ └─┬ set-value@0.4.3 

  │ │ │ │ │ │ │   └── extend-shallow@2.0.1 

  │ │ │ │ │ │ └─┬ unset-value@1.0.0 

  │ │ │ │ │ │   └─┬ has-value@0.3.1 

  │ │ │ │ │ │     ├── has-values@0.1.4 

  │ │ │ │ │ │     └─┬ isobject@2.1.0 

  │ │ │ │ │ │       └── isarray@1.0.0 

  │ │ │ │ │ ├─┬ class-utils@0.3.6 

  │ │ │ │ │ │ ├── arr-union@3.1.0 

  │ │ │ │ │ │ ├── define-property@0.2.5 

  │ │ │ │ │ │ └─┬ static-extend@0.1.2 

  │ │ │ │ │ │   ├── define-property@0.2.5 

  │ │ │ │ │ │   └─┬ object-copy@0.1.0 

  │ │ │ │ │ │     ├── copy-descriptor@0.1.1 

  │ │ │ │ │ │     ├── define-property@0.2.5 

  │ │ │ │ │ │     └── kind-of@3.2.2 

  │ │ │ │ │ ├── component-emitter@1.2.1 

  │ │ │ │ │ ├─┬ define-property@1.0.0 

  │ │ │ │ │ │ └─┬ is-descriptor@1.0.2 

  │ │ │ │ │ │   ├── is-accessor-descriptor@1.0.0 

  │ │ │ │ │ │   └── is-data-descriptor@1.0.0 

  │ │ │ │ │ ├─┬ mixin-deep@1.3.1 

  │ │ │ │ │ │ └── is-extendable@1.0.1 

  │ │ │ │ │ └── pascalcase@0.1.1 

  │ │ │ │ ├─┬ debug@2.6.9 

  │ │ │ │ │ └── ms@2.0.0 

  │ │ │ │ ├─┬ define-property@0.2.5 

  │ │ │ │ │ └─┬ is-descriptor@0.1.6 

  │ │ │ │ │   ├─┬ is-accessor-descriptor@0.1.6 

  │ │ │ │ │   │ └── kind-of@3.2.2 

  │ │ │ │ │   ├─┬ is-data-descriptor@0.1.4 

  │ │ │ │ │   │ └── kind-of@3.2.2 

  │ │ │ │ │   └── kind-of@5.1.0 

  │ │ │ │ ├── extend-shallow@2.0.1 

  │ │ │ │ ├── source-map@0.5.7 

  │ │ │ │ ├─┬ source-map-resolve@0.5.2 

  │ │ │ │ │ ├── atob@2.1.2 

  │ │ │ │ │ ├── decode-uri-component@0.2.0 

  │ │ │ │ │ ├── resolve-url@0.2.1 

  │ │ │ │ │ ├── source-map-url@0.4.0 

  │ │ │ │ │ └── urix@0.1.0 

  │ │ │ │ └── use@3.1.1 

  │ │ │ └── to-regex@3.0.2 

  │ │ └─┬ resolve-dir@1.0.1 

  │ │   └─┬ global-modules@1.0.0 

  │ │     └─┬ global-prefix@1.0.2 

  │ │       ├── ini@1.3.5 

  │ │       └─┬ which@1.3.1 

  │ │         └── isexe@2.0.0 

  │ ├─┬ fined@1.1.1 

  │ │ ├── expand-tilde@2.0.2 

  │ │ ├─┬ object.defaults@1.1.0 

  │ │ │ ├── array-each@1.0.1 

  │ │ │ └── array-slice@1.1.0 

  │ │ ├── object.pick@1.3.0 

  │ │ └─┬ parse-filepath@1.0.2 

  │ │   ├─┬ is-absolute@1.0.0 

  │ │   │ └─┬ is-relative@1.0.0 

  │ │   │   └─┬ is-unc-path@1.0.0 

  │ │   │     └── unc-path-regex@0.1.2 

  │ │   ├── map-cache@0.2.2 

  │ │   └─┬ path-root@0.1.1 

  │ │     └── path-root-regex@0.1.2 

  │ ├── flagged-respawn@1.0.1 

  │ ├─┬ is-plain-object@2.0.4 

  │ │ └── isobject@3.0.1 

  │ ├─┬ object.map@1.0.1 

  │ │ ├─┬ for-own@1.0.0 

  │ │ │ └── for-in@1.0.2 

  │ │ └── make-iterator@1.0.1 

  │ ├── rechoir@0.6.2 

  │ └─┬ resolve@1.9.0 

  │   └── path-parse@1.0.6 

  ├─┬ nopt@4.0.1 

  │ ├── abbrev@1.1.1 

  │ └─┬ osenv@0.1.5 

  │   ├── os-homedir@1.0.2 

  │   └── os-tmpdir@1.0.2 

  └─┬ v8flags@3.1.2 

    └─┬ homedir-polyfill@1.0.1 

      └── parse-passwd@1.0.0 

 

[root@echo eth-netstats]# grunt

Running "clean:build" (clean) task

>> 0 paths cleaned.

 

Running "clean:cleanup_js" (clean) task

>> 0 paths cleaned.

 

Running "clean:cleanup_css" (clean) task

>> 0 paths cleaned.

 

Running "jade:build" (jade) task

>> 1 file created.

 

Running "copy:build" (copy) task

Copied 31 files

 

Running "cssmin:build" (cssmin) task

>> 2 files created. 33.36 kB → 30.53 kB

 

Running "concat:vendor" (concat) task

File dist/js/vendor.min.js created.

 

Running "concat:scripts" (concat) task

File dist/js/app.js created.

 

Running "uglify:app" (uglify) task

>> 1 file created.

 

Running "concat:netstats" (concat) task

File dist/js/netstats.min.js created.

 

Running "concat:css" (concat) task

File dist/css/netstats.min.css created.

 

Running "clean:cleanup_js" (clean) task

>> 3 paths cleaned.

 

Running "clean:cleanup_css" (clean) task

>> 4 paths cleaned.

 

Done, without errors.

 

[root@echo eth-netstats]# git clone GitHub - cubedro/eth-net-intelligence-api: Ethereum Network Intelligence API

Cloning into 'eth-net-intelligence-api'...

remote: Enumerating objects: 1699, done.

remote: Total 1699 (delta 0), reused 0 (delta 0), pack-reused 1699

Receiving objects: 100% (1699/1699), 279.72 KiB | 0 bytes/s, done.

Resolving deltas: 100% (833/833), done.

 

[root@echo eth-net-intelligence-api]# npm install pm2 -g

/usr/bin/pm2 -> /usr/lib/node_modules/pm2/bin/pm2

/usr/bin/pm2-dev -> /usr/lib/node_modules/pm2/bin/pm2-dev

/usr/bin/pm2-docker -> /usr/lib/node_modules/pm2/bin/pm2-docker

/usr/bin/pm2-runtime -> /usr/lib/node_modules/pm2/bin/pm2-runtime

/usr/lib

└─┬ pm2@3.2.9 

  ├─┬ @pm2/agent@0.5.22 

  │ └─┬ ws@5.2.2 

  │   └── async-limiter@1.0.0 

  ├─┬ @pm2/io@2.4.7 

  │ ├─┬ @pm2/agent-node@1.1.3 

  │ │ ├─┬ proxy-agent@3.0.3 

  │ │ │ ├─┬ agent-base@4.2.1 

  │ │ │ │ └─┬ es6-promisify@5.0.0 

  │ │ │ │   └── es6-promise@4.2.5 

  │ │ │ ├─┬ http-proxy-agent@2.1.0 

  │ │ │ │ └─┬ debug@3.1.0 

  │ │ │ │   └── ms@2.0.0 

  │ │ │ ├── https-proxy-agent@2.2.1 

  │ │ │ ├─┬ lru-cache@4.1.5 

  │ │ │ │ ├── pseudomap@1.0.2 

  │ │ │ │ └── yallist@2.1.2 

  │ │ │ ├─┬ pac-proxy-agent@3.0.0 

  │ │ │ │ ├─┬ get-uri@2.0.3 

  │ │ │ │ │ ├─┬ data-uri-to-buffer@2.0.0 

  │ │ │ │ │ │ └── @types/node@8.10.39 

  │ │ │ │ │ ├── debug@4.1.1 

  │ │ │ │ │ ├── file-uri-to-path@1.0.0 

  │ │ │ │ │ ├─┬ ftp@0.3.10 

  │ │ │ │ │ │ ├─┬ readable-stream@1.1.14 

  │ │ │ │ │ │ │ ├── isarray@0.0.1 

  │ │ │ │ │ │ │ └── string_decoder@0.10.31 

  │ │ │ │ │ │ └── xregexp@2.0.0 

  │ │ │ │ │ └─┬ readable-stream@3.1.1 

  │ │ │ │ │   └── string_decoder@1.2.0 

  │ │ │ │ ├─┬ pac-resolver@3.0.0 

  │ │ │ │ │ ├── co@4.6.0 

  │ │ │ │ │ ├─┬ degenerator@1.0.4 

  │ │ │ │ │ │ ├── ast-types@0.11.7 

  │ │ │ │ │ │ ├─┬ escodegen@1.11.0 

  │ │ │ │ │ │ │ ├── estraverse@4.2.0 

  │ │ │ │ │ │ │ ├── esutils@2.0.2 

  │ │ │ │ │ │ │ └─┬ optionator@0.8.2 

  │ │ │ │ │ │ │   ├── deep-is@0.1.3 

  │ │ │ │ │ │ │   ├── fast-levenshtein@2.0.6 

  │ │ │ │ │ │ │   ├── levn@0.3.0 

  │ │ │ │ │ │ │   ├── prelude-ls@1.1.2 

  │ │ │ │ │ │ │   ├── type-check@0.3.2 

  │ │ │ │ │ │ │   └── wordwrap@1.0.0 

  │ │ │ │ │ │ └── esprima@3.1.3 

  │ │ │ │ │ ├── ip@1.1.5 

  │ │ │ │ │ ├── netmask@1.0.6 

  │ │ │ │ │ └── thunkify@2.1.2 

  │ │ │ │ └─┬ raw-body@2.3.3 

  │ │ │ │   ├── bytes@3.0.0 

  │ │ │ │   ├─┬ http-errors@1.6.3 

  │ │ │ │   │ ├── depd@1.1.2 

  │ │ │ │   │ ├── setprototypeof@1.1.0 

  │ │ │ │   │ └── statuses@1.5.0 

  │ │ │ │   └── unpipe@1.0.0 

  │ │ │ ├── proxy-from-env@1.0.0 

  │ │ │ └─┬ socks-proxy-agent@4.0.1 

  │ │ │   └─┬ socks@2.2.2 

  │ │ │     └── smart-buffer@4.0.1 

  │ │ └── ws@6.1.2 

  │ ├─┬ debug@3.1.0 

  │ │ └── ms@2.0.0 

  │ ├── deep-metrics@0.0.2 

  │ ├── deepmerge@2.1.1 

  │ ├── event-loop-inspector@1.2.2 

  │ ├── json-stringify-safe@5.0.1 

  │ ├── semver@5.5.0 

  │ ├── signal-exit@3.0.2 

  │ ├── tslib@1.9.3 

  │ └─┬ vxx@1.2.2 

  │   ├─┬ continuation-local-storage@3.2.1 

  │   │ ├── async-listener@0.6.10 

  │   │ └── emitter-listener@1.1.2 

  │   ├─┬ debug@2.6.9 

  │   │ └── ms@2.0.0 

  │   ├── extend@3.0.2 

  │   ├── is@3.3.0 

  │   ├── lodash.isequal@4.5.0 

  │   ├── lodash.merge@4.6.1 

  │   ├── methods@1.1.2 

  │   ├── shimmer@1.2.1 

  │   └── uuid@3.3.2 

  ├─┬ @pm2/js-api@0.5.45 

  │ ├─┬ axios@0.16.2 

  │ │ ├─┬ follow-redirects@1.6.1 

  │ │ │ └─┬ debug@3.1.0 

  │ │ │   └── ms@2.0.0 

  │ │ └── is-buffer@1.1.6 

  │ ├─┬ debug@2.6.9 

  │ │ └── ms@2.0.0 

  │ ├── eventemitter2@4.1.2 

  │ └─┬ ws@3.3.3 

  │   └── ultron@1.1.1 

  ├─┬ async@2.6.1 

  │ └── lodash@4.17.11 

  ├── blessed@0.1.81 

  ├─┬ chalk@2.4.2 

  │ ├─┬ ansi-styles@3.2.1 

  │ │ └─┬ color-convert@1.9.3 

  │ │   └── color-name@1.1.3 

  │ ├── escape-string-regexp@1.0.5 

  │ └─┬ supports-color@5.5.0 

  │   └── has-flag@3.0.0 

  ├─┬ chokidar@2.0.4 

  │ ├─┬ anymatch@2.0.0 

  │ │ └─┬ micromatch@3.1.10 

  │ │   ├── arr-diff@4.0.0 

  │ │   ├─┬ define-property@2.0.2 

  │ │   │ └─┬ is-descriptor@1.0.2 

  │ │   │   ├── is-accessor-descriptor@1.0.0 

  │ │   │   └── is-data-descriptor@1.0.0 

  │ │   ├─┬ extend-shallow@3.0.2 

  │ │   │ ├── assign-symbols@1.0.0 

  │ │   │ └─┬ is-extendable@1.0.1 

  │ │   │   └── is-plain-object@2.0.4 

  │ │   ├─┬ extglob@2.0.4 

  │ │   │ ├─┬ define-property@1.0.0 

  │ │   │ │ └─┬ is-descriptor@1.0.2 

  │ │   │ │   ├── is-accessor-descriptor@1.0.0 

  │ │   │ │   └── is-data-descriptor@1.0.0 

  │ │   │ ├─┬ expand-brackets@2.1.4 

  │ │   │ │ ├─┬ debug@2.6.9 

  │ │   │ │ │ └── ms@2.0.0 

  │ │   │ │ ├── define-property@0.2.5 

  │ │   │ │ ├── extend-shallow@2.0.1 

  │ │   │ │ └── posix-character-classes@0.1.1 

  │ │   │ └── extend-shallow@2.0.1 

  │ │   ├── fragment-cache@0.2.1 

  │ │   ├── kind-of@6.0.2 

  │ │   ├─┬ nanomatch@1.2.13 

  │ │   │ └── is-windows@1.0.2 

  │ │   ├── object.pick@1.3.0 

  │ │   └── regex-not@1.0.2 

  │ ├── async-each@1.0.1 

  │ ├─┬ braces@2.3.2 

  │ │ ├── arr-flatten@1.1.0 

  │ │ ├── array-unique@0.3.2 

  │ │ ├─┬ extend-shallow@2.0.1 

  │ │ │ └── is-extendable@0.1.1 

  │ │ ├─┬ fill-range@4.0.0 

  │ │ │ ├── extend-shallow@2.0.1 

  │ │ │ ├─┬ is-number@3.0.0 

  │ │ │ │ └── kind-of@3.2.2 

  │ │ │ ├── repeat-string@1.6.1 

  │ │ │ └── to-regex-range@2.1.1 

  │ │ ├── isobject@3.0.1 

  │ │ ├── repeat-element@1.1.3 

  │ │ ├─┬ snapdragon@0.8.2 

  │ │ │ ├─┬ base@0.11.2 

  │ │ │ │ ├─┬ cache-base@1.0.1 

  │ │ │ │ │ ├─┬ collection-visit@1.0.0 

  │ │ │ │ │ │ ├── map-visit@1.0.0 

  │ │ │ │ │ │ └── object-visit@1.0.1 

  │ │ │ │ │ ├── get-value@2.0.6 

  │ │ │ │ │ ├─┬ has-value@1.0.0 

  │ │ │ │ │ │ └─┬ has-values@1.0.0 

  │ │ │ │ │ │   └── kind-of@4.0.0 

  │ │ │ │ │ ├─┬ set-value@2.0.0 

  │ │ │ │ │ │ └── extend-shallow@2.0.1 

  │ │ │ │ │ ├─┬ to-object-path@0.3.0 

  │ │ │ │ │ │ └── kind-of@3.2.2 

  │ │ │ │ │ ├─┬ union-value@1.0.0 

  │ │ │ │ │ │ └─┬ set-value@0.4.3 

  │ │ │ │ │ │   └── extend-shallow@2.0.1 

  │ │ │ │ │ └─┬ unset-value@1.0.0 

  │ │ │ │ │   └─┬ has-value@0.3.1 

  │ │ │ │ │     ├── has-values@0.1.4 

  │ │ │ │ │     └─┬ isobject@2.1.0 

  │ │ │ │ │       └── isarray@1.0.0 

  │ │ │ │ ├─┬ class-utils@0.3.6 

  │ │ │ │ │ ├── arr-union@3.1.0 

  │ │ │ │ │ ├── define-property@0.2.5 

  │ │ │ │ │ └─┬ static-extend@0.1.2 

  │ │ │ │ │   ├── define-property@0.2.5 

  │ │ │ │ │   └─┬ object-copy@0.1.0 

  │ │ │ │ │     ├── copy-descriptor@0.1.1 

  │ │ │ │ │     ├── define-property@0.2.5 

  │ │ │ │ │     └── kind-of@3.2.2 

  │ │ │ │ ├── component-emitter@1.2.1 

  │ │ │ │ ├─┬ define-property@1.0.0 

  │ │ │ │ │ └─┬ is-descriptor@1.0.2 

  │ │ │ │ │   ├── is-accessor-descriptor@1.0.0 

  │ │ │ │ │   └── is-data-descriptor@1.0.0 

  │ │ │ │ ├─┬ mixin-deep@1.3.1 

  │ │ │ │ │ ├── for-in@1.0.2 

  │ │ │ │ │ └── is-extendable@1.0.1 

  │ │ │ │ └── pascalcase@0.1.1 

  │ │ │ ├─┬ debug@2.6.9 

  │ │ │ │ └── ms@2.0.0 

  │ │ │ ├─┬ define-property@0.2.5 

  │ │ │ │ └─┬ is-descriptor@0.1.6 

  │ │ │ │   ├─┬ is-accessor-descriptor@0.1.6 

  │ │ │ │   │ └── kind-of@3.2.2 

  │ │ │ │   ├─┬ is-data-descriptor@0.1.4 

  │ │ │ │   │ └── kind-of@3.2.2 

  │ │ │ │   └── kind-of@5.1.0 

  │ │ │ ├── extend-shallow@2.0.1 

  │ │ │ ├── map-cache@0.2.2 

  │ │ │ ├── source-map@0.5.7 

  │ │ │ ├─┬ source-map-resolve@0.5.2 

  │ │ │ │ ├── atob@2.1.2 

  │ │ │ │ ├── decode-uri-component@0.2.0 

  │ │ │ │ ├── resolve-url@0.2.1 

  │ │ │ │ ├── source-map-url@0.4.0 

  │ │ │ │ └── urix@0.1.0 

  │ │ │ └── use@3.1.1 

  │ │ ├─┬ snapdragon-node@2.1.1 

  │ │ │ ├─┬ define-property@1.0.0 

  │ │ │ │ └─┬ is-descriptor@1.0.2 

  │ │ │ │   ├── is-accessor-descriptor@1.0.0 

  │ │ │ │   └── is-data-descriptor@1.0.0 

  │ │ │ └─┬ snapdragon-util@3.0.1 

  │ │ │   └── kind-of@3.2.2 

  │ │ ├── split-string@3.1.0 

  │ │ └─┬ to-regex@3.0.2 

  │ │   └─┬ safe-regex@1.1.0 

  │ │     └── ret@0.1.15 

  │ ├─┬ glob-parent@3.1.0 

  │ │ ├── is-glob@3.1.0 

  │ │ └── path-dirname@1.0.2 

  │ ├── inherits@2.0.3 

  │ ├─┬ is-binary-path@1.0.1 

  │ │ └── binary-extensions@1.12.0 

  │ ├─┬ is-glob@4.0.0 

  │ │ └── is-extglob@2.1.1 

  │ ├── lodash.debounce@4.0.8 

  │ ├─┬ normalize-path@2.1.1 

  │ │ └── remove-trailing-separator@1.1.0 

  │ ├── path-is-absolute@1.0.1 

  │ ├─┬ readdirp@2.2.1 

  │ │ ├── graceful-fs@4.1.15 

  │ │ └─┬ readable-stream@2.3.6 

  │ │   ├── core-util-is@1.0.2 

  │ │   ├── isarray@1.0.0 

  │ │   ├── process-nextick-args@2.0.0 

  │ │   ├── string_decoder@1.1.1 

  │ │   └── util-deprecate@1.0.2 

  │ └── upath@1.1.0 

  ├─┬ cli-table-redemption@1.0.1 

  │ └─┬ chalk@1.1.3 

  │   ├── ansi-styles@2.2.1 

  │   ├─┬ has-ansi@2.0.0 

  │   │ └── ansi-regex@2.1.1 

  │   ├── strip-ansi@3.0.1 

  │   └── supports-color@2.0.0 

  ├── commander@2.15.1 

  ├─┬ cron@1.6.0 

  │ └── moment-timezone@0.5.23 

  ├── date-fns@1.30.1 

  ├─┬ debug@3.2.6 

  │ └── ms@2.1.1 

  ├── eventemitter2@5.0.1 

  ├── fclone@1.0.11 

  ├── gkt@1.0.0 

  ├─┬ mkdirp@0.5.1 

  │ └── minimist@0.0.8 

  ├── moment@2.23.0 

  ├─┬ needle@2.2.4 

  │ ├─┬ debug@2.6.9 

  │ │ └── ms@2.0.0 

  │ ├─┬ iconv-lite@0.4.23 

  │ │ └── safer-buffer@2.1.2 

  │ └── sax@1.2.4 

  ├─┬ nssocket@0.6.0 

  │ ├── eventemitter2@0.4.14 

  │ └── lazy@1.0.11 

  ├─┬ pidusage@2.0.17 

  │ └── safe-buffer@5.1.2 

  ├─┬ pm2-axon@3.3.0 

  │ ├── amp@0.3.1 

  │ ├── amp-message@0.1.2 

  │ └── escape-regexp@0.0.1 

  ├── pm2-axon-rpc@0.5.1 

  ├─┬ pm2-deploy@0.4.0 

  │ └── tv4@1.3.0 

  ├─┬ pm2-multimeter@0.1.2 

  │ └── charm@0.1.2 

  ├─┬ promptly@2.2.0 

  │ └─┬ read@1.0.7 

  │   └── mute-stream@0.0.8 

  ├── semver@5.6.0 

  ├─┬ shelljs@0.8.3 

  │ ├─┬ glob@7.1.3 

  │ │ ├── fs.realpath@1.0.0 

  │ │ ├─┬ inflight@1.0.6 

  │ │ │ └── wrappy@1.0.2 

  │ │ ├─┬ minimatch@3.0.4 

  │ │ │ └─┬ brace-expansion@1.1.11 

  │ │ │   ├── balanced-match@1.0.0 

  │ │ │   └── concat-map@0.0.1 

  │ │ └── once@1.4.0 

  │ ├── interpret@1.2.0 

  │ └─┬ rechoir@0.6.2 

  │   └─┬ resolve@1.9.0 

  │     └── path-parse@1.0.6 

  ├─┬ source-map-support@0.5.10 

  │ ├── buffer-from@1.1.1 

  │ └── source-map@0.6.1 

  ├── sprintf-js@1.1.1 

  ├── v8-compile-cache@2.0.2 

  ├─┬ vizion@2.0.2 

  │ ├── git-node-fs@1.0.0 

  │ ├── ini@1.3.5 

  │ ├─┬ js-git@0.7.8 

  │ │ ├── bodec@0.1.0 

  │ │ ├── culvert@0.1.2 

  │ │ ├── git-sha1@0.1.2 

  │ │ └── pako@0.2.9 

  │ ├── lodash.findindex@4.6.0 

  │ ├── lodash.foreach@4.5.0 

  │ ├── lodash.get@4.4.2 

  │ └── lodash.last@3.0.0 

  └─┬ yamljs@0.3.0 

    └─┬ argparse@1.0.10 

      └── sprintf-js@1.0.3 

 

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.2 (node_modules/pm2/node_modules/chokidar/node_modules/fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

 

[root@echo eth-net-intelligence-api]# npm install -g web3

npm WARN deprecated fs-promise@2.0.3: Use mz or fs-extra^3.0 with Promise Support

npm WARN deprecated tar.gz@1.0.7: ⚠️  WARNING ⚠️ tar.gz module has been deprecated and your application is vulnerable. Please use tar module instead: npm: tar

npm WARN lifecycle scrypt@6.0.3~preinstall: cannot run in wd %s %s (wd=%s) scrypt@6.0.3 node node-scrypt-preinstall.js /usr/lib/node_modules/.staging/scrypt-6e09b00c

 

> scrypt@6.0.3 install /usr/lib/node_modules/web3/node_modules/scrypt

> node-gyp rebuild

 

gyp WARN EACCES user "mbarrow" does not have permission to access the dev dir "/root/.node-gyp/6.16.0"

gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/web3/node_modules/scrypt/.node-gyp"

make: Entering directory `/usr/lib/node_modules/web3/node_modules/scrypt/build'

  SOLINK_MODULE(target) Release/obj.target/copied_files.node

  COPY Release/copied_files.node

  CC(target) Release/obj.target/scrypt_wrapper/src/util/memlimit.o

  CC(target) Release/obj.target/scrypt_wrapper/src/scryptwrapper/keyderivation.o

  CC(target) Release/obj.target/scrypt_wrapper/src/scryptwrapper/pickparams.o

  CC(target) Release/obj.target/scrypt_wrapper/src/scryptwrapper/hash.o

  AR(target) Release/obj.target/scrypt_wrapper.a

  COPY Release/scrypt_wrapper.a

  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/lib/crypto/crypto_scrypt.o

  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/lib/crypto/crypto_scrypt_smix.o

  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/libcperciva/util/warnp.o

  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/libcperciva/alg/sha256.o

  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/libcperciva/util/insecure_memzero.o

  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/lib/scryptenc/scryptenc_cpuperf.o

  AR(target) Release/obj.target/scrypt_lib.a

  COPY Release/scrypt_lib.a

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_common.o

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_params_async.o

In file included from ../src/node-boilerplate/inc/scrypt_params_async.h:28:0,

                 from ../src/node-boilerplate/scrypt_params_async.cc:4:

../src/node-boilerplate/inc/scrypt_async.h: In member function 'virtual void ScryptAsyncWorker::HandleErrorCallback()':

../src/node-boilerplate/inc/scrypt_async.h:53:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

       callback->Call(1, argv);

                             ^

../src/node-boilerplate/scrypt_params_async.cc: In member function 'virtual void ScryptParamsAsyncWorker::HandleOKCallback()':

../src/node-boilerplate/scrypt_params_async.cc:32:25: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

   callback->Call(2, argv);

                         ^

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_params_sync.o

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_kdf_async.o

In file included from ../src/node-boilerplate/inc/scrypt_kdf_async.h:28:0,

                 from ../src/node-boilerplate/scrypt_kdf_async.cc:4:

../src/node-boilerplate/inc/scrypt_async.h: In member function 'virtual void ScryptAsyncWorker::HandleErrorCallback()':

../src/node-boilerplate/inc/scrypt_async.h:53:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

       callback->Call(1, argv);

                             ^

../src/node-boilerplate/scrypt_kdf_async.cc: In member function 'virtual void ScryptKDFAsyncWorker::HandleOKCallback()':

../src/node-boilerplate/scrypt_kdf_async.cc:28:27: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

     callback->Call(2, argv);

                           ^

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_kdf_sync.o

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_kdf-verify_sync.o

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_kdf-verify_async.o

In file included from ../src/node-boilerplate/inc/scrypt_kdf-verify_async.h:28:0,

                 from ../src/node-boilerplate/scrypt_kdf-verify_async.cc:4:

../src/node-boilerplate/inc/scrypt_async.h: In member function 'virtual void ScryptAsyncWorker::HandleErrorCallback()':

../src/node-boilerplate/inc/scrypt_async.h:53:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

       callback->Call(1, argv);

                             ^

../src/node-boilerplate/scrypt_kdf-verify_async.cc: In member function 'virtual void ScryptKDFVerifyAsyncWorker::HandleOKCallback()':

../src/node-boilerplate/scrypt_kdf-verify_async.cc:30:25: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

   callback->Call(2, argv);

                         ^

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_hash_sync.o

  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_hash_async.o

In file included from ../src/node-boilerplate/inc/scrypt_hash_async.h:28:0,

                 from ../src/node-boilerplate/scrypt_hash_async.cc:28:

../src/node-boilerplate/inc/scrypt_async.h: In member function 'virtual void ScryptAsyncWorker::HandleErrorCallback()':

../src/node-boilerplate/inc/scrypt_async.h:53:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

       callback->Call(1, argv);

                             ^

../src/node-boilerplate/scrypt_hash_async.cc: In member function 'virtual void ScryptHashAsyncWorker::HandleOKCallback()':

../src/node-boilerplate/scrypt_hash_async.cc:52:25: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated (declared at ../../nan/nan.h:1618) [-Wdeprecated-declarations]

   callback->Call(2, argv);

                         ^

  CXX(target) Release/obj.target/scrypt/scrypt_node.o

  SOLINK_MODULE(target) Release/obj.target/scrypt.node

  COPY Release/scrypt.node

make: Leaving directory `/usr/lib/node_modules/web3/node_modules/scrypt/build'

 

> sha3@1.2.2 install /usr/lib/node_modules/web3/node_modules/sha3

> node-gyp rebuild

 

gyp WARN EACCES user "mbarrow" does not have permission to access the dev dir "/root/.node-gyp/6.16.0"

gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/web3/node_modules/sha3/.node-gyp"

make: Entering directory `/usr/lib/node_modules/web3/node_modules/sha3/build'

  CXX(target) Release/obj.target/sha3/src/addon.o

  CXX(target) Release/obj.target/sha3/src/displayIntermediateValues.o

  CXX(target) Release/obj.target/sha3/src/KeccakF-1600-reference.o

  CXX(target) Release/obj.target/sha3/src/KeccakNISTInterface.o

  CXX(target) Release/obj.target/sha3/src/KeccakSponge.o

  SOLINK_MODULE(target) Release/obj.target/sha3.node

  COPY Release/sha3.node

make: Leaving directory `/usr/lib/node_modules/web3/node_modules/sha3/build'

 

> websocket@1.0.26 install /usr/lib/node_modules/web3/node_modules/websocket

> (node-gyp rebuild 2> builderror.log) || (exit 0)

 

make: Entering directory `/usr/lib/node_modules/web3/node_modules/websocket/build'

  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o

  SOLINK_MODULE(target) Release/obj.target/bufferutil.node

  COPY Release/bufferutil.node

  CXX(target) Release/obj.target/validation/src/validation.o

  SOLINK_MODULE(target) Release/obj.target/validation.node

  COPY Release/validation.node

make: Leaving directory `/usr/lib/node_modules/web3/node_modules/websocket/build'

/usr/lib

└─┬ web3@1.0.0-beta.37 

  ├─┬ web3-bzz@1.0.0-beta.37 

  │ ├─┬ got@7.1.0 

  │ │ ├─┬ decompress-response@3.3.0 

  │ │ │ └── mimic-response@1.0.1 

  │ │ ├── duplexer3@0.1.4 

  │ │ ├── get-stream@3.0.0 

  │ │ ├── is-plain-obj@1.1.0 

  │ │ ├── is-retry-allowed@1.1.0 

  │ │ ├── is-stream@1.1.0 

  │ │ ├─┬ isurl@1.0.0 

  │ │ │ ├─┬ has-to-string-tag-x@1.4.1 

  │ │ │ │ └── has-symbol-support-x@1.4.2 

  │ │ │ └── is-object@1.0.1 

  │ │ ├── lowercase-keys@1.0.1 

  │ │ ├── p-cancelable@0.3.0 

  │ │ ├─┬ p-timeout@1.2.1 

  │ │ │ └── p-finally@1.0.0 

  │ │ ├── safe-buffer@5.1.2 

  │ │ ├── timed-out@4.0.1 

  │ │ ├─┬ url-parse-lax@1.0.0 

  │ │ │ └── prepend-http@1.0.4 

  │ │ └── url-to-options@1.0.1 

  │ ├─┬ swarm-js@0.1.37 

  │ │ ├── bluebird@3.5.3 

  │ │ ├─┬ buffer@5.2.1 

  │ │ │ ├── base64-js@1.3.0 

  │ │ │ └── ieee754@1.1.12 

  │ │ ├─┬ decompress@4.2.0 

  │ │ │ ├─┬ decompress-tar@4.1.1 

  │ │ │ │ ├── file-type@5.2.0 

  │ │ │ │ └─┬ tar-stream@1.6.2 

  │ │ │ │   ├── bl@1.2.2 

  │ │ │ │   ├─┬ buffer-alloc@1.2.0 

  │ │ │ │   │ ├── buffer-alloc-unsafe@1.1.0 

  │ │ │ │   │ └── buffer-fill@1.0.0 

  │ │ │ │   ├── end-of-stream@1.4.1 

  │ │ │ │   ├── fs-constants@1.0.0 

  │ │ │ │   ├─┬ readable-stream@2.3.6 

  │ │ │ │   │ ├── core-util-is@1.0.2 

  │ │ │ │   │ ├── isarray@1.0.0 

  │ │ │ │   │ ├── process-nextick-args@2.0.0 

  │ │ │ │   │ ├── string_decoder@1.1.1 

  │ │ │ │   │ └── util-deprecate@1.0.2 

  │ │ │ │   └── to-buffer@1.1.1 

  │ │ │ ├─┬ decompress-tarbz2@4.1.1 

  │ │ │ │ ├── file-type@6.2.0 

  │ │ │ │ ├── seek-bzip@1.0.5 

  │ │ │ │ └─┬ unbzip2-stream@1.3.1 

  │ │ │ │   ├─┬ buffer@3.6.0 

  │ │ │ │   │ └── base64-js@0.0.8 

  │ │ │ │   └── through@2.3.8 

  │ │ │ ├── decompress-targz@4.1.1 

  │ │ │ ├─┬ decompress-unzip@4.0.1 

  │ │ │ │ ├── file-type@3.9.0 

  │ │ │ │ ├─┬ get-stream@2.3.1 

  │ │ │ │ │ └─┬ pinkie-promise@2.0.1 

  │ │ │ │ │   └── pinkie@2.0.4 

  │ │ │ │ └─┬ yauzl@2.10.0 

  │ │ │ │   ├── buffer-crc32@0.2.13 

  │ │ │ │   └─┬ fd-slicer@1.1.0 

  │ │ │ │     └── pend@1.2.0 

  │ │ │ ├── graceful-fs@4.1.15 

  │ │ │ ├─┬ make-dir@1.3.0 

  │ │ │ │ └── pify@3.0.0 

  │ │ │ ├── pify@2.3.0 

  │ │ │ └─┬ strip-dirs@2.1.0 

  │ │ │   └── is-natural-number@4.0.1 

  │ │ ├─┬ fs-extra@2.1.2 

  │ │ │ └── jsonfile@2.4.0 

  │ │ ├─┬ fs-promise@2.0.3 

  │ │ │ ├─┬ mz@2.7.0 

  │ │ │ │ └── object-assign@4.1.1 

  │ │ │ └─┬ thenify-all@1.6.0 

  │ │ │   └── thenify@3.3.0 

  │ │ ├─┬ mime-types@2.1.21 

  │ │ │ └── mime-db@1.37.0 

  │ │ ├─┬ mkdirp-promise@5.0.1 

  │ │ │ └─┬ mkdirp@0.5.1 

  │ │ │   └── minimist@0.0.8 

  │ │ ├── mock-fs@4.7.0 

  │ │ ├── setimmediate@1.0.5 

  │ │ ├─┬ tar.gz@1.0.7 

  │ │ │ ├── bluebird@2.11.0 

  │ │ │ ├─┬ commander@2.8.1 

  │ │ │ │ └── graceful-readlink@1.0.1 

  │ │ │ ├─┬ fstream@1.0.11 

  │ │ │ │ └─┬ rimraf@2.6.3 

  │ │ │ │   └─┬ glob@7.1.3 

  │ │ │ │     ├── fs.realpath@1.0.0 

  │ │ │ │     ├── inflight@1.0.6 

  │ │ │ │     ├─┬ minimatch@3.0.4 

  │ │ │ │     │ └─┬ brace-expansion@1.1.11 

  │ │ │ │     │   ├── balanced-match@1.0.0 

  │ │ │ │     │   └── concat-map@0.0.1 

  │ │ │ │     └── path-is-absolute@1.0.1 

  │ │ │ ├── mout@0.11.1 

  │ │ │ └─┬ tar@2.2.1 

  │ │ │   └── block-stream@0.0.9 

  │ │ └─┬ xhr-request-promise@0.1.2 

  │ │   └─┬ xhr-request@1.1.0 

  │ │     ├── buffer-to-arraybuffer@0.0.5 

  │ │     ├─┬ query-string@5.1.1 

  │ │     │ ├── decode-uri-component@0.2.0 

  │ │     │ └── strict-uri-encode@1.1.0 

  │ │     ├─┬ simple-get@2.8.1 

  │ │     │ ├─┬ once@1.4.0 

  │ │     │ │ └── wrappy@1.0.2 

  │ │     │ └── simple-concat@1.0.0 

  │ │     └── url-set-query@1.0.0 

  │ └── underscore@1.8.3 

  ├─┬ web3-core@1.0.0-beta.37 

  │ ├── web3-core-helpers@1.0.0-beta.37 

  │ ├─┬ web3-core-method@1.0.0-beta.37 

  │ │ └── web3-core-promievent@1.0.0-beta.37 

  │ └─┬ web3-core-requestmanager@1.0.0-beta.37 

  │   ├─┬ web3-providers-http@1.0.0-beta.37 

  │   │ └─┬ xhr2-cookies@1.1.0 

  │   │   └── cookiejar@2.1.2 

  │   ├─┬ web3-providers-ipc@1.0.0-beta.37 

  │   │ └─┬ oboe@2.1.3 

  │   │   └── http-https@1.0.0 

  │   └─┬ web3-providers-ws@1.0.0-beta.37 

  │     └─┬ websocket@1.0.26  (git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2)

  │       ├─┬ debug@2.6.9 

  │       │ └── ms@2.0.0 

  │       ├── nan@2.10.0 

  │       ├── typedarray-to-buffer@3.1.5 

  │       └── yaeti@0.0.6 

  ├─┬ web3-eth@1.0.0-beta.37 

  │ ├─┬ web3-core-subscriptions@1.0.0-beta.37 

  │ │ └── eventemitter3@1.1.1 

  │ ├─┬ web3-eth-abi@1.0.0-beta.37 

  │ │ └─┬ ethers@4.0.0-beta.1 

  │ │   ├── @types/node@10.12.18 

  │ │   ├── aes-js@3.0.0 

  │ │   ├── elliptic@6.3.3 

  │ │   ├── hash.js@1.1.3 

  │ │   ├── js-sha3@0.5.7 

  │ │   ├── scrypt-js@2.0.3 

  │ │   ├── setimmediate@1.0.4 

  │ │   ├── uuid@2.0.1 

  │ │   └── xmlhttprequest@1.8.0 

  │ ├─┬ web3-eth-accounts@1.0.0-beta.37 

  │ │ ├── any-promise@1.3.0 

  │ │ ├─┬ crypto-browserify@3.12.0 

  │ │ │ ├─┬ browserify-cipher@1.0.1 

  │ │ │ │ ├─┬ browserify-aes@1.2.0 

  │ │ │ │ │ └── buffer-xor@1.0.3 

  │ │ │ │ ├─┬ browserify-des@1.0.2 

  │ │ │ │ │ └── des.js@1.0.0 

  │ │ │ │ └── evp_bytestokey@1.0.3 

  │ │ │ ├─┬ browserify-sign@4.0.4 

  │ │ │ │ ├── browserify-rsa@4.0.1 

  │ │ │ │ └─┬ parse-asn1@5.1.3 

  │ │ │ │   └── asn1.js@4.10.1 

  │ │ │ ├── create-ecdh@4.0.3 

  │ │ │ ├─┬ create-hash@1.2.0 

  │ │ │ │ ├── cipher-base@1.0.4 

  │ │ │ │ ├─┬ md5.js@1.3.5 

  │ │ │ │ │ └── hash-base@3.0.4 

  │ │ │ │ ├── ripemd160@2.0.2 

  │ │ │ │ └── sha.js@2.4.11 

  │ │ │ ├── create-hmac@1.1.7 

  │ │ │ ├─┬ diffie-hellman@5.0.3 

  │ │ │ │ └── miller-rabin@4.0.1 

  │ │ │ ├── inherits@2.0.3 

  │ │ │ ├── pbkdf2@3.0.17 

  │ │ │ ├── public-encrypt@4.0.3 

  │ │ │ ├── randombytes@2.0.6 

  │ │ │ └── randomfill@1.0.4 

  │ │ ├── eth-lib@0.2.7 

  │ │ ├─┬ scrypt.js@0.2.0 

  │ │ │ ├── scrypt@6.0.3 

  │ │ │ └── scryptsy@1.2.1 

  │ │ └── uuid@2.0.1 

  │ ├── web3-eth-contract@1.0.0-beta.37 

  │ ├─┬ web3-eth-ens@1.0.0-beta.37 

  │ │ └─┬ eth-ens-namehash@2.0.8 

  │ │   ├─┬ idna-uts46-hx@2.3.1 

  │ │   │ └── punycode@2.1.0 

  │ │   └── js-sha3@0.5.7 

  │ └─┬ web3-eth-iban@1.0.0-beta.37 

  │   └── bn.js@4.11.6 

  ├── web3-eth-personal@1.0.0-beta.37 

  ├── web3-net@1.0.0-beta.37 

  ├── web3-shh@1.0.0-beta.37 

  └─┬ web3-utils@1.0.0-beta.37 

    ├── bn.js@4.11.6 

    ├─┬ eth-lib@0.1.27 

    │ ├── bn.js@4.11.8 

    │ ├─┬ elliptic@6.4.1 

    │ │ ├── brorand@1.1.0 

    │ │ ├── hash.js@1.1.7 

    │ │ ├── hmac-drbg@1.0.1 

    │ │ ├── minimalistic-assert@1.0.1 

    │ │ └── minimalistic-crypto-utils@1.0.1 

    │ ├─┬ keccakjs@0.2.3 

    │ │ ├─┬ browserify-sha3@0.0.4 

    │ │ │ └── js-sha3@0.6.1 

    │ │ └── sha3@1.2.2 

    │ ├── nano-json-stream-parser@0.1.2 

    │ ├─┬ servify@0.1.12 

    │ │ ├─┬ body-parser@1.18.3 

    │ │ │ ├── bytes@3.0.0 

    │ │ │ ├── content-type@1.0.4 

    │ │ │ ├── depd@1.1.2 

    │ │ │ ├─┬ http-errors@1.6.3 

    │ │ │ │ └── statuses@1.5.0 

    │ │ │ ├─┬ iconv-lite@0.4.23 

    │ │ │ │ └── safer-buffer@2.1.2 

    │ │ │ ├─┬ on-finished@2.3.0 

    │ │ │ │ └── ee-first@1.1.1 

    │ │ │ ├── qs@6.5.2 

    │ │ │ ├─┬ raw-body@2.3.3 

    │ │ │ │ └── unpipe@1.0.0 

    │ │ │ └─┬ type-is@1.6.16 

    │ │ │   └── media-typer@0.3.0 

    │ │ ├─┬ cors@2.8.5 

    │ │ │ └── vary@1.1.2 

    │ │ ├─┬ express@4.16.4 

    │ │ │ ├─┬ accepts@1.3.5 

    │ │ │ │ └── negotiator@0.6.1 

    │ │ │ ├── array-flatten@1.1.1 

    │ │ │ ├── content-disposition@0.5.2 

    │ │ │ ├── cookie@0.3.1 

    │ │ │ ├── cookie-signature@1.0.6 

    │ │ │ ├── encodeurl@1.0.2 

    │ │ │ ├── escape-html@1.0.3 

    │ │ │ ├── etag@1.8.1 

    │ │ │ ├─┬ finalhandler@1.1.1 

    │ │ │ │ └── statuses@1.4.0 

    │ │ │ ├── fresh@0.5.2 

    │ │ │ ├── merge-descriptors@1.0.1 

    │ │ │ ├── methods@1.1.2 

    │ │ │ ├── parseurl@1.3.2 

    │ │ │ ├── path-to-regexp@0.1.7 

    │ │ │ ├─┬ proxy-addr@2.0.4 

    │ │ │ │ ├── forwarded@0.1.2 

    │ │ │ │ └── ipaddr.js@1.8.0 

    │ │ │ ├── range-parser@1.2.0 

    │ │ │ ├─┬ send@0.16.2 

    │ │ │ │ ├── destroy@1.0.4 

    │ │ │ │ ├── mime@1.4.1 

    │ │ │ │ └── statuses@1.4.0 

    │ │ │ ├── serve-static@1.13.2 

    │ │ │ ├── setprototypeof@1.1.0 

    │ │ │ ├── statuses@1.4.0 

    │ │ │ └── utils-merge@1.0.1 

    │ │ ├─┬ request@2.88.0 

    │ │ │ ├── aws-sign2@0.7.0 

    │ │ │ ├── aws4@1.8.0 

    │ │ │ ├── caseless@0.12.0 

    │ │ │ ├─┬ combined-stream@1.0.7 

    │ │ │ │ └── delayed-stream@1.0.0 

    │ │ │ ├── extend@3.0.2 

    │ │ │ ├── forever-agent@0.6.1 

    │ │ │ ├─┬ form-data@2.3.3 

    │ │ │ │ └── asynckit@0.4.0 

    │ │ │ ├─┬ har-validator@5.1.3 

    │ │ │ │ ├─┬ ajv@6.7.0 

    │ │ │ │ │ ├── fast-deep-equal@2.0.1 

    │ │ │ │ │ ├── fast-json-stable-stringify@2.0.0 

    │ │ │ │ │ ├── json-schema-traverse@0.4.1 

    │ │ │ │ │ └─┬ uri-js@4.2.2 

    │ │ │ │ │   └── punycode@2.1.1 

    │ │ │ │ └── har-schema@2.0.0 

    │ │ │ ├─┬ http-signature@1.2.0 

    │ │ │ │ ├── assert-plus@1.0.0 

    │ │ │ │ ├─┬ jsprim@1.4.1 

    │ │ │ │ │ ├── extsprintf@1.3.0 

    │ │ │ │ │ ├── json-schema@0.2.3 

    │ │ │ │ │ └── verror@1.10.0 

    │ │ │ │ └─┬ sshpk@1.16.0 

    │ │ │ │   ├── asn1@0.2.4 

    │ │ │ │   ├── bcrypt-pbkdf@1.0.2 

    │ │ │ │   ├── dashdash@1.14.1 

    │ │ │ │   ├── ecc-jsbn@0.1.2 

    │ │ │ │   ├── getpass@0.1.7 

    │ │ │ │   ├── jsbn@0.1.1 

    │ │ │ │   └── tweetnacl@0.14.5 

    │ │ │ ├── is-typedarray@1.0.0 

    │ │ │ ├── isstream@0.1.2 

    │ │ │ ├── json-stringify-safe@5.0.1 

    │ │ │ ├── oauth-sign@0.9.0 

    │ │ │ ├── performance-now@2.1.0 

    │ │ │ ├─┬ tough-cookie@2.4.3 

    │ │ │ │ ├── psl@1.1.31 

    │ │ │ │ └── punycode@1.4.1 

    │ │ │ ├── tunnel-agent@0.6.0 

    │ │ │ └── uuid@3.3.2 

    │ │ └─┬ xhr@2.5.0 

    │ │   ├─┬ global@4.3.2 

    │ │   │ ├─┬ min-document@2.19.0 

    │ │   │ │ └── dom-walk@0.1.1 

    │ │   │ └── process@0.5.2 

    │ │   ├── is-function@1.0.1 

    │ │   ├─┬ parse-headers@2.0.1 

    │ │   │ ├─┬ for-each@0.3.3 

    │ │   │ │ └── is-callable@1.1.4 

    │ │   │ └── trim@0.0.1 

    │ │   └── xtend@4.0.1 

    │ └─┬ ws@3.3.3 

    │   ├── async-limiter@1.0.0 

    │   └── ultron@1.1.1 

    ├─┬ ethjs-unit@0.1.6 

    │ └── bn.js@4.11.6 

    ├─┬ number-to-bn@1.7.0 

    │ ├── bn.js@4.11.6 

    │ └─┬ strip-hex-prefix@1.0.0 

    │   └── is-hex-prefixed@1.0.0 

    ├── randomhex@0.1.5 

    └── utf8@2.1.1