-
Notifications
You must be signed in to change notification settings - Fork 371
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use Polygon gas oracle #2965
Use Polygon gas oracle #2965
Conversation
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice work
would be good to just import as a middleware and add to the stack
4197c85
to
51fde3d
Compare
Changed to use middlewares - note this was a bit more painful / ugly than you'd probably expect, which is a result of the The GasOracleMiddleware will apply the provided GasOracle regardless of what chain it is, so we'd need to either: With (a), we end up with a bunch of really ugly conditional paths because we always need a concrete type for the provider/middleware object And with (b), we need to have a GasOracle that will signal to the |
After investigating #2959, I found the following this is a known problem with Polygon, explanation here ethers-io/ethers.js#2828 (comment) Fun fact Asa looked into this once #771 Here's a discussion it in Foundry, which I found hoping that ethers-rs folks had ran into this before foundry-rs/foundry#1703 Foundry fixed this by using the Polygon gas station oracle which seems to be recommended path https://github.com/foundry-rs/foundry/pull/3368/files#diff-c89a4bbf7a90da118dcf00c5fe70eba78f8e5d95662bb5f039a353113e95042bR205 There's actually a polygon ethers middleware for this https://docs.rs/ethers/latest/ethers/middleware/gas_oracle/polygon/struct.Polygon.html So I (originally) borrowed this code from Foundry https://github.com/foundry-rs/foundry/blob/master/crates/common/src/provider.rs#L254-L290 Changed to use Middlewares This also means we can remove our existing janky Polygon logic <!-- Are there any minor or drive-by changes also included? --> <!-- - Fixes #[issue number here] --> <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests -->
### Description using image from #2965 ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests -->
After investigating #2959, I found the following this is a known problem with Polygon, explanation here ethers-io/ethers.js#2828 (comment) Fun fact Asa looked into this once #771 Here's a discussion it in Foundry, which I found hoping that ethers-rs folks had ran into this before foundry-rs/foundry#1703 Foundry fixed this by using the Polygon gas station oracle which seems to be recommended path https://github.com/foundry-rs/foundry/pull/3368/files#diff-c89a4bbf7a90da118dcf00c5fe70eba78f8e5d95662bb5f039a353113e95042bR205 There's actually a polygon ethers middleware for this https://docs.rs/ethers/latest/ethers/middleware/gas_oracle/polygon/struct.Polygon.html So I (originally) borrowed this code from Foundry https://github.com/foundry-rs/foundry/blob/master/crates/common/src/provider.rs#L254-L290 Changed to use Middlewares This also means we can remove our existing janky Polygon logic <!-- Are there any minor or drive-by changes also included? --> <!-- - Fixes #[issue number here] --> <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests -->
Description
After investigating #2959, I found the following
this is a known problem with Polygon, explanation here ethers-io/ethers.js#2828 (comment)
Fun fact Asa looked into this once #771
Here's a discussion it in Foundry, which I found hoping that ethers-rs folks had ran into this before
foundry-rs/foundry#1703
Foundry fixed this by using the Polygon gas station oracle which seems to be recommended path https://github.com/foundry-rs/foundry/pull/3368/files#diff-c89a4bbf7a90da118dcf00c5fe70eba78f8e5d95662bb5f039a353113e95042bR205
There's actually a polygon ethers middleware for this https://docs.rs/ethers/latest/ethers/middleware/gas_oracle/polygon/struct.Polygon.html
So I (originally) borrowed this code from Foundry https://github.com/foundry-rs/foundry/blob/master/crates/common/src/provider.rs#L254-L290
Changed to use Middlewares
This also means we can remove our existing janky Polygon logic
Drive-by changes
Related issues
Backward compatibility
Testing