8000 Provide feesAccrued to afterLiquidity Hooks by saucepoint · Pull Request #853 · Uniswap/v4-core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Provide feesAccrued to afterLiquidity Hooks #853

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

Merged
merged 8 commits into from
Aug 30, 2024

Conversation

saucepoint
Copy link
Collaborator

Related Issue

Closes #587

Description of changes

after{Add|Remove}Liquidity hooks now receive feesAccrued alongside callerDelta, where callerDelta = principal + feesAccrued

Added a test hook where all feesAccrued is taken, to validate the data is provided correctly

Comment on lines 353 to 355
// Assert that the hook took the fee revenue
assertApproxEqAbs(hookGain0, feeRevenue0, 1 wei);
assertApproxEqAbs(hookGain1, feeRevenue1, 1 wei);
Copy link
Collaborator Author
@saucepoint saucepoint Aug 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it irks me that addLiquidity assertions arent as robust as the removeLiquidity ones, however this test is to confirm that feesAccrued is properly passed & used by the hook, so this is OK to me


the assertions for addLiquidity were tricky because of autocompounding + wei imprecision

Copy link
github-actions bot commented Aug 27, 2024

Forge code coverage:

File % Lines % Statements % Branches % Funcs
src/ERC6909.sol 82.61% (19/23) 78.57% (22/28) 100.00% (2/2) 85.71% (6/7)
src/ERC6909Claims.sol 100.00% (6/6) 100.00% (8/8) 100.00% (2/2) 100.00% (1/1)
src/Extsload.sol 0.00% (0/28) 0.00% (0/30) 0.00% (0/2) 100.00% (3/3)
src/Exttload.sol 0.00% (0/15) 0.00% (0/16) 0.00% (0/1) 50.00% (1/2)
src/NoDelegateCall.sol 66.67% (2/3) 75.00% (3/4) 100.00% (1/1) 100.00% (3/3)
src/PoolManager.sol 98.97% (96/97) 97.74% (130/133) 89.47% (17/19) 100.00% (20/20)
src/ProtocolFees.sol 83.33% (20/24) 83.87% (26/31) 80.00% (4/5) 100.00% (6/6)
src/libraries/BitMath.sol 18.18% (2/11) 18.18% (2/11) 0.00% (0/4) 100.00% (2/2)
src/libraries/CurrencyDelta.sol 33.33% (3/9) 45.45% (5/11) 100.00% (0/0) 100.00% (3/3)
src/libraries/CurrencyReserves.sol 14.29% (1/7) 14.29% (1/7) 0.00% (0/1) 100.00% (5/5)
src/libraries/CustomRevert.sol 0.00% (0/35) 0.00% (0/35) 100.00% (0/0) 100.00% (8/8)
src/libraries/FullMath.sol 68.97% (20/29) 72.73% (24/33) 33.33% (2/6) 100.00% (2/2)
src/libraries/Hooks.sol 94.12% (80/85) 95.00% (133/140) 92.00% (23/25) 100.00% (14/14)
src/libraries/LPFeeLibrary.sol 90.00% (9/10) 93.75% (15/16) 100.00% (1/1) 100.00% (7/7)
src/libraries/LiquidityMath.sol 0.00% (0/4) 0.00% (0/4) 0.00% (0/1) 100.00% (1/1)
src/libraries/Lock.sol 0.00% (0/3) 0.00% (0/3) 100.00% (0/0) 100.00% (3/3)
src/libraries/NonzeroDeltaCount.sol 0.00% (0/7) 0.00% (0/7) 100.00% (0/0) 100.00% (3/3)
src/libraries/ParseBytes.sol 0.00% (0/3) 0.00% (0/3) 100.00% (0/0) 100.00% (3/3)
src/libraries/Pool.sol 94.23% (147/156) 93.60% (161/172) 98.08% (51/52) 100.00% (13/13)
src/libraries/Position.sol 52.63% (10/19) 57.14% (12/21) 100.00% (3/3) 100.00% (3/3)
src/libraries/ProtocolFeeLibrary.sol 20.00% (2/10) 20.00% (2/10) 100.00% (0/0) 100.00% (4/4)
src/libraries/SafeCast.sol 100.00% (12/12) 100.00% (19/19) 100.00% (6/6) 100.00% (6/6)
src/libraries/SqrtPriceMath.sol 60.42% (29/48) 69.84% (44/63) 58.33% (7/12) 100.00% (9/9)
src/libraries/StateLibrary.sol 71.43% (45/63) 79.31% (69/87) 100.00% (4/4) 100.00% (14/14)
src/libraries/SwapMath.sol 80.77% (21/26) 81.48% (22/27) 100.00% (6/6) 100.00% (2/2)
src/libraries/TickBitmap.sol 40.00% (12/30) 50.00% (18/36) 66.67% (2/3) 100.00% (4/4)
src/libraries/TickMath.sol 37.11% (36/97) 56.94% (82/144) 95.83% (23/24) 100.00% (4/4)
src/libraries/TransientStateLibrary.sol 70.00% (7/10) 76.92% (10/13) 100.00% (0/0) 100.00% (5/5)
src/libraries/UnsafeMath.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/types/BalanceDelta.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/types/BeforeSwapDelta.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/types/Currency.sol 59.09% (13/22) 70.00% (21/30) 75.00% (6/8) 100.00% (6/6)
src/types/PoolId.sol 0.00% (0/1) 0.00% (0/1) 100.00% (0/0) 100.00% (1/1)
src/types/Slot0.sol 0.00% (0/8) 0.00% (0/8) 100.00% (0/0) 100.00% (8/8)
Total 68.53% (1350/1970) 71.24% (1811/2542) 41.82% (271/648) 83.05% (397/478)

292858
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wow this snapshot name is ocnfusing... not your fault but what is "create"?? add?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like its the first cold write of modifyLiquidity

@saucepoint saucepoint requested a review from hensha256 August 29, 2024 02:03
Copy link
Contributor
@hensha256 hensha256 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one tiny nit

@@ -84,7 +86,8 @@ interface IHooks {
/// @param sender The initial msg.sender for the remove liquidity call
/// @param key The key for the pool
/// @param params The parameters for removing liquidity
/// @param delta The caller's balance delta after removing liquidity
/// @param delta The caller's balance delta after removing liquidity; the sum of principal delta and fees accrued
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

principal delta, fees accrued, and hook delta

@saucepoint saucepoint requested a review from hensha256 August 29, 2024 14:58
hensha256
hensha256 previously approved these changes Aug 30, 2024
@saucepoint saucepoint merged commit 3407bce into main Aug 30, 2024
6 checks passed
@saucepoint saucepoint deleted the 587-feeDelta-param-to-hooks branch August 30, 2024 14:52
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.

Provide feeDelta to after{Add|Remove}Liquidity
2 participants
0