lighthouse/validator_client/src/http_api
Mac L 7dbc59efeb Share reqwest::Client between validators when using Web3Signer (#3335)
## Issue Addressed

#3302

## Proposed Changes

Move the `reqwest::Client` from being initialized per-validator, to being initialized per distinct Web3Signer. 
This is done by placing the `Client` into a `HashMap` keyed by the definition of the Web3Signer as specified by the `ValidatorDefintion`. This will allow multiple Web3Signers to be used with a single VC and also maintains backwards compatibility.

## Additional Info

This was done to reduce the memory used by the VC when connecting to a Web3Signer.

I set up a local testnet using [a custom script](https://github.com/macladson/lighthouse/tree/web3signer-local-test/scripts/local_testnet_web3signer) and ran a VC with 200 validator keys:


VC with Web3Signer:
- `unstable`: ~200MB
- With fix: ~50MB



VC with Local Signer:
- `unstable`: ~35MB
- With fix: ~35MB 


> I'm seeing some fragmentation with the VC using the Web3Signer, but not when using a local signer (this is most likely due to making lots of http requests and dealing with lots of JSON objects). I tested the above using `MALLOC_ARENA_MAX=1` to try to reduce the fragmentation. Without it, the values are around +50MB for both `unstable` and the fix.
2022-07-19 05:48:05 +00:00
..
tests Implement feerecipient API for keymanager (#3213) 2022-07-06 03:51:08 +00:00
api_secret.rs Implement standard keystore API (#2736) 2022-01-30 23:22:04 +00:00
create_validator.rs Add remotekey API support (#3162) 2022-05-09 07:21:38 +00:00
keystores.rs Allow TaskExecutor to be used in async tests (#3178) 2022-05-16 08:35:59 +00:00
mod.rs Share reqwest::Client between validators when using Web3Signer (#3335) 2022-07-19 05:48:05 +00:00
remotekeys.rs Share reqwest::Client between validators when using Web3Signer (#3335) 2022-07-19 05:48:05 +00:00
tests.rs Implement feerecipient API for keymanager (#3213) 2022-07-06 03:51:08 +00:00