diff --git a/contracts/zero-ex/CHANGELOG.json b/contracts/zero-ex/CHANGELOG.json index 6fd62ae246..8717dd6316 100644 --- a/contracts/zero-ex/CHANGELOG.json +++ b/contracts/zero-ex/CHANGELOG.json @@ -1,4 +1,12 @@ [ + { + "version": "0.45.0", + "changes": [ + { + "note": "Remove Bancor V1 support" + } + ] + }, { "version": "0.44.0", "changes": [ diff --git a/contracts/zero-ex/compiler.json b/contracts/zero-ex/compiler.json index f475ea0e80..e493c7e223 100644 --- a/contracts/zero-ex/compiler.json +++ b/contracts/zero-ex/compiler.json @@ -125,7 +125,6 @@ "./contracts/src/transformers/bridges/mixins/MixinAaveV2.sol", "./contracts/src/transformers/bridges/mixins/MixinBalancer.sol", "./contracts/src/transformers/bridges/mixins/MixinBalancerV2Batch.sol", - "./contracts/src/transformers/bridges/mixins/MixinBancor.sol", "./contracts/src/transformers/bridges/mixins/MixinBancorV3.sol", "./contracts/src/transformers/bridges/mixins/MixinCompound.sol", "./contracts/src/transformers/bridges/mixins/MixinCryptoCom.sol", diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol index c5854b27b2..f73839b494 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol @@ -20,7 +20,6 @@ import "./BridgeProtocols.sol"; import "./mixins/MixinAaveV2.sol"; import "./mixins/MixinBalancer.sol"; import "./mixins/MixinBalancerV2Batch.sol"; -import "./mixins/MixinBancor.sol"; import "./mixins/MixinBancorV3.sol"; import "./mixins/MixinBarter.sol"; import "./mixins/MixinCompound.sol"; @@ -47,7 +46,6 @@ contract EthereumBridgeAdapter is MixinAaveV2, MixinBalancer, MixinBalancerV2Batch, - MixinBancor, MixinBancorV3, MixinBarter, MixinCompound, @@ -71,15 +69,7 @@ contract EthereumBridgeAdapter is { constructor( IEtherToken weth - ) - public - MixinBancor(weth) - MixinBancorV3(weth) - MixinCompound(weth) - MixinCurve(weth) - MixinLido(weth) - MixinUniswap(weth) - {} + ) public MixinBancorV3(weth) MixinCompound(weth) MixinCurve(weth) MixinLido(weth) MixinUniswap(weth) {} function _trade( BridgeOrder memory order, @@ -154,11 +144,6 @@ contract EthereumBridgeAdapter is return (0, true); } boughtAmount = _tradeCryptoCom(buyToken, sellAmount, order.bridgeData); - } else if (protocolId == BridgeProtocols.BANCOR) { - if (dryRun) { - return (0, true); - } - boughtAmount = _tradeBancor(buyToken, sellAmount, order.bridgeData); } else if (protocolId == BridgeProtocols.NERVE) { if (dryRun) { return (0, true); diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinBancor.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinBancor.sol deleted file mode 100644 index 59e07a2a46..0000000000 --- a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinBancor.sol +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -/* - Copyright 2023 ZeroEx Intl. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -pragma solidity ^0.6.5; -pragma experimental ABIEncoderV2; - -import "@0x/contracts-erc20/src/v06/LibERC20TokenV06.sol"; -import "@0x/contracts-erc20/src/IERC20Token.sol"; -import "@0x/contracts-erc20/src/IEtherToken.sol"; -import "../IBridgeAdapter.sol"; - -interface IBancorNetwork { - function convertByPath( - IERC20Token[] calldata _path, - uint256 _amount, - uint256 _minReturn, - address _beneficiary, - address _affiliateAccount, - uint256 _affiliateFee - ) external payable returns (uint256); -} - -contract MixinBancor { - /// @dev Bancor ETH pseudo-address. - IERC20Token public constant BANCOR_ETH_ADDRESS = IERC20Token(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); - IEtherToken private immutable WETH; - - constructor(IEtherToken weth) public { - WETH = weth; - } - - function _tradeBancor( - IERC20Token buyToken, - uint256 sellAmount, - bytes memory bridgeData - ) internal returns (uint256 boughtAmount) { - // Decode the bridge data. - IBancorNetwork bancorNetworkAddress; - IERC20Token[] memory path; - { - address[] memory _path; - (bancorNetworkAddress, _path) = abi.decode(bridgeData, (IBancorNetwork, address[])); - // To get around `abi.decode()` not supporting interface array types. - assembly { - path := _path - } - } - - require(path.length >= 2, "MixinBancor/PATH_LENGTH_MUST_BE_AT_LEAST_TWO"); - require( - path[path.length - 1] == buyToken || (path[path.length - 1] == BANCOR_ETH_ADDRESS && buyToken == WETH), - "MixinBancor/LAST_ELEMENT_OF_PATH_MUST_MATCH_OUTPUT_TOKEN" - ); - - uint256 payableAmount = 0; - // If it's ETH in the path then withdraw from WETH - // The Bancor path will have ETH as the 0xeee address - // Bancor expects to be paid in ETH not WETH - if (path[0] == BANCOR_ETH_ADDRESS) { - WETH.withdraw(sellAmount); - payableAmount = sellAmount; - } else { - // Grant an allowance to the Bancor Network. - LibERC20TokenV06.approveIfBelow(path[0], address(bancorNetworkAddress), sellAmount); - } - - // Convert the tokens - boughtAmount = bancorNetworkAddress.convertByPath{value: payableAmount}( - path, // path originating with source token and terminating in destination token - sellAmount, // amount of source token to trade - 1, // minimum amount of destination token expected to receive - address(this), // beneficiary - address(0), // affiliateAccount; no fee paid - 0 // affiliateFee; no fee paid - ); - if (path[path.length - 1] == BANCOR_ETH_ADDRESS) { - WETH.deposit{value: boughtAmount}(); - } - - return boughtAmount; - } -}