echo

Mike Tango Bravo · Updated 2022-02-05

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 https://github.com/ethereum/go-ethereum

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 https://github.com/cubedro/eth-net-intelligence-api.git

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: https://npmjs.com/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

Child pages