From f8f3b3ebb8c6f90d5e92eb625e70be7698aa6706 Mon Sep 17 00:00:00 2001 From: Daniel Simon Date: Sun, 9 Feb 2025 14:58:02 +0700 Subject: [PATCH] refactor: more readable names --- .../Zappers/Interfaces/IExchangeHelpersV2.sol | 9 +++++-- .../HybridCurveUniV3ExchangeHelpersV2.sol | 26 ++++++++++++------- contracts/test/ExchangeHelpers.t.sol | 26 ++++++++++++------- 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/contracts/src/Zappers/Interfaces/IExchangeHelpersV2.sol b/contracts/src/Zappers/Interfaces/IExchangeHelpersV2.sol index 55b93783..aedb2277 100644 --- a/contracts/src/Zappers/Interfaces/IExchangeHelpersV2.sol +++ b/contracts/src/Zappers/Interfaces/IExchangeHelpersV2.sol @@ -3,6 +3,11 @@ pragma solidity ^0.8.0; interface IExchangeHelpersV2 { - function getDy(uint256 _dx, bool _collToBold, address _collToken) external returns (uint256 dy); - function getDx(uint256 _dy, bool _collToBold, address _collToken) external returns (uint256 dx); + function quoteExactInput(uint256 _inputAmount, bool _collToBold, address _collToken) + external + returns (uint256 outputAmount); + + function quoteExactOutput(uint256 _outputAmount, bool _collToBold, address _collToken) + external + returns (uint256 inputAmount); } diff --git a/contracts/src/Zappers/Modules/Exchanges/HybridCurveUniV3ExchangeHelpersV2.sol b/contracts/src/Zappers/Modules/Exchanges/HybridCurveUniV3ExchangeHelpersV2.sol index 08af7461..9b69d8ec 100644 --- a/contracts/src/Zappers/Modules/Exchanges/HybridCurveUniV3ExchangeHelpersV2.sol +++ b/contracts/src/Zappers/Modules/Exchanges/HybridCurveUniV3ExchangeHelpersV2.sol @@ -46,7 +46,10 @@ contract HybridCurveUniV3ExchangeHelpersV2 is IExchangeHelpersV2 { uniV3Quoter = _uniV3Quoter; } - function getDy(uint256 _dx, bool _collToBold, address _collToken) external returns (uint256 dy) { + function quoteExactInput(uint256 _inputAmount, bool _collToBold, address _collToken) + external + returns (uint256 outputAmount) + { if (_collToBold) { // (Coll ->) WETH -> USDC? bytes memory path; @@ -56,13 +59,13 @@ contract HybridCurveUniV3ExchangeHelpersV2 is IExchangeHelpersV2 { path = abi.encodePacked(_collToken, feeWethColl, WETH, feeUsdcWeth, USDC); } - (uint256 uniDy,,,) = uniV3Quoter.quoteExactInput(path, _dx); + (uint256 intermediateAmount,,,) = uniV3Quoter.quoteExactInput(path, _inputAmount); // USDC -> BOLD? - dy = curvePool.get_dy(USDC_INDEX, BOLD_TOKEN_INDEX, uniDy); + outputAmount = curvePool.get_dy(USDC_INDEX, BOLD_TOKEN_INDEX, intermediateAmount); } else { // BOLD -> USDC? - uint256 curveDy = curvePool.get_dy(BOLD_TOKEN_INDEX, USDC_INDEX, _dx); + uint256 intermediateAmount = curvePool.get_dy(BOLD_TOKEN_INDEX, USDC_INDEX, _inputAmount); // USDC -> WETH (-> Coll)? bytes memory path; @@ -72,14 +75,17 @@ contract HybridCurveUniV3ExchangeHelpersV2 is IExchangeHelpersV2 { path = abi.encodePacked(USDC, feeUsdcWeth, WETH, feeWethColl, _collToken); } - (dy,,,) = uniV3Quoter.quoteExactInput(path, curveDy); + (outputAmount,,,) = uniV3Quoter.quoteExactInput(path, intermediateAmount); } } - function getDx(uint256 _dy, bool _collToBold, address _collToken) external returns (uint256 dx) { + function quoteExactOutput(uint256 _outputAmount, bool _collToBold, address _collToken) + external + returns (uint256 inputAmount) + { if (_collToBold) { // USDC? -> BOLD - uint256 curveDx = curvePool.get_dx(USDC_INDEX, BOLD_TOKEN_INDEX, _dy); + uint256 intermediateAmount = curvePool.get_dx(USDC_INDEX, BOLD_TOKEN_INDEX, _outputAmount); // Uniswap expects path to be reversed when quoting exact output // USDC <- WETH (<- Coll)? @@ -90,7 +96,7 @@ contract HybridCurveUniV3ExchangeHelpersV2 is IExchangeHelpersV2 { path = abi.encodePacked(USDC, feeUsdcWeth, WETH, feeWethColl, _collToken); } - (dx,,,) = uniV3Quoter.quoteExactOutput(path, curveDx); + (inputAmount,,,) = uniV3Quoter.quoteExactOutput(path, intermediateAmount); } else { // Uniswap expects path to be reversed when quoting exact output // (Coll <-) WETH <- USDC? @@ -101,10 +107,10 @@ contract HybridCurveUniV3ExchangeHelpersV2 is IExchangeHelpersV2 { path = abi.encodePacked(_collToken, feeWethColl, WETH, feeUsdcWeth, USDC); } - (uint256 uniDx,,,) = uniV3Quoter.quoteExactOutput(path, _dy); + (uint256 intermediateAmount,,,) = uniV3Quoter.quoteExactOutput(path, _outputAmount); // BOLD? -> USDC - dx = curvePool.get_dx(BOLD_TOKEN_INDEX, USDC_INDEX, uniDx); + inputAmount = curvePool.get_dx(BOLD_TOKEN_INDEX, USDC_INDEX, intermediateAmount); } } } diff --git a/contracts/test/ExchangeHelpers.t.sol b/contracts/test/ExchangeHelpers.t.sol index c39f824e..4bd978c4 100644 --- a/contracts/test/ExchangeHelpers.t.sol +++ b/contracts/test/ExchangeHelpers.t.sol @@ -166,7 +166,7 @@ contract ExchangeHelpersTest is Test, UseDeployment { dyExpected = bound(dyExpected, 0.001 ether, 100 ether); } - uint256 dx = exchangeHelpersV2_getDx(dyExpected, collToBold, collToken); + uint256 dx = exchangeHelpersV2_quoteExactOutput(dyExpected, collToBold, collToken); uint256 balance0 = IERC20(outputToken).balanceOf(address(this)); deal(inputToken, address(this), dx); IERC20(inputToken).approve(address(exchange[collToken]), dx); @@ -192,7 +192,7 @@ contract ExchangeHelpersTest is Test, UseDeployment { dx = bound(dx, 1 ether, 100_000 ether); } - uint256 dyExpected = exchangeHelpersV2_getDy(dx, collToBold, collToken); + uint256 dyExpected = exchangeHelpersV2_quoteExactInput(dx, collToBold, collToken); uint256 balance0 = IERC20(outputToken).balanceOf(address(this)); deal(inputToken, address(this), dx); IERC20(inputToken).approve(address(exchange[collToken]), dx); @@ -235,24 +235,30 @@ contract ExchangeHelpersTest is Test, UseDeployment { } } - function exchangeHelpersV2_getDx_throw(uint256 dy, bool collToBold, address collToken) external { - revert QuoteResult(exchangeHelpersV2.getDx(dy, collToBold, collToken)); + function exchangeHelpersV2_quoteExactOutput_throw(uint256 dy, bool collToBold, address collToken) external { + revert QuoteResult(exchangeHelpersV2.quoteExactOutput(dy, collToBold, collToken)); } - function exchangeHelpersV2_getDx(uint256 dy, bool collToBold, address collToken) internal returns (uint256) { - try this.exchangeHelpersV2_getDx_throw(dy, collToBold, collToken) { + function exchangeHelpersV2_quoteExactOutput(uint256 dy, bool collToBold, address collToken) + internal + returns (uint256) + { + try this.exchangeHelpersV2_quoteExactOutput_throw(dy, collToBold, collToken) { revert("Should have reverted"); } catch (bytes memory revertData) { return _decodeQuoteResult(revertData); } } - function exchangeHelpersV2_getDy_throw(uint256 dx, bool collToBold, address collToken) external { - revert QuoteResult(exchangeHelpersV2.getDy(dx, collToBold, collToken)); + function exchangeHelpersV2_quoteExactInput_throw(uint256 dx, bool collToBold, address collToken) external { + revert QuoteResult(exchangeHelpersV2.quoteExactInput(dx, collToBold, collToken)); } - function exchangeHelpersV2_getDy(uint256 dx, bool collToBold, address collToken) internal returns (uint256) { - try this.exchangeHelpersV2_getDy_throw(dx, collToBold, collToken) { + function exchangeHelpersV2_quoteExactInput(uint256 dx, bool collToBold, address collToken) + internal + returns (uint256) + { + try this.exchangeHelpersV2_quoteExactInput_throw(dx, collToBold, collToken) { revert("Should have reverted"); } catch (bytes memory revertData) { return _decodeQuoteResult(revertData);