fix: prevent exhausting failover providers on erc165 reverts #806
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
SR-compressed.mp4
Root cause
execution reverted
, ethers will throw an error. oa-verify mitigates this with a try-catch, returning false if an error is thrown.OAFailoverProvider
catches this deeper in the call stack (rendering the try-catch in (2) moot), and moves on to the next provider, until the list of providers is exhausted.TLDR:
Fix
OAFailoverProvider
from overzealously retrying onerc165
reverts. It can also be made more generic, to stop retrying on any call exception.Doing these:
Screen.Recording.2024-10-30.at.2.36.18.AM.mov
Note
An alternative is to change oa-verify to use a direct rpc call, to bypass ethers's throw-on-revert