feat: cap bundler surcharge if all solvers fail #441
Merged
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.
Summary
Bundling should not be profitable when all solvers fail. If they fail due to fault of the solver, the current accounting charges Atlas and Bundler surcharges on the gas costs of the execution of those SolverOperations. This was then distributed to Atlas and Bundler at the end of the metacall.
However, the Bundler may also collect storage refunds after bundling a metacall, which in combination with the Bundler surcharges, could result in a profitable tx (ETH spent on gas cost vs refunds and surcharges received). As such, we now cap the Bundler surcharge, only in the case of all solvers failing, to a max of 80% of the metacall gas cost. The remaining 20% may be made up through storage refunds.
If the max is exceeded, the excess is instead taken as Atlas gas surcharge.