wormhole/relayer/spy_relayer
Jeff Schroeder 349fa42c58
Spy relayer cleanup (#1015)
* initial spy-relayer

* Update spy_relayer Dockerfile

* added example mainnet config files

* split out private keys into its own ENV variable

* Update spy relayer supportedChains.json

To remove the `walletPrivateKey` entries. All of the private keys have
been split out into their own json file.

* fixed evm private key env parse

* missing solana accounts report 0 balance, rather than error

* wallet address is logged in debug

* spy_relayer: enabled prometheus default metrics

Also set a prefix of `relayer_`

* spy_relayer: updates to the prometheus bits

* Use a single metric registry
* Use a simpler metric name and add labels for individual wallets

* spy_relayer: human readable app mode in the metrics

[ listener | relayer | both ]

* spy_relayer: unify metrics

* remove the collection of default metrics
* hardcode the `spy_relayer_` prefix on all custom metrics

* fixed dep arrays, nullable terra token/balance info

* attempt stack debug

* debug pullTerraBalance

* provider http or ws

* update sdk

* logging for tokenAddress is 0

* fix foreign address calc

* fix calcLocalAddressesTerra

* relayer/spy_relayer: update prometheus helpers

Add / url handler for the ingress-gce stupid load balancer that
doesn't support custom url healthchecks unless you make a BackendConfig
custom resource definition.

* logging refinement

* use chain name in prometheus

* adjust retry timeout calculation

* spy_relayer: update prometheus bits

* improved error handling

* relayer ui improvements

* prep sdk release

* use latest sdk, manual redeem button

* relaying ux improvements

* gas price fix

* shortened terra success log

* use gh base relayer list

* fix prometheus urls

* Update prometheus metric name

* only show TPS warning on mainnet

* show relayer fee in source preview

* fix unwrap check

* add native bool to balance metric

* logging improvements

* add feeRecipientAddress to redeemOnSolana

* gather solana fees

* remove relayer ws support

* add nativeCurrencySymbol to ChainConfigInfo

* fix solana native symbol

* demoteWorking option, logger contexts

* scoped logging

* bridge_ui: unwrap native

* add evm wallet monitor test

* solana vaa parsing fix

* add monitorRedis

* make Jeff's brain happy

* log demoting keys

* register redisQueue metric

* human readable redisQueue metric

* fix timestamp inconsistency

* use scopedLogger for the first level of workers

* pull wallet balances in parallel

* more scoped logging

* pick a solana fee

* moving keys log improvement

* update eth gas calculations based on recent txs

* use postVaaSolanaWithRetry

* split success and failures by chain

* fix using terraCoin

* check prom every 10s

* batch getting evm token balances

* batch calcLocalAddressesEVM

* debug worker logging

* log retry number

* support Polygon?

* reset status on demotion

* enhance!

* update avax fee

Co-authored-by: Chase Moran <chasemoran45@gmail.com>
Co-authored-by: Kevin Peters <kpeters@jumptrading.com>
Co-authored-by: Evan Gray <battledingo@gmail.com>
2022-03-28 23:39:08 -04:00
..
config/mainnet Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
src Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
.env.sample Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
.env.tilt.listener Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
.env.tilt.relayer Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
.gitignore Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
Dockerfile Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
QA.md Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
README.md Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
design.md Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
jestconfig.json Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
package-lock.json Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
package.json Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00
tsconfig.json Spy relayer cleanup (#1015) 2022-03-28 23:39:08 -04:00

README.md

In order to compile spy_relay you need to do:

npm install redis

In order to run spy_relay successfully you need to do:

docker pull redis

The above will grab the docker for redis. In order to run that docker use a command similar to:

docker run --rm -p6379:6379 --name redis-docker -d redis

To run the redis GUI do the following:

sudo apt-get install snapd
sudo snap install redis-desktop-manager
cd /var/lib/snapd/desktop/applications; ./redis-desktop-manager_rdm.desktop

To build the spy / guardian docker container:

cd spy_relay
docker build -f Dockerfile -t guardian .

To run the docker image in TestNet:

docker run -e ARGS='--spyRPC [::]:7073 --network /wormhole/testnet/2/1 --bootstrap /dns4/wormhole-testnet-v2-bootstrap.certus.one/udp/8999/quic/p2p/12D3KooWBY9ty9CXLBXGQzMuqkziLntsVcyz4pk1zWaJRvJn6Mmt' -p 7073:7073 guardian

To run spy_relay:

npm run spy_relay

Spy Listener Environment variables

see .env.tilt.listener for an example

  • SPY_SERVICE_HOST - host & port string to connect to the spy
  • SPY_SERVICE_FILTERS - Addresses to monitor (Bridge contract addresses) array of ["chainId","emitterAddress"]. Emitter addresses are native strings.
  • REDIS_HOST - ip / host for the REDIS instance.
  • REDIS_PORT - port number for redis.
  • REST_PORT - port that the REST entrypoint will listen on.
  • READINESS_PORT - port for kubernetes readiness probe
  • LOG_LEVEL - log level, such as debug
  • SUPPORTED_TOKENS - Origin assets that will attempt to be relayed. Array of ["chainId","address"], address should be a native string.

Spy Relayer Environment variables

see .env.tilt.relayer for an example

  • SUPPORTED_CHAINS - The configuration for each chain which will be relayed. See chainConfigs.example.json for the format. Of note, walletPrivateKey is an array, and a separate worker will be spun up for every private key provided.
  • REDIS_HOST - host of the redis service, should be the same as in the spy_listener
  • REDIS_PORT - port for redis to connect to
  • PROM_PORT - port where prometheus monitoring will listen
  • READINESS_PORT - port for kubernetes readiness probe
  • CLEAR_REDIS_ON_INIT - boolean, if TRUE the relayer will clear the PENDING and WORKING Redis tables before it starts up.
  • DEMOTE_WORKING_ON_INIT - boolean, if TRUE the relayer will move everything from the WORKING Redis table to the PENDING one.
  • LOG_LEVEL - log level, debug or info