Bancor FQT rollup (#91)
* Add MixinBancor for BridgeAdapter * Update changelog * Use 0.6 call value syntax * `@0x/contract-addresses`: Deploy new FQT * feat: Rollup CoFiX (#92) * `@0x/contract-addreses`: update FQT addresses Co-authored-by: Lawrence Forman <me@merklejerk.com> Co-authored-by: Jacob Evans <jacob@dekz.net>
This commit is contained in:
parent
6fa1de7889
commit
fb437551c9
@ -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",
|
"version": "0.14.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@ -21,6 +21,8 @@ pragma experimental ABIEncoderV2;
|
|||||||
|
|
||||||
import "./mixins/MixinAdapterAddresses.sol";
|
import "./mixins/MixinAdapterAddresses.sol";
|
||||||
import "./mixins/MixinBalancer.sol";
|
import "./mixins/MixinBalancer.sol";
|
||||||
|
import "./mixins/MixinBancor.sol";
|
||||||
|
import "./mixins/MixinCoFiX.sol";
|
||||||
import "./mixins/MixinCurve.sol";
|
import "./mixins/MixinCurve.sol";
|
||||||
import "./mixins/MixinCryptoCom.sol";
|
import "./mixins/MixinCryptoCom.sol";
|
||||||
import "./mixins/MixinDodo.sol";
|
import "./mixins/MixinDodo.sol";
|
||||||
@ -37,6 +39,8 @@ import "./mixins/MixinZeroExBridge.sol";
|
|||||||
contract BridgeAdapter is
|
contract BridgeAdapter is
|
||||||
MixinAdapterAddresses,
|
MixinAdapterAddresses,
|
||||||
MixinBalancer,
|
MixinBalancer,
|
||||||
|
MixinBancor,
|
||||||
|
MixinCoFiX,
|
||||||
MixinCurve,
|
MixinCurve,
|
||||||
MixinCryptoCom,
|
MixinCryptoCom,
|
||||||
MixinDodo,
|
MixinDodo,
|
||||||
@ -51,7 +55,25 @@ contract BridgeAdapter is
|
|||||||
MixinZeroExBridge
|
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 BALANCER_BRIDGE_ADDRESS;
|
||||||
|
address private immutable BANCOR_BRIDGE_ADDRESS;
|
||||||
|
address private immutable COFIX_BRIDGE_ADDRESS;
|
||||||
address private immutable CREAM_BRIDGE_ADDRESS;
|
address private immutable CREAM_BRIDGE_ADDRESS;
|
||||||
address private immutable CURVE_BRIDGE_ADDRESS;
|
address private immutable CURVE_BRIDGE_ADDRESS;
|
||||||
address private immutable CRYPTO_COM_BRIDGE_ADDRESS;
|
address private immutable CRYPTO_COM_BRIDGE_ADDRESS;
|
||||||
@ -70,6 +92,8 @@ contract BridgeAdapter is
|
|||||||
constructor(AdapterAddresses memory addresses)
|
constructor(AdapterAddresses memory addresses)
|
||||||
public
|
public
|
||||||
MixinBalancer()
|
MixinBalancer()
|
||||||
|
MixinBancor(addresses)
|
||||||
|
MixinCoFiX()
|
||||||
MixinCurve()
|
MixinCurve()
|
||||||
MixinCryptoCom(addresses)
|
MixinCryptoCom(addresses)
|
||||||
MixinDodo(addresses)
|
MixinDodo(addresses)
|
||||||
@ -84,6 +108,8 @@ contract BridgeAdapter is
|
|||||||
MixinZeroExBridge()
|
MixinZeroExBridge()
|
||||||
{
|
{
|
||||||
BALANCER_BRIDGE_ADDRESS = addresses.balancerBridge;
|
BALANCER_BRIDGE_ADDRESS = addresses.balancerBridge;
|
||||||
|
BANCOR_BRIDGE_ADDRESS = addresses.bancorBridge;
|
||||||
|
COFIX_BRIDGE_ADDRESS = addresses.cofixBridge;
|
||||||
CURVE_BRIDGE_ADDRESS = addresses.curveBridge;
|
CURVE_BRIDGE_ADDRESS = addresses.curveBridge;
|
||||||
CRYPTO_COM_BRIDGE_ADDRESS = addresses.cryptoComBridge;
|
CRYPTO_COM_BRIDGE_ADDRESS = addresses.cryptoComBridge;
|
||||||
KYBER_BRIDGE_ADDRESS = addresses.kyberBridge;
|
KYBER_BRIDGE_ADDRESS = addresses.kyberBridge;
|
||||||
@ -196,6 +222,18 @@ contract BridgeAdapter is
|
|||||||
sellAmount,
|
sellAmount,
|
||||||
bridgeData
|
bridgeData
|
||||||
);
|
);
|
||||||
|
} else if (bridgeAddress == BANCOR_BRIDGE_ADDRESS) {
|
||||||
|
boughtAmount = _tradeBancor(
|
||||||
|
buyToken,
|
||||||
|
sellAmount,
|
||||||
|
bridgeData
|
||||||
|
);
|
||||||
|
} else if (bridgeAddress == COFIX_BRIDGE_ADDRESS) {
|
||||||
|
boughtAmount = _tradeCoFiX(
|
||||||
|
buyToken,
|
||||||
|
sellAmount,
|
||||||
|
bridgeData
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
boughtAmount = _tradeZeroExBridge(
|
boughtAmount = _tradeZeroExBridge(
|
||||||
bridgeAddress,
|
bridgeAddress,
|
||||||
@ -204,9 +242,6 @@ contract BridgeAdapter is
|
|||||||
sellAmount,
|
sellAmount,
|
||||||
bridgeData
|
bridgeData
|
||||||
);
|
);
|
||||||
// Old bridge contracts should emit an `ERC20BridgeTransfer` themselves,
|
|
||||||
// otherwise an event will be emitted from `_tradeZeroExBridge`.
|
|
||||||
return boughtAmount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit ERC20BridgeTransfer(
|
emit ERC20BridgeTransfer(
|
||||||
|
@ -24,6 +24,8 @@ contract MixinAdapterAddresses
|
|||||||
struct AdapterAddresses {
|
struct AdapterAddresses {
|
||||||
// Bridges
|
// Bridges
|
||||||
address balancerBridge;
|
address balancerBridge;
|
||||||
|
address bancorBridge;
|
||||||
|
address cofixBridge;
|
||||||
address creamBridge;
|
address creamBridge;
|
||||||
address curveBridge;
|
address curveBridge;
|
||||||
address cryptoComBridge;
|
address cryptoComBridge;
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -29,22 +29,6 @@ contract MixinZeroExBridge {
|
|||||||
using LibERC20TokenV06 for IERC20TokenV06;
|
using LibERC20TokenV06 for IERC20TokenV06;
|
||||||
using LibSafeMathV06 for uint256;
|
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(
|
function _tradeZeroExBridge(
|
||||||
address bridgeAddress,
|
address bridgeAddress,
|
||||||
IERC20TokenV06 sellToken,
|
IERC20TokenV06 sellToken,
|
||||||
@ -67,13 +51,5 @@ contract MixinZeroExBridge {
|
|||||||
1, // minBuyAmount
|
1, // minBuyAmount
|
||||||
bridgeData
|
bridgeData
|
||||||
);
|
);
|
||||||
emit ERC20BridgeTransfer(
|
|
||||||
sellToken,
|
|
||||||
buyToken,
|
|
||||||
sellAmount,
|
|
||||||
boughtAmount,
|
|
||||||
bridgeAddress,
|
|
||||||
address(this)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
"config": {
|
"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",
|
"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: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": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -76,6 +76,8 @@ import * as LogMetadataTransformer from '../test/generated-artifacts/LogMetadata
|
|||||||
import * as MetaTransactionsFeature from '../test/generated-artifacts/MetaTransactionsFeature.json';
|
import * as MetaTransactionsFeature from '../test/generated-artifacts/MetaTransactionsFeature.json';
|
||||||
import * as MixinAdapterAddresses from '../test/generated-artifacts/MixinAdapterAddresses.json';
|
import * as MixinAdapterAddresses from '../test/generated-artifacts/MixinAdapterAddresses.json';
|
||||||
import * as MixinBalancer from '../test/generated-artifacts/MixinBalancer.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 MixinCryptoCom from '../test/generated-artifacts/MixinCryptoCom.json';
|
||||||
import * as MixinCurve from '../test/generated-artifacts/MixinCurve.json';
|
import * as MixinCurve from '../test/generated-artifacts/MixinCurve.json';
|
||||||
import * as MixinDodo from '../test/generated-artifacts/MixinDodo.json';
|
import * as MixinDodo from '../test/generated-artifacts/MixinDodo.json';
|
||||||
@ -216,6 +218,8 @@ export const artifacts = {
|
|||||||
IBridgeAdapter: IBridgeAdapter as ContractArtifact,
|
IBridgeAdapter: IBridgeAdapter as ContractArtifact,
|
||||||
MixinAdapterAddresses: MixinAdapterAddresses as ContractArtifact,
|
MixinAdapterAddresses: MixinAdapterAddresses as ContractArtifact,
|
||||||
MixinBalancer: MixinBalancer as ContractArtifact,
|
MixinBalancer: MixinBalancer as ContractArtifact,
|
||||||
|
MixinBancor: MixinBancor as ContractArtifact,
|
||||||
|
MixinCoFiX: MixinCoFiX as ContractArtifact,
|
||||||
MixinCryptoCom: MixinCryptoCom as ContractArtifact,
|
MixinCryptoCom: MixinCryptoCom as ContractArtifact,
|
||||||
MixinCurve: MixinCurve as ContractArtifact,
|
MixinCurve: MixinCurve as ContractArtifact,
|
||||||
MixinDodo: MixinDodo as ContractArtifact,
|
MixinDodo: MixinDodo as ContractArtifact,
|
||||||
|
@ -78,6 +78,8 @@ blockchainTests.resets('FillQuoteTransformer', env => {
|
|||||||
dodoHelper: NULL_ADDRESS,
|
dodoHelper: NULL_ADDRESS,
|
||||||
snowSwapBridge: NULL_ADDRESS,
|
snowSwapBridge: NULL_ADDRESS,
|
||||||
cryptoComBridge: NULL_ADDRESS,
|
cryptoComBridge: NULL_ADDRESS,
|
||||||
|
bancorBridge: NULL_ADDRESS,
|
||||||
|
cofixBridge: NULL_ADDRESS,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
transformer = await FillQuoteTransformerContract.deployFrom0xArtifactAsync(
|
transformer = await FillQuoteTransformerContract.deployFrom0xArtifactAsync(
|
||||||
|
@ -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/meta_transactions_feature';
|
||||||
export * from '../test/generated-wrappers/mixin_adapter_addresses';
|
export * from '../test/generated-wrappers/mixin_adapter_addresses';
|
||||||
export * from '../test/generated-wrappers/mixin_balancer';
|
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_crypto_com';
|
||||||
export * from '../test/generated-wrappers/mixin_curve';
|
export * from '../test/generated-wrappers/mixin_curve';
|
||||||
export * from '../test/generated-wrappers/mixin_dodo';
|
export * from '../test/generated-wrappers/mixin_dodo';
|
||||||
|
@ -103,6 +103,8 @@
|
|||||||
"test/generated-artifacts/MetaTransactionsFeature.json",
|
"test/generated-artifacts/MetaTransactionsFeature.json",
|
||||||
"test/generated-artifacts/MixinAdapterAddresses.json",
|
"test/generated-artifacts/MixinAdapterAddresses.json",
|
||||||
"test/generated-artifacts/MixinBalancer.json",
|
"test/generated-artifacts/MixinBalancer.json",
|
||||||
|
"test/generated-artifacts/MixinBancor.json",
|
||||||
|
"test/generated-artifacts/MixinCoFiX.json",
|
||||||
"test/generated-artifacts/MixinCryptoCom.json",
|
"test/generated-artifacts/MixinCryptoCom.json",
|
||||||
"test/generated-artifacts/MixinCurve.json",
|
"test/generated-artifacts/MixinCurve.json",
|
||||||
"test/generated-artifacts/MixinDodo.json",
|
"test/generated-artifacts/MixinDodo.json",
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"version": "5.7.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Redeploy FQT",
|
||||||
|
"pr": 91
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "5.6.0",
|
"version": "5.6.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
"wethTransformer": "0xb2bc06a4efb20fc6553a69dbfa49b7be938034a7",
|
"wethTransformer": "0xb2bc06a4efb20fc6553a69dbfa49b7be938034a7",
|
||||||
"payTakerTransformer": "0x4638a7ebe75b911b995d0ec73a81e4f85f41f24e",
|
"payTakerTransformer": "0x4638a7ebe75b911b995d0ec73a81e4f85f41f24e",
|
||||||
"affiliateFeeTransformer": "0xda6d9fc5998f550a094585cf9171f0e8ee3ac59f",
|
"affiliateFeeTransformer": "0xda6d9fc5998f550a094585cf9171f0e8ee3ac59f",
|
||||||
"fillQuoteTransformer": "0x74c35f17a19d4ee0ddd65cc21c671806913f9176"
|
"fillQuoteTransformer": "0xab6959d63bf6557d4bc2a0fc5265f5a6851e33f3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"3": {
|
"3": {
|
||||||
@ -78,7 +78,7 @@
|
|||||||
"wethTransformer": "0x05ad19aa3826e0609a19568ffbd1dfe86c6c7184",
|
"wethTransformer": "0x05ad19aa3826e0609a19568ffbd1dfe86c6c7184",
|
||||||
"payTakerTransformer": "0x6d0ebf2bcd9cc93ec553b60ad201943dcca4e291",
|
"payTakerTransformer": "0x6d0ebf2bcd9cc93ec553b60ad201943dcca4e291",
|
||||||
"affiliateFeeTransformer": "0x6588256778ca4432fa43983ac685c45efb2379e2",
|
"affiliateFeeTransformer": "0x6588256778ca4432fa43983ac685c45efb2379e2",
|
||||||
"fillQuoteTransformer": "0x5ec162400ec00f0f3ef1d8aae1fed37742d5dc81"
|
"fillQuoteTransformer": "0x5cd9164c9352ff95e3b6fa7bb9ac89a102c9d109"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"4": {
|
"4": {
|
||||||
|
@ -333,6 +333,8 @@ export async function runMigrationsAsync(
|
|||||||
dodoHelper: NULL_ADDRESS,
|
dodoHelper: NULL_ADDRESS,
|
||||||
snowSwapBridge: NULL_ADDRESS,
|
snowSwapBridge: NULL_ADDRESS,
|
||||||
cryptoComBridge: NULL_ADDRESS,
|
cryptoComBridge: NULL_ADDRESS,
|
||||||
|
bancorBridge: NULL_ADDRESS,
|
||||||
|
cofixBridge: NULL_ADDRESS,
|
||||||
weth: etherToken.address,
|
weth: etherToken.address,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user