From 03ea4e3dbabdcd6154976361cd4819672318b3e5 Mon Sep 17 00:00:00 2001 From: Kevin Liao Date: Thu, 9 Mar 2023 12:33:14 -0800 Subject: [PATCH] feat:Add Kyber Elastic mixins (#677) * add kyber elastic mixins * update changelog * fix changelog --- contracts/zero-ex/CHANGELOG.json | 8 ++++++++ .../src/transformers/bridges/BSCBridgeAdapter.sol | 7 +++++++ .../src/transformers/bridges/OptimismBridgeAdapter.sol | 7 +++++++ .../zero-ex/tests/forked/SwapERC20ForERC20Test.t.sol | 4 ++-- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/contracts/zero-ex/CHANGELOG.json b/contracts/zero-ex/CHANGELOG.json index 75ae447c6c..aa62105dc3 100644 --- a/contracts/zero-ex/CHANGELOG.json +++ b/contracts/zero-ex/CHANGELOG.json @@ -1,4 +1,12 @@ [ + { + "version": "0.39.1", + "changes": [ + { + "note": "Add KyberElastic mixin for Optimism and BSC" + } + ] + }, { "version": "0.39.0", "changes": [ diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol index f59b7bf146..de7809a9a6 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol @@ -21,6 +21,7 @@ import "./mixins/MixinCurve.sol"; import "./mixins/MixinDodo.sol"; import "./mixins/MixinDodoV2.sol"; import "./mixins/MixinKyberDmm.sol"; +import "./mixins/MixinKyberElastic.sol"; import "./mixins/MixinMooniswap.sol"; import "./mixins/MixinNerve.sol"; import "./mixins/MixinUniswapV2.sol"; @@ -33,6 +34,7 @@ contract BSCBridgeAdapter is MixinDodo, MixinDodoV2, MixinKyberDmm, + MixinKyberElastic, MixinMooniswap, MixinNerve, MixinUniswapV2, @@ -84,6 +86,11 @@ contract BSCBridgeAdapter is return (0, true); } boughtAmount = _tradeKyberDmm(buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.KYBERELASTIC) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeKyberElastic(sellToken, sellAmount, order.bridgeData); } else if (protocolId == BridgeProtocols.WOOFI) { if (dryRun) { return (0, true); diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol index 5216db459f..224dd6f9d4 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol @@ -21,6 +21,7 @@ import "./mixins/MixinAaveV3.sol"; import "./mixins/MixinBalancerV2Batch.sol"; import "./mixins/MixinCurve.sol"; import "./mixins/MixinCurveV2.sol"; +import "./mixins/MixinKyberElastic.sol"; import "./mixins/MixinNerve.sol"; import "./mixins/MixinSolidly.sol"; import "./mixins/MixinSynthetix.sol"; @@ -34,6 +35,7 @@ contract OptimismBridgeAdapter is MixinBalancerV2Batch, MixinCurve, MixinCurveV2, + MixinKyberElastic, MixinNerve, MixinSynthetix, MixinUniswapV3, @@ -102,6 +104,11 @@ contract OptimismBridgeAdapter is return (0, true); } boughtAmount = _tradeWOOFi(sellToken, buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.KYBERELASTIC) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeKyberElastic(sellToken, sellAmount, order.bridgeData); } emit BridgeFill(order.source, sellToken, buyToken, sellAmount, boughtAmount); diff --git a/contracts/zero-ex/tests/forked/SwapERC20ForERC20Test.t.sol b/contracts/zero-ex/tests/forked/SwapERC20ForERC20Test.t.sol index c743e811f8..1b81a1c4ab 100644 --- a/contracts/zero-ex/tests/forked/SwapERC20ForERC20Test.t.sol +++ b/contracts/zero-ex/tests/forked/SwapERC20ForERC20Test.t.sol @@ -38,8 +38,8 @@ contract SwapERC20ForERC20Test is Test, ForkUtils, TestUtils { function test_swapERC20ForERC20OnKyberElastic() public { for (uint256 i = 0; i < chains.length; i++) { - // kyberelastic mixin not deployed to these chains yet (bsc, fantom, optimism) - if (i == 1 || i == 4 || i == 5) { + // kyberelastic mixin not added to fantom yet + if (i == 4) { continue; } vm.selectFork(forkIds[chains[i]]);