Skip to content
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

Optimize CurrencyLibrary.transfer #717

Merged
merged 7 commits into from
May 26, 2024
Merged

Optimize CurrencyLibrary.transfer #717

merged 7 commits into from
May 26, 2024

Conversation

gretzke
Copy link
Contributor

@gretzke gretzke commented May 25, 2024

See #710

shuhuiluo and others added 2 commits May 25, 2024 03:14
* Refactor ETH transfer in `CurrencyLibrary`

The ETH transfer process in the Currency.sol file is now refactored using memory-safe assembly code. A new approach has been introduced to handle the transfer failure, instead of just setting the `success` variable value, the process now directly reverts with a `NativeTransferFailed` error. This ensures a more robust and reliable transfer process.

* Refactor ERC20 transfer error handling

The code has been streamlined by removing the `success` variable used in the ERC20 transfer method, and directly integrating the error handling into the function call. This change helps minimize unnecessary variable usage and allows more immediate error feedback, improving the program's efficiency and clarity.

* Use Solady `SafeTransferLib.safeTransfer`

---------

Co-authored-by: Daniel Gretzke <daniel@gretzke.de>
Copy link

github-actions bot commented May 25, 2024

Forge code coverage:

File % Lines % Statements % Branches % Funcs
src/ERC6909.sol 91.30% (21/23) 85.71% (24/28) 100.00% (4/4) 85.71% (6/7)
src/ERC6909Claims.sol 100.00% (6/6) 100.00% (8/8) 100.00% (4/4) 100.00% (1/1)
src/Extsload.sol 100.00% (0/0) 100.00% (0/0) 100.00% (0/0) 100.00% (3/3)
src/Exttload.sol 100.00% (0/0) 100.00% (0/0) 100.00% (0/0) 50.00% (1/2)
src/NoDelegateCall.sol 100.00% (3/3) 100.00% (5/5) 100.00% (2/2) 100.00% (3/3)
src/PoolManager.sol 100.00% (83/83) 98.25% (112/114) 94.12% (32/34) 100.00% (17/17)
src/ProtocolFees.sol 100.00% (20/20) 97.06% (33/34) 91.67% (11/12) 100.00% (6/6)
src/libraries/BitMath.sol 100.00% (47/47) 100.00% (57/57) 100.00% (36/36) 100.00% (2/2)
src/libraries/CurrencyDelta.sol 100.00% (4/4) 100.00% (6/6) 100.00% (0/0) 100.00% (3/3)
src/libraries/CustomRevert.sol 100.00% (0/0) 100.00% (0/0) 100.00% (0/0) 100.00% (6/6)
src/libraries/FullMath.sol 100.00% (28/28) 100.00% (32/32) 100.00% (8/8) 100.00% (2/2)
src/libraries/Hooks.sol 100.00% (78/78) 100.00% (144/144) 100.00% (58/58) 100.00% (15/15)
src/libraries/LPFeeLibrary.sol 100.00% (10/10) 100.00% (17/17) 100.00% (4/4) 100.00% (7/7)
src/libraries/LiquidityMath.sol 100.00% (2/2) 100.00% (1/1) 100.00% (1/1) 100.00% (1/1)
src/libraries/Lock.sol 100.00% (4/4) 100.00% (4/4) 100.00% (0/0) 100.00% (3/3)
src/libraries/NonZeroDeltaCount.sol 100.00% (6/6) 100.00% (6/6) 100.00% (0/0) 100.00% (3/3)
src/libraries/ParseBytes.sol 100.00% (3/3) 100.00% (3/3) 100.00% (0/0) 100.00% (3/3)
src/libraries/Pool.sol 99.35% (153/154) 99.42% (170/171) 96.51% (83/86) 100.00% (13/13)
src/libraries/Position.sol 100.00% (11/11) 100.00% (12/12) 100.00% (4/4) 100.00% (2/2)
src/libraries/ProtocolFeeLibrary.sol 100.00% (4/4) 100.00% (6/6) 100.00% (0/0) 100.00% (4/4)
src/libraries/Reserves.sol 100.00% (8/8) 100.00% (13/13) 100.00% (6/6) 100.00% (3/3)
src/libraries/SafeCast.sol 100.00% (10/10) 100.00% (26/26) 100.00% (10/10) 100.00% (6/6)
src/libraries/SqrtPriceMath.sol 100.00% (37/37) 100.00% (53/53) 82.35% (14/17) 100.00% (9/9)
src/libraries/StateLibrary.sol 100.00% (65/65) 100.00% (94/94) 100.00% (4/4) 100.00% (14/14)
src/libraries/SwapMath.sol 100.00% (22/22) 100.00% (24/24) 100.00% (6/6) 100.00% (2/2)
src/libraries/TickBitmap.sol 100.00% (17/17) 100.00% (23/23) 100.00% (3/3) 100.00% (4/4)
src/libraries/TickMath.sol 100.00% (95/95) 100.00% (140/140) 100.00% (43/43) 100.00% (4/4)
src/libraries/TransientStateLibrary.sol 88.89% (8/9) 85.71% (12/14) 100.00% (0/0) 75.00% (3/4)
src/libraries/UnsafeMath.sol 100.00% (1/1) 100.00% (1/1) 100.00% (0/0) 100.00% (1/1)
src/types/BalanceDelta.sol 100.00% (2/2) 100.00% (2/2) 100.00% (0/0) 100.00% (2/2)
src/types/BeforeSwapDelta.sol 100.00% (2/2) 100.00% (2/2) 100.00% (0/0) 100.00% (2/2)
src/types/Currency.sol 100.00% (12/12) 94.12% (16/17) 100.00% (8/8) 100.00% (6/6)
src/types/PoolId.sol 100.00% (1/1) 100.00% (1/1) 100.00% (0/0) 100.00% (1/1)
src/types/Slot0.sol 100.00% (8/8) 100.00% (8/8) 100.00% (0/0) 100.00% (8/8)
Total 85.63% (1472/1719) 85.63% (1985/2318) 62.38% (519/832) 79.46% (352/443)

@gretzke gretzke requested a review from hensha256 May 26, 2024 18:51
src/types/Currency.sol Outdated Show resolved Hide resolved
@gretzke gretzke enabled auto-merge (squash) May 26, 2024 22:20
@gretzke gretzke merged commit 0260e43 into main May 26, 2024
6 checks passed
@gretzke gretzke deleted the shuhuiluo/opt-ccy branch May 26, 2024 22:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants