diff options
author | Fabio Berger <me@fabioberger.com> | 2018-07-24 23:13:21 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-07-24 23:13:21 +0800 |
commit | 56f21f4bab2fd844961eb3f8366a421660d04706 (patch) | |
tree | 287b86096263641b9d0c3e7441dfdeb85e1ebb93 /packages/contracts/src/2.0.0/forwarder/MixinMarketBuyZrx.sol | |
parent | 9a36e73f4ed62871b2c39d129de0ac2c04aeba2b (diff) | |
parent | a05b14e4d9659be1cc495ee33fd8962ce773f87f (diff) | |
download | dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.tar dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.tar.gz dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.tar.bz2 dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.tar.lz dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.tar.xz dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.tar.zst dexon-sol-tools-56f21f4bab2fd844961eb3f8366a421660d04706.zip |
Merge v2-prototype
Diffstat (limited to 'packages/contracts/src/2.0.0/forwarder/MixinMarketBuyZrx.sol')
-rw-r--r-- | packages/contracts/src/2.0.0/forwarder/MixinMarketBuyZrx.sol | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/packages/contracts/src/2.0.0/forwarder/MixinMarketBuyZrx.sol b/packages/contracts/src/2.0.0/forwarder/MixinMarketBuyZrx.sol deleted file mode 100644 index e272f8aad..000000000 --- a/packages/contracts/src/2.0.0/forwarder/MixinMarketBuyZrx.sol +++ /dev/null @@ -1,83 +0,0 @@ -/* - - Copyright 2018 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.4.24; -pragma experimental ABIEncoderV2; - -import "../protocol/Exchange/libs/LibFillResults.sol"; -import "../protocol/Exchange/libs/LibOrder.sol"; -import "../protocol/Exchange/libs/LibMath.sol"; -import "./mixins/MConstants.sol"; -import "./mixins/MMarketBuyZrx.sol"; - - -contract MixinMarketBuyZrx is - LibMath, - LibFillResults, - MConstants, - MMarketBuyZrx -{ - - /// @dev Buys zrxBuyAmount of ZRX fee tokens, taking into account the fees on buying fee tokens. This will guarantee - /// At least zrxBuyAmount of ZRX fee tokens are purchased (sometimes slightly over due to rounding issues). - /// It is possible that a request to buy 200 ZRX fee tokens will require purchasing 202 ZRX tokens - /// As 2 ZRX is required to purchase the 200 ZRX fee tokens. This guarantees at least 200 ZRX for future purchases. - /// @param orders An array of Order struct containing order specifications for fees. - /// @param signatures An array of Proof that order has been created by maker for the fee orders. - /// @param zrxBuyAmount The number of requested ZRX fee tokens. - /// @return totalFillResults Amounts filled and fees paid by maker and taker. makerTokenAmount is the zrx amount deducted of fees - function marketBuyZrxInternal( - LibOrder.Order[] memory orders, - bytes[] memory signatures, - uint256 zrxBuyAmount - ) - internal - returns (FillResults memory totalFillResults) - { - for (uint256 i = 0; i < orders.length; i++) { - // All of these are ZRX/WETH, we can drop the respective assetData from callData - orders[i].makerAssetData = ZRX_ASSET_DATA; - orders[i].takerAssetData = WETH_ASSET_DATA; - // Calculate the remaining amount of makerToken to buy - uint256 remainingZrxBuyAmount = safeSub(zrxBuyAmount, totalFillResults.makerAssetFilledAmount); - // Convert the remaining amount of makerToken to buy into remaining amount - // of takerToken to sell, assuming entire amount can be sold in the current order - uint256 remainingWethSellAmount = getPartialAmount( - orders[i].takerAssetAmount, - safeSub(orders[i].makerAssetAmount, orders[i].takerFee), // our exchange rate after fees - remainingZrxBuyAmount - ); - // Attempt to sell the remaining amount of takerToken - // Round up the amount to ensure we don't under buy by a fractional amount - FillResults memory singleFillResult = EXCHANGE.fillOrder( - orders[i], - safeAdd(remainingWethSellAmount, 1), - signatures[i] - ); - // We didn't buy the full amount when buying ZRX as some were taken for fees - singleFillResult.makerAssetFilledAmount = safeSub(singleFillResult.makerAssetFilledAmount, singleFillResult.takerFeePaid); - // Update amounts filled and fees paid by maker and taker - addFillResults(totalFillResults, singleFillResult); - // Stop execution if the entire amount of makerToken has been bought - if (totalFillResults.makerAssetFilledAmount >= zrxBuyAmount) { - break; - } - } - return totalFillResults; - } -} |