watcher-ts/packages/address-watcher
Nabarun Gogoi cd29b47ecc
Implement peer package to send messages between peers (#279)
* Initial implementation of class and discoving other peers

* Implement peer connection and sending messages between peers

* Add react app and use peer package for broadcasting

* Maintain stream for each remote peer

* Refactor code in peer package

* Add serve package for react-app

* Add readme for running react app

* Add peer package readme

* Add logs for events with details

* Add a chat CLI using peer package (#280)

* Add a flag to instantiate Peer for nodejs

* Add a basic chat CLI using peer

* Add a signal server arg to chat CLI

* Add instructions for chat CLI

* Fix typescript and ESM issues after adding peer package (#282)

* Fix build issues in util package

* Update eslint TS plugins

* Scope react app package name

* Convert cli package back to CJS and dynamically import ESM

* Upgrade ts-node version

* Fix tests

* Setup a relay node and pubsub based discovery (#284)

* Add a script to setup a relay node

* Use pubsub based peer discovery

* Add peer multiaddr to connection log

* Catch relay node dial errors

* Increase discovery interval and dial all mutiaddr

* Add UI to display self peer ID and multiaddrs

* Add UI for displaying live remote connections

* Send js objects in peer broadcast messages

* Add react-peer package for using peer in react app

* Reduce disconnect frequency between peers (#287)

* Restrict number of max concurrent dials per peer

* Increase hop relay timeout to 1 day

* Self review changes

* Review changes

* Increase pubsub discovery interval and add steps to create a peer id  (#290)

* Increase pubsub discovery interval

* Disable autodial to avoid peer dials without protocol on a reconnect

* Add steps to create a peer id and use for relay node

* Add back dependency to run signalling server

* Avoid bootstrapping and dial to relay node directly

Co-authored-by: prathamesh0 <42446521+prathamesh0@users.noreply.github.com>
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
2023-01-10 20:10:27 +05:30
..
environments Deprecate postgraphile usage (#122) 2022-06-08 12:13:52 +05:30
src Fix linter warnings and dependencies (#264) 2022-11-25 20:03:58 +05:30
.eslintignore Address watcher package scaffolding (#75) 2021-06-17 17:56:38 +05:30
.eslintrc.json Address watcher package scaffolding (#75) 2021-06-17 17:56:38 +05:30
.gitignore Address watcher package scaffolding (#75) 2021-06-17 17:56:38 +05:30
package.json Implement peer package to send messages between peers (#279) 2023-01-10 20:10:27 +05:30
README.md Deprecate postgraphile usage (#122) 2022-06-08 12:13:52 +05:30
tsconfig.json Enable source maps for transpiled files (#242) 2021-09-07 16:01:15 +05:30

Address Watcher

Setup

Create a postgres12 database for the job queue:

sudo su - postgres
createdb address-watcher-job-queue

Enable the pgcrypto extension on the job queue database (https://github.com/timgit/pg-boss/blob/master/docs/usage.md#intro).

Example:

postgres@tesla:~$ psql -U postgres -h localhost address-watcher-job-queue
Password for user postgres:
psql (12.7 (Ubuntu 12.7-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

address-watcher-job-queue=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION
address-watcher-job-queue=# exit

Create a postgres12 database for the address watcher:

sudo su - postgres
createdb address-watcher

Update environments/local.toml with database connection settings for both the databases.

Update the upstream config in environments/local.toml and provide the ipld-eth-server GQL API and the tracing API (debug_traceTransaction RPC provider) endpoints.

Run

Run the following scripts in different terminals.

Build files:

yarn build

GQL server:

yarn server

# For development.
yarn server:dev

# For specifying config file.
yarn server -f environments/local.toml

Job runner for processing the tracing requests queue:

yarn job-runner

# For development.
yarn job-runner:dev

# For specifying config file.
yarn job-runner -f environments/local.toml

To fill a block range:

yarn fill --start-block 1 --end-block 1000

# For specifying config file.
yarn fill -f environments/local.toml --start-block 1 --end-block 1000