Reduce NativeTokenHome's receive method gas cost #723
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.
Why this should be merged
Fixes #722
How this works
Rather than call the public method
getTokenAddress
, which results in an external call, we can fetch the same address directly fromNativeTokenHome
's state.How this was tested
Manual testing with unoptimized contract builds. To reproduce:
optimizer = false
to the default profile infoundry.toml
forge test --match-test testReceiveWithdrawSuccess --match-contract NativeTokenHomeTest -vvvv --gas-report
receive
method in the trace (263
versus2311
before this change)To observe the test failing as a result of disabling optimization (and without this change, of course), replace
sendValue
withtransfer
in the test wrapped token contract.Automated testing
Automated tests would require a separate test profile that disables optimization. I consider that out of scope for this issue.
How is this documented
N/A