* Modify intialize to support fallback url and rate limit
* Add fallback and rate limit config for all the chains
* remove unused WormchainTxDetail struct
* Add pool of items to common
* Add rpc pool to tx-tracker
* Rename chain url to baseUrl
* add fallback to wormchain chains
* update tx-tracker fetchone to use rpc pool
* Modify backfiller to use rpc pool
* fix merge to main run files
* Add rpc pool to controller
* remove comments
* fix pool sort function
* Add rpc pool to all the chains
* Fix algorand, aptos, sui integrations
* Fix pool solana
* remove api_sei3 old implementation
* Add metrics to get success/error rpc call
* Add rpc field in call rpc metric
* Fix common go.mod and remove unused if condition
* Update go.mod tx-tracker
* Create rpc count prometheus metrics
* Add fallback to insert originTx if rcp fail
* Check if the transaction doesn't exists
* Modify in tx-tracker already processed method
* fix wormchain rpc
* Add rpc settings as json file
* Enable overwrite to stress test
* Add rpc provider as k8s secret
* Add metrics to get vaa retry processing
Co-authored-by: ftocal fert1335@gmail.com
* Add worker pool in consumer for tx-tracker
* fix config by env
* Set consumer workers in 1
---------
Co-authored-by: Fernando Torres <fert1335@gmail.com>
### Description
This pull request removes duplicated code related to MongoDB connection/disconnection attempts. This code was copied across all 8 microservices.
The functionality is now unified under the `common/dbutil` package.
### Summary
This pull request changes the retry logic in the `tx-tracker`.
When failing to process a transaction, the associated SQS message will be left to expire and will reappear after `visibilityTimeout` seconds. As a side effect, there will be several retries before giving up.
### Description
This pull request implements improvements in the `tx-tracker` service:
* Adjust SQS visibilityTimeout.
* Process PythNet messages concurrently (this will make it easier for the service to catch up if there are a lot of messages in the input queue).
* Add more context information to error messages.
### Summary
Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/415
When the `tx-tracker` service processes a VAA, sometimes the transaction is not finalized (e.g.:for chains with slow finality, VAAs with low consistency level, out-of-sync nodes). This problem was observed on chains like Solana, Ethereum and Polygon, but could have happened on other chains.
This pull request adds the logic needed to wait and retry processing the VAA, hoping that the originating transaction reaches finality.
Also, the `tx-tracker` service now uses a worker pool to process transactions, which will lead to higher throughput. This will benefit the WormholeScan UI, specially in the case when a large number of VAAs are emitted in a short period of time.
### Summary
Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/404
The WormholeScan UI needs to display the sender address for each token bridge VAA. This pull request modifies the `tx-tracker` service to obtain that information for Solana and eight EVM chains.
The transaction sender will become accessible through the following endpoints:
* `GET /api/v1/global-tx/{chain}/{emitter}/{seq}`: field `originTx.from`.
* `GET /api/v1/transactions`: field `originAddress`.
In both cases, the field is nullable (i.e.: sometimes it may not be available due to eventual consistency or internal errors)
### Summary
Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/254
For all chains except Solana, the data in `globalTransactions.sourceTx` was somewhat duplicated, since we already had that data in the `vaas` collection.
This pull request changes the `tx-tracker` service so that no redundant data will be written, and also changes the API to look up the data from the `vaas` collection instead.
The responses from the endpoint `/api/v1/global-tx` will no longer contain the field `originTx.from`.
### Summary
This pull request adds a new component under the directory `txtracker`.
This component retrieves information about portal token bridge transfers (i.e.: sender address, receiver address, timestamp), and persists the data in MongoDB.
### Chains supported
The blockhains currently supported are:
* Terra (27% of outgoing transfers)
* Solana (25%)
* BSC (25%)
* Eth (14%)
* Polygon (4%)
The remaining chains will be added iteratively as needed.