2022-03-05 06:55:16 +03:00
# web3-proxy
2022-03-05 07:59:11 +03:00
quick and dirty proxy for ethereum rpcs (or similar)
2022-03-05 06:58:00 +03:00
2022-03-05 07:59:11 +03:00
Signed transactions are sent to the configured private RPC (eden, flashbots, etc.). All other requests are sent to the configured primary RPC (alchemy, moralis, rivet, your own node, or one of many other providers).
```
cargo run -- --help
```
2022-03-05 06:58:00 +03:00
```
Finished dev [unoptimized + debuginfo] target(s) in 0.04s
Running `target/debug/eth-proxy --help`
Usage: eth-proxy --eth-primary-rpc < eth-primary-rpc > --eth-private-rpc < eth-private-rpc > [--listen-port < listen-port > ]
Proxy Web3 Requests
Options:
--eth-primary-rpc the primary Ethereum RPC server
--eth-private-rpc the private Ethereum RPC server
2022-03-05 06:58:59 +03:00
--listen-port the port to listen on
2022-03-05 06:58:00 +03:00
--help display usage information
2022-03-05 07:59:11 +03:00
```
2022-03-05 06:58:00 +03:00
```
2022-03-05 08:00:10 +03:00
cargo run -r -- --eth-primary-rpc "https://your.favorite.provider"
2022-03-05 07:59:11 +03:00
```
```
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8845/eth
```
## Todo
- [x] simple proxy
- [ ] proper logging
- [ ] load balance between multiple RPC servers
- [ ] support more than just ETH
- [ ] option to disable private rpc and send everything to primary
- [ ] health check nodes by block height
- [ ] measure latency to nodes
- [ ] Dockerfile