Refactor out libs into @0x/contracts-libs

This commit is contained in:
Leonid Logvinov 2018-12-04 15:40:25 +01:00
parent 18489161c6
commit 9e01f4c9a3
No known key found for this signature in database
GPG Key ID: 0DD294BFDE8C95D4
49 changed files with 326 additions and 51 deletions

2
.gitignore vendored
View File

@ -82,6 +82,7 @@ packages/testnet-faucets/server/
contracts/core/generated-artifacts/ contracts/core/generated-artifacts/
contracts/multisig/generated-artifacts/ contracts/multisig/generated-artifacts/
contracts/utils/generated-artifacts/ contracts/utils/generated-artifacts/
contracts/libs/generated-artifacts/
packages/sol-cov/test/fixtures/artifacts/ packages/sol-cov/test/fixtures/artifacts/
packages/metacoin/artifacts/ packages/metacoin/artifacts/
@ -90,6 +91,7 @@ packages/abi-gen-wrappers/wrappers
contracts/core/generated-wrappers/ contracts/core/generated-wrappers/
contracts/multisig/generated-wrappers/ contracts/multisig/generated-wrappers/
contracts/utils/generated-wrappers/ contracts/utils/generated-wrappers/
contracts/libs/generated-wrappers/
packages/metacoin/src/contract_wrappers packages/metacoin/src/contract_wrappers
# solc-bin in sol-compiler # solc-bin in sol-compiler

View File

@ -6,6 +6,8 @@ lib
/contracts/multisig/generated-artifacts /contracts/multisig/generated-artifacts
/contracts/utils/generated-wrappers /contracts/utils/generated-wrappers
/contracts/utils/generated-artifacts /contracts/utils/generated-artifacts
/contracts/libs/generated-wrappers
/contracts/libs/generated-artifacts
/packages/abi-gen-wrappers/src/generated-wrappers /packages/abi-gen-wrappers/src/generated-wrappers
/packages/contract-artifacts/artifacts /packages/contract-artifacts/artifacts
/python-packages/order_utils/src/zero_ex/contract_artifacts/artifacts /python-packages/order_utils/src/zero_ex/contract_artifacts/artifacts

View File

@ -44,7 +44,6 @@
"ReentrantERC20Token", "ReentrantERC20Token",
"TestAssetProxyOwner", "TestAssetProxyOwner",
"TestAssetProxyDispatcher", "TestAssetProxyDispatcher",
"TestLibs",
"TestExchangeInternals", "TestExchangeInternals",
"TestSignatureValidator", "TestSignatureValidator",
"TestStaticCallReceiver", "TestStaticCallReceiver",

View File

@ -20,7 +20,7 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../../protocol/Exchange/interfaces/IExchange.sol"; import "../../protocol/Exchange/interfaces/IExchange.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
contract ExchangeWrapper { contract ExchangeWrapper {

View File

@ -20,7 +20,7 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../../protocol/Exchange/interfaces/IExchange.sol"; import "../../protocol/Exchange/interfaces/IExchange.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "@0x/contracts-utils/contracts/utils/Ownable/Ownable.sol"; import "@0x/contracts-utils/contracts/utils/Ownable/Ownable.sol";

View File

@ -20,7 +20,7 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../../protocol/Exchange/interfaces/IExchange.sol"; import "../../protocol/Exchange/interfaces/IExchange.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../../tokens/ERC20Token/IERC20Token.sol"; import "../../tokens/ERC20Token/IERC20Token.sol";
import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol"; import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol";
import "@0x/contracts-utils/contracts/utils/SafeMath/SafeMath.sol"; import "@0x/contracts-utils/contracts/utils/SafeMath/SafeMath.sol";

View File

@ -21,10 +21,10 @@ pragma experimental ABIEncoderV2;
import "./libs/LibConstants.sol"; import "./libs/LibConstants.sol";
import "./mixins/MExchangeWrapper.sol"; import "./mixins/MExchangeWrapper.sol";
import "../../protocol/Exchange/libs/LibAbiEncoder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibAbiEncoder.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../../protocol/Exchange/libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "../../protocol/Exchange/libs/LibMath.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibMath.sol";
contract MixinExchangeWrapper is contract MixinExchangeWrapper is

View File

@ -25,9 +25,9 @@ import "./mixins/MAssets.sol";
import "./mixins/MExchangeWrapper.sol"; import "./mixins/MExchangeWrapper.sol";
import "./interfaces/IForwarderCore.sol"; import "./interfaces/IForwarderCore.sol";
import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol"; import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../../protocol/Exchange/libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "../../protocol/Exchange/libs/LibMath.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibMath.sol";
contract MixinForwarderCore is contract MixinForwarderCore is

View File

@ -18,7 +18,7 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
import "../../protocol/Exchange/libs/LibMath.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibMath.sol";
import "./libs/LibConstants.sol"; import "./libs/LibConstants.sol";
import "./mixins/MWeth.sol"; import "./mixins/MWeth.sol";

View File

@ -19,8 +19,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../../../protocol/Exchange/libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
contract IForwarderCore { contract IForwarderCore {

View File

@ -19,8 +19,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../../../protocol/Exchange/libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
contract MExchangeWrapper { contract MExchangeWrapper {

View File

@ -20,7 +20,7 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../../protocol/Exchange/interfaces/IExchange.sol"; import "../../protocol/Exchange/interfaces/IExchange.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../../tokens/ERC20Token/IERC20Token.sol"; import "../../tokens/ERC20Token/IERC20Token.sol";
import "../../tokens/ERC721Token/IERC721Token.sol"; import "../../tokens/ERC721Token/IERC721Token.sol";
import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol"; import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol";

View File

@ -19,7 +19,7 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "./libs/LibConstants.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibConstants.sol";
import "./MixinExchangeCore.sol"; import "./MixinExchangeCore.sol";
import "./MixinSignatureValidator.sol"; import "./MixinSignatureValidator.sol";
import "./MixinWrapperFunctions.sol"; import "./MixinWrapperFunctions.sol";

View File

@ -20,10 +20,10 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/utils/ReentrancyGuard/ReentrancyGuard.sol"; import "@0x/contracts-utils/contracts/utils/ReentrancyGuard/ReentrancyGuard.sol";
import "./libs/LibConstants.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibConstants.sol";
import "./libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "./libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "./libs/LibMath.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibMath.sol";
import "./mixins/MExchangeCore.sol"; import "./mixins/MExchangeCore.sol";
import "./mixins/MSignatureValidator.sol"; import "./mixins/MSignatureValidator.sol";
import "./mixins/MTransactions.sol"; import "./mixins/MTransactions.sol";

View File

@ -15,10 +15,10 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/utils/ReentrancyGuard/ReentrancyGuard.sol"; import "@0x/contracts-utils/contracts/utils/ReentrancyGuard/ReentrancyGuard.sol";
import "./libs/LibConstants.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibConstants.sol";
import "./libs/LibMath.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibMath.sol";
import "./libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "./libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "./mixins/MExchangeCore.sol"; import "./mixins/MExchangeCore.sol";
import "./mixins/MMatchOrders.sol"; import "./mixins/MMatchOrders.sol";
import "./mixins/MTransactions.sol"; import "./mixins/MTransactions.sol";

View File

@ -17,10 +17,10 @@
*/ */
pragma solidity 0.4.24; pragma solidity 0.4.24;
import "./libs/LibExchangeErrors.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibExchangeErrors.sol";
import "./mixins/MSignatureValidator.sol"; import "./mixins/MSignatureValidator.sol";
import "./mixins/MTransactions.sol"; import "./mixins/MTransactions.sol";
import "./libs/LibEIP712.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibEIP712.sol";
contract MixinTransactions is contract MixinTransactions is

View File

@ -20,10 +20,10 @@ pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/utils/ReentrancyGuard/ReentrancyGuard.sol"; import "@0x/contracts-utils/contracts/utils/ReentrancyGuard/ReentrancyGuard.sol";
import "./libs/LibMath.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibMath.sol";
import "./libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "./libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "./libs/LibAbiEncoder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibAbiEncoder.sol";
import "./mixins/MExchangeCore.sol"; import "./mixins/MExchangeCore.sol";
import "./mixins/MWrapperFunctions.sol"; import "./mixins/MWrapperFunctions.sol";

View File

@ -19,8 +19,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
contract IExchangeCore { contract IExchangeCore {

View File

@ -18,8 +18,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
contract IMatchOrders { contract IMatchOrders {

View File

@ -19,8 +19,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
contract IWrapperFunctions { contract IWrapperFunctions {

View File

@ -19,8 +19,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "../interfaces/IExchangeCore.sol"; import "../interfaces/IExchangeCore.sol";

View File

@ -18,8 +18,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "../interfaces/IMatchOrders.sol"; import "../interfaces/IMatchOrders.sol";

View File

@ -19,8 +19,8 @@
pragma solidity 0.4.24; pragma solidity 0.4.24;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import "../libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
import "../libs/LibFillResults.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibFillResults.sol";
import "../interfaces/IWrapperFunctions.sol"; import "../interfaces/IWrapperFunctions.sol";

View File

@ -22,7 +22,7 @@ pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol"; import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol";
import "../../tokens/ERC20Token/ERC20Token.sol"; import "../../tokens/ERC20Token/ERC20Token.sol";
import "../../protocol/Exchange/interfaces/IExchange.sol"; import "../../protocol/Exchange/interfaces/IExchange.sol";
import "../../protocol/Exchange/libs/LibOrder.sol"; import "@0x/contracts-libs/contracts/protocol/Exchange/libs/LibOrder.sol";
// solhint-disable no-unused-vars // solhint-disable no-unused-vars

View File

@ -33,7 +33,7 @@
"lint-contracts": "solhint contracts/**/**/**/**/*.sol" "lint-contracts": "solhint contracts/**/**/**/**/*.sol"
}, },
"config": { "config": {
"abis": "generated-artifacts/@(AssetProxyOwner|DummyERC20Token|DummyERC721Receiver|DummyERC721Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|DutchAuction|ERC20Token|ERC20Proxy|ERC721Token|ERC721Proxy|Forwarder|Exchange|ExchangeWrapper|IAssetData|IAssetProxy|InvalidERC721Receiver|MixinAuthorizable|MultiAssetProxy|OrderValidator|ReentrantERC20Token|TestAssetProxyOwner|TestAssetProxyDispatcher|TestConstants|TestExchangeInternals|TestLibBytes|TestLibs|TestSignatureValidator|TestStaticCallReceiver|Validator|Wallet|Whitelist|WETH9|ZRXToken).json" "abis": "generated-artifacts/@(AssetProxyOwner|DummyERC20Token|DummyERC721Receiver|DummyERC721Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|DutchAuction|ERC20Token|ERC20Proxy|ERC721Token|ERC721Proxy|Forwarder|Exchange|ExchangeWrapper|IAssetData|IAssetProxy|InvalidERC721Receiver|MixinAuthorizable|MultiAssetProxy|OrderValidator|ReentrantERC20Token|TestAssetProxyOwner|TestAssetProxyDispatcher|TestConstants|TestExchangeInternals|TestLibBytes|TestSignatureValidator|TestStaticCallReceiver|Validator|Wallet|Whitelist|WETH9|ZRXToken).json"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -76,6 +76,7 @@
"@0x/order-utils": "^3.0.4", "@0x/order-utils": "^3.0.4",
"@0x/contracts-multisig": "^1.0.0", "@0x/contracts-multisig": "^1.0.0",
"@0x/contracts-utils": "^1.0.0", "@0x/contracts-utils": "^1.0.0",
"@0x/contracts-libs": "^1.0.0",
"@0x/types": "^1.3.0", "@0x/types": "^1.3.0",
"@0x/typescript-typings": "^3.0.4", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.6", "@0x/utils": "^2.0.6",

View File

@ -26,7 +26,6 @@ import * as ReentrantERC20Token from '../../generated-artifacts/ReentrantERC20To
import * as TestAssetProxyDispatcher from '../../generated-artifacts/TestAssetProxyDispatcher.json'; import * as TestAssetProxyDispatcher from '../../generated-artifacts/TestAssetProxyDispatcher.json';
import * as TestAssetProxyOwner from '../../generated-artifacts/TestAssetProxyOwner.json'; import * as TestAssetProxyOwner from '../../generated-artifacts/TestAssetProxyOwner.json';
import * as TestExchangeInternals from '../../generated-artifacts/TestExchangeInternals.json'; import * as TestExchangeInternals from '../../generated-artifacts/TestExchangeInternals.json';
import * as TestLibs from '../../generated-artifacts/TestLibs.json';
import * as TestSignatureValidator from '../../generated-artifacts/TestSignatureValidator.json'; import * as TestSignatureValidator from '../../generated-artifacts/TestSignatureValidator.json';
import * as TestStaticCallReceiver from '../../generated-artifacts/TestStaticCallReceiver.json'; import * as TestStaticCallReceiver from '../../generated-artifacts/TestStaticCallReceiver.json';
import * as Validator from '../../generated-artifacts/Validator.json'; import * as Validator from '../../generated-artifacts/Validator.json';
@ -62,7 +61,6 @@ export const artifacts = {
TestAssetProxyDispatcher: TestAssetProxyDispatcher as ContractArtifact, TestAssetProxyDispatcher: TestAssetProxyDispatcher as ContractArtifact,
TestAssetProxyOwner: TestAssetProxyOwner as ContractArtifact, TestAssetProxyOwner: TestAssetProxyOwner as ContractArtifact,
TestExchangeInternals: TestExchangeInternals as ContractArtifact, TestExchangeInternals: TestExchangeInternals as ContractArtifact,
TestLibs: TestLibs as ContractArtifact,
TestSignatureValidator: TestSignatureValidator as ContractArtifact, TestSignatureValidator: TestSignatureValidator as ContractArtifact,
TestStaticCallReceiver: TestStaticCallReceiver as ContractArtifact, TestStaticCallReceiver: TestStaticCallReceiver as ContractArtifact,
Validator: Validator as ContractArtifact, Validator: Validator as ContractArtifact,

View File

@ -21,7 +21,6 @@ export * from '../../generated-wrappers/reentrant_erc20_token';
export * from '../../generated-wrappers/test_asset_proxy_dispatcher'; export * from '../../generated-wrappers/test_asset_proxy_dispatcher';
export * from '../../generated-wrappers/test_asset_proxy_owner'; export * from '../../generated-wrappers/test_asset_proxy_owner';
export * from '../../generated-wrappers/test_exchange_internals'; export * from '../../generated-wrappers/test_exchange_internals';
export * from '../../generated-wrappers/test_libs';
export * from '../../generated-wrappers/test_signature_validator'; export * from '../../generated-wrappers/test_signature_validator';
export * from '../../generated-wrappers/test_static_call_receiver'; export * from '../../generated-wrappers/test_static_call_receiver';
export * from '../../generated-wrappers/validator'; export * from '../../generated-wrappers/validator';

View File

@ -1,3 +1,4 @@
import { artifacts as libsArtifacts } from '@0x/contracts-libs';
import { import {
AllowanceAmountScenario, AllowanceAmountScenario,
AssetDataScenario, AssetDataScenario,
@ -131,7 +132,11 @@ export async function fillOrderCombinatorialUtilsFactoryAsync(
exchangeContract.address, exchangeContract.address,
); );
const testLibsContract = await TestLibsContract.deployFrom0xArtifactAsync(artifacts.TestLibs, provider, txDefaults); const testLibsContract = await TestLibsContract.deployFrom0xArtifactAsync(
libsArtifacts.TestLibs,
provider,
txDefaults,
);
const fillOrderCombinatorialUtils = new FillOrderCombinatorialUtils( const fillOrderCombinatorialUtils = new FillOrderCombinatorialUtils(
orderFactory, orderFactory,

View File

@ -33,7 +33,6 @@
"./generated-artifacts/TestAssetProxyDispatcher.json", "./generated-artifacts/TestAssetProxyDispatcher.json",
"./generated-artifacts/TestAssetProxyOwner.json", "./generated-artifacts/TestAssetProxyOwner.json",
"./generated-artifacts/TestExchangeInternals.json", "./generated-artifacts/TestExchangeInternals.json",
"./generated-artifacts/TestLibs.json",
"./generated-artifacts/TestSignatureValidator.json", "./generated-artifacts/TestSignatureValidator.json",
"./generated-artifacts/TestStaticCallReceiver.json", "./generated-artifacts/TestStaticCallReceiver.json",
"./generated-artifacts/Validator.json", "./generated-artifacts/Validator.json",

View File

@ -0,0 +1,20 @@
{
"extends": "default",
"rules": {
"avoid-low-level-calls": false,
"avoid-tx-origin": "warn",
"bracket-align": false,
"code-complexity": false,
"const-name-snakecase": "error",
"expression-indent": "error",
"function-max-lines": false,
"func-order": "error",
"indent": ["error", 4],
"max-line-length": ["warn", 160],
"no-inline-assembly": false,
"quotes": ["error", "double"],
"separate-by-one-line-in-contract": "error",
"space-after-comma": "error",
"statement-indent": "error"
}
}

70
contracts/libs/README.md Normal file
View File

@ -0,0 +1,70 @@
## Contracts libs
Smart contracts libs used in the 0x protocol.
## Usage
Contracts can be found in the [contracts](./contracts) directory. The contents of this directory are broken down into the following subdirectories:
* [protocol](./contracts/protocol)
* This directory contains the libs used by protocol contracts.
* [test](./contracts/test)
* This directory contains mocks and other contracts that are used solely for testing contracts within the other directories.
## Contributing
We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.
For proposals regarding the 0x protocol's smart contract architecture, message format, or additional functionality, go to the [0x Improvement Proposals (ZEIPs)](https://github.com/0xProject/ZEIPs) repository and follow the contribution guidelines provided therein.
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
### Install Dependencies
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
```bash
yarn config set workspaces-experimental true
```
Then install dependencies
```bash
yarn install
```
### Build
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
```bash
PKG=@0x/contracts-libs yarn build
```
Or continuously rebuild on change:
```bash
PKG=@0x/contracts-libs yarn watch
```
### Clean
```bash
yarn clean
```
### Lint
```bash
yarn lint
```
### Run Tests
```bash
yarn test
```
#### Testing options
Contracts testing options like coverage, profiling, revert traces or backing node choosing - are described [here](../TESTING.md).

View File

@ -0,0 +1,22 @@
{
"artifactsDir": "./generated-artifacts",
"contractsDir": "./contracts",
"compilerSettings": {
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
},
"contracts": ["TestLibs", "LibOrder", "LibMath", "LibFillResults", "LibAbiEncoder", "LibEIP712"]
}

View File

@ -0,0 +1,92 @@
{
"private": true,
"name": "@0x/contracts-libs",
"version": "1.0.0",
"engines": {
"node": ">=6.12"
},
"description": "Smart contract libs of 0x protocol",
"main": "lib/src/index.js",
"directories": {
"test": "test"
},
"scripts": {
"build": "yarn pre_build && tsc -b",
"build:ci": "yarn build",
"pre_build": "run-s compile generate_contract_wrappers",
"test": "yarn run_mocha",
"rebuild_and_test": "run-s build test",
"test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov",
"test:profiler": "SOLIDITY_PROFILER=true run-s build run_mocha profiler:report:html",
"test:trace": "SOLIDITY_REVERT_TRACE=true run-s build run_mocha",
"run_mocha":
"mocha --require source-map-support/register --require make-promises-safe 'lib/test/**/*.js' --timeout 100000 --bail --exit",
"compile": "sol-compiler --contracts-dir contracts",
"clean": "shx rm -rf lib generated-artifacts generated-wrappers",
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers",
"lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts",
"coverage:report:text": "istanbul report text",
"coverage:report:html": "istanbul report html && open coverage/index.html",
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
"lint-contracts": "solhint contracts/**/**/**/**/*.sol"
},
"config": {
"abis": "generated-artifacts/@(LibMath|LibOrder|LibFillResults|LibAbiEncoder|TestLibs|LibEIP712).json"
},
"repository": {
"type": "git",
"url": "https://github.com/0xProject/0x-monorepo.git"
},
"license": "Apache-2.0",
"bugs": {
"url": "https://github.com/0xProject/0x-monorepo/issues"
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/libs/README.md",
"devDependencies": {
"@0x/contracts-test-utils": "^1.0.0",
"@0x/abi-gen": "^1.0.17",
"@0x/dev-utils": "^1.0.19",
"@0x/sol-compiler": "^1.1.14",
"@0x/sol-cov": "^2.1.14",
"@0x/subproviders": "^2.1.6",
"@0x/tslint-config": "^1.0.10",
"@types/bn.js": "^4.11.0",
"@types/lodash": "4.14.104",
"@types/node": "*",
"@types/yargs": "^10.0.0",
"chai": "^4.0.1",
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^2.0.1",
"dirty-chai": "^2.0.1",
"make-promises-safe": "^1.1.0",
"ethereumjs-abi": "0.6.5",
"mocha": "^4.1.0",
"npm-run-all": "^4.1.2",
"shx": "^0.2.2",
"solc": "^0.4.24",
"solhint": "^1.2.1",
"tslint": "5.11.0",
"typescript": "3.0.1",
"yargs": "^10.0.3"
},
"dependencies": {
"@0x/base-contract": "^3.0.8",
"@0x/order-utils": "^3.0.4",
"@0x/contracts-multisig": "^1.0.0",
"@0x/contracts-utils": "^1.0.0",
"@0x/types": "^1.3.0",
"@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.6",
"@0x/web3-wrapper": "^3.1.6",
"@types/js-combinatorics": "^0.5.29",
"bn.js": "^4.11.8",
"ethereum-types": "^1.1.2",
"ethereumjs-util": "^5.1.1",
"lodash": "^4.17.5"
},
"publishConfig": {
"access": "public"
}
}

View File

@ -0,0 +1,17 @@
import { ContractArtifact } from 'ethereum-types';
import * as LibAbiEncoder from '../../generated-artifacts/LibAbiEncoder.json';
import * as LibEIP721 from '../../generated-artifacts/LibEIP712.json';
import * as LibFillResults from '../../generated-artifacts/LibFillResults.json';
import * as LibMath from '../../generated-artifacts/LibMath.json';
import * as LibOrder from '../../generated-artifacts/LibOrder.json';
import * as TestLibs from '../../generated-artifacts/TestLibs.json';
export const artifacts = {
TestLibs: TestLibs as ContractArtifact,
LibAbiEncoder: LibAbiEncoder as ContractArtifact,
LibFillResults: LibFillResults as ContractArtifact,
LibMath: LibMath as ContractArtifact,
LibOrder: LibOrder as ContractArtifact,
LibEIP721: LibEIP721 as ContractArtifact,
};

View File

@ -0,0 +1,2 @@
export * from './artifacts';
export * from './wrappers';

View File

@ -0,0 +1,6 @@
export * from '../../generated-wrappers/test_libs';
export * from '../../generated-wrappers/lib_abi_encoder';
export * from '../../generated-wrappers/lib_fill_results';
export * from '../../generated-wrappers/lib_math';
export * from '../../generated-wrappers/lib_order';
export * from '../../generated-wrappers/lib_e_i_p712';

View File

@ -0,0 +1,17 @@
import { env, EnvVars } from '@0x/dev-utils';
import { coverage, profiler, provider } from '@0x/contracts-test-utils';
before('start web3 provider', () => {
provider.start();
});
after('generate coverage report', async () => {
if (env.parseBoolean(EnvVars.SolidityCoverage)) {
const coverageSubprovider = coverage.getCoverageSubproviderSingleton();
await coverageSubprovider.writeCoverageAsync();
}
if (env.parseBoolean(EnvVars.SolidityProfiler)) {
const profilerSubprovider = profiler.getProfilerSubproviderSingleton();
await profilerSubprovider.writeProfilerOutputAsync();
}
provider.stop();
});

View File

@ -0,0 +1,18 @@
{
"extends": "../../tsconfig",
"compilerOptions": {
"outDir": "lib",
"rootDir": ".",
"resolveJsonModule": true
},
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
"./generated-artifacts/TestLibs.json",
"./generated-artifacts/LibOrder.json",
"./generated-artifacts/LibFillResults.json",
"./generated-artifacts/LibAbiEncoder.json",
"./generated-artifacts/LibEIP712.json",
"./generated-artifacts/LibMath.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}

View File

@ -0,0 +1,6 @@
{
"extends": ["@0x/tslint-config"],
"rules": {
"custom-no-magic-numbers": false
}
}