From 287080c550ec8a78fcf54edc82ac8ffe653b8fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Alexandre=20Vaz=20Ferreira?= <30525975+joaoavf@users.noreply.github.com> Date: Fri, 30 Jun 2023 21:59:07 +0000 Subject: [PATCH] Adjusting contract to work with approve address --- contracts/bridges/ZeroX/ZeroXBridge.sol | 26 ++++++++++++++----------- test/ZeroXBridge.ts | 15 +++++++------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/contracts/bridges/ZeroX/ZeroXBridge.sol b/contracts/bridges/ZeroX/ZeroXBridge.sol index 9c5e8f2..5697e48 100644 --- a/contracts/bridges/ZeroX/ZeroXBridge.sol +++ b/contracts/bridges/ZeroX/ZeroXBridge.sol @@ -2,29 +2,33 @@ pragma solidity ^0.8.6; import "@uniswap/v2-periphery/contracts/interfaces/IERC20.sol"; import "./interfaces/ZeroXERC20.sol"; +struct ZeroXParams { + address fromToken; + address toToken; + uint256 amountInPercentage; + uint256 minAmountOut; + Transformation[] transformations; +} contract ZeroXBridge { event DEFIBASKET_ZEROX_SWAP(uint256 receivedAmount); function swap( address zeroXaddress, - address fromToken, - address toToken, - uint256 amountInPercentage, - uint256 minAmountOut, - Transformation[] memory transformations + address approveAddress, + ZeroXParams calldata params ) external { - uint256 amount = IERC20(fromToken).balanceOf(address(this))*amountInPercentage/100000; - IERC20(fromToken).approve(zeroXaddress, amount); + uint256 amount = IERC20(params.fromToken).balanceOf(address(this))*params.amountInPercentage/100000; + IERC20(params.fromToken).approve(approveAddress, amount); ZeroXERC20 zerox = ZeroXERC20(zeroXaddress); uint256 receivedAmount = zerox.transformERC20( - fromToken, - toToken, + params.fromToken, + params.toToken, amount, - minAmountOut, - transformations + params.minAmountOut, + params.transformations ); emit DEFIBASKET_ZEROX_SWAP(receivedAmount); diff --git a/test/ZeroXBridge.ts b/test/ZeroXBridge.ts index 7050e39..c13f021 100644 --- a/test/ZeroXBridge.ts +++ b/test/ZeroXBridge.ts @@ -49,8 +49,6 @@ describe("ZeroX", function(){ }); console.log(decodedFunctionCall); - console.log('zz', decodedFunctionCall.args[4]); - // Set bridges addresses var _bridgeAddresses = [wmaticBridge.address, zeroXBridge.address]; @@ -60,11 +58,14 @@ describe("ZeroX", function(){ wmaticBridge.interface.encodeFunctionData("wrap", [100000]), zeroXBridge.interface.encodeFunctionData("swap", [ body.to, - decodedFunctionCall.args[0], - decodedFunctionCall.args[1], - "100000", - "1", - decodedFunctionCall.args[4] + body.allowanceTarget, + [ + decodedFunctionCall.args[0], + decodedFunctionCall.args[1], + "100000", + "1", + decodedFunctionCall.args[4], + ] ]) ];