From 3e939f7780421db0950cd26dbd9840917794e476 Mon Sep 17 00:00:00 2001 From: "Savarn Dontamsetti (Sav)" Date: Thu, 9 Mar 2023 12:02:36 -0500 Subject: [PATCH] Removing L2 Encoding from AaveV3 MixIn (#676) --- .../bridges/ArbitrumBridgeAdapter.sol | 2 +- .../bridges/AvalancheBridgeAdapter.sol | 2 +- .../bridges/OptimismBridgeAdapter.sol | 2 +- .../bridges/PolygonBridgeAdapter.sol | 2 +- .../bridges/mixins/MixinAaveV3.sol | 49 +------------------ 5 files changed, 5 insertions(+), 52 deletions(-) diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/ArbitrumBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/ArbitrumBridgeAdapter.sol index cc974dde77..5928982e0b 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/ArbitrumBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/ArbitrumBridgeAdapter.sol @@ -47,7 +47,7 @@ contract ArbitrumBridgeAdapter is MixinWOOFi, MixinZeroExBridge { - constructor(IEtherToken weth) public MixinCurve(weth) MixinAaveV3(true) {} + constructor(IEtherToken weth) public MixinCurve(weth) {} function _trade( BridgeOrder memory order, diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol index dc193387fa..4c4865515d 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol @@ -45,7 +45,7 @@ contract AvalancheBridgeAdapter is MixinWOOFi, MixinZeroExBridge { - constructor(IEtherToken weth) public MixinCurve(weth) MixinAaveV3(false) {} + constructor(IEtherToken weth) public MixinCurve(weth) {} function _trade( BridgeOrder memory order, diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol index f072270ccd..5216db459f 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol @@ -41,7 +41,7 @@ contract OptimismBridgeAdapter is MixinWOOFi, MixinZeroExBridge { - constructor(IEtherToken weth) public MixinCurve(weth) MixinAaveV3(true) {} + constructor(IEtherToken weth) public MixinCurve(weth) {} /* solhint-disable function-max-lines */ function _trade( diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/PolygonBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/PolygonBridgeAdapter.sol index a304546682..f59c02199e 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/PolygonBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/PolygonBridgeAdapter.sol @@ -53,7 +53,7 @@ contract PolygonBridgeAdapter is MixinWOOFi, MixinZeroExBridge { - constructor(IEtherToken weth) public MixinCurve(weth) MixinAaveV3(false) {} + constructor(IEtherToken weth) public MixinCurve(weth) {} function _trade( BridgeOrder memory order, diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAaveV3.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAaveV3.sol index 53aaff79ef..1dc0d6a681 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAaveV3.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAaveV3.sol @@ -47,63 +47,16 @@ interface IPool { function withdraw(address asset, uint256 amount, address to) external returns (uint256); } -// Minimal Aave V3 L2Pool interface -interface IL2Pool { - /** - * @notice Calldata efficient wrapper of the supply function on behalf of the caller - * @param args Arguments for the supply function packed in one bytes32 - * 96 bits 16 bits 128 bits 16 bits - * | 0-padding | referralCode | shortenedAmount | assetId | - * @dev the shortenedAmount is cast to 256 bits at decode time, if type(uint128).max the value will be expanded to - * type(uint256).max - * @dev assetId is the index of the asset in the reservesList. - */ - function supply(bytes32 args) external; - - /** - * @notice Calldata efficient wrapper of the withdraw function, withdrawing to the caller - * @param args Arguments for the withdraw function packed in one bytes32 - * 112 bits 128 bits 16 bits - * | 0-padding | shortenedAmount | assetId | - * @dev the shortenedAmount is cast to 256 bits at decode time, if type(uint128).max the value will be expanded to - * type(uint256).max - * @dev assetId is the index of the asset in the reservesList. - */ - function withdraw(bytes32 args) external; -} - contract MixinAaveV3 { using LibERC20TokenV06 for IERC20Token; - bool private immutable _isL2; - - constructor(bool isL2) public { - _isL2 = isL2; - } - function _tradeAaveV3( IERC20Token sellToken, IERC20Token buyToken, uint256 sellAmount, bytes memory bridgeData ) internal returns (uint256) { - if (_isL2) { - (IL2Pool pool, address aToken, bytes32 l2Params) = abi.decode(bridgeData, (IL2Pool, address, bytes32)); - - sellToken.approveIfBelow(address(pool), sellAmount); - - if (address(buyToken) == aToken) { - pool.supply(l2Params); - // 1:1 mapping token --> aToken and have the same number of decimals as the underlying token - return sellAmount; - } else if (address(sellToken) == aToken) { - pool.withdraw(l2Params); - return sellAmount; - } - - revert("MixinAaveV3/UNSUPPORTED_TOKEN_PAIR"); - } - (IPool pool, address aToken, ) = abi.decode(bridgeData, (IPool, address, bytes32)); + (IPool pool, address aToken) = abi.decode(bridgeData, (IPool, address)); sellToken.approveIfBelow(address(pool), sellAmount);