diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-07-24 13:43:26 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-07-24 13:43:26 +0800 |
commit | e49d136b99cea375052c7278c0bca0df6524d2d8 (patch) | |
tree | d9ef67f50cfa860fd5da76b686aca2a7578f1d27 /packages/contracts/src/2.0.0/forwarder/libs | |
parent | 6ffa907f0ef3c94d3ea7d79d99a24939f62e0eb8 (diff) | |
parent | a05b14e4d9659be1cc495ee33fd8962ce773f87f (diff) | |
download | dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.tar dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.tar.gz dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.tar.bz2 dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.tar.lz dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.tar.xz dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.tar.zst dexon-sol-tools-e49d136b99cea375052c7278c0bca0df6524d2d8.zip |
Merge branch 'v2-prototype' into feature/website/jobs-page-part2
* v2-prototype: (38 commits)
Revert "Publish"
Publish
Remove ERC721 callback functions
Use != instead of > in loops, add sanity checks to market fill functions
Add more tests and fixes
Remove MConstants and MixinConstants for LibConstants
Remove redundant external call by reimplementing fillOrderNoThrow
Remove orders length check
Add assertValidFillResults
Update web3Wrapper CHANGELOG
Get actual gasPrice from transaction instead of setting default
Store orders length in varible before looping over orders
Use transferFrom instead of safeTransferFrom
Fix minimal tests
Fix rounding error issues, use different logic when makerAsset is ZRX
Rename marketSellEth => marketSellWeth
Update percentage constants
Update transferEthFeeAndRefund, add check to ERC721 transfer
Refactor forwarding contract architecture, remove batch functions
Updated CHANGELOGS
...
Diffstat (limited to 'packages/contracts/src/2.0.0/forwarder/libs')
-rw-r--r-- | packages/contracts/src/2.0.0/forwarder/libs/LibConstants.sol | 58 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/forwarder/libs/LibForwarderErrors.sol | 34 |
2 files changed, 92 insertions, 0 deletions
diff --git a/packages/contracts/src/2.0.0/forwarder/libs/LibConstants.sol b/packages/contracts/src/2.0.0/forwarder/libs/LibConstants.sol new file mode 100644 index 000000000..c26d7902c --- /dev/null +++ b/packages/contracts/src/2.0.0/forwarder/libs/LibConstants.sol @@ -0,0 +1,58 @@ +/* + + 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; + +import "../../protocol/Exchange/interfaces/IExchange.sol"; +import "../../tokens/EtherToken/IEtherToken.sol"; +import "../../tokens/ERC20Token/IERC20Token.sol"; + + +contract LibConstants { + + bytes4 constant internal ERC20_DATA_ID = bytes4(keccak256("ERC20Token(address)")); + bytes4 constant internal ERC721_DATA_ID = bytes4(keccak256("ERC721Token(address,uint256)")); + uint256 constant internal MAX_UINT = 2**256 - 1; + uint256 constant internal PERCENTAGE_DENOMINATOR = 10**18; + uint256 constant internal MAX_FEE_PERCENTAGE = 5 * PERCENTAGE_DENOMINATOR / 100; // 5% + uint256 constant internal MAX_WETH_FILL_PERCENTAGE = 95 * PERCENTAGE_DENOMINATOR / 100; // 95% + + // solhint-disable var-name-mixedcase + IExchange internal EXCHANGE; + IEtherToken internal ETHER_TOKEN; + IERC20Token internal ZRX_TOKEN; + bytes internal ZRX_ASSET_DATA; + bytes internal WETH_ASSET_DATA; + // solhint-enable var-name-mixedcase + + constructor ( + address _exchange, + address _etherToken, + address _zrxToken, + bytes memory _zrxAssetData, + bytes memory _wethAssetData + ) + public + { + EXCHANGE = IExchange(_exchange); + ETHER_TOKEN = IEtherToken(_etherToken); + ZRX_TOKEN = IERC20Token(_zrxToken); + ZRX_ASSET_DATA = _zrxAssetData; + WETH_ASSET_DATA = _wethAssetData; + } +} diff --git a/packages/contracts/src/2.0.0/forwarder/libs/LibForwarderErrors.sol b/packages/contracts/src/2.0.0/forwarder/libs/LibForwarderErrors.sol new file mode 100644 index 000000000..cdfb77a0b --- /dev/null +++ b/packages/contracts/src/2.0.0/forwarder/libs/LibForwarderErrors.sol @@ -0,0 +1,34 @@ +/* + + 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. + +*/ + +// solhint-disable +pragma solidity 0.4.24; + + +/// This contract is intended to serve as a reference, but is not actually used for efficiency reasons. +contract LibForwarderErrors { + string constant FEE_PERCENTAGE_TOO_LARGE = "FEE_PROPORTION_TOO_LARGE"; // Provided fee percentage greater than 5%. + string constant INSUFFICIENT_ETH_REMAINING = "INSUFFICIENT_ETH_REMAINING"; // Not enough ETH remaining to pay feeRecipient. + string constant OVERSOLD_WETH = "OVERSOLD_WETH"; // More WETH sold than provided with current message call. + string constant COMPLETE_FILL_FAILED = "COMPLETE_FILL_FAILED"; // Desired purchase amount not completely filled (required for ZRX fees only). + string constant TRANSFER_FAILED = "TRANSFER_FAILED"; // Asset transfer failed. + string constant UNSUPPORTED_TOKEN_PROXY = "UNSUPPORTED_TOKEN_PROXY"; // Proxy in assetData not supported. + string constant DEFAULT_FUNCTION_WETH_CONTRACT_ONLY = "DEFAULT_FUNCTION_WETH_CONTRACT_ONLY"; // Fallback function may only be used for WETH withdrawals. + string constant INVALID_MSG_VALUE = "INVALID_MSG_VALUE"; // msg.value must be greater than 0. + string constant INVALID_AMOUNT = "INVALID_AMOUNT"; // Amount must equal 1. +} |