Commit Graph

460 Commits

Author SHA1 Message Date
Matthew Slipper
e8bf87363d Merge pull request #4894 from ethereum-optimism/develop
Develop -> Master
2023-02-15 09:33:54 -07:00
mergify[bot]
c8e0fa5676 Merge pull request #4891 from ethereum-optimism/feat/global-method-rl
proxyd: Add global flag to method overrides
2023-02-15 15:21:17 +00:00
Matthew Slipper
c17bcc9b83 proxyd: Add global flag to method overrides
This allows us to set global limits on individual RPCs that ignore any origin/user agent exemption.
2023-02-15 00:44:19 -07:00
Matthew Slipper
454bc10e44 Merge pull request #4797 from ethereum-optimism/bugfix/include-nonce-in-rate-limit
proxyd: Add nonce to sender-based rate limit
2023-01-27 12:42:30 -07:00
Matthew Slipper
d7c80a5a8c proxyd: Add nonce to sender-based rate limit 2023-01-27 12:36:20 -07:00
mergify[bot]
8648b410b9 Merge pull request #4796 from ethereum-optimism/inphi/proxyd-log
proxyd: Add missing req_id to log entry
2023-01-27 18:39:55 +00:00
inphi
2a87efb68a proxyd: Add missing req_id to log entry 2023-01-27 13:23:20 -05:00
Matthew Slipper
d1fbb44e03 Merge pull request #4769 from ethereum-optimism/develop
Develop -> Master
2023-01-23 12:36:45 -07:00
Matthew Slipper
f66cedbef5 Merge pull request #4768 from ethereum-optimism/changeset-release/master
Version Packages
2023-01-23 12:36:14 -07:00
github-actions[bot]
868d622e4f Version Packages 2023-01-23 19:35:31 +00:00
mergify[bot]
98a303ae77 Merge pull request #4759 from ethereum-optimism/feat/sender-rate-limit
proxyd: Add sender-based rate limiter
2023-01-23 18:04:55 +00:00
Matthew Slipper
aa3a5c859a proxyd: Add sender-based rate limiter
This PR adds a sender-based rate limiter to proxyd. This rate limiter throttles eth_sendRawTransaction requests based on sender in order to prevent abusive behavior on the sequencer.

Integration tests have been added to test this functionality.
2023-01-23 10:59:40 -07:00
Matthew Slipper
19562c34a9 Merge pull request #3750 from ethereum-optimism/develop
Develop -> Master
2022-10-20 10:43:49 -06:00
Matthew Slipper
928c30a48e Merge pull request #3749 from ethereum-optimism/changeset-release/master
Version Packages
2022-10-20 10:43:32 -06:00
Matthew Slipper
1eceebb814 Merge pull request #3747 from ethereum-optimism/develop
Develop -> Master
2022-10-20 10:38:56 -06:00
Matthew Slipper
d81385e34c Merge pull request #3746 from ethereum-optimism/changeset-release/master
Version Packages
2022-10-20 10:38:40 -06:00
Matthew Slipper
8afcf75d2b Merge pull request #3724 from ethereum-optimism/develop
Develop -> Master
2022-10-17 18:22:07 -05:00
Matthew Slipper
3c8e654aba Merge pull request #3723 from ethereum-optimism/changeset-release/master
Version Packages
2022-10-17 18:21:49 -05:00
github-actions[bot]
f1b582c385 Version Packages 2022-10-17 23:21:20 +00:00
Matthew Slipper
813a22ba27 Merge pull request #3722 from ethereum-optimism/develop
Develop -> Master
2022-10-17 18:19:47 -05:00
mergify[bot]
ce9f585d3e Merge pull request #3700 from ethereum-optimism/feat/proxyd-allow-backend-lim-disable
proxyd: Allow disabling backend rate limiting
2022-10-17 16:01:48 +00:00
mergify[bot]
019f800e90 Merge branch 'develop' into feat/proxyd-allow-backend-lim-disable 2022-10-17 15:53:44 +00:00
mergify[bot]
43f0e88f5b Merge pull request #3708 from ethereum-optimism/feat/pattern-origins
proxyd: Support pattern matching in origin and user agent
2022-10-17 15:18:22 +00:00
Matthew Slipper
fe8a89e61d proxyd: Support pattern matching in origin and user agent
Adds support for pattern matchin in exempt origins. This should help with some of the issues Synthetix and others are seeing.
2022-10-17 07:08:33 -06:00
Matthew Slipper
fd5e974bd5 fix tests 2022-10-15 09:59:11 -05:00
Zach Howard
24a3668bc8 adds log level conf to proxyd (#3704) 2022-10-14 13:56:27 -05:00
Matthew Slipper
8a624bb2ca proxyd: Allow disabling backend rate limiting
The backend rate limiter is in place to protect upstreams like the sequencer. However, in many cases it isn't needed and it causes unnecessary requests to Redis. This PR allows this to be disabled, and disables this by default.
2022-10-13 15:02:35 -05:00
Matthew Slipper
caea9831b2 Merge pull request #3699 from ethereum-optimism/develop
Develop -> Master
2022-10-13 12:53:27 -05:00
Matthew Slipper
53a58bcdc8 Merge pull request #3698 from ethereum-optimism/changeset-release/master
Version Packages
2022-10-13 12:52:59 -05:00
github-actions[bot]
053ce4ddfd Version Packages 2022-10-13 15:32:03 +00:00
Matthew Slipper
82ab59b8c7 Merge pull request #3697 from ethereum-optimism/develop
Develop -> Master
2022-10-13 10:29:30 -05:00
Matthew Slipper
3f19d26ea8 Merge pull request #3681 from ethereum-optimism/10-09-proxyd_Integrate_custom_rate_limiter
proxyd: Integrate custom rate limiter
2022-10-12 15:34:14 -05:00
Matthew Slipper
7fd63c6c6c Merge pull request #3679 from ethereum-optimism/10-09-proxyd_Custom_rate_limiter_implementation
proxyd: Custom rate limiter implementation
2022-10-12 15:34:02 -05:00
Matthew Slipper
f737002baa proxyd: Integrate custom rate limiter
Integrates the custom rate limiter in the previous PR into the rest of the application. Also takes the opportunity to clean up how we instantiate Redis clients so that we can share them among multiple different services.

There are some config changes in this PR. Specifically, you must specify a `base_rate` and `base_interval` in the rate limit config.
2022-10-11 17:20:23 -05:00
Matthew Slipper
fa7425683a proxyd: Custom rate limiter implementation
Our current proxyd deployment does not share rate limit state across multiple servers within a backend group. This means that rate limits on the public endpoint are artifically high.

This PR adds a Redis-based rate limiter to fix this problem. While our current rate limiting library (github.com/sethvargo/go-limiter) _does_ support Redis, the client library it uses is not type safe, is less performant, and would require us to update the other places we use Redis. To avoid these issues, I created a simple rate limiting interface with both Redis and memory backend.

Note that this PR only adds the new implementations - it does not integrate them with the rest of the codebase. I'll do that in a separate PR to make review easier.
2022-10-11 17:20:23 -05:00
Chris Wessels
15a59bad99 fix(proxyd): Fix compliance with JSON-RPC 2.0 spec by adding optional RPCError.Data (#3683)
* fix: add optional data field to RPCError struct

* fix: formatting lint

* feat(proxyd): add changeset
2022-10-11 08:51:02 -06:00
Matthew Slipper
8476e1b194 Merge pull request #3604 from ethereum-optimism/develop
Develop -> Master
2022-09-28 19:37:57 -06:00
Matthew Slipper
7cadaca188 Merge pull request #3603 from ethereum-optimism/changeset-release/master
Version Packages
2022-09-28 19:37:23 -06:00
github-actions[bot]
09552fddea Version Packages 2022-09-29 01:37:00 +00:00
Matthew Slipper
3638b5575b Merge pull request #3602 from ethereum-optimism/develop
Develop -> Master
2022-09-28 19:34:57 -06:00
Matthew Slipper
537717610e proxyd: Add batch size metric and configurable max (#3545)
* proxyd: Add batch size metric and configurable max

The max batch size will be overwritten if it is over `MaxBatchRPCCallsHardLimit`.

Builds on https://github.com/ethereum-optimism/optimism/pull/3544.

* changeset

* fix lint

* fix test
2022-09-23 15:06:02 -06:00
Matthew Slipper
485258d3c2 proxyd: Add customizable whitelist error message (#3544)
* proxyd: Add customizable whitelist error message

Alchemy is asking for this so that we can include their affiliate link.

* add missing test case

* fix error message

* goimports
2022-09-23 14:21:12 -06:00
Matthew Slipper
795d1025bb Merge pull request #3540 from ethereum-optimism/develop
Version Packages
2022-09-23 15:49:28 +02:00
Matthew Slipper
7f2456f217 Merge pull request #3539 from ethereum-optimism/changeset-release/master
Version Packages
2022-09-23 15:47:59 +02:00
Matthew Slipper
11ffe341b2 Merge pull request #3510 from ethereum-optimism/develop
ci: release step 3
2022-09-20 17:27:49 +02:00
Matthew Slipper
9fb21b52b8 Merge pull request #3509 from ethereum-optimism/changeset-release/master
Version Packages
2022-09-20 17:24:31 +02:00
github-actions[bot]
70557fdafd Version Packages 2022-09-20 15:21:51 +00:00
Matthew Slipper
787ae9b9a5 Merge pull request #3508 from ethereum-optimism/develop
ci: trigger releases
2022-09-20 17:19:04 +02:00
Matthew Slipper
d228a55bd7 proxyd: Fix error message in tests (#3503)
* proxyd: Fix error message in tests

The custom error message wasn't being carried over in batch responses.

* review fixes

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2022-09-19 16:44:08 +00:00
Matthew Slipper
3fb4debfe1 proxyd: Add logging for origin and remote IP (#3482)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
2022-09-16 17:28:56 +00:00