tokenbridge/monitor
Przemyslaw Rzad 8b010f887d
Consistent variable naming (#198)
* Add console.table

* First steps in validate script

* env rename

* Added parameter names

* Descriptions

* Print and configuration

* Added more parameters

* Rename gas oracle to gas supplier

* More changes

* Removed env examples for now

* RPC rename

* Bridge address rename

* More changes

* jobs

* Renames

* Typo

* jobs

* Changes

* jobs

* Changes

* Monitor changes

* jovs

* Typo

* Changes

* REACT_APP_ env prefix

* Typo

* Rollback changes

* Oracle deployment

* Defaults

* Monitor

* Naming

* Typo

* Typo

* Envs

* ui deployment

* ALl jobs

* Vars in ultimate

* Lint

* Lint

* Lint

* Another way to add REACT_APP prefixing

* Unnecessary mapping

* No output timeout

* No output timeout

* Got rid of ERC20_TOKEN_ADDRESS

* Configuration readme

* Configuration

* Prefixes

* timeout

* Docs

* Docs

* docs

* docs

* docs

* Roll back ERC20_TOKEN_ADDRESS for erc-to-erc

* Typo

* lint

* Rollback

* ROllback validator

* Rollback yarn.lock

* dai and wetc update

* Rollback ERC20_TOKEN_ADDRESS

* erc to native

* examples

* all jobs

* roll back

* roll back ERC20_TOKEN_ADDRESS: "0xdbeE25CbE97e4A5CC6c499875774dc7067E9426B"

* ui env example

* typo

* Allow rpc for ultimate

* Test

* ERC20_TOKEN_ADDRESS rollback

* Specify port

* React port

* All jobs

* cosmetics

* Values

* Restore erc20 token

* Rearrange example for easier comparision

* Rearrange ultimate for easier comparision

* Rearrange for easier comparision

* Refactor

* Conditional app styles

* Loading environment variables in react app

* Add missing vars for UI in wetc and dai

* Bring back test parameters readme

* Readme for monitor vars

* Reading environment variables in e2e-commons (#207)
2019-09-13 09:11:38 +02:00
..
responses Update bridge monitor (#38) 2019-05-14 09:17:03 +02:00
scripts Add cron schedule to monitor deployment playbook (#161) 2019-07-26 15:59:30 +02:00
utils Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
.env.example Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
.eslintrc Oracle & Monitor - Compiled ABI's (#71) 2019-05-27 09:22:08 +02:00
alerts.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
checkWorker2.js Extend line width to 120 (#174) 2019-08-01 15:10:22 +02:00
checkWorker3.js Extend line width to 120 (#174) 2019-08-01 15:10:22 +02:00
checkWorker.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
crontab.example Monitor in docker (#109) 2019-06-17 09:22:53 +02:00
docker-compose.yml Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
Dockerfile Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
eventsStats.js Extend line width to 120 (#174) 2019-08-01 15:10:22 +02:00
getBalances.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
getShortEventStats.js Extend line width to 120 (#174) 2019-08-01 15:10:22 +02:00
index.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
logger.js Extend line width to 120 (#174) 2019-08-01 15:10:22 +02:00
package.json Monitor deployment playbook (#133) 2019-07-09 19:26:40 +02:00
README.md Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
stuckTransfers.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
test-srv.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00
validators.js Consistent variable naming (#198) 2019-09-13 09:11:38 +02:00

POA TokenBridge / Monitor

Tool for checking balances and unprocessed events in bridged networks.

Overview

Please refer to the POA TokenBridge overview first of all.

This tool allows you to spin up a NODE.JS server to monitor for health of the TokenBridge contracts: check for the balance difference, discover inconsistency in the validators list, catch unhandled transactions.

Examples

Example of an API

  • GET / - check contract balances & tx numbers

{
    "home": {
        "balance": "3710077.6896438415780044",
        "deposits": 481,
        "withdrawals": 221
    },
    "foreign": {
        "totalSupply": "3710077.6896438415780044",
        "deposits": 481,
        "withdrawals": 221
    },
    "balanceDiff": 0,
    "lastChecked": 1529511982,
    "depositsDiff": 0,
    "withdrawalDiff": 0
}
  • GET /validators - check validators balances
{
    "home": {
        "validators": {
            "0x35DC13c72A9C09C8AEEBD0490C7228C43Ccc38Cd": {
                "balance": "19.994900374",
                "leftTx": 66649667913333,
                "gasPrice": 1
            },
            "0x5D44BC8642947685F45004c936245B969F9709a6": {
                "balance": "19.993736069",
                "leftTx": 66645786896666,
                "gasPrice": 1
            },
            "0x284877074B986A78F01D7Eb1f34B6043b1719002": {
                "balance": "19.995139875",
                "leftTx": 66650466250000,
                "gasPrice": 1
            }
        },
        "requiredSignatures": 2
    },
    "foreign": {
        "validators": {
            "0x35DC13c72A9C09C8AEEBD0490C7228C43Ccc38Cd": {
                "balance": "19.084023268196",
                "leftTx": 28915,
                "gasPrice": 2.2
            },
            "0x5D44BC8642947685F45004c936245B969F9709a6": {
                "balance": "19.086724777075",
                "leftTx": 28919,
                "gasPrice": 2.2
            },
            "0x284877074B986A78F01D7Eb1f34B6043b1719002": {
                "balance": "19.050074813935",
                "leftTx": 28863,
                "gasPrice": 2.2
            }
        },
        "requiredSignatures": 2
    },
    "requiredSignaturesMatch": true,
    "validatorsMatch": true,
    "lastChecked": 1529512164
}
  • GET /eventsStats - check unprocessed events
{
    "onlyInHomeDeposits": [],
    "onlyInForeignDeposits": [],
    "onlyInHomeWithdrawals": [],
    "onlyInForeignWithdrawals": [],
    "lastChecked": 1529512436
}

How to run

Setup

  1. Initialize the monorepository.

  2. Go to the monitor sub-repository:

cd monitor
  1. Create .env file:
cp .env.example .env

Please refer to Configuration for details on configuration parameters.

Run web interface

Using Yarn:

yarn start

You can run web interface via pm2 or similar supervisor program.

Using Docker:

docker-compose up -d
  • The application will run on http://localhost:PORT, where PORT is specified in your .env file.
  • To enabled debug logging, set DEBUG=1 variable in .env.

Check balances of contracts and validators, get unprocessed events

Using Yarn:

yarn check-all

Using Docker:

docker-compose exec monitor yarn check-all

Cron

You can create cron job to run workers (see crontab.example for reference):

Linting

Running linter:

yarn lint

Contributing

See the CONTRIBUTING document for contribution, testing and pull request protocol.

License

License: LGPL v3.0

This project is licensed under the GNU Lesser General Public License v3.0. See the LICENSE file for details.