diff --git a/contracts/zero-ex/CHANGELOG.json b/contracts/zero-ex/CHANGELOG.json index eea668a5e1..06c738a8b3 100644 --- a/contracts/zero-ex/CHANGELOG.json +++ b/contracts/zero-ex/CHANGELOG.json @@ -1,4 +1,17 @@ [ + { + "version": "0.15.0", + "changes": [ + { + "note": "Add MixinBancor to BridgeAdapter", + "pr": 91 + }, + { + "note": "Add MixinCoFiX to BridgeAdapter", + "pr": 92 + } + ] + }, { "version": "0.14.0", "changes": [ diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/BridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/BridgeAdapter.sol index 18f1dbf281..85f20a7b33 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/BridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/BridgeAdapter.sol @@ -21,6 +21,8 @@ pragma experimental ABIEncoderV2; import "./mixins/MixinAdapterAddresses.sol"; import "./mixins/MixinBalancer.sol"; +import "./mixins/MixinBancor.sol"; +import "./mixins/MixinCoFiX.sol"; import "./mixins/MixinCurve.sol"; import "./mixins/MixinCryptoCom.sol"; import "./mixins/MixinDodo.sol"; @@ -37,6 +39,8 @@ import "./mixins/MixinZeroExBridge.sol"; contract BridgeAdapter is MixinAdapterAddresses, MixinBalancer, + MixinBancor, + MixinCoFiX, MixinCurve, MixinCryptoCom, MixinDodo, @@ -51,7 +55,25 @@ contract BridgeAdapter is MixinZeroExBridge { + /// @dev Emitted when a trade occurs. + /// @param inputToken The token the bridge is converting from. + /// @param outputToken The token the bridge is converting to. + /// @param inputTokenAmount Amount of input token. + /// @param outputTokenAmount Amount of output token. + /// @param from The bridge address, indicating the underlying source of the fill. + /// @param to The `to` address, currrently `address(this)` + event ERC20BridgeTransfer( + IERC20TokenV06 inputToken, + IERC20TokenV06 outputToken, + uint256 inputTokenAmount, + uint256 outputTokenAmount, + address from, + address to + ); + address private immutable BALANCER_BRIDGE_ADDRESS; + address private immutable BANCOR_BRIDGE_ADDRESS; + address private immutable COFIX_BRIDGE_ADDRESS; address private immutable CREAM_BRIDGE_ADDRESS; address private immutable CURVE_BRIDGE_ADDRESS; address private immutable CRYPTO_COM_BRIDGE_ADDRESS; @@ -70,6 +92,8 @@ contract BridgeAdapter is constructor(AdapterAddresses memory addresses) public MixinBalancer() + MixinBancor(addresses) + MixinCoFiX() MixinCurve() MixinCryptoCom(addresses) MixinDodo(addresses) @@ -84,6 +108,8 @@ contract BridgeAdapter is MixinZeroExBridge() { BALANCER_BRIDGE_ADDRESS = addresses.balancerBridge; + BANCOR_BRIDGE_ADDRESS = addresses.bancorBridge; + COFIX_BRIDGE_ADDRESS = addresses.cofixBridge; CURVE_BRIDGE_ADDRESS = addresses.curveBridge; CRYPTO_COM_BRIDGE_ADDRESS = addresses.cryptoComBridge; KYBER_BRIDGE_ADDRESS = addresses.kyberBridge; @@ -196,6 +222,18 @@ contract BridgeAdapter is sellAmount, bridgeData ); + } else if (bridgeAddress == BANCOR_BRIDGE_ADDRESS) { + boughtAmount = _tradeBancor( + buyToken, + sellAmount, + bridgeData + ); + } else if (bridgeAddress == COFIX_BRIDGE_ADDRESS) { + boughtAmount = _tradeCoFiX( + buyToken, + sellAmount, + bridgeData + ); } else { boughtAmount = _tradeZeroExBridge( bridgeAddress, @@ -204,9 +242,6 @@ contract BridgeAdapter is sellAmount, bridgeData ); - // Old bridge contracts should emit an `ERC20BridgeTransfer` themselves, - // otherwise an event will be emitted from `_tradeZeroExBridge`. - return boughtAmount; } emit ERC20BridgeTransfer( diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAdapterAddresses.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAdapterAddresses.sol index a3ec5eff27..d241285871 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAdapterAddresses.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinAdapterAddresses.sol @@ -24,6 +24,8 @@ contract MixinAdapterAddresses struct AdapterAddresses { // Bridges address balancerBridge; + address bancorBridge; + address cofixBridge; address creamBridge; address curveBridge; address cryptoComBridge; diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinBancor.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinBancor.sol new file mode 100644 index 0000000000..abd3138703 --- /dev/null +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinBancor.sol @@ -0,0 +1,111 @@ + +/* + + Copyright 2020 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/contracts/src/v06/LibERC20TokenV06.sol"; +import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol"; +import "@0x/contracts-erc20/contracts/src/v06/IEtherTokenV06.sol"; +import "./MixinAdapterAddresses.sol"; + + +interface IBancorNetwork { + function convertByPath( + address[] calldata _path, + uint256 _amount, + uint256 _minReturn, + address _beneficiary, + address _affiliateAccount, + uint256 _affiliateFee + ) + external + payable + returns (uint256); +} + + +contract MixinBancor is + MixinAdapterAddresses +{ + /// @dev Bancor ETH pseudo-address. + address constant public BANCOR_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + IEtherTokenV06 private immutable WETH; + + constructor(AdapterAddresses memory addresses) + public + { + WETH = IEtherTokenV06(addresses.weth); + } + + function _tradeBancor( + IERC20TokenV06 buyToken, + uint256 sellAmount, + bytes memory bridgeData + ) + internal + returns (uint256 boughtAmount) + { + // Decode the bridge data. + ( + address[] memory path, + address bancorNetworkAddress + // solhint-disable indent + ) = abi.decode(bridgeData, (address[], address)); + // solhint-enable indent + + require(path.length >= 2, "MixinBancor/PATH_LENGTH_MUST_BE_AT_LEAST_TWO"); + require( + path[path.length - 1] == address(buyToken) || + (path[path.length - 1] == BANCOR_ETH_ADDRESS && address(buyToken) == address(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( + IERC20TokenV06(path[0]), + bancorNetworkAddress, + sellAmount + ); + } + + // Convert the tokens + boughtAmount = IBancorNetwork(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; + } +} diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinCoFiX.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinCoFiX.sol new file mode 100644 index 0000000000..a2a73acd81 --- /dev/null +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinCoFiX.sol @@ -0,0 +1,86 @@ +/* + + Copyright 2020 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/contracts/src/v06/LibERC20TokenV06.sol"; +import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol"; +import "@0x/contracts-erc20/contracts/src/v06/IEtherTokenV06.sol"; +import "./MixinAdapterAddresses.sol"; + + +interface ICoFiXRouter { + // msg.value = fee + function swapExactTokensForETH( + address token, + uint amountIn, + uint amountOutMin, + address to, + address rewardTo, + uint deadline + ) external payable returns (uint _amountIn, uint _amountOut); + + // msg.value = amountIn + fee + function swapExactETHForTokens( + address token, + uint amountIn, + uint amountOutMin, + address to, + address rewardTo, + uint deadline + ) external payable returns (uint _amountIn, uint _amountOut); +} + +interface ICoFiXPair { + + function swapWithExact(address outToken, address to) + external + payable + returns (uint amountIn, uint amountOut, uint oracleFeeChange, uint256[4] memory tradeInfo); +} + +contract MixinCoFiX is + MixinAdapterAddresses +{ + using LibERC20TokenV06 for IERC20TokenV06; + + function _tradeCoFiX( + IERC20TokenV06 buyToken, + uint256 sellAmount, + bytes memory bridgeData + ) + internal + returns (uint256 boughtAmount) + { + (address fromTokenAddress, uint256 fee, address pool) = abi.decode(bridgeData, (address, uint256, address)); + // Transfer tokens into the pool + LibERC20TokenV06.compatTransfer( + IERC20TokenV06(fromTokenAddress), + pool, + sellAmount); + // Call the swap exact with the tokens now in the pool + // pay the NEST Oracle fee with ETH + (/* In */, boughtAmount, , ) = ICoFiXPair(pool).swapWithExact{value: fee}( + address(buyToken), + address(this) + ); + + return boughtAmount; + } +} diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol index 39a52162f1..759a5bd6b1 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol @@ -29,22 +29,6 @@ contract MixinZeroExBridge { using LibERC20TokenV06 for IERC20TokenV06; using LibSafeMathV06 for uint256; - /// @dev Emitted when a trade occurs. - /// @param inputToken The token the bridge is converting from. - /// @param outputToken The token the bridge is converting to. - /// @param inputTokenAmount Amount of input token. - /// @param outputTokenAmount Amount of output token. - /// @param from The bridge address, indicating the underlying source of the fill. - /// @param to The `to` address, currrently `address(this)` - event ERC20BridgeTransfer( - IERC20TokenV06 inputToken, - IERC20TokenV06 outputToken, - uint256 inputTokenAmount, - uint256 outputTokenAmount, - address from, - address to - ); - function _tradeZeroExBridge( address bridgeAddress, IERC20TokenV06 sellToken, @@ -67,13 +51,5 @@ contract MixinZeroExBridge { 1, // minBuyAmount bridgeData ); - emit ERC20BridgeTransfer( - sellToken, - buyToken, - sellAmount, - boughtAmount, - bridgeAddress, - address(this) - ); } } diff --git a/contracts/zero-ex/package.json b/contracts/zero-ex/package.json index 838a0a71ce..6cbff01a3d 100644 --- a/contracts/zero-ex/package.json +++ b/contracts/zero-ex/package.json @@ -43,7 +43,7 @@ "config": { "publicInterfaceContracts": "IZeroEx,ZeroEx,FullMigration,InitialMigration,IFlashWallet,IAllowanceTarget,IERC20Transformer,IOwnableFeature,ISimpleFunctionRegistryFeature,ITokenSpenderFeature,ITransformERC20Feature,FillQuoteTransformer,PayTakerTransformer,WethTransformer,OwnableFeature,SimpleFunctionRegistryFeature,TransformERC20Feature,TokenSpenderFeature,AffiliateFeeTransformer,SignatureValidatorFeature,MetaTransactionsFeature,LogMetadataTransformer,BridgeAdapter,LiquidityProviderFeature,ILiquidityProviderFeature,NativeOrdersFeature,INativeOrdersFeature,FeeCollectorController,FeeCollector", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually.", - "abis": "./test/generated-artifacts/@(AffiliateFeeTransformer|AllowanceTarget|BootstrapFeature|BridgeAdapter|FeeCollector|FeeCollectorController|FillQuoteTransformer|FixinCommon|FixinEIP712|FixinProtocolFees|FixinReentrancyGuard|FixinTokenSpender|FlashWallet|FullMigration|IAllowanceTarget|IBootstrapFeature|IBridgeAdapter|IERC20Bridge|IERC20Transformer|IExchange|IFeature|IFlashWallet|IGasToken|ILiquidityProvider|ILiquidityProviderFeature|ILiquidityProviderSandbox|IMetaTransactionsFeature|INativeOrdersFeature|IOwnableFeature|ISignatureValidatorFeature|ISimpleFunctionRegistryFeature|IStaking|ITestSimpleFunctionRegistryFeature|ITokenSpenderFeature|ITransformERC20Feature|IUniswapFeature|IZeroEx|InitialMigration|LibBootstrap|LibCommonRichErrors|LibERC20Transformer|LibFeeCollector|LibLiquidityProviderRichErrors|LibMetaTransactionsRichErrors|LibMetaTransactionsStorage|LibMigrate|LibNativeOrder|LibNativeOrdersRichErrors|LibNativeOrdersStorage|LibOrderHash|LibOwnableRichErrors|LibOwnableStorage|LibProxyRichErrors|LibProxyStorage|LibReentrancyGuardStorage|LibSignature|LibSignatureRichErrors|LibSimpleFunctionRegistryRichErrors|LibSimpleFunctionRegistryStorage|LibSpenderRichErrors|LibStorage|LibTokenSpenderStorage|LibTransformERC20RichErrors|LibTransformERC20Storage|LibWalletRichErrors|LiquidityProviderFeature|LiquidityProviderSandbox|LogMetadataTransformer|MetaTransactionsFeature|MixinAdapterAddresses|MixinBalancer|MixinCryptoCom|MixinCurve|MixinDodo|MixinKyber|MixinMStable|MixinMooniswap|MixinOasis|MixinShell|MixinSushiswap|MixinUniswap|MixinUniswapV2|MixinZeroExBridge|NativeOrdersFeature|OwnableFeature|PayTakerTransformer|PermissionlessTransformerDeployer|SignatureValidatorFeature|SimpleFunctionRegistryFeature|TestBridge|TestCallTarget|TestDelegateCaller|TestFeeCollectorController|TestFillQuoteTransformerBridge|TestFillQuoteTransformerExchange|TestFillQuoteTransformerHost|TestFixinProtocolFees|TestFixinTokenSpender|TestFullMigration|TestInitialMigration|TestLibNativeOrder|TestLibSignature|TestLiquidityProvider|TestMetaTransactionsNativeOrdersFeature|TestMetaTransactionsTransformERC20Feature|TestMigrator|TestMintTokenERC20Transformer|TestMintableERC20Token|TestNativeOrdersFeature|TestPermissionlessTransformerDeployerSuicidal|TestPermissionlessTransformerDeployerTransformer|TestRfqOriginRegistration|TestSimpleFunctionRegistryFeatureImpl1|TestSimpleFunctionRegistryFeatureImpl2|TestStaking|TestTokenSpender|TestTokenSpenderERC20Token|TestTransformERC20|TestTransformerBase|TestTransformerDeployerTransformer|TestTransformerHost|TestWeth|TestWethTransformerHost|TestZeroExFeature|TokenSpenderFeature|TransformERC20Feature|Transformer|TransformerDeployer|UniswapFeature|WethTransformer|ZeroEx|ZeroExOptimized).json" + "abis": "./test/generated-artifacts/@(AffiliateFeeTransformer|AllowanceTarget|BootstrapFeature|BridgeAdapter|FeeCollector|FeeCollectorController|FillQuoteTransformer|FixinCommon|FixinEIP712|FixinProtocolFees|FixinReentrancyGuard|FixinTokenSpender|FlashWallet|FullMigration|IAllowanceTarget|IBootstrapFeature|IBridgeAdapter|IERC20Bridge|IERC20Transformer|IExchange|IFeature|IFlashWallet|IGasToken|ILiquidityProvider|ILiquidityProviderFeature|ILiquidityProviderSandbox|IMetaTransactionsFeature|INativeOrdersFeature|IOwnableFeature|ISignatureValidatorFeature|ISimpleFunctionRegistryFeature|IStaking|ITestSimpleFunctionRegistryFeature|ITokenSpenderFeature|ITransformERC20Feature|IUniswapFeature|IZeroEx|InitialMigration|LibBootstrap|LibCommonRichErrors|LibERC20Transformer|LibFeeCollector|LibLiquidityProviderRichErrors|LibMetaTransactionsRichErrors|LibMetaTransactionsStorage|LibMigrate|LibNativeOrder|LibNativeOrdersRichErrors|LibNativeOrdersStorage|LibOrderHash|LibOwnableRichErrors|LibOwnableStorage|LibProxyRichErrors|LibProxyStorage|LibReentrancyGuardStorage|LibSignature|LibSignatureRichErrors|LibSimpleFunctionRegistryRichErrors|LibSimpleFunctionRegistryStorage|LibSpenderRichErrors|LibStorage|LibTokenSpenderStorage|LibTransformERC20RichErrors|LibTransformERC20Storage|LibWalletRichErrors|LiquidityProviderFeature|LiquidityProviderSandbox|LogMetadataTransformer|MetaTransactionsFeature|MixinAdapterAddresses|MixinBalancer|MixinBancor|MixinCoFiX|MixinCryptoCom|MixinCurve|MixinDodo|MixinKyber|MixinMStable|MixinMooniswap|MixinOasis|MixinShell|MixinSushiswap|MixinUniswap|MixinUniswapV2|MixinZeroExBridge|NativeOrdersFeature|OwnableFeature|PayTakerTransformer|PermissionlessTransformerDeployer|SignatureValidatorFeature|SimpleFunctionRegistryFeature|TestBridge|TestCallTarget|TestDelegateCaller|TestFeeCollectorController|TestFillQuoteTransformerBridge|TestFillQuoteTransformerExchange|TestFillQuoteTransformerHost|TestFixinProtocolFees|TestFixinTokenSpender|TestFullMigration|TestInitialMigration|TestLibNativeOrder|TestLibSignature|TestLiquidityProvider|TestMetaTransactionsNativeOrdersFeature|TestMetaTransactionsTransformERC20Feature|TestMigrator|TestMintTokenERC20Transformer|TestMintableERC20Token|TestNativeOrdersFeature|TestPermissionlessTransformerDeployerSuicidal|TestPermissionlessTransformerDeployerTransformer|TestRfqOriginRegistration|TestSimpleFunctionRegistryFeatureImpl1|TestSimpleFunctionRegistryFeatureImpl2|TestStaking|TestTokenSpender|TestTokenSpenderERC20Token|TestTransformERC20|TestTransformerBase|TestTransformerDeployerTransformer|TestTransformerHost|TestWeth|TestWethTransformerHost|TestZeroExFeature|TokenSpenderFeature|TransformERC20Feature|Transformer|TransformerDeployer|UniswapFeature|WethTransformer|ZeroEx|ZeroExOptimized).json" }, "repository": { "type": "git", diff --git a/contracts/zero-ex/test/artifacts.ts b/contracts/zero-ex/test/artifacts.ts index 9cfc5b4413..0f1135ee56 100644 --- a/contracts/zero-ex/test/artifacts.ts +++ b/contracts/zero-ex/test/artifacts.ts @@ -76,6 +76,8 @@ import * as LogMetadataTransformer from '../test/generated-artifacts/LogMetadata import * as MetaTransactionsFeature from '../test/generated-artifacts/MetaTransactionsFeature.json'; import * as MixinAdapterAddresses from '../test/generated-artifacts/MixinAdapterAddresses.json'; import * as MixinBalancer from '../test/generated-artifacts/MixinBalancer.json'; +import * as MixinBancor from '../test/generated-artifacts/MixinBancor.json'; +import * as MixinCoFiX from '../test/generated-artifacts/MixinCoFiX.json'; import * as MixinCryptoCom from '../test/generated-artifacts/MixinCryptoCom.json'; import * as MixinCurve from '../test/generated-artifacts/MixinCurve.json'; import * as MixinDodo from '../test/generated-artifacts/MixinDodo.json'; @@ -216,6 +218,8 @@ export const artifacts = { IBridgeAdapter: IBridgeAdapter as ContractArtifact, MixinAdapterAddresses: MixinAdapterAddresses as ContractArtifact, MixinBalancer: MixinBalancer as ContractArtifact, + MixinBancor: MixinBancor as ContractArtifact, + MixinCoFiX: MixinCoFiX as ContractArtifact, MixinCryptoCom: MixinCryptoCom as ContractArtifact, MixinCurve: MixinCurve as ContractArtifact, MixinDodo: MixinDodo as ContractArtifact, diff --git a/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts b/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts index e5dec94b16..ad618fea87 100644 --- a/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts +++ b/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts @@ -78,6 +78,8 @@ blockchainTests.resets('FillQuoteTransformer', env => { dodoHelper: NULL_ADDRESS, snowSwapBridge: NULL_ADDRESS, cryptoComBridge: NULL_ADDRESS, + bancorBridge: NULL_ADDRESS, + cofixBridge: NULL_ADDRESS, }, ); transformer = await FillQuoteTransformerContract.deployFrom0xArtifactAsync( diff --git a/contracts/zero-ex/test/wrappers.ts b/contracts/zero-ex/test/wrappers.ts index 85398501ba..a103fc3cb0 100644 --- a/contracts/zero-ex/test/wrappers.ts +++ b/contracts/zero-ex/test/wrappers.ts @@ -74,6 +74,8 @@ export * from '../test/generated-wrappers/log_metadata_transformer'; export * from '../test/generated-wrappers/meta_transactions_feature'; export * from '../test/generated-wrappers/mixin_adapter_addresses'; export * from '../test/generated-wrappers/mixin_balancer'; +export * from '../test/generated-wrappers/mixin_bancor'; +export * from '../test/generated-wrappers/mixin_co_fi_x'; export * from '../test/generated-wrappers/mixin_crypto_com'; export * from '../test/generated-wrappers/mixin_curve'; export * from '../test/generated-wrappers/mixin_dodo'; diff --git a/contracts/zero-ex/tsconfig.json b/contracts/zero-ex/tsconfig.json index df7fc62881..cc639c138b 100644 --- a/contracts/zero-ex/tsconfig.json +++ b/contracts/zero-ex/tsconfig.json @@ -103,6 +103,8 @@ "test/generated-artifacts/MetaTransactionsFeature.json", "test/generated-artifacts/MixinAdapterAddresses.json", "test/generated-artifacts/MixinBalancer.json", + "test/generated-artifacts/MixinBancor.json", + "test/generated-artifacts/MixinCoFiX.json", "test/generated-artifacts/MixinCryptoCom.json", "test/generated-artifacts/MixinCurve.json", "test/generated-artifacts/MixinDodo.json", diff --git a/packages/contract-addresses/CHANGELOG.json b/packages/contract-addresses/CHANGELOG.json index f2deebe3ea..3c274ecb10 100644 --- a/packages/contract-addresses/CHANGELOG.json +++ b/packages/contract-addresses/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "5.7.0", + "changes": [ + { + "note": "Redeploy FQT", + "pr": 91 + } + ] + }, { "version": "5.6.0", "changes": [ diff --git a/packages/contract-addresses/addresses.json b/packages/contract-addresses/addresses.json index ff2eed6c7d..20fa2ad2d1 100644 --- a/packages/contract-addresses/addresses.json +++ b/packages/contract-addresses/addresses.json @@ -37,7 +37,7 @@ "wethTransformer": "0xb2bc06a4efb20fc6553a69dbfa49b7be938034a7", "payTakerTransformer": "0x4638a7ebe75b911b995d0ec73a81e4f85f41f24e", "affiliateFeeTransformer": "0xda6d9fc5998f550a094585cf9171f0e8ee3ac59f", - "fillQuoteTransformer": "0x74c35f17a19d4ee0ddd65cc21c671806913f9176" + "fillQuoteTransformer": "0xab6959d63bf6557d4bc2a0fc5265f5a6851e33f3" } }, "3": { @@ -78,7 +78,7 @@ "wethTransformer": "0x05ad19aa3826e0609a19568ffbd1dfe86c6c7184", "payTakerTransformer": "0x6d0ebf2bcd9cc93ec553b60ad201943dcca4e291", "affiliateFeeTransformer": "0x6588256778ca4432fa43983ac685c45efb2379e2", - "fillQuoteTransformer": "0x5ec162400ec00f0f3ef1d8aae1fed37742d5dc81" + "fillQuoteTransformer": "0x5cd9164c9352ff95e3b6fa7bb9ac89a102c9d109" } }, "4": { diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts index 039f79fa08..beddf3dfc6 100644 --- a/packages/migrations/src/migration.ts +++ b/packages/migrations/src/migration.ts @@ -333,6 +333,8 @@ export async function runMigrationsAsync( dodoHelper: NULL_ADDRESS, snowSwapBridge: NULL_ADDRESS, cryptoComBridge: NULL_ADDRESS, + bancorBridge: NULL_ADDRESS, + cofixBridge: NULL_ADDRESS, weth: etherToken.address, }, );