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

Update vault.accountAppBalanceDelta logic flow from app #203

Merged
merged 7 commits into from
Nov 7, 2024

Conversation

ChefMist
Copy link
Collaborator

@ChefMist ChefMist commented Nov 5, 2024

Description:

  • This PR updates how hookDelta and delta are sent to vault.accountAppBalanceDelta
  • Previously it has always been sending hookDelta then delta -- however this might lead to underflow scenario on reservesOfApp

This PR fixes it by ensuring we send the delta or hookDelta which increases reserveOfApp before deducting reserveOfApp

Copy link

github-actions bot commented Nov 5, 2024

File % Lines % Statements % Branches % Funcs
src/Extsload.sol 0.00% (0/15) 0.00% (0/16) 0.00% (0/1) 100.00% (2/2)
src/Owner.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (3/3)
src/ProtocolFees.sol 86.96% (20/23) 90.32% (28/31) 100.00% (5/5) 100.00% (5/5)
src/Vault.sol 95.00% (57/60) 94.05% (79/84) 91.67% (11/12) 90.91% (20/22)
src/VaultToken.sol 85.19% (23/27) 82.86% (29/35) 100.00% (4/4) 87.50% (7/8)
src/base/Ownable.sol 81.82% (9/11) 83.33% (10/12) 50.00% (1/2) 100.00% (6/6)
src/base/Pausable.sol 75.00% (6/8) 75.00% (6/8) 100.00% (1/1) 100.00% (5/5)
src/base/PausableRole.sol 100.00% (5/5) 100.00% (9/9) 100.00% (1/1) 100.00% (4/4)
src/libraries/BipsLibrary.sol 100.00% (2/2) 100.00% (4/4) 100.00% (1/1) 100.00% (1/1)
src/libraries/CustomRevert.sol 7.69% (1/13) 7.69% (1/13) 100.00% (0/0) 100.00% (1/1)
src/libraries/Hooks.sol 77.27% (17/22) 84.21% (32/38) 83.33% (5/6) 100.00% (5/5)
src/libraries/LPFeeLibrary.sol 77.78% (7/9) 86.67% (13/15) 100.00% (1/1) 100.00% (6/6)
src/libraries/ParseBytes.sol 0.00% (0/3) 0.00% (0/3) 100.00% (0/0) 100.00% (3/3)
src/libraries/ProtocolFeeLibrary.sol 22.22% (2/9) 22.22% (2/9) 100.00% (0/0) 100.00% (4/4)
src/libraries/SafeCast.sol 83.33% (10/12) 61.11% (11/18) 0.00% (0/5) 100.00% (6/6)
src/libraries/SettlementGuard.sol 56.25% (9/16) 68.18% (15/22) 100.00% (4/4) 100.00% (5/5)
src/libraries/VaultAppDeltaSettlement.sol 100.00% (3/3) 100.00% (3/3) 50.00% (1/2) 100.00% (1/1)
src/libraries/VaultReserve.sol 0.00% (0/4) 0.00% (0/4) 100.00% (0/0) 100.00% (2/2)
src/libraries/math/Encoded.sol 0.00% (0/8) 0.00% (0/9) 100.00% (0/0) 85.71% (6/7)
src/libraries/math/ParametersHelper.sol 100.00% (3/3) 100.00% (3/3) 100.00% (1/1) 100.00% (2/2)
src/libraries/math/UnsafeMath.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/pool-bin/BinPoolManager.sol 96.59% (85/88) 96.26% (103/107) 80.00% (8/10) 87.50% (14/16)
src/pool-bin/BinPoolManagerOwner.sol 100.00% (8/8) 100.00% (9/9) 100.00% (1/1) 100.00% (7/7)
src/pool-bin/libraries/BinHelper.sol 89.66% (78/87) 91.60% (109/119) 75.00% (12/16) 100.00% (9/9)
src/pool-bin/libraries/BinHooks.sol 90.54% (67/74) 91.67% (77/84) 72.73% (16/22) 100.00% (11/11)
src/pool-bin/libraries/BinPool.sol 96.55% (140/145) 96.59% (170/176) 93.10% (27/29) 100.00% (16/16)
src/pool-bin/libraries/BinPoolParametersHelper.sol 100.00% (2/2) 100.00% (3/3) 100.00% (0/0) 100.00% (2/2)
src/pool-bin/libraries/BinPosition.sol 57.14% (4/7) 62.50% (5/8) 100.00% (0/0) 100.00% (4/4)
src/pool-bin/libraries/FeeHelper.sol 100.00% (8/8) 100.00% (12/12) 100.00% (0/0) 100.00% (3/3)
src/pool-bin/libraries/PriceHelper.sol 100.00% (10/10) 100.00% (21/21) 100.00% (0/0) 100.00% (6/6)
src/pool-bin/libraries/math/BitMath.sol 8.77% (5/57) 12.90% (8/62) 0.00% (0/16) 100.00% (4/4)
src/pool-bin/libraries/math/LiquidityConfigurations.sol 84.62% (11/13) 89.47% (17/19) 100.00% (1/1) 100.00% (3/3)
src/pool-bin/libraries/math/PackedUint128Math.sol 72.50% (29/40) 79.69% (51/64) 100.00% (10/10) 86.67% (13/15)
src/pool-bin/libraries/math/SafeCast.sol 94.29% (33/35) 49.25% (33/67) 0.00% (0/32) 100.00% (33/33)
src/pool-bin/libraries/math/TreeMath.sol 100.00% (82/82) 100.00% (101/101) 100.00% (16/16) 100.00% (7/7)
src/pool-bin/libraries/math/Uint128x128Math.sol 34.72% (25/72) 32.00% (32/100) 20.69% (6/29) 100.00% (2/2)
src/pool-bin/libraries/math/Uint256x256Math.sol 78.05% (32/41) 84.21% (48/57) 100.00% (9/9) 100.00% (8/8)
src/pool-bin/types/BinSlot0.sol 0.00% (0/6) 0.00% (0/6) 100.00% (0/0) 100.00% (6/6)
src/pool-cl/CLPoolManager.sol 96.92% (63/65) 93.10% (81/87) 75.00% (6/8) 86.67% (13/15)
src/pool-cl/CLPoolManagerOwner.sol 100.00% (5/5) 100.00% (5/5) 100.00% (0/0) 100.00% (5/5)
src/pool-cl/libraries/BitMath.sol 18.18% (2/11) 18.18% (2/11) 0.00% (0/4) 100.00% (2/2)
src/pool-cl/libraries/CLHooks.sol 91.30% (63/69) 93.75% (75/80) 78.26% (18/23) 100.00% (9/9)
src/pool-cl/libraries/CLPool.sol 93.58% (102/109) 94.02% (110/117) 91.67% (33/36) 100.00% (8/8)
src/pool-cl/libraries/CLPoolGetters.sol 100.00% (3/3) 100.00% (3/3) 100.00% (0/0) 100.00% (3/3)
src/pool-cl/libraries/CLPoolParametersHelper.sol 100.00% (2/2) 100.00% (3/3) 100.00% (0/0) 100.00% (2/2)
src/pool-cl/libraries/CLPosition.sol 81.25% (13/16) 84.21% (16/19) 100.00% (4/4) 100.00% (3/3)
src/pool-cl/libraries/FullMath.sol 68.97% (20/29) 72.73% (24/33) 33.33% (2/6) 100.00% (2/2)
src/pool-cl/libraries/LiquidityMath.sol 0.00% (0/4) 0.00% (0/4) 0.00% (0/1) 100.00% (1/1)
src/pool-cl/libraries/SqrtPriceMath.sol 60.42% (29/48) 69.84% (44/63) 58.33% (7/12) 100.00% (9/9)
src/pool-cl/libraries/SwapMath.sol 80.77% (21/26) 81.48% (22/27) 100.00% (6/6) 100.00% (2/2)
src/pool-cl/libraries/Tick.sol 79.17% (38/48) 81.48% (44/54) 100.00% (10/10) 100.00% (6/6)
src/pool-cl/libraries/TickBitmap.sol 40.00% (12/30) 50.00% (18/36) 66.67% (2/3) 100.00% (4/4)
src/pool-cl/libraries/TickMath.sol 30.00% (36/120) 48.80% (81/166) 95.83% (23/24) 100.00% (4/4)
src/pool-cl/types/CLSlot0.sol 0.00% (0/8) 0.00% (0/8) 100.00% (0/0) 100.00% (8/8)
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 60.87% (14/23) 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)

chefburger
chefburger previously approved these changes Nov 6, 2024
Copy link
Collaborator

@chefburger chefburger left a comment

Choose a reason for hiding this comment

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

lgtm

BalanceDelta delta,
BalanceDelta hookDelta,
address settler
) internal {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Still thinking if we add a new function accountAppBalanceDelta in vault, pass all delta once , will reduce call times , maybe will save some gas

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

yeh, will check on this after all tests added

@ChefMist ChefMist changed the title <WIP> Update vault.accountAppBalanceDelta logic flow from app Update vault.accountAppBalanceDelta logic flow from app Nov 6, 2024
ChefSnoopy
ChefSnoopy previously approved these changes Nov 6, 2024
Copy link
Collaborator

@ChefSnoopy ChefSnoopy left a comment

Choose a reason for hiding this comment

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

lgtm

)

* feat: add additional method on vault to account app balance delta

* feat: remove redundant non zero checkl

* feat: further optimise the vault logic

* feat: add more test on vault
@ChefMist
Copy link
Collaborator Author

ChefMist commented Nov 7, 2024

applied #205 on this PR as we prefer making the changes on vault (gas savings)

library VaultAppDeltaSettlement {
/// @notice helper method to call `vault.accountAppBalanceDelta`
/// @dev Vault maintains a `reserveOfApp` to protect against exploits in one app from accessing funds in another.
/// To prevent underflow in `reserveOfApp`, it is essential to handle `appDelta` and `hookDelta` in a specific order.
Copy link
Collaborator

Choose a reason for hiding this comment

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

do we still need this comments ,"it is essential to handle ...."?
because now no order logic.

_accountDeltaForApp(currency0, delta0 + hookDelta0);
_accountDeltaForApp(currency1, delta1 + hookDelta1);

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

thanks, cleaned up

ChefSnoopy
ChefSnoopy previously approved these changes Nov 7, 2024
Copy link
Collaborator

@ChefSnoopy ChefSnoopy left a comment

Choose a reason for hiding this comment

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

lgtm

chef-omelette
chef-omelette previously approved these changes Nov 7, 2024
Copy link
Contributor

@chef-omelette chef-omelette left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Collaborator

@ChefSnoopy ChefSnoopy left a comment

Choose a reason for hiding this comment

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

lgtm

@ChefMist ChefMist merged commit 09486ed into main Nov 7, 2024
3 checks passed
@ChefMist ChefMist deleted the feat/hook-return-delta-accounting branch November 7, 2024 05:16
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.

4 participants