Compare commits
	
		
			17 Commits
		
	
	
		
			@0x/contra
			...
			protocol@d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | dbcb221a59 | ||
|  | 6bbc179f52 | ||
|  | 48e7a391c8 | ||
|  | 2334e64d0c | ||
|  | 14f920ee84 | ||
|  | e10a81023a | ||
|  | f4709ed1cb | ||
|  | e2e14a977a | ||
|  | 866f958a10 | ||
|  | 717db99b38 | ||
|  | 02006118c7 | ||
|  | 9816019bc5 | ||
|  | 9c821dbfc3 | ||
|  | af1b890423 | ||
|  | 673835d2de | ||
|  | 500b57e935 | ||
|  | 3f7d0580c1 | 
| @@ -82,4 +82,5 @@ lib | ||||
| /packages/asset-swapper/test/generated-wrappers | ||||
| package.json | ||||
| packages/*/docs | ||||
| docs/ | ||||
| *.sol | ||||
|   | ||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @@ -8,7 +8,7 @@ This repository is a monorepo including the 0x protocol smart contracts and nume | ||||
|  | ||||
| [website-url]: https://0x.org | ||||
|  | ||||
| [](https://circleci.com/gh/0xProject/0x-monorepo) | ||||
| [](https://circleci.com/gh/0xProject/protocool) | ||||
| [](https://coveralls.io/github/0xProject/0x-monorepo?branch=development) | ||||
| [](https://discordapp.com/invite/d3FTX3M) | ||||
| [](https://opensource.org/licenses/Apache-2.0) | ||||
| @@ -92,7 +92,7 @@ yarn build | ||||
| To build a specific package: | ||||
|  | ||||
| ```bash | ||||
| PKG=@0x/web3-wrapper yarn build | ||||
| PKG=@0x/contract-wrappers yarn build | ||||
| ``` | ||||
|  | ||||
| To build all contracts packages: | ||||
| @@ -115,7 +115,7 @@ To watch a specific package and all it's dependent packages: | ||||
| PKG=[NPM_PACKAGE_NAME] yarn watch | ||||
|  | ||||
| e.g | ||||
| PKG=@0x/web3-wrapper yarn watch | ||||
| PKG=@0x/contract-wrappers yarn watch | ||||
| ``` | ||||
|  | ||||
| ### Clean | ||||
| @@ -143,7 +143,7 @@ yarn rebuild | ||||
| To re-build (clean & build) a specific package & it's deps: | ||||
|  | ||||
| ```bash | ||||
| PKG=0x.js yarn rebuild | ||||
| PKG=@0x/contract-wrappers yarn rebuild | ||||
| ``` | ||||
|  | ||||
| ### Lint | ||||
| @@ -157,7 +157,7 @@ yarn lint | ||||
| Lint a specific package: | ||||
|  | ||||
| ```bash | ||||
| PKG=0x.js yarn lint | ||||
| PKG=@0x/contract-wrappers yarn lint | ||||
| ``` | ||||
|  | ||||
| ### Run Tests | ||||
| @@ -171,7 +171,7 @@ yarn test | ||||
| Run a specific package's test: | ||||
|  | ||||
| ```bash | ||||
| PKG=@0x/web3-wrapper yarn test | ||||
| PKG=@0x/contract-wrappers yarn test | ||||
| ``` | ||||
|  | ||||
| Run all contracts packages tests: | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "3.6.3", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "3.6.2", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "3.6.1", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "version": "3.6.0", | ||||
|         "changes": [ | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v3.6.3 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.6.2 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.6.1 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.6.0 - _October 27, 2020_ | ||||
|  | ||||
|     * Add `SwerveBridge` and `SnowSwapBridge` (duplicate of `CurveBridge`) (#2707) | ||||
|   | ||||
| @@ -51,16 +51,15 @@ contract ShellBridge is | ||||
|         external | ||||
|         returns (bytes4 success) | ||||
|     { | ||||
|         // Decode the bridge data to get the `fromTokenAddress`. | ||||
|         (address fromTokenAddress) = abi.decode(bridgeData, (address)); | ||||
|         // Decode the bridge data to get the `fromTokenAddress` and `pool`. | ||||
|         (address fromTokenAddress, address pool) = abi.decode(bridgeData, (address, address)); | ||||
|  | ||||
|         uint256 fromTokenBalance = IERC20Token(fromTokenAddress).balanceOf(address(this)); | ||||
|         IShell exchange = IShell(_getShellAddress()); | ||||
|         // Grant an allowance to the exchange to spend `fromTokenAddress` token. | ||||
|         LibERC20Token.approveIfBelow(fromTokenAddress, address(exchange), fromTokenBalance); | ||||
|         LibERC20Token.approveIfBelow(fromTokenAddress, pool, fromTokenBalance); | ||||
|  | ||||
|         // Try to sell all of this contract's `fromTokenAddress` token balance. | ||||
|         uint256 boughtAmount = exchange.originSwap( | ||||
|         uint256 boughtAmount = IShell(pool).originSwap( | ||||
|             fromTokenAddress, | ||||
|             toTokenAddress, | ||||
|             fromTokenBalance, | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-asset-proxy", | ||||
|     "version": "3.6.0", | ||||
|     "version": "3.6.3", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -51,13 +51,13 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contract-wrappers": "^13.9.1", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contract-wrappers": "^13.9.4", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@types/lodash": "4.14.104", | ||||
| @@ -79,16 +79,16 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-erc1155": "^2.1.9", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-erc721": "^3.1.9", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-erc1155": "^2.1.12", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-erc721": "^3.1.12", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "ethereum-types": "^3.3.3", | ||||
|         "lodash": "^4.17.11" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "1.1.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "1.1.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "1.1.9", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "1.1.8", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v1.1.11 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v1.1.10 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v1.1.9 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v1.1.8 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-broker", | ||||
|     "version": "1.1.8", | ||||
|     "version": "1.1.11", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -51,20 +51,20 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-erc721": "^3.1.9", | ||||
|         "@0x/contracts-exchange": "^3.2.9", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-erc721": "^3.1.12", | ||||
|         "@0x/contracts-exchange": "^3.2.12", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -84,10 +84,10 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "ethereum-types": "^3.3.3" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "3.1.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "3.1.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "3.1.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "3.1.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v3.1.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.1.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.1.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.1.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-coordinator", | ||||
|     "version": "3.1.9", | ||||
|     "version": "3.1.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,17 +52,17 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-dev-utils": "^1.3.7", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-dev-utils": "^1.3.10", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -82,16 +82,16 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/assert": "^3.0.13", | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contract-addresses": "^5.0.0", | ||||
|         "@0x/contracts-exchange": "^3.2.9", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/json-schemas": "^5.2.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/assert": "^3.0.17", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contract-addresses": "^5.1.0", | ||||
|         "@0x/contracts-exchange": "^3.2.12", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/json-schemas": "^5.3.3", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "ethereum-types": "^3.3.3", | ||||
|         "http-status-codes": "^1.3.2" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "1.3.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "1.3.9", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "1.3.8", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "1.3.7", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v1.3.10 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v1.3.9 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v1.3.8 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v1.3.7 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-dev-utils", | ||||
|     "version": "1.3.7", | ||||
|     "version": "1.3.10", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -41,17 +41,17 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/dev-utils", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/assert": "^3.0.13", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/assert": "^3.0.17", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "ethereum-types": "^3.3.3", | ||||
|         "ethers": "~4.0.4", | ||||
|         "npm-run-all": "^4.1.2", | ||||
| @@ -63,7 +63,7 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@types/node": "12.12.54" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "2.1.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "2.1.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "2.1.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "2.1.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v2.1.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.1.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.1.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.1.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-erc1155", | ||||
|     "version": "2.1.9", | ||||
|     "version": "2.1.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,14 +52,14 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
| @@ -80,10 +80,10 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "lodash": "^4.17.11" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "3.2.6", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "3.2.5", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "3.2.4", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "3.2.3", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v3.2.6 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.2.5 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.2.4 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.2.3 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-erc20", | ||||
|     "version": "3.2.3", | ||||
|     "version": "3.2.6", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -51,18 +51,18 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -82,7 +82,7 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7" | ||||
|         "@0x/base-contract": "^6.2.11" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|         "access": "public" | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "3.1.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "3.1.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "3.1.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "3.1.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v3.1.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.1.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.1.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.1.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-erc721", | ||||
|     "version": "3.1.9", | ||||
|     "version": "3.1.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,18 +52,18 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -84,7 +84,7 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7" | ||||
|         "@0x/base-contract": "^6.2.11" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|         "access": "public" | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "4.2.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "4.2.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "4.2.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "4.2.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v4.2.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.2.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.2.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.2.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-exchange-forwarder", | ||||
|     "version": "4.2.9", | ||||
|     "version": "4.2.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,25 +52,25 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-dev-utils": "^1.3.7", | ||||
|         "@0x/contracts-erc1155": "^2.1.9", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-erc721": "^3.1.9", | ||||
|         "@0x/contracts-exchange": "^3.2.9", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-dev-utils": "^1.3.10", | ||||
|         "@0x/contracts-erc1155": "^2.1.12", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-erc721": "^3.1.12", | ||||
|         "@0x/contracts-exchange": "^3.2.12", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -90,7 +90,7 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "ethereum-types": "^3.3.3" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "4.3.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "4.3.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "4.3.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "4.3.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v4.3.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.3.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.3.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.3.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-exchange-libs", | ||||
|     "version": "4.3.9", | ||||
|     "version": "4.3.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,14 +52,14 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/libs", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/subproviders": "^6.1.5", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/subproviders": "^6.1.9", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -80,13 +80,13 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "ethereum-types": "^3.3.3" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "3.2.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "3.2.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "3.2.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "3.2.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v3.2.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.2.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.2.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v3.2.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-exchange", | ||||
|     "version": "3.2.9", | ||||
|     "version": "3.2.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,21 +52,21 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-multisig": "^4.1.9", | ||||
|         "@0x/contracts-staking": "^2.0.16", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-multisig": "^4.1.12", | ||||
|         "@0x/contracts-staking": "^2.0.19", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -88,13 +88,13 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-dev-utils": "^1.3.7", | ||||
|         "@0x/contracts-erc1155": "^2.1.9", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-erc721": "^3.1.9", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-dev-utils": "^1.3.10", | ||||
|         "@0x/contracts-erc1155": "^2.1.12", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-erc721": "^3.1.12", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "lodash": "^4.17.11" | ||||
|     }, | ||||
|     "publishConfig": { | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "6.2.6", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "6.2.5", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "6.2.4", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "6.2.3", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v6.2.6 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v6.2.5 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v6.2.4 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v6.2.3 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-extensions", | ||||
|     "version": "6.2.3", | ||||
|     "version": "6.2.6", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -52,23 +52,23 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-dev-utils": "^1.3.7", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-erc721": "^3.1.9", | ||||
|         "@0x/contracts-exchange": "^3.2.9", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-dev-utils": "^1.3.10", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-erc721": "^3.1.12", | ||||
|         "@0x/contracts-exchange": "^3.2.12", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -90,8 +90,8 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "ethereum-types": "^3.3.3" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "2.7.5", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "2.7.4", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "2.7.3", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "2.7.2", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v2.7.5 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.7.4 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.7.3 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.7.2 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-integrations", | ||||
|     "version": "2.7.2", | ||||
|     "version": "2.7.5", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -51,24 +51,24 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contract-addresses": "^5.0.0", | ||||
|         "@0x/contract-wrappers": "^13.9.1", | ||||
|         "@0x/contracts-broker": "^1.1.8", | ||||
|         "@0x/contracts-coordinator": "^3.1.9", | ||||
|         "@0x/contracts-dev-utils": "^1.3.7", | ||||
|         "@0x/contracts-exchange-forwarder": "^4.2.9", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/contracts-extensions": "^6.2.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contract-addresses": "^5.1.0", | ||||
|         "@0x/contract-wrappers": "^13.9.4", | ||||
|         "@0x/contracts-broker": "^1.1.11", | ||||
|         "@0x/contracts-coordinator": "^3.1.12", | ||||
|         "@0x/contracts-dev-utils": "^1.3.10", | ||||
|         "@0x/contracts-exchange-forwarder": "^4.2.12", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/contracts-extensions": "^6.2.6", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/coordinator-server": "^1.0.5", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/migrations": "^6.4.3", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/migrations": "^6.4.6", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@azure/core-asynciterator-polyfill": "^1.0.0", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
| @@ -91,21 +91,21 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/asset-swapper": "^4.8.0", | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-erc1155": "^2.1.9", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-erc721": "^3.1.9", | ||||
|         "@0x/contracts-exchange": "^3.2.9", | ||||
|         "@0x/contracts-multisig": "^4.1.9", | ||||
|         "@0x/contracts-staking": "^2.0.16", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-zero-ex": "^0.5.0", | ||||
|         "@0x/subproviders": "^6.1.5", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/asset-swapper": "^5.0.1", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-erc1155": "^2.1.12", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-erc721": "^3.1.12", | ||||
|         "@0x/contracts-exchange": "^3.2.12", | ||||
|         "@0x/contracts-multisig": "^4.1.12", | ||||
|         "@0x/contracts-staking": "^2.0.19", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-zero-ex": "^0.7.0", | ||||
|         "@0x/subproviders": "^6.1.9", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "ethereum-types": "^3.3.3", | ||||
|         "ethereumjs-util": "^6.2.0", | ||||
|         "lodash": "^4.17.11" | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "4.1.12", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "4.1.11", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "4.1.10", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "4.1.9", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v4.1.12 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.1.11 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.1.10 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.1.9 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-multisig", | ||||
|     "version": "4.1.9", | ||||
|     "version": "4.1.12", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -49,18 +49,18 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/multisig", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
|         "@types/node": "12.12.54", | ||||
| @@ -78,7 +78,7 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "ethereum-types": "^3.3.3" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "2.0.19", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "2.0.18", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "2.0.17", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "2.0.16", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v2.0.19 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.0.18 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.0.17 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v2.0.16 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-staking", | ||||
|     "version": "2.0.16", | ||||
|     "version": "2.0.19", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -53,20 +53,20 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.0", | ||||
|         "@0x/contracts-dev-utils": "^1.3.7", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.9", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-utils": "^4.5.3", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-asset-proxy": "^3.6.3", | ||||
|         "@0x/contracts-dev-utils": "^1.3.10", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-exchange-libs": "^4.3.12", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-utils": "^4.5.6", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/node": "12.12.54", | ||||
|         "chai": "^4.0.1", | ||||
| @@ -87,10 +87,10 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "ethereum-types": "^3.3.3", | ||||
|         "ethereumjs-util": "^5.1.1" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "5.3.9", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "5.3.8", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "5.3.7", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "5.3.6", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v5.3.9 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v5.3.8 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v5.3.7 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v5.3.6 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-test-utils", | ||||
|     "version": "5.3.6", | ||||
|     "version": "5.3.9", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -34,7 +34,7 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/test-utils", | ||||
|     "devDependencies": { | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "npm-run-all": "^4.1.2", | ||||
|         "shx": "^0.2.2", | ||||
| @@ -42,20 +42,20 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/assert": "^3.0.13", | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/contract-addresses": "^5.0.0", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/json-schemas": "^5.2.3", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-coverage": "^4.0.14", | ||||
|         "@0x/sol-profiler": "^4.1.4", | ||||
|         "@0x/sol-trace": "^3.0.14", | ||||
|         "@0x/subproviders": "^6.1.5", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/assert": "^3.0.17", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/contract-addresses": "^5.1.0", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/json-schemas": "^5.3.3", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-coverage": "^4.0.18", | ||||
|         "@0x/sol-profiler": "^4.1.8", | ||||
|         "@0x/sol-trace": "^3.0.18", | ||||
|         "@0x/subproviders": "^6.1.9", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/bn.js": "^4.11.0", | ||||
|         "@types/js-combinatorics": "^0.5.29", | ||||
|         "@types/lodash": "4.14.104", | ||||
|   | ||||
| @@ -1,4 +1,31 @@ | ||||
| [ | ||||
|     { | ||||
|         "timestamp": 1604376968, | ||||
|         "version": "4.5.6", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1604355662, | ||||
|         "version": "4.5.5", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "4.5.4", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603833198, | ||||
|         "version": "4.5.3", | ||||
|   | ||||
| @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v4.5.6 - _November 3, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.5.5 - _November 2, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.5.4 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v4.5.3 - _October 27, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|   | ||||
| @@ -56,8 +56,6 @@ contract DeploymentConstants { | ||||
|     address constant private MUSD_ADDRESS = 0xe2f2a5C287993345a840Db3B0845fbC70f5935a5; | ||||
|     /// @dev Mainnet address of the Mooniswap Registry contract | ||||
|     address constant private MOONISWAP_REGISTRY = 0x71CD6666064C3A1354a3B4dca5fA1E2D3ee7D303; | ||||
|     /// @dev Mainnet address of the Shell contract | ||||
|     address constant private SHELL_CONTRACT = 0x2E703D658f8dd21709a7B458967aB4081F8D3d05; | ||||
|     /// @dev Mainnet address of the DODO Registry (ZOO) contract | ||||
|     address constant private DODO_REGISTRY = 0x3A97247DF274a17C59A3bd12735ea3FcDFb49950; | ||||
|     /// @dev Mainnet address of the DODO Helper contract | ||||
| @@ -303,16 +301,6 @@ contract DeploymentConstants { | ||||
|         return MOONISWAP_REGISTRY; | ||||
|     } | ||||
|  | ||||
|     /// @dev An overridable way to retrieve the Shell contract address. | ||||
|     /// @return registry The Shell contract address. | ||||
|     function _getShellAddress() | ||||
|         internal | ||||
|         view | ||||
|         returns (address) | ||||
|     { | ||||
|         return SHELL_CONTRACT; | ||||
|     } | ||||
|  | ||||
|     /// @dev An overridable way to retrieve the DODO Registry contract address. | ||||
|     /// @return registry The DODO Registry contract address. | ||||
|     function _getDODORegistryAddress() | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-utils", | ||||
|     "version": "4.5.3", | ||||
|     "version": "4.5.6", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -50,15 +50,15 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/utils", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "@types/bn.js": "^4.11.0", | ||||
|         "@types/lodash": "4.14.104", | ||||
|         "@types/mocha": "^5.2.7", | ||||
| @@ -79,9 +79,9 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "bn.js": "^4.11.8", | ||||
|         "ethereum-types": "^3.3.3" | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,41 @@ | ||||
| [ | ||||
|     { | ||||
|         "version": "0.7.0", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Change `ProtocolFeeUnfunded` event in FQT", | ||||
|                 "pr": 28 | ||||
|             }, | ||||
|             { | ||||
|                 "note": "Use new PLP interface in FQT.", | ||||
|                 "pr": 28 | ||||
|             } | ||||
|         ], | ||||
|         "timestamp": 1604376968 | ||||
|     }, | ||||
|     { | ||||
|         "version": "0.6.0", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Add support for collecting protocol fees in ETH or WETH", | ||||
|                 "pr": 2 | ||||
|             }, | ||||
|             { | ||||
|                 "note": "Add `LibSignature` library", | ||||
|                 "pr": 21 | ||||
|             } | ||||
|         ], | ||||
|         "timestamp": 1604355662 | ||||
|     }, | ||||
|     { | ||||
|         "timestamp": 1603851023, | ||||
|         "version": "0.5.1", | ||||
|         "changes": [ | ||||
|             { | ||||
|                 "note": "Dependencies updated" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "version": "0.5.0", | ||||
|         "changes": [ | ||||
|   | ||||
| @@ -5,6 +5,20 @@ Edit the package's CHANGELOG.json file only. | ||||
|  | ||||
| CHANGELOG | ||||
|  | ||||
| ## v0.7.0 - _November 3, 2020_ | ||||
|  | ||||
|     * Change `ProtocolFeeUnfunded` event in FQT (#28) | ||||
|     * Use new PLP interface in FQT. (#28) | ||||
|  | ||||
| ## v0.6.0 - _November 2, 2020_ | ||||
|  | ||||
|     * Add support for collecting protocol fees in ETH or WETH (#2) | ||||
|     * Add `LibSignature` library (#21) | ||||
|  | ||||
| ## v0.5.1 - _October 28, 2020_ | ||||
|  | ||||
|     * Dependencies updated | ||||
|  | ||||
| ## v0.5.0 - _October 27, 2020_ | ||||
|  | ||||
|     * Add `Swerve`, `SnowSwap`, `DODO` and `SushiSwap` into FQT (#7) | ||||
|   | ||||
| @@ -26,7 +26,8 @@ library LibSignatureRichErrors { | ||||
|         INVALID_LENGTH, | ||||
|         UNSUPPORTED, | ||||
|         ILLEGAL, | ||||
|         WRONG_SIGNER | ||||
|         WRONG_SIGNER, | ||||
|         BAD_SIGNATURE_DATA | ||||
|     } | ||||
|  | ||||
|     // solhint-disable func-name-mixedcase | ||||
| @@ -49,4 +50,19 @@ library LibSignatureRichErrors { | ||||
|             signature | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     function SignatureValidationError( | ||||
|         SignatureValidationErrorCodes code, | ||||
|         bytes32 hash | ||||
|     ) | ||||
|         internal | ||||
|         pure | ||||
|         returns (bytes memory) | ||||
|     { | ||||
|         return abi.encodeWithSelector( | ||||
|             bytes4(keccak256("SignatureValidationError(uint8,bytes32)")), | ||||
|             code, | ||||
|             hash | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										65
									
								
								contracts/zero-ex/contracts/src/external/FeeCollector.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								contracts/zero-ex/contracts/src/external/FeeCollector.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* | ||||
|  | ||||
|   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/IEtherTokenV06.sol"; | ||||
| import "@0x/contracts-utils/contracts/src/v06/AuthorizableV06.sol"; | ||||
| import "../vendor/v3/IStaking.sol"; | ||||
|  | ||||
| /// @dev The collector contract for protocol fees | ||||
| contract FeeCollector is AuthorizableV06 { | ||||
|     /// @dev Allow ether transfers to the collector. | ||||
|     receive() external payable { } | ||||
|  | ||||
|     constructor() public { | ||||
|         _addAuthorizedAddress(msg.sender); | ||||
|     } | ||||
|  | ||||
|     /// @dev   Approve the staking contract and join a pool. Only an authority | ||||
|     ///        can call this. | ||||
|     /// @param weth The WETH contract. | ||||
|     /// @param staking The staking contract. | ||||
|     /// @param poolId The pool ID this contract is collecting fees for. | ||||
|     function initialize( | ||||
|         IEtherTokenV06 weth, | ||||
|         IStaking staking, | ||||
|         bytes32 poolId | ||||
|     ) | ||||
|         external | ||||
|         onlyAuthorized | ||||
|     { | ||||
|         weth.approve(address(staking), type(uint256).max); | ||||
|         staking.joinStakingPoolAsMaker(poolId); | ||||
|     } | ||||
|  | ||||
|     /// @dev Convert all held ether to WETH. Only an authority can call this. | ||||
|     /// @param weth The WETH contract. | ||||
|     function convertToWeth( | ||||
|         IEtherTokenV06 weth | ||||
|     ) | ||||
|         external | ||||
|         onlyAuthorized | ||||
|     { | ||||
|         // Leave 1 wei behind to avoid expensive zero-->non-zero state change. | ||||
|         if (address(this).balance > 1) { | ||||
|             weth.deposit{value: address(this).balance - 1}(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										151
									
								
								contracts/zero-ex/contracts/src/features/libs/LibSignature.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								contracts/zero-ex/contracts/src/features/libs/LibSignature.sol
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,151 @@ | ||||
| /* | ||||
|  | ||||
|   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-utils/contracts/src/v06/errors/LibRichErrorsV06.sol"; | ||||
| import "../../errors/LibSignatureRichErrors.sol"; | ||||
|  | ||||
|  | ||||
| /// @dev A library for validating signatures. | ||||
| library LibSignature { | ||||
|     using LibRichErrorsV06 for bytes; | ||||
|  | ||||
|     // '\x19Ethereum Signed Message:\n32\x00\x00\x00\x00' in a word. | ||||
|     uint256 private constant ETH_SIGN_HASH_PREFIX = | ||||
|         0x19457468657265756d205369676e6564204d6573736167653a0a333200000000; | ||||
|     /// @dev Exclusive upper limit on ECDSA signatures 'R' values. | ||||
|     ///      The valid range is given by fig (282) of the yellow paper. | ||||
|     uint256 private constant ECDSA_SIGNATURE_R_LIMIT = | ||||
|         uint256(0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141); | ||||
|     /// @dev Exclusive upper limit on ECDSA signatures 'S' values. | ||||
|     ///      The valid range is given by fig (283) of the yellow paper. | ||||
|     uint256 private constant ECDSA_SIGNATURE_S_LIMIT = ECDSA_SIGNATURE_R_LIMIT / 2 + 1; | ||||
|  | ||||
|    /// @dev Allowed signature types. | ||||
|     enum SignatureType { | ||||
|         ILLEGAL, | ||||
|         INVALID, | ||||
|         EIP712, | ||||
|         ETHSIGN | ||||
|     } | ||||
|  | ||||
|     /// @dev Encoded EC signature. | ||||
|     struct Signature { | ||||
|         // How to validate the signature. | ||||
|         SignatureType signatureType; | ||||
|         // EC Signature data. | ||||
|         uint8 v; | ||||
|         // EC Signature data. | ||||
|         bytes32 r; | ||||
|         // EC Signature data. | ||||
|         bytes32 s; | ||||
|     } | ||||
|  | ||||
|     /// @dev Retrieve the signer of a signature. | ||||
|     ///      Throws if the signature can't be validated. | ||||
|     /// @param hash The hash that was signed. | ||||
|     /// @param signature The signature. | ||||
|     /// @return recovered The recovered signer address. | ||||
|     function getSignerOfHash( | ||||
|         bytes32 hash, | ||||
|         Signature memory signature | ||||
|     ) | ||||
|         internal | ||||
|         pure | ||||
|         returns (address recovered) | ||||
|     { | ||||
|         // Ensure this is a signature type that can be validated against a hash. | ||||
|         _validateHashCompatibleSignature(hash, signature); | ||||
|  | ||||
|         if (signature.signatureType == SignatureType.EIP712) { | ||||
|             // Signed using EIP712 | ||||
|             recovered = ecrecover( | ||||
|                 hash, | ||||
|                 signature.v, | ||||
|                 signature.r, | ||||
|                 signature.s | ||||
|             ); | ||||
|         } else if (signature.signatureType == SignatureType.ETHSIGN) { | ||||
|             // Signed using `eth_sign` | ||||
|             // Need to hash `hash` with "\x19Ethereum Signed Message:\n32" prefix | ||||
|             // in packed encoding. | ||||
|             bytes32 ethSignHash; | ||||
|             assembly { | ||||
|                 // Use scratch space | ||||
|                 mstore(0, ETH_SIGN_HASH_PREFIX) // length of 28 bytes | ||||
|                 mstore(28, hash) // length of 32 bytes | ||||
|                 ethSignHash := keccak256(0, 60) | ||||
|             } | ||||
|             recovered = ecrecover( | ||||
|                 ethSignHash, | ||||
|                 signature.v, | ||||
|                 signature.r, | ||||
|                 signature.s | ||||
|             ); | ||||
|         } | ||||
|         // `recovered` can be null if the signature values are out of range. | ||||
|         if (recovered == address(0)) { | ||||
|             LibSignatureRichErrors.SignatureValidationError( | ||||
|                 LibSignatureRichErrors.SignatureValidationErrorCodes.BAD_SIGNATURE_DATA, | ||||
|                 hash | ||||
|             ).rrevert(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /// @dev Validates that a signature is compatible with a hash signee. | ||||
|     /// @param hash The hash that was signed. | ||||
|     /// @param signature The signature. | ||||
|     function _validateHashCompatibleSignature( | ||||
|         bytes32 hash, | ||||
|         Signature memory signature | ||||
|     ) | ||||
|         private | ||||
|         pure | ||||
|     { | ||||
|         // Ensure the r and s are within malleability limits. | ||||
|         if (uint256(signature.r) >= ECDSA_SIGNATURE_R_LIMIT || | ||||
|             uint256(signature.s) >= ECDSA_SIGNATURE_S_LIMIT) | ||||
|         { | ||||
|             LibSignatureRichErrors.SignatureValidationError( | ||||
|                 LibSignatureRichErrors.SignatureValidationErrorCodes.BAD_SIGNATURE_DATA, | ||||
|                 hash | ||||
|             ).rrevert(); | ||||
|         } | ||||
|  | ||||
|         // Always illegal signature. | ||||
|         if (signature.signatureType == SignatureType.ILLEGAL) { | ||||
|             LibSignatureRichErrors.SignatureValidationError( | ||||
|                 LibSignatureRichErrors.SignatureValidationErrorCodes.ILLEGAL, | ||||
|                 hash | ||||
|             ).rrevert(); | ||||
|         } | ||||
|  | ||||
|         // Always invalid. | ||||
|         if (signature.signatureType == SignatureType.INVALID) { | ||||
|             LibSignatureRichErrors.SignatureValidationError( | ||||
|                 LibSignatureRichErrors.SignatureValidationErrorCodes.ALWAYS_INVALID, | ||||
|                 hash | ||||
|             ).rrevert(); | ||||
|         } | ||||
|  | ||||
|         // Solidity should check that the signature type is within enum range for us | ||||
|         // when abi-decoding. | ||||
|     } | ||||
| } | ||||
| @@ -27,6 +27,9 @@ import "../ITokenSpenderFeature.sol"; | ||||
| library LibTokenSpender { | ||||
|     using LibRichErrorsV06 for bytes; | ||||
|  | ||||
|     // Mask of the lower 20 bytes of a bytes32. | ||||
|     uint256 constant private ADDRESS_MASK = 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff; | ||||
|  | ||||
|     /// @dev Transfers ERC20 tokens from `owner` to `to`. | ||||
|     /// @param token The token to spend. | ||||
|     /// @param owner The owner of the tokens. | ||||
| @@ -50,11 +53,11 @@ library LibTokenSpender { | ||||
|  | ||||
|             // selector for transferFrom(address,address,uint256) | ||||
|             mstore(ptr, 0x23b872dd00000000000000000000000000000000000000000000000000000000) | ||||
|             mstore(add(ptr, 0x04), owner) | ||||
|             mstore(add(ptr, 0x24), to) | ||||
|             mstore(add(ptr, 0x04), and(owner, ADDRESS_MASK)) | ||||
|             mstore(add(ptr, 0x24), and(to, ADDRESS_MASK)) | ||||
|             mstore(add(ptr, 0x44), amount) | ||||
|  | ||||
|             success := call(gas(), token, 0, ptr, 0x64, 0, 0) | ||||
|             success := call(gas(), and(token, ADDRESS_MASK), 0, ptr, 0x64, 0, 0) | ||||
|  | ||||
|             let rdsize := returndatasize() | ||||
|  | ||||
|   | ||||
							
								
								
									
										114
									
								
								contracts/zero-ex/contracts/src/fixins/FixinProtocolFees.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								contracts/zero-ex/contracts/src/fixins/FixinProtocolFees.sol
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| /* | ||||
|  | ||||
|   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/IEtherTokenV06.sol"; | ||||
| import "../external/FeeCollector.sol"; | ||||
| import "../features/libs/LibTokenSpender.sol"; | ||||
|  | ||||
| /// @dev Helpers for collecting protocol fees. | ||||
| abstract contract FixinProtocolFees { | ||||
|     bytes32 immutable feeCollectorCodeHash; | ||||
|  | ||||
|     constructor() internal { | ||||
|         feeCollectorCodeHash = keccak256(type(FeeCollector).creationCode); | ||||
|     } | ||||
|  | ||||
|     /// @dev   Collect the specified protocol fee in either WETH or ETH. If | ||||
|     ///        msg.value is non-zero, the fee will be paid in ETH. Otherwise, | ||||
|     ///        this function attempts to transfer the fee in WETH. Either way, | ||||
|     ///        The fee is stored in a per-pool fee collector contract. | ||||
|     /// @param poolId The pool ID for which a fee is being collected. | ||||
|     /// @param amount The amount of ETH/WETH to be collected. | ||||
|     /// @param weth The WETH token contract. | ||||
|     function _collectProtocolFee( | ||||
|         bytes32 poolId, | ||||
|         uint256 amount, | ||||
|         IERC20TokenV06 weth | ||||
|     ) | ||||
|         internal | ||||
|     { | ||||
|         FeeCollector feeCollector = _getFeeCollector(poolId); | ||||
|  | ||||
|         if (msg.value == 0) { | ||||
|             // WETH | ||||
|             LibTokenSpender.spendERC20Tokens(weth, msg.sender, address(feeCollector), amount); | ||||
|         } else { | ||||
|             // ETH | ||||
|             (bool success,) = address(feeCollector).call{value: amount}(""); | ||||
|             require(success, "FixinProtocolFees/ETHER_TRANSFER_FALIED"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /// @dev Transfer fees for a given pool to the staking contract. | ||||
|     /// @param poolId Identifies the pool whose fees are being paid. | ||||
|     function _transferFeesForPool( | ||||
|         bytes32 poolId, | ||||
|         IStaking staking, | ||||
|         IEtherTokenV06 weth | ||||
|     ) | ||||
|         internal | ||||
|     { | ||||
|         FeeCollector feeCollector = _getFeeCollector(poolId); | ||||
|  | ||||
|         uint256 codeSize; | ||||
|         assembly { | ||||
|             codeSize := extcodesize(feeCollector) | ||||
|         } | ||||
|  | ||||
|         if (codeSize == 0) { | ||||
|             // Create and initialize the contract if necessary. | ||||
|             new FeeCollector{salt: poolId}(); | ||||
|             feeCollector.initialize(weth, staking, poolId); | ||||
|         } | ||||
|  | ||||
|         if (address(feeCollector).balance > 1) { | ||||
|             feeCollector.convertToWeth(weth); | ||||
|         } | ||||
|  | ||||
|         uint256 bal = weth.balanceOf(address(feeCollector)); | ||||
|         if (bal > 1) { | ||||
|             // Leave 1 wei behind to avoid high SSTORE cost of zero-->non-zero. | ||||
|             staking.payProtocolFee( | ||||
|                 address(feeCollector), | ||||
|                 address(feeCollector), | ||||
|                 bal - 1); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /// @dev Compute the CREATE2 address for a fee collector. | ||||
|     /// @param poolId The fee collector's pool ID. | ||||
|     function _getFeeCollector( | ||||
|         bytes32 poolId | ||||
|     ) | ||||
|         internal | ||||
|         view | ||||
|         returns (FeeCollector) | ||||
|     { | ||||
|         // Compute the CREATE2 address for the fee collector. | ||||
|         address payable addr = address(uint256(keccak256(abi.encodePacked( | ||||
|             byte(0xff), | ||||
|             address(this), | ||||
|             poolId, // pool ID is salt | ||||
|             feeCollectorCodeHash | ||||
|         )))); | ||||
|         return FeeCollector(addr); | ||||
|     } | ||||
| } | ||||
| @@ -27,6 +27,7 @@ import "@0x/contracts-utils/contracts/src/v06/LibSafeMathV06.sol"; | ||||
| import "@0x/contracts-utils/contracts/src/v06/LibMathV06.sol"; | ||||
| import "../errors/LibTransformERC20RichErrors.sol"; | ||||
| import "../vendor/v3/IExchange.sol"; | ||||
| import "../vendor/v3/LibOrderHash.sol"; | ||||
| import "./bridges/IBridgeAdapter.sol"; | ||||
| import "./Transformer.sol"; | ||||
| import "./LibERC20Transformer.sol"; | ||||
| @@ -104,13 +105,8 @@ contract FillQuoteTransformer is | ||||
|  | ||||
|     /// @dev Emitted when a trade is skipped due to a lack of funds | ||||
|     ///      to pay the 0x Protocol fee. | ||||
|     /// @param ethBalance The current eth balance. | ||||
|     /// @param ethNeeded The current eth balance required to pay | ||||
|     ///        the protocol fee. | ||||
|     event ProtocolFeeUnfunded( | ||||
|         uint256 ethBalance, | ||||
|         uint256 ethNeeded | ||||
|     ); | ||||
|     /// @param orderHash The hash of the order that was skipped. | ||||
|     event ProtocolFeeUnfunded(bytes32 orderHash); | ||||
|  | ||||
|     /// @dev The Exchange ERC20Proxy ID. | ||||
|     bytes4 private constant ERC20_ASSET_PROXY_ID = 0xf47261b0; | ||||
| @@ -450,7 +446,11 @@ contract FillQuoteTransformer is | ||||
|             } | ||||
|             // Emit an event if we do not have sufficient ETH to cover the protocol fee. | ||||
|             if (state.ethRemaining < state.protocolFee) { | ||||
|                 emit ProtocolFeeUnfunded(state.ethRemaining, state.protocolFee); | ||||
|                 bytes32 orderHash = LibOrderHash.getTypedDataHash( | ||||
|                     order, | ||||
|                     exchange.EIP712_EXCHANGE_DOMAIN_HASH() | ||||
|                 ); | ||||
|                 emit ProtocolFeeUnfunded(orderHash); | ||||
|                 return results; | ||||
|             } | ||||
|             try | ||||
|   | ||||
| @@ -64,22 +64,6 @@ contract BridgeAdapter is | ||||
|     address private immutable UNISWAP_BRIDGE_ADDRESS; | ||||
|     address private immutable UNISWAP_V2_BRIDGE_ADDRESS; | ||||
|  | ||||
|     /// @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 | ||||
|     ); | ||||
|  | ||||
|     constructor(AdapterAddresses memory addresses) | ||||
|         public | ||||
|         MixinBalancer() | ||||
| @@ -89,7 +73,7 @@ contract BridgeAdapter is | ||||
|         MixinMooniswap(addresses) | ||||
|         MixinMStable(addresses) | ||||
|         MixinOasis(addresses) | ||||
|         MixinShell(addresses) | ||||
|         MixinShell() | ||||
|         MixinSushiswap(addresses) | ||||
|         MixinUniswap(addresses) | ||||
|         MixinUniswapV2(addresses) | ||||
| @@ -209,7 +193,8 @@ contract BridgeAdapter is | ||||
|                 sellAmount, | ||||
|                 bridgeData | ||||
|             ); | ||||
|             // Do not emit an event. The bridge contract should emit one itself. | ||||
|             // Old bridge contracts should emit an `ERC20BridgeTransfer` themselves, | ||||
|             // otherwise an event will be emitted from `_tradeZeroExBridge`. | ||||
|             return boughtAmount; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -44,7 +44,6 @@ contract MixinAdapterAddresses | ||||
|         address uniswapV2Router; | ||||
|         address uniswapExchangeFactory; | ||||
|         address mStable; | ||||
|         address shell; | ||||
|         address dodoHelper; | ||||
|         // Other | ||||
|         address weth; | ||||
|   | ||||
| @@ -37,22 +37,11 @@ interface IShell { | ||||
|         returns (uint256 toAmount); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| contract MixinShell is | ||||
|     MixinAdapterAddresses | ||||
| { | ||||
|     using LibERC20TokenV06 for IERC20TokenV06; | ||||
|  | ||||
|     /// @dev Mainnet address of the `Shell` contract. | ||||
|     IShell private immutable SHELL; | ||||
|  | ||||
|     constructor(AdapterAddresses memory addresses) | ||||
|         public | ||||
|     { | ||||
|         SHELL = IShell(addresses.shell); | ||||
|     } | ||||
|  | ||||
|     function _tradeShell( | ||||
|         IERC20TokenV06 buyToken, | ||||
|         uint256 sellAmount, | ||||
| @@ -61,15 +50,15 @@ contract MixinShell is | ||||
|         internal | ||||
|         returns (uint256 boughtAmount) | ||||
|     { | ||||
|         (address fromTokenAddress) = abi.decode(bridgeData, (address)); | ||||
|         (address fromTokenAddress, address pool) = abi.decode(bridgeData, (address, address)); | ||||
|  | ||||
|         // Grant the Shell contract an allowance to sell the first token. | ||||
|         IERC20TokenV06(fromTokenAddress).approveIfBelow( | ||||
|             address(SHELL), | ||||
|             pool, | ||||
|             sellAmount | ||||
|         ); | ||||
|  | ||||
|         boughtAmount = SHELL.originSwap( | ||||
|         boughtAmount = IShell(pool).originSwap( | ||||
|             fromTokenAddress, | ||||
|             address(buyToken), | ||||
|              // Sell all tokens we hold. | ||||
|   | ||||
| @@ -21,32 +21,31 @@ pragma solidity ^0.6.5; | ||||
| import "@0x/contracts-erc20/contracts/src/v06/LibERC20TokenV06.sol"; | ||||
| import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol"; | ||||
| import "@0x/contracts-utils/contracts/src/v06/LibSafeMathV06.sol"; | ||||
| import "../../../vendor/ILiquidityProvider.sol"; | ||||
| import "../../../vendor/v3/IERC20Bridge.sol"; | ||||
|  | ||||
| interface IERC20Bridge { | ||||
|  | ||||
|     /// @dev Transfers `amount` of the ERC20 `buyToken` from `from` to `to`. | ||||
|     /// @param buyToken The address of the ERC20 token to transfer. | ||||
|     /// @param from Address to transfer asset from. | ||||
|     /// @param to Address to transfer asset to. | ||||
|     /// @param amount Amount of asset to transfer. | ||||
|     /// @param bridgeData Arbitrary asset data needed by the bridge contract. | ||||
|     /// @return success The magic bytes `0xdc1600f3` if successful. | ||||
|     function bridgeTransferFrom( | ||||
|         IERC20TokenV06 buyToken, | ||||
|         address from, | ||||
|         address to, | ||||
|         uint256 amount, | ||||
|         bytes calldata bridgeData | ||||
|     ) | ||||
|         external | ||||
|         returns (bytes4 success); | ||||
| } | ||||
|  | ||||
| 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, | ||||
| @@ -63,13 +62,31 @@ contract MixinZeroExBridge { | ||||
|             bridgeAddress, | ||||
|             sellAmount | ||||
|         ); | ||||
|         IERC20Bridge(bridgeAddress).bridgeTransferFrom( | ||||
|             buyToken, | ||||
|             address(bridgeAddress), | ||||
|             address(this), | ||||
|             1, // amount to transfer back from the bridge | ||||
|             bridgeData | ||||
|         ); | ||||
|         boughtAmount = buyToken.balanceOf(address(this)).safeSub(balanceBefore); | ||||
|         try ILiquidityProvider(bridgeAddress).sellTokenForToken( | ||||
|                 address(sellToken), | ||||
|                 address(buyToken), | ||||
|                 address(this), // recipient | ||||
|                 1, // minBuyAmount | ||||
|                 bridgeData | ||||
|         ) { | ||||
|             boughtAmount = buyToken.balanceOf(address(this)).safeSub(balanceBefore); | ||||
|             emit ERC20BridgeTransfer( | ||||
|                 sellToken, | ||||
|                 buyToken, | ||||
|                 sellAmount, | ||||
|                 boughtAmount, | ||||
|                 bridgeAddress, | ||||
|                 address(this) | ||||
|             ); | ||||
|         } catch { | ||||
|             IERC20Bridge(bridgeAddress).bridgeTransferFrom( | ||||
|                 address(buyToken), | ||||
|                 bridgeAddress, | ||||
|                 address(this), // recipient | ||||
|                 1, // minBuyAmount | ||||
|                 bridgeData | ||||
|             ); | ||||
|             boughtAmount = buyToken.balanceOf(address(this)).safeSub(balanceBefore); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										92
									
								
								contracts/zero-ex/contracts/src/vendor/ILiquidityProvider.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								contracts/zero-ex/contracts/src/vendor/ILiquidityProvider.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| /* | ||||
|  | ||||
|   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; | ||||
|  | ||||
| interface ILiquidityProvider { | ||||
|  | ||||
|     /// @dev Trades `inputToken` for `outputToken`. The amount of `inputToken` | ||||
|     ///      to sell must be transferred to the contract prior to calling this | ||||
|     ///      function to trigger the trade. | ||||
|     /// @param inputToken The token being sold. | ||||
|     /// @param outputToken The token being bought. | ||||
|     /// @param recipient The recipient of the bought tokens. | ||||
|     /// @param minBuyAmount The minimum acceptable amount of `outputToken` to buy. | ||||
|     /// @param auxiliaryData Arbitrary auxiliary data supplied to the contract. | ||||
|     /// @return boughtAmount The amount of `outputToken` bought. | ||||
|     function sellTokenForToken( | ||||
|         address inputToken, | ||||
|         address outputToken, | ||||
|         address recipient, | ||||
|         uint256 minBuyAmount, | ||||
|         bytes calldata auxiliaryData | ||||
|     ) | ||||
|         external | ||||
|         returns (uint256 boughtAmount); | ||||
|  | ||||
|     /// @dev Trades ETH for token. ETH must either be attached to this function | ||||
|     ///      call or sent to the contract prior to calling this function to | ||||
|     ///      trigger the trade. | ||||
|     /// @param outputToken The token being bought. | ||||
|     /// @param recipient The recipient of the bought tokens. | ||||
|     /// @param minBuyAmount The minimum acceptable amount of `outputToken` to buy. | ||||
|     /// @param auxiliaryData Arbitrary auxiliary data supplied to the contract. | ||||
|     /// @return boughtAmount The amount of `outputToken` bought. | ||||
|     function sellEthForToken( | ||||
|         address outputToken, | ||||
|         address recipient, | ||||
|         uint256 minBuyAmount, | ||||
|         bytes calldata auxiliaryData | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|         returns (uint256 boughtAmount); | ||||
|  | ||||
|     /// @dev Trades token for ETH. The token must be sent to the contract prior | ||||
|     ///      to calling this function to trigger the trade. | ||||
|     /// @param inputToken The token being sold. | ||||
|     /// @param recipient The recipient of the bought tokens. | ||||
|     /// @param minBuyAmount The minimum acceptable amount of ETH to buy. | ||||
|     /// @param auxiliaryData Arbitrary auxiliary data supplied to the contract. | ||||
|     /// @return boughtAmount The amount of ETH bought. | ||||
|     function sellTokenForEth( | ||||
|         address inputToken, | ||||
|         address payable recipient, | ||||
|         uint256 minBuyAmount, | ||||
|         bytes calldata auxiliaryData | ||||
|     ) | ||||
|         external | ||||
|         returns (uint256 boughtAmount); | ||||
|  | ||||
|     /// @dev Quotes the amount of `outputToken` that would be obtained by | ||||
|     ///      selling `sellAmount` of `inputToken`. | ||||
|     /// @param inputToken Address of the taker token (what to sell). Use | ||||
|     ///        the wETH address if selling ETH. | ||||
|     /// @param outputToken Address of the maker token (what to buy). Use | ||||
|     ///        the wETH address if buying ETH. | ||||
|     /// @param sellAmount Amount of `inputToken` to sell. | ||||
|     /// @return outputTokenAmount Amount of `outputToken` that would be obtained. | ||||
|     function getSellQuote( | ||||
|         address inputToken, | ||||
|         address outputToken, | ||||
|         uint256 sellAmount | ||||
|     ) | ||||
|         external | ||||
|         view | ||||
|         returns (uint256 outputTokenAmount); | ||||
| } | ||||
| @@ -104,4 +104,9 @@ interface IExchange { | ||||
|         external | ||||
|         view | ||||
|         returns (address proxyAddress); | ||||
|  | ||||
|     function EIP712_EXCHANGE_DOMAIN_HASH() | ||||
|         external | ||||
|         view | ||||
|         returns (bytes32 domainHash); | ||||
| } | ||||
|   | ||||
							
								
								
									
										24
									
								
								contracts/zero-ex/contracts/src/vendor/v3/IStaking.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								contracts/zero-ex/contracts/src/vendor/v3/IStaking.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| /* | ||||
|  | ||||
|   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; | ||||
|  | ||||
| interface IStaking { | ||||
|     function joinStakingPoolAsMaker(bytes32) external; | ||||
|     function payProtocolFee(address, address, uint256) external payable; | ||||
| } | ||||
							
								
								
									
										167
									
								
								contracts/zero-ex/contracts/src/vendor/v3/LibOrderHash.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								contracts/zero-ex/contracts/src/vendor/v3/LibOrderHash.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,167 @@ | ||||
| /* | ||||
|  | ||||
|   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; | ||||
|  | ||||
| import "./IExchange.sol"; | ||||
|  | ||||
|  | ||||
| library LibOrderHash { | ||||
|  | ||||
|     using LibOrderHash for IExchange.Order; | ||||
|  | ||||
|     // Hash for the EIP712 Order Schema: | ||||
|     // keccak256(abi.encodePacked( | ||||
|     //     "Order(", | ||||
|     //     "address makerAddress,", | ||||
|     //     "address takerAddress,", | ||||
|     //     "address feeRecipientAddress,", | ||||
|     //     "address senderAddress,", | ||||
|     //     "uint256 makerAssetAmount,", | ||||
|     //     "uint256 takerAssetAmount,", | ||||
|     //     "uint256 makerFee,", | ||||
|     //     "uint256 takerFee,", | ||||
|     //     "uint256 expirationTimeSeconds,", | ||||
|     //     "uint256 salt,", | ||||
|     //     "bytes makerAssetData,", | ||||
|     //     "bytes takerAssetData,", | ||||
|     //     "bytes makerFeeAssetData,", | ||||
|     //     "bytes takerFeeAssetData", | ||||
|     //     ")" | ||||
|     // )) | ||||
|     bytes32 constant internal _EIP712_ORDER_SCHEMA_HASH = | ||||
|         0xf80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a7534; | ||||
|  | ||||
|     /// @dev Calculates the EIP712 typed data hash of an order with a given domain separator. | ||||
|     /// @param order The order structure. | ||||
|     /// @param eip712ExchangeDomainHash Domain hash for the Exchange. | ||||
|     /// @return orderHash EIP712 typed data hash of the order. | ||||
|     function getTypedDataHash(IExchange.Order memory order, bytes32 eip712ExchangeDomainHash) | ||||
|         internal | ||||
|         pure | ||||
|         returns (bytes32 orderHash) | ||||
|     { | ||||
|         orderHash = _hashEIP712Message( | ||||
|             eip712ExchangeDomainHash, | ||||
|             order.getStructHash() | ||||
|         ); | ||||
|         return orderHash; | ||||
|     } | ||||
|  | ||||
|     /// @dev Calculates EIP712 hash of the order struct. | ||||
|     /// @param order The order structure. | ||||
|     /// @return result EIP712 hash of the order struct. | ||||
|     function getStructHash(IExchange.Order memory order) | ||||
|         internal | ||||
|         pure | ||||
|         returns (bytes32 result) | ||||
|     { | ||||
|         bytes32 schemaHash = _EIP712_ORDER_SCHEMA_HASH; | ||||
|         bytes memory makerAssetData = order.makerAssetData; | ||||
|         bytes memory takerAssetData = order.takerAssetData; | ||||
|         bytes memory makerFeeAssetData = order.makerFeeAssetData; | ||||
|         bytes memory takerFeeAssetData = order.takerFeeAssetData; | ||||
|  | ||||
|         // Assembly for more efficiently computing: | ||||
|         // keccak256(abi.encodePacked( | ||||
|         //     EIP712_ORDER_SCHEMA_HASH, | ||||
|         //     uint256(order.makerAddress), | ||||
|         //     uint256(order.takerAddress), | ||||
|         //     uint256(order.feeRecipientAddress), | ||||
|         //     uint256(order.senderAddress), | ||||
|         //     order.makerAssetAmount, | ||||
|         //     order.takerAssetAmount, | ||||
|         //     order.makerFee, | ||||
|         //     order.takerFee, | ||||
|         //     order.expirationTimeSeconds, | ||||
|         //     order.salt, | ||||
|         //     keccak256(order.makerAssetData), | ||||
|         //     keccak256(order.takerAssetData), | ||||
|         //     keccak256(order.makerFeeAssetData), | ||||
|         //     keccak256(order.takerFeeAssetData) | ||||
|         // )); | ||||
|  | ||||
|         assembly { | ||||
|             // Assert order offset (this is an internal error that should never be triggered) | ||||
|             if lt(order, 32) { | ||||
|                 invalid() | ||||
|             } | ||||
|  | ||||
|             // Calculate memory addresses that will be swapped out before hashing | ||||
|             let pos1 := sub(order, 32) | ||||
|             let pos2 := add(order, 320) | ||||
|             let pos3 := add(order, 352) | ||||
|             let pos4 := add(order, 384) | ||||
|             let pos5 := add(order, 416) | ||||
|  | ||||
|             // Backup | ||||
|             let temp1 := mload(pos1) | ||||
|             let temp2 := mload(pos2) | ||||
|             let temp3 := mload(pos3) | ||||
|             let temp4 := mload(pos4) | ||||
|             let temp5 := mload(pos5) | ||||
|  | ||||
|             // Hash in place | ||||
|             mstore(pos1, schemaHash) | ||||
|             mstore(pos2, keccak256(add(makerAssetData, 32), mload(makerAssetData)))        // store hash of makerAssetData | ||||
|             mstore(pos3, keccak256(add(takerAssetData, 32), mload(takerAssetData)))        // store hash of takerAssetData | ||||
|             mstore(pos4, keccak256(add(makerFeeAssetData, 32), mload(makerFeeAssetData)))  // store hash of makerFeeAssetData | ||||
|             mstore(pos5, keccak256(add(takerFeeAssetData, 32), mload(takerFeeAssetData)))  // store hash of takerFeeAssetData | ||||
|             result := keccak256(pos1, 480) | ||||
|  | ||||
|             // Restore | ||||
|             mstore(pos1, temp1) | ||||
|             mstore(pos2, temp2) | ||||
|             mstore(pos3, temp3) | ||||
|             mstore(pos4, temp4) | ||||
|             mstore(pos5, temp5) | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     /// @dev Calculates EIP712 encoding for a hash struct with a given domain hash. | ||||
|     /// @param eip712DomainHash Hash of the domain domain separator data, computed | ||||
|     ///                         with getDomainHash(). | ||||
|     /// @param hashStruct The EIP712 hash struct. | ||||
|     /// @return result EIP712 hash applied to the given EIP712 Domain. | ||||
|     function _hashEIP712Message(bytes32 eip712DomainHash, bytes32 hashStruct) | ||||
|         internal | ||||
|         pure | ||||
|         returns (bytes32 result) | ||||
|     { | ||||
|         // Assembly for more efficient computing: | ||||
|         // keccak256(abi.encodePacked( | ||||
|         //     EIP191_HEADER, | ||||
|         //     EIP712_DOMAIN_HASH, | ||||
|         //     hashStruct | ||||
|         // )); | ||||
|  | ||||
|         assembly { | ||||
|             // Load free memory pointer | ||||
|             let memPtr := mload(64) | ||||
|  | ||||
|             mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000)  // EIP191 header | ||||
|             mstore(add(memPtr, 2), eip712DomainHash)                                            // EIP712 domain hash | ||||
|             mstore(add(memPtr, 34), hashStruct)                                                 // Hash of struct | ||||
|  | ||||
|             // Compute hash | ||||
|             result := keccak256(memPtr, 66) | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
| @@ -35,6 +35,8 @@ contract TestFillQuoteTransformerExchange { | ||||
|         uint256 makerAssetMintRatio; | ||||
|     } | ||||
|  | ||||
|     bytes32 public constant EIP712_EXCHANGE_DOMAIN_HASH = 0xaa81d881b1adbbf115e15b849cb9cdc643cad3c6a90f30eb505954af943247e6; | ||||
|  | ||||
|     uint256 private constant PROTOCOL_FEE_MULTIPLIER = 1337; | ||||
|  | ||||
|     using LibSafeMathV06 for uint256; | ||||
|   | ||||
							
								
								
									
										34
									
								
								contracts/zero-ex/contracts/test/TestLibSignature.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								contracts/zero-ex/contracts/test/TestLibSignature.sol
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| /* | ||||
|  | ||||
|   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 "../src/features/libs/LibSignature.sol"; | ||||
|  | ||||
|  | ||||
| contract TestLibSignature { | ||||
|  | ||||
|     function getSignerOfHash(bytes32 hash, LibSignature.Signature calldata signature) | ||||
|         external | ||||
|         pure | ||||
|         returns (address signer) | ||||
|     { | ||||
|         return LibSignature.getSignerOfHash(hash, signature); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										55
									
								
								contracts/zero-ex/contracts/test/TestProtocolFees.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								contracts/zero-ex/contracts/test/TestProtocolFees.sol
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| /* | ||||
|  | ||||
|   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 "../src/fixins/FixinProtocolFees.sol"; | ||||
|  | ||||
| contract TestProtocolFees is FixinProtocolFees { | ||||
|     function collectProtocolFee( | ||||
|         bytes32 poolId, | ||||
|         uint256 amount, | ||||
|         IERC20TokenV06 weth | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|     { | ||||
|         _collectProtocolFee(poolId, amount, weth); | ||||
|     } | ||||
|  | ||||
|     function transferFeesForPool( | ||||
|         bytes32 poolId, | ||||
|         IStaking staking, | ||||
|         IEtherTokenV06 weth | ||||
|     ) | ||||
|         external | ||||
|     { | ||||
|         _transferFeesForPool(poolId, staking, weth); | ||||
|     } | ||||
|  | ||||
|     function getFeeCollector( | ||||
|         bytes32 poolId | ||||
|     ) | ||||
|         external | ||||
|         view | ||||
|         returns (FeeCollector) | ||||
|     { | ||||
|         return _getFeeCollector(poolId); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										49
									
								
								contracts/zero-ex/contracts/test/TestStaking.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								contracts/zero-ex/contracts/test/TestStaking.sol
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| /* | ||||
|  | ||||
|   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/IEtherTokenV06.sol"; | ||||
|  | ||||
| contract TestStaking { | ||||
|     mapping(address => bytes32) public poolForMaker; | ||||
|     mapping(bytes32 => uint256) public balanceForPool; | ||||
|  | ||||
|     IEtherTokenV06 immutable weth; | ||||
|  | ||||
|     constructor(IEtherTokenV06 _weth) public { | ||||
|         weth = _weth; | ||||
|     } | ||||
|  | ||||
|     function joinStakingPoolAsMaker(bytes32 poolId) external { | ||||
|         poolForMaker[msg.sender] = poolId; | ||||
|     } | ||||
|  | ||||
|     function payProtocolFee( | ||||
|         address makerAddress, | ||||
|         address payerAddress, | ||||
|         uint256 amount | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|     { | ||||
|         require(weth.transferFrom(payerAddress, address(this), amount)); | ||||
|         balanceForPool[poolForMaker[makerAddress]] += amount; | ||||
|     } | ||||
| } | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name": "@0x/contracts-zero-ex", | ||||
|     "version": "0.5.0", | ||||
|     "version": "0.7.0", | ||||
|     "engines": { | ||||
|         "node": ">=6.12" | ||||
|     }, | ||||
| @@ -10,8 +10,9 @@ | ||||
|         "test": "test" | ||||
|     }, | ||||
|     "scripts": { | ||||
|         "build": "yarn pre_build && tsc -b", | ||||
|         "build": "yarn pre_build && yarn build:ts", | ||||
|         "build:ci": "yarn build", | ||||
|         "build:ts": "tsc -b", | ||||
|         "pre_build": "run-s compile contracts:gen generate_contract_wrappers contracts:copy", | ||||
|         "test": "yarn run_mocha", | ||||
|         "rebuild_and_test": "run-s build test", | ||||
| @@ -41,7 +42,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", | ||||
|         "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually.", | ||||
|         "abis": "./test/generated-artifacts/@(AffiliateFeeTransformer|AllowanceTarget|BootstrapFeature|BridgeAdapter|FillQuoteTransformer|FixinCommon|FixinEIP712|FixinReentrancyGuard|FlashWallet|FullMigration|IAllowanceTarget|IBootstrapFeature|IBridgeAdapter|IERC20Bridge|IERC20Transformer|IExchange|IFeature|IFlashWallet|IGasToken|ILiquidityProviderFeature|IMetaTransactionsFeature|IOwnableFeature|ISignatureValidatorFeature|ISimpleFunctionRegistryFeature|ITestSimpleFunctionRegistryFeature|ITokenSpenderFeature|ITransformERC20Feature|IUniswapFeature|IZeroEx|InitialMigration|LibBootstrap|LibCommonRichErrors|LibERC20Transformer|LibLiquidityProviderRichErrors|LibLiquidityProviderStorage|LibMetaTransactionsRichErrors|LibMetaTransactionsStorage|LibMigrate|LibOwnableRichErrors|LibOwnableStorage|LibProxyRichErrors|LibProxyStorage|LibReentrancyGuardStorage|LibSignatureRichErrors|LibSignedCallData|LibSimpleFunctionRegistryRichErrors|LibSimpleFunctionRegistryStorage|LibSpenderRichErrors|LibStorage|LibTokenSpender|LibTokenSpenderStorage|LibTransformERC20RichErrors|LibTransformERC20Storage|LibWalletRichErrors|LiquidityProviderFeature|LogMetadataTransformer|MetaTransactionsFeature|MixinAdapterAddresses|MixinBalancer|MixinCurve|MixinDodo|MixinKyber|MixinMStable|MixinMooniswap|MixinOasis|MixinShell|MixinSushiswap|MixinUniswap|MixinUniswapV2|MixinZeroExBridge|OwnableFeature|PayTakerTransformer|SignatureValidatorFeature|SimpleFunctionRegistryFeature|TestBridge|TestCallTarget|TestDelegateCaller|TestFillQuoteTransformerBridge|TestFillQuoteTransformerExchange|TestFillQuoteTransformerHost|TestFullMigration|TestInitialMigration|TestLibTokenSpender|TestMetaTransactionsTransformERC20Feature|TestMigrator|TestMintTokenERC20Transformer|TestMintableERC20Token|TestSimpleFunctionRegistryFeatureImpl1|TestSimpleFunctionRegistryFeatureImpl2|TestTokenSpender|TestTokenSpenderERC20Token|TestTransformERC20|TestTransformerBase|TestTransformerDeployerTransformer|TestTransformerHost|TestWeth|TestWethTransformerHost|TestZeroExFeature|TokenSpenderFeature|TransformERC20Feature|Transformer|TransformerDeployer|UniswapFeature|WethTransformer|ZeroEx).json" | ||||
|         "abis": "./test/generated-artifacts/@(AffiliateFeeTransformer|AllowanceTarget|BootstrapFeature|BridgeAdapter|FeeCollector|FillQuoteTransformer|FixinCommon|FixinEIP712|FixinProtocolFees|FixinReentrancyGuard|FlashWallet|FullMigration|IAllowanceTarget|IBootstrapFeature|IBridgeAdapter|IERC20Bridge|IERC20Transformer|IExchange|IFeature|IFlashWallet|IGasToken|ILiquidityProvider|ILiquidityProviderFeature|IMetaTransactionsFeature|IOwnableFeature|ISignatureValidatorFeature|ISimpleFunctionRegistryFeature|IStaking|ITestSimpleFunctionRegistryFeature|ITokenSpenderFeature|ITransformERC20Feature|IUniswapFeature|IZeroEx|InitialMigration|LibBootstrap|LibCommonRichErrors|LibERC20Transformer|LibLiquidityProviderRichErrors|LibLiquidityProviderStorage|LibMetaTransactionsRichErrors|LibMetaTransactionsStorage|LibMigrate|LibOrderHash|LibOwnableRichErrors|LibOwnableStorage|LibProxyRichErrors|LibProxyStorage|LibReentrancyGuardStorage|LibSignature|LibSignatureRichErrors|LibSignedCallData|LibSimpleFunctionRegistryRichErrors|LibSimpleFunctionRegistryStorage|LibSpenderRichErrors|LibStorage|LibTokenSpender|LibTokenSpenderStorage|LibTransformERC20RichErrors|LibTransformERC20Storage|LibWalletRichErrors|LiquidityProviderFeature|LogMetadataTransformer|MetaTransactionsFeature|MixinAdapterAddresses|MixinBalancer|MixinCurve|MixinDodo|MixinKyber|MixinMStable|MixinMooniswap|MixinOasis|MixinShell|MixinSushiswap|MixinUniswap|MixinUniswapV2|MixinZeroExBridge|OwnableFeature|PayTakerTransformer|SignatureValidatorFeature|SimpleFunctionRegistryFeature|TestBridge|TestCallTarget|TestDelegateCaller|TestFillQuoteTransformerBridge|TestFillQuoteTransformerExchange|TestFillQuoteTransformerHost|TestFullMigration|TestInitialMigration|TestLibSignature|TestLibTokenSpender|TestMetaTransactionsTransformERC20Feature|TestMigrator|TestMintTokenERC20Transformer|TestMintableERC20Token|TestProtocolFees|TestSimpleFunctionRegistryFeatureImpl1|TestSimpleFunctionRegistryFeatureImpl2|TestStaking|TestTokenSpender|TestTokenSpenderERC20Token|TestTransformERC20|TestTransformerBase|TestTransformerDeployerTransformer|TestTransformerHost|TestWeth|TestWethTransformerHost|TestZeroExFeature|TokenSpenderFeature|TransformERC20Feature|Transformer|TransformerDeployer|UniswapFeature|WethTransformer|ZeroEx).json" | ||||
|     }, | ||||
|     "repository": { | ||||
|         "type": "git", | ||||
| @@ -53,13 +54,12 @@ | ||||
|     }, | ||||
|     "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/zero-ex", | ||||
|     "devDependencies": { | ||||
|         "@0x/abi-gen": "^5.4.3", | ||||
|         "@0x/contracts-erc20": "^3.2.3", | ||||
|         "@0x/contracts-gen": "2.0.13", | ||||
|         "@0x/contracts-test-utils": "^5.3.6", | ||||
|         "@0x/dev-utils": "^3.3.4", | ||||
|         "@0x/order-utils": "^10.4.1", | ||||
|         "@0x/sol-compiler": "^4.2.3", | ||||
|         "@0x/abi-gen": "^5.4.7", | ||||
|         "@0x/contracts-erc20": "^3.2.6", | ||||
|         "@0x/contracts-gen": "2.0.18", | ||||
|         "@0x/contracts-test-utils": "^5.3.9", | ||||
|         "@0x/dev-utils": "^4.0.1", | ||||
|         "@0x/sol-compiler": "^4.2.7", | ||||
|         "@0x/ts-doc-gen": "^0.0.28", | ||||
|         "@0x/tslint-config": "^4.1.3", | ||||
|         "@types/lodash": "4.14.104", | ||||
| @@ -75,12 +75,13 @@ | ||||
|         "typescript": "3.0.1" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@0x/base-contract": "^6.2.7", | ||||
|         "@0x/subproviders": "^6.1.5", | ||||
|         "@0x/types": "^3.2.4", | ||||
|         "@0x/base-contract": "^6.2.11", | ||||
|         "@0x/order-utils": "^10.4.4", | ||||
|         "@0x/subproviders": "^6.1.9", | ||||
|         "@0x/types": "^3.3.0", | ||||
|         "@0x/typescript-typings": "^5.1.5", | ||||
|         "@0x/utils": "^5.6.3", | ||||
|         "@0x/web3-wrapper": "^7.2.4", | ||||
|         "@0x/utils": "^6.1.0", | ||||
|         "@0x/web3-wrapper": "^7.2.8", | ||||
|         "ethereum-types": "^3.3.3", | ||||
|         "ethereumjs-util": "^5.1.1" | ||||
|     }, | ||||
|   | ||||
| @@ -32,6 +32,7 @@ export { artifacts } from './artifacts'; | ||||
| export * from './migration'; | ||||
| export * from './nonce_utils'; | ||||
| export * from './signed_call_data'; | ||||
| export * from './signature_utils'; | ||||
| export { | ||||
|     AffiliateFeeTransformerContract, | ||||
|     BridgeAdapterContract, | ||||
| @@ -48,3 +49,6 @@ export { | ||||
|     WethTransformerContract, | ||||
|     ZeroExContract, | ||||
| } from './wrappers'; | ||||
| export * from './revert_errors'; | ||||
| export { EIP712TypedData } from '@0x/types'; | ||||
| export { SupportedProvider } from '@0x/subproviders'; | ||||
|   | ||||
							
								
								
									
										30
									
								
								contracts/zero-ex/src/revert_errors.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								contracts/zero-ex/src/revert_errors.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| // TODO(dorothy-zbornak): Move these into `@0x/protocol-utils` whenever that | ||||
| // becomes a thing. | ||||
| // tslint:disable:max-classes-per-file | ||||
| import { RevertError } from '@0x/utils'; | ||||
|  | ||||
| export enum SignatureValidationErrorCodes { | ||||
|     AlwaysInvalid = 0, | ||||
|     InvalidLength = 1, | ||||
|     Unsupported = 2, | ||||
|     Illegal = 3, | ||||
|     WrongSigner = 4, | ||||
|     BadSignatureData = 5, | ||||
| } | ||||
|  | ||||
| // tslint:disable:max-classes-per-file | ||||
| export class SignatureValidationError extends RevertError { | ||||
|     constructor(code?: SignatureValidationErrorCodes, hash?: string) { | ||||
|         super('SignatureValidationError', 'SignatureValidationError(uint8 code, bytes32 hash)', { | ||||
|             code, | ||||
|             hash, | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|  | ||||
| const types = [SignatureValidationError]; | ||||
|  | ||||
| // Register the types we've defined. | ||||
| for (const type of types) { | ||||
|     RevertError.registerType(type); | ||||
| } | ||||
							
								
								
									
										113
									
								
								contracts/zero-ex/src/signature_utils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								contracts/zero-ex/src/signature_utils.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,113 @@ | ||||
| import { signatureUtils } from '@0x/order-utils'; | ||||
| import { SupportedProvider } from '@0x/subproviders'; | ||||
| import { EIP712TypedData } from '@0x/types'; | ||||
| import { hexUtils, signTypedDataUtils } from '@0x/utils'; | ||||
| import * as ethjs from 'ethereumjs-util'; | ||||
|  | ||||
| /** | ||||
|  * Valid signature types on the Exchange Proxy. | ||||
|  */ | ||||
| export enum SignatureType { | ||||
|     Illegal = 0, | ||||
|     Invalid = 1, | ||||
|     EIP712 = 2, | ||||
|     EthSign = 3, | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Represents a raw EC signature. | ||||
|  */ | ||||
| export interface ECSignature { | ||||
|     v: number; | ||||
|     r: string; | ||||
|     s: string; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * A complete signature on the Exchange Proxy. | ||||
|  */ | ||||
| export interface Signature extends ECSignature { | ||||
|     signatureType: SignatureType; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Sign a hash with the EthSign signature type on a provider. | ||||
|  */ | ||||
| export async function ethSignHashFromProviderAsync( | ||||
|     signer: string, | ||||
|     hash: string, | ||||
|     provider: SupportedProvider, | ||||
| ): Promise<Signature> { | ||||
|     const signatureBytes = await signatureUtils.ecSignHashAsync(provider, hash, signer); | ||||
|     const parsed = parsePackedSignatureBytes(signatureBytes); | ||||
|     assertSignatureType(parsed, SignatureType.EthSign); | ||||
|     return parsed; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Sign a hash with the EthSign signature type, given a private key. | ||||
|  */ | ||||
| export function ethSignHashWithKey(hash: string, key: string): Signature { | ||||
|     const ethHash = hexUtils.toHex( | ||||
|         ethjs.sha3(hexUtils.concat(ethjs.toBuffer('\x19Ethereum Signed Message:\n32'), hash)), | ||||
|     ); | ||||
|     return { | ||||
|         ...ecSignHashWithKey(ethHash, key), | ||||
|         signatureType: SignatureType.EthSign, | ||||
|     }; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Sign a typed data object with the EIP712 signature type, given a private key. | ||||
|  */ | ||||
| export function eip712SignTypedDataWithKey(typedData: EIP712TypedData, key: string): Signature { | ||||
|     const hash = hexUtils.toHex(signTypedDataUtils.generateTypedDataHash(typedData)); | ||||
|     return { | ||||
|         ...ecSignHashWithKey(hash, key), | ||||
|         signatureType: SignatureType.EIP712, | ||||
|     }; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Sign an EIP712 hash with the EIP712 signature type, given a private key. | ||||
|  */ | ||||
| export function eip712SignHashWithKey(hash: string, key: string): Signature { | ||||
|     return { | ||||
|         ...ecSignHashWithKey(hash, key), | ||||
|         signatureType: SignatureType.EIP712, | ||||
|     }; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Generate the EC signature for a hash given a private key. | ||||
|  */ | ||||
| export function ecSignHashWithKey(hash: string, key: string): ECSignature { | ||||
|     const { v, r, s } = ethjs.ecsign(ethjs.toBuffer(hash), ethjs.toBuffer(key)); | ||||
|     return { | ||||
|         v, | ||||
|         r: ethjs.bufferToHex(r), | ||||
|         s: ethjs.bufferToHex(s), | ||||
|     }; | ||||
| } | ||||
|  | ||||
| function assertSignatureType(signature: Signature, expectedType: SignatureType): void { | ||||
|     if (signature.signatureType !== expectedType) { | ||||
|         throw new Error(`Expected signature type to be ${expectedType} but received ${signature.signatureType}.`); | ||||
|     } | ||||
| } | ||||
|  | ||||
| function parsePackedSignatureBytes(signatureBytes: string): Signature { | ||||
|     if (hexUtils.size(signatureBytes) !== 66) { | ||||
|         throw new Error(`Expected packed signatureBytes to be 66 bytes long: ${signatureBytes}`); | ||||
|     } | ||||
|     const typeId = parseInt(signatureBytes.slice(-2), 16) as SignatureType; | ||||
|     if (!Object.values(SignatureType).includes(typeId)) { | ||||
|         throw new Error(`Invalid signatureBytes type ID detected: ${typeId}`); | ||||
|     } | ||||
|     return { | ||||
|         signatureType: typeId, | ||||
|         v: parseInt(signatureBytes.slice(2, 4), 16), | ||||
|         r: hexUtils.slice(signatureBytes, 1, 33), | ||||
|         s: hexUtils.slice(signatureBytes, 33), | ||||
|     }; | ||||
| } | ||||
| @@ -9,9 +9,11 @@ import * as AffiliateFeeTransformer from '../test/generated-artifacts/AffiliateF | ||||
| import * as AllowanceTarget from '../test/generated-artifacts/AllowanceTarget.json'; | ||||
| import * as BootstrapFeature from '../test/generated-artifacts/BootstrapFeature.json'; | ||||
| import * as BridgeAdapter from '../test/generated-artifacts/BridgeAdapter.json'; | ||||
| import * as FeeCollector from '../test/generated-artifacts/FeeCollector.json'; | ||||
| import * as FillQuoteTransformer from '../test/generated-artifacts/FillQuoteTransformer.json'; | ||||
| import * as FixinCommon from '../test/generated-artifacts/FixinCommon.json'; | ||||
| import * as FixinEIP712 from '../test/generated-artifacts/FixinEIP712.json'; | ||||
| import * as FixinProtocolFees from '../test/generated-artifacts/FixinProtocolFees.json'; | ||||
| import * as FixinReentrancyGuard from '../test/generated-artifacts/FixinReentrancyGuard.json'; | ||||
| import * as FlashWallet from '../test/generated-artifacts/FlashWallet.json'; | ||||
| import * as FullMigration from '../test/generated-artifacts/FullMigration.json'; | ||||
| @@ -24,12 +26,14 @@ import * as IExchange from '../test/generated-artifacts/IExchange.json'; | ||||
| import * as IFeature from '../test/generated-artifacts/IFeature.json'; | ||||
| import * as IFlashWallet from '../test/generated-artifacts/IFlashWallet.json'; | ||||
| import * as IGasToken from '../test/generated-artifacts/IGasToken.json'; | ||||
| import * as ILiquidityProvider from '../test/generated-artifacts/ILiquidityProvider.json'; | ||||
| import * as ILiquidityProviderFeature from '../test/generated-artifacts/ILiquidityProviderFeature.json'; | ||||
| import * as IMetaTransactionsFeature from '../test/generated-artifacts/IMetaTransactionsFeature.json'; | ||||
| import * as InitialMigration from '../test/generated-artifacts/InitialMigration.json'; | ||||
| import * as IOwnableFeature from '../test/generated-artifacts/IOwnableFeature.json'; | ||||
| import * as ISignatureValidatorFeature from '../test/generated-artifacts/ISignatureValidatorFeature.json'; | ||||
| import * as ISimpleFunctionRegistryFeature from '../test/generated-artifacts/ISimpleFunctionRegistryFeature.json'; | ||||
| import * as IStaking from '../test/generated-artifacts/IStaking.json'; | ||||
| import * as ITestSimpleFunctionRegistryFeature from '../test/generated-artifacts/ITestSimpleFunctionRegistryFeature.json'; | ||||
| import * as ITokenSpenderFeature from '../test/generated-artifacts/ITokenSpenderFeature.json'; | ||||
| import * as ITransformERC20Feature from '../test/generated-artifacts/ITransformERC20Feature.json'; | ||||
| @@ -43,11 +47,13 @@ import * as LibLiquidityProviderStorage from '../test/generated-artifacts/LibLiq | ||||
| import * as LibMetaTransactionsRichErrors from '../test/generated-artifacts/LibMetaTransactionsRichErrors.json'; | ||||
| import * as LibMetaTransactionsStorage from '../test/generated-artifacts/LibMetaTransactionsStorage.json'; | ||||
| import * as LibMigrate from '../test/generated-artifacts/LibMigrate.json'; | ||||
| import * as LibOrderHash from '../test/generated-artifacts/LibOrderHash.json'; | ||||
| import * as LibOwnableRichErrors from '../test/generated-artifacts/LibOwnableRichErrors.json'; | ||||
| import * as LibOwnableStorage from '../test/generated-artifacts/LibOwnableStorage.json'; | ||||
| import * as LibProxyRichErrors from '../test/generated-artifacts/LibProxyRichErrors.json'; | ||||
| import * as LibProxyStorage from '../test/generated-artifacts/LibProxyStorage.json'; | ||||
| import * as LibReentrancyGuardStorage from '../test/generated-artifacts/LibReentrancyGuardStorage.json'; | ||||
| import * as LibSignature from '../test/generated-artifacts/LibSignature.json'; | ||||
| import * as LibSignatureRichErrors from '../test/generated-artifacts/LibSignatureRichErrors.json'; | ||||
| import * as LibSignedCallData from '../test/generated-artifacts/LibSignedCallData.json'; | ||||
| import * as LibSimpleFunctionRegistryRichErrors from '../test/generated-artifacts/LibSimpleFunctionRegistryRichErrors.json'; | ||||
| @@ -87,13 +93,16 @@ import * as TestFillQuoteTransformerExchange from '../test/generated-artifacts/T | ||||
| import * as TestFillQuoteTransformerHost from '../test/generated-artifacts/TestFillQuoteTransformerHost.json'; | ||||
| import * as TestFullMigration from '../test/generated-artifacts/TestFullMigration.json'; | ||||
| import * as TestInitialMigration from '../test/generated-artifacts/TestInitialMigration.json'; | ||||
| import * as TestLibSignature from '../test/generated-artifacts/TestLibSignature.json'; | ||||
| import * as TestLibTokenSpender from '../test/generated-artifacts/TestLibTokenSpender.json'; | ||||
| import * as TestMetaTransactionsTransformERC20Feature from '../test/generated-artifacts/TestMetaTransactionsTransformERC20Feature.json'; | ||||
| import * as TestMigrator from '../test/generated-artifacts/TestMigrator.json'; | ||||
| import * as TestMintableERC20Token from '../test/generated-artifacts/TestMintableERC20Token.json'; | ||||
| import * as TestMintTokenERC20Transformer from '../test/generated-artifacts/TestMintTokenERC20Transformer.json'; | ||||
| import * as TestProtocolFees from '../test/generated-artifacts/TestProtocolFees.json'; | ||||
| import * as TestSimpleFunctionRegistryFeatureImpl1 from '../test/generated-artifacts/TestSimpleFunctionRegistryFeatureImpl1.json'; | ||||
| import * as TestSimpleFunctionRegistryFeatureImpl2 from '../test/generated-artifacts/TestSimpleFunctionRegistryFeatureImpl2.json'; | ||||
| import * as TestStaking from '../test/generated-artifacts/TestStaking.json'; | ||||
| import * as TestTokenSpender from '../test/generated-artifacts/TestTokenSpender.json'; | ||||
| import * as TestTokenSpenderERC20Token from '../test/generated-artifacts/TestTokenSpenderERC20Token.json'; | ||||
| import * as TestTransformerBase from '../test/generated-artifacts/TestTransformerBase.json'; | ||||
| @@ -124,6 +133,7 @@ export const artifacts = { | ||||
|     LibTransformERC20RichErrors: LibTransformERC20RichErrors as ContractArtifact, | ||||
|     LibWalletRichErrors: LibWalletRichErrors as ContractArtifact, | ||||
|     AllowanceTarget: AllowanceTarget as ContractArtifact, | ||||
|     FeeCollector: FeeCollector as ContractArtifact, | ||||
|     FlashWallet: FlashWallet as ContractArtifact, | ||||
|     IAllowanceTarget: IAllowanceTarget as ContractArtifact, | ||||
|     IFlashWallet: IFlashWallet as ContractArtifact, | ||||
| @@ -147,10 +157,12 @@ export const artifacts = { | ||||
|     TokenSpenderFeature: TokenSpenderFeature as ContractArtifact, | ||||
|     TransformERC20Feature: TransformERC20Feature as ContractArtifact, | ||||
|     UniswapFeature: UniswapFeature as ContractArtifact, | ||||
|     LibSignature: LibSignature as ContractArtifact, | ||||
|     LibSignedCallData: LibSignedCallData as ContractArtifact, | ||||
|     LibTokenSpender: LibTokenSpender as ContractArtifact, | ||||
|     FixinCommon: FixinCommon as ContractArtifact, | ||||
|     FixinEIP712: FixinEIP712 as ContractArtifact, | ||||
|     FixinProtocolFees: FixinProtocolFees as ContractArtifact, | ||||
|     FixinReentrancyGuard: FixinReentrancyGuard as ContractArtifact, | ||||
|     FullMigration: FullMigration as ContractArtifact, | ||||
|     InitialMigration: InitialMigration as ContractArtifact, | ||||
| @@ -188,9 +200,12 @@ export const artifacts = { | ||||
|     MixinUniswap: MixinUniswap as ContractArtifact, | ||||
|     MixinUniswapV2: MixinUniswapV2 as ContractArtifact, | ||||
|     MixinZeroExBridge: MixinZeroExBridge as ContractArtifact, | ||||
|     ILiquidityProvider: ILiquidityProvider as ContractArtifact, | ||||
|     IERC20Bridge: IERC20Bridge as ContractArtifact, | ||||
|     IExchange: IExchange as ContractArtifact, | ||||
|     IGasToken: IGasToken as ContractArtifact, | ||||
|     IStaking: IStaking as ContractArtifact, | ||||
|     LibOrderHash: LibOrderHash as ContractArtifact, | ||||
|     ITestSimpleFunctionRegistryFeature: ITestSimpleFunctionRegistryFeature as ContractArtifact, | ||||
|     TestBridge: TestBridge as ContractArtifact, | ||||
|     TestCallTarget: TestCallTarget as ContractArtifact, | ||||
| @@ -200,13 +215,16 @@ export const artifacts = { | ||||
|     TestFillQuoteTransformerHost: TestFillQuoteTransformerHost as ContractArtifact, | ||||
|     TestFullMigration: TestFullMigration as ContractArtifact, | ||||
|     TestInitialMigration: TestInitialMigration as ContractArtifact, | ||||
|     TestLibSignature: TestLibSignature as ContractArtifact, | ||||
|     TestLibTokenSpender: TestLibTokenSpender as ContractArtifact, | ||||
|     TestMetaTransactionsTransformERC20Feature: TestMetaTransactionsTransformERC20Feature as ContractArtifact, | ||||
|     TestMigrator: TestMigrator as ContractArtifact, | ||||
|     TestMintTokenERC20Transformer: TestMintTokenERC20Transformer as ContractArtifact, | ||||
|     TestMintableERC20Token: TestMintableERC20Token as ContractArtifact, | ||||
|     TestProtocolFees: TestProtocolFees as ContractArtifact, | ||||
|     TestSimpleFunctionRegistryFeatureImpl1: TestSimpleFunctionRegistryFeatureImpl1 as ContractArtifact, | ||||
|     TestSimpleFunctionRegistryFeatureImpl2: TestSimpleFunctionRegistryFeatureImpl2 as ContractArtifact, | ||||
|     TestStaking: TestStaking as ContractArtifact, | ||||
|     TestTokenSpender: TestTokenSpender as ContractArtifact, | ||||
|     TestTokenSpenderERC20Token: TestTokenSpenderERC20Token as ContractArtifact, | ||||
|     TestTransformERC20: TestTransformERC20 as ContractArtifact, | ||||
|   | ||||
							
								
								
									
										98
									
								
								contracts/zero-ex/test/lib_signature_test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								contracts/zero-ex/test/lib_signature_test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| import { blockchainTests, expect } from '@0x/contracts-test-utils'; | ||||
| import { hexUtils } from '@0x/utils'; | ||||
| import * as ethjs from 'ethereumjs-util'; | ||||
|  | ||||
| import { SignatureValidationError, SignatureValidationErrorCodes } from '../src/revert_errors'; | ||||
| import { eip712SignHashWithKey, ethSignHashWithKey, SignatureType } from '../src/signature_utils'; | ||||
|  | ||||
| import { artifacts } from './artifacts'; | ||||
| import { TestLibSignatureContract } from './wrappers'; | ||||
|  | ||||
| const EMPTY_REVERT = 'reverted with no data'; | ||||
|  | ||||
| blockchainTests.resets('LibSignature library', env => { | ||||
|     let testLib: TestLibSignatureContract; | ||||
|     let signerKey: string; | ||||
|     let signer: string; | ||||
|  | ||||
|     before(async () => { | ||||
|         signerKey = hexUtils.random(); | ||||
|         signer = ethjs.bufferToHex(ethjs.privateToAddress(ethjs.toBuffer(signerKey))); | ||||
|         testLib = await TestLibSignatureContract.deployFrom0xArtifactAsync( | ||||
|             artifacts.TestLibSignature, | ||||
|             env.provider, | ||||
|             env.txDefaults, | ||||
|             artifacts, | ||||
|         ); | ||||
|     }); | ||||
|  | ||||
|     describe('getSignerOfHash()', () => { | ||||
|         it('can recover the signer of an EIP712 signature', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const sig = eip712SignHashWithKey(hash, signerKey); | ||||
|             const recovered = await testLib.getSignerOfHash(hash, sig).callAsync(); | ||||
|             expect(recovered).to.eq(signer); | ||||
|         }); | ||||
|  | ||||
|         it('can recover the signer of an EthSign signature', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const sig = ethSignHashWithKey(hash, signerKey); | ||||
|             const recovered = await testLib.getSignerOfHash(hash, sig).callAsync(); | ||||
|             expect(recovered).to.eq(signer); | ||||
|         }); | ||||
|  | ||||
|         it('throws if the signature type is out of range', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const badType = (Object.values(SignatureType).slice(-1)[0] as number) + 1; | ||||
|             const sig = { | ||||
|                 ...ethSignHashWithKey(hash, signerKey), | ||||
|                 signatureType: badType, | ||||
|             }; | ||||
|             return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.be.rejectedWith(EMPTY_REVERT); | ||||
|         }); | ||||
|  | ||||
|         it('throws if the signature data is malformed', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const sig = { | ||||
|                 ...ethSignHashWithKey(hash, signerKey), | ||||
|                 v: 1, | ||||
|             }; | ||||
|             return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( | ||||
|                 new SignatureValidationError(SignatureValidationErrorCodes.BadSignatureData, hash), | ||||
|             ); | ||||
|         }); | ||||
|  | ||||
|         it('throws if an EC value is out of range', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const sig = { | ||||
|                 ...ethSignHashWithKey(hash, signerKey), | ||||
|                 r: '0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', | ||||
|             }; | ||||
|             return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( | ||||
|                 new SignatureValidationError(SignatureValidationErrorCodes.BadSignatureData, hash), | ||||
|             ); | ||||
|         }); | ||||
|  | ||||
|         it('throws if the type is Illegal', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const sig = { | ||||
|                 ...ethSignHashWithKey(hash, signerKey), | ||||
|                 signatureType: SignatureType.Illegal, | ||||
|             }; | ||||
|             return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( | ||||
|                 new SignatureValidationError(SignatureValidationErrorCodes.Illegal, hash), | ||||
|             ); | ||||
|         }); | ||||
|  | ||||
|         it('throws if the type is Invalid', async () => { | ||||
|             const hash = hexUtils.random(); | ||||
|             const sig = { | ||||
|                 ...ethSignHashWithKey(hash, signerKey), | ||||
|                 signatureType: SignatureType.Invalid, | ||||
|             }; | ||||
|             return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( | ||||
|                 new SignatureValidationError(SignatureValidationErrorCodes.AlwaysInvalid, hash), | ||||
|             ); | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
							
								
								
									
										75
									
								
								contracts/zero-ex/test/protocol_fees_test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								contracts/zero-ex/test/protocol_fees_test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| import { blockchainTests, constants, expect } from '@0x/contracts-test-utils'; | ||||
| import { BigNumber, hexUtils } from '@0x/utils'; | ||||
|  | ||||
| import { artifacts } from './artifacts'; | ||||
| import { TestProtocolFeesContract, TestStakingContract, TestWethContract } from './wrappers'; | ||||
|  | ||||
| blockchainTests.resets('ProtocolFees', env => { | ||||
|     let payer: string; | ||||
|     let protocolFees: TestProtocolFeesContract; | ||||
|     let staking: TestStakingContract; | ||||
|     let weth: TestWethContract; | ||||
|  | ||||
|     before(async () => { | ||||
|         [payer] = await env.getAccountAddressesAsync(); | ||||
|         protocolFees = await TestProtocolFeesContract.deployFrom0xArtifactAsync( | ||||
|             artifacts.TestProtocolFees, | ||||
|             env.provider, | ||||
|             env.txDefaults, | ||||
|             artifacts, | ||||
|         ); | ||||
|         weth = await TestWethContract.deployFrom0xArtifactAsync( | ||||
|             artifacts.TestWeth, | ||||
|             env.provider, | ||||
|             env.txDefaults, | ||||
|             artifacts, | ||||
|         ); | ||||
|         staking = await TestStakingContract.deployFrom0xArtifactAsync( | ||||
|             artifacts.TestStaking, | ||||
|             env.provider, | ||||
|             env.txDefaults, | ||||
|             artifacts, | ||||
|             weth.address, | ||||
|         ); | ||||
|         await weth.mint(payer, constants.ONE_ETHER).awaitTransactionSuccessAsync(); | ||||
|         await weth.approve(protocolFees.address, constants.ONE_ETHER).awaitTransactionSuccessAsync({ from: payer }); | ||||
|     }); | ||||
|  | ||||
|     describe('_collectProtocolFee()', () => { | ||||
|         it('can collect a protocol fee multiple times', async () => { | ||||
|             const poolId = hexUtils.random(); | ||||
|             const amount1 = new BigNumber(123456); | ||||
|             const amount2 = new BigNumber(456789); | ||||
|  | ||||
|             // Transfer amount1 via WETH. | ||||
|             await protocolFees | ||||
|                 .collectProtocolFee(poolId, amount1, weth.address) | ||||
|                 .awaitTransactionSuccessAsync({ from: payer }); | ||||
|  | ||||
|             // Send to staking contract. | ||||
|             await protocolFees | ||||
|                 .transferFeesForPool(poolId, staking.address, weth.address) | ||||
|                 .awaitTransactionSuccessAsync(); | ||||
|  | ||||
|             // Transfer amount2 via ETH. | ||||
|             await protocolFees | ||||
|                 .collectProtocolFee(poolId, amount2, weth.address) | ||||
|                 .awaitTransactionSuccessAsync({ from: payer, value: amount2 }); | ||||
|  | ||||
|             // Send to staking contract again. | ||||
|             await protocolFees | ||||
|                 .transferFeesForPool(poolId, staking.address, weth.address) | ||||
|                 .awaitTransactionSuccessAsync(); | ||||
|  | ||||
|             const balance = await staking.balanceForPool(poolId).callAsync(); | ||||
|             const wethBalance = await weth.balanceOf(staking.address).callAsync(); | ||||
|  | ||||
|             // Check that staking accounted for the collected ether properly. | ||||
|             expect(balance).to.bignumber.eq(wethBalance); | ||||
|  | ||||
|             // We leave 1 wei behind, of both ETH and WETH, for gas reasons. | ||||
|             const total = amount1.plus(amount2).minus(2); | ||||
|             return expect(balance).to.bignumber.eq(total); | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
| @@ -77,7 +77,6 @@ blockchainTests.resets('FillQuoteTransformer', env => { | ||||
|                 mStable: NULL_ADDRESS, | ||||
|                 weth: NULL_ADDRESS, | ||||
|                 shellBridge: NULL_ADDRESS, | ||||
|                 shell: NULL_ADDRESS, | ||||
|                 creamBridge: NULL_ADDRESS, | ||||
|                 dodoBridge: NULL_ADDRESS, | ||||
|                 dodoHelper: NULL_ADDRESS, | ||||
|   | ||||
| @@ -7,9 +7,11 @@ export * from '../test/generated-wrappers/affiliate_fee_transformer'; | ||||
| export * from '../test/generated-wrappers/allowance_target'; | ||||
| export * from '../test/generated-wrappers/bootstrap_feature'; | ||||
| export * from '../test/generated-wrappers/bridge_adapter'; | ||||
| export * from '../test/generated-wrappers/fee_collector'; | ||||
| export * from '../test/generated-wrappers/fill_quote_transformer'; | ||||
| export * from '../test/generated-wrappers/fixin_common'; | ||||
| export * from '../test/generated-wrappers/fixin_e_i_p712'; | ||||
| export * from '../test/generated-wrappers/fixin_protocol_fees'; | ||||
| export * from '../test/generated-wrappers/fixin_reentrancy_guard'; | ||||
| export * from '../test/generated-wrappers/flash_wallet'; | ||||
| export * from '../test/generated-wrappers/full_migration'; | ||||
| @@ -22,11 +24,13 @@ export * from '../test/generated-wrappers/i_exchange'; | ||||
| export * from '../test/generated-wrappers/i_feature'; | ||||
| export * from '../test/generated-wrappers/i_flash_wallet'; | ||||
| export * from '../test/generated-wrappers/i_gas_token'; | ||||
| export * from '../test/generated-wrappers/i_liquidity_provider'; | ||||
| export * from '../test/generated-wrappers/i_liquidity_provider_feature'; | ||||
| export * from '../test/generated-wrappers/i_meta_transactions_feature'; | ||||
| export * from '../test/generated-wrappers/i_ownable_feature'; | ||||
| export * from '../test/generated-wrappers/i_signature_validator_feature'; | ||||
| export * from '../test/generated-wrappers/i_simple_function_registry_feature'; | ||||
| export * from '../test/generated-wrappers/i_staking'; | ||||
| export * from '../test/generated-wrappers/i_test_simple_function_registry_feature'; | ||||
| export * from '../test/generated-wrappers/i_token_spender_feature'; | ||||
| export * from '../test/generated-wrappers/i_transform_erc20_feature'; | ||||
| @@ -41,11 +45,13 @@ export * from '../test/generated-wrappers/lib_liquidity_provider_storage'; | ||||
| export * from '../test/generated-wrappers/lib_meta_transactions_rich_errors'; | ||||
| export * from '../test/generated-wrappers/lib_meta_transactions_storage'; | ||||
| export * from '../test/generated-wrappers/lib_migrate'; | ||||
| export * from '../test/generated-wrappers/lib_order_hash'; | ||||
| export * from '../test/generated-wrappers/lib_ownable_rich_errors'; | ||||
| export * from '../test/generated-wrappers/lib_ownable_storage'; | ||||
| export * from '../test/generated-wrappers/lib_proxy_rich_errors'; | ||||
| export * from '../test/generated-wrappers/lib_proxy_storage'; | ||||
| export * from '../test/generated-wrappers/lib_reentrancy_guard_storage'; | ||||
| export * from '../test/generated-wrappers/lib_signature'; | ||||
| export * from '../test/generated-wrappers/lib_signature_rich_errors'; | ||||
| export * from '../test/generated-wrappers/lib_signed_call_data'; | ||||
| export * from '../test/generated-wrappers/lib_simple_function_registry_rich_errors'; | ||||
| @@ -85,13 +91,16 @@ export * from '../test/generated-wrappers/test_fill_quote_transformer_exchange'; | ||||
| export * from '../test/generated-wrappers/test_fill_quote_transformer_host'; | ||||
| export * from '../test/generated-wrappers/test_full_migration'; | ||||
| export * from '../test/generated-wrappers/test_initial_migration'; | ||||
| export * from '../test/generated-wrappers/test_lib_signature'; | ||||
| export * from '../test/generated-wrappers/test_lib_token_spender'; | ||||
| export * from '../test/generated-wrappers/test_meta_transactions_transform_erc20_feature'; | ||||
| export * from '../test/generated-wrappers/test_migrator'; | ||||
| export * from '../test/generated-wrappers/test_mint_token_erc20_transformer'; | ||||
| export * from '../test/generated-wrappers/test_mintable_erc20_token'; | ||||
| export * from '../test/generated-wrappers/test_protocol_fees'; | ||||
| export * from '../test/generated-wrappers/test_simple_function_registry_feature_impl1'; | ||||
| export * from '../test/generated-wrappers/test_simple_function_registry_feature_impl2'; | ||||
| export * from '../test/generated-wrappers/test_staking'; | ||||
| export * from '../test/generated-wrappers/test_token_spender'; | ||||
| export * from '../test/generated-wrappers/test_token_spender_erc20_token'; | ||||
| export * from '../test/generated-wrappers/test_transform_erc20'; | ||||
|   | ||||
| @@ -31,9 +31,11 @@ | ||||
|         "test/generated-artifacts/AllowanceTarget.json", | ||||
|         "test/generated-artifacts/BootstrapFeature.json", | ||||
|         "test/generated-artifacts/BridgeAdapter.json", | ||||
|         "test/generated-artifacts/FeeCollector.json", | ||||
|         "test/generated-artifacts/FillQuoteTransformer.json", | ||||
|         "test/generated-artifacts/FixinCommon.json", | ||||
|         "test/generated-artifacts/FixinEIP712.json", | ||||
|         "test/generated-artifacts/FixinProtocolFees.json", | ||||
|         "test/generated-artifacts/FixinReentrancyGuard.json", | ||||
|         "test/generated-artifacts/FlashWallet.json", | ||||
|         "test/generated-artifacts/FullMigration.json", | ||||
| @@ -46,11 +48,13 @@ | ||||
|         "test/generated-artifacts/IFeature.json", | ||||
|         "test/generated-artifacts/IFlashWallet.json", | ||||
|         "test/generated-artifacts/IGasToken.json", | ||||
|         "test/generated-artifacts/ILiquidityProvider.json", | ||||
|         "test/generated-artifacts/ILiquidityProviderFeature.json", | ||||
|         "test/generated-artifacts/IMetaTransactionsFeature.json", | ||||
|         "test/generated-artifacts/IOwnableFeature.json", | ||||
|         "test/generated-artifacts/ISignatureValidatorFeature.json", | ||||
|         "test/generated-artifacts/ISimpleFunctionRegistryFeature.json", | ||||
|         "test/generated-artifacts/IStaking.json", | ||||
|         "test/generated-artifacts/ITestSimpleFunctionRegistryFeature.json", | ||||
|         "test/generated-artifacts/ITokenSpenderFeature.json", | ||||
|         "test/generated-artifacts/ITransformERC20Feature.json", | ||||
| @@ -65,11 +69,13 @@ | ||||
|         "test/generated-artifacts/LibMetaTransactionsRichErrors.json", | ||||
|         "test/generated-artifacts/LibMetaTransactionsStorage.json", | ||||
|         "test/generated-artifacts/LibMigrate.json", | ||||
|         "test/generated-artifacts/LibOrderHash.json", | ||||
|         "test/generated-artifacts/LibOwnableRichErrors.json", | ||||
|         "test/generated-artifacts/LibOwnableStorage.json", | ||||
|         "test/generated-artifacts/LibProxyRichErrors.json", | ||||
|         "test/generated-artifacts/LibProxyStorage.json", | ||||
|         "test/generated-artifacts/LibReentrancyGuardStorage.json", | ||||
|         "test/generated-artifacts/LibSignature.json", | ||||
|         "test/generated-artifacts/LibSignatureRichErrors.json", | ||||
|         "test/generated-artifacts/LibSignedCallData.json", | ||||
|         "test/generated-artifacts/LibSimpleFunctionRegistryRichErrors.json", | ||||
| @@ -109,13 +115,16 @@ | ||||
|         "test/generated-artifacts/TestFillQuoteTransformerHost.json", | ||||
|         "test/generated-artifacts/TestFullMigration.json", | ||||
|         "test/generated-artifacts/TestInitialMigration.json", | ||||
|         "test/generated-artifacts/TestLibSignature.json", | ||||
|         "test/generated-artifacts/TestLibTokenSpender.json", | ||||
|         "test/generated-artifacts/TestMetaTransactionsTransformERC20Feature.json", | ||||
|         "test/generated-artifacts/TestMigrator.json", | ||||
|         "test/generated-artifacts/TestMintTokenERC20Transformer.json", | ||||
|         "test/generated-artifacts/TestMintableERC20Token.json", | ||||
|         "test/generated-artifacts/TestProtocolFees.json", | ||||
|         "test/generated-artifacts/TestSimpleFunctionRegistryFeatureImpl1.json", | ||||
|         "test/generated-artifacts/TestSimpleFunctionRegistryFeatureImpl2.json", | ||||
|         "test/generated-artifacts/TestStaking.json", | ||||
|         "test/generated-artifacts/TestTokenSpender.json", | ||||
|         "test/generated-artifacts/TestTokenSpenderERC20Token.json", | ||||
|         "test/generated-artifacts/TestTransformERC20.json", | ||||
|   | ||||
							
								
								
									
										64
									
								
								doc-gen-config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								doc-gen-config.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| { | ||||
|     "docJsonVersion": "0.0.1", | ||||
|     "externalTypeMap": { | ||||
|         "Array": true, | ||||
|         "BigNumber": true, | ||||
|         "Error": true, | ||||
|         "ErrorConstructor": true, | ||||
|         "Buffer": true, | ||||
|         "solc.StandardContractOutput": true, | ||||
|         "solc.CompilerSettings": true, | ||||
|         "Schema": true, | ||||
|         "Uint8Array": true, | ||||
|         "GanacheOpts": true, | ||||
|         "keystore": true, | ||||
|         "Ganache.GanacheOpts": true, | ||||
|         "PromiseWithTransactionHash": true, | ||||
|         "Buy": true, | ||||
|         "Sell": true, | ||||
|         "TFillData": true, | ||||
|         "IterableIterator": true, | ||||
|         "Set": true, | ||||
|         "Exclude": true | ||||
|     }, | ||||
|     "ignoredExcessiveTypes": [ | ||||
|         "NonceSubproviderErrors", | ||||
|         "Web3WrapperErrors", | ||||
|         "AssetBuyerError", | ||||
|         "ContractError", | ||||
|         "SubscriptionErrors", | ||||
|         "TypedDataError", | ||||
|         "SwapQuoterError", | ||||
|         "SwapQuoteConsumerError", | ||||
|         "SwapQuoteGetOutputOpts", | ||||
|         "SwapQuoteExecutionOpts", | ||||
|         "ForwarderError", | ||||
|         "CoordinatorServerError", | ||||
|         "CoordinatorServerCancellationResponse", | ||||
|         "EventCallback", | ||||
|         "IndexedFilterValues", | ||||
|         "OrderInfo", | ||||
|         "TransactionOpts", | ||||
|         "ContractEvent", | ||||
|         "SendTransactionOpts", | ||||
|         "AwaitTransactionOpts", | ||||
|         "ContractFunctionObj", | ||||
|         "ContractTxFunctionObj", | ||||
|         "EventCallback ", | ||||
|         "EnvVars", | ||||
|         "GlobalStakeByStatus", | ||||
|         "OwnerStakeByStatus", | ||||
|         "StakingPoolById", | ||||
|         "AssetData", | ||||
|         "SingleAssetData", | ||||
|         "ERC20AssetData", | ||||
|         "ERC20BridgeAssetData", | ||||
|         "ERC721AssetData", | ||||
|         "ERC1155AssetData", | ||||
|         "MultiAssetData", | ||||
|         "StaticCallAssetData", | ||||
|         "MultiAssetDataWithRecursiveDecoding", | ||||
|         "OrderPrunerPermittedFeeTypes" | ||||
|     ], | ||||
|     "typesOnlyLibraries": ["@0x/protocol-types"] | ||||
| } | ||||
							
								
								
									
										1
									
								
								docs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| _build* | ||||
							
								
								
									
										177
									
								
								docs/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								docs/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,177 @@ | ||||
| # Makefile for Sphinx documentation | ||||
| # | ||||
|  | ||||
| # You can set these variables from the command line. | ||||
| SPHINXOPTS    = | ||||
| SPHINXBUILD   = sphinx-build | ||||
| PAPER         = | ||||
| BUILDDIR      = _build | ||||
|  | ||||
| # User-friendly check for sphinx-build | ||||
| ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) | ||||
| $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) | ||||
| endif | ||||
|  | ||||
| # Internal variables. | ||||
| PAPEROPT_a4     = -D latex_paper_size=a4 | ||||
| PAPEROPT_letter = -D latex_paper_size=letter | ||||
| ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||||
| # the i18n builder cannot share the environment and doctrees with the others | ||||
| I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||||
|  | ||||
| .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext | ||||
|  | ||||
| help: | ||||
| 	@echo "Please use \`make <target>' where <target> is one of" | ||||
| 	@echo "  html       to make standalone HTML files" | ||||
| 	@echo "  dirhtml    to make HTML files named index.html in directories" | ||||
| 	@echo "  singlehtml to make a single large HTML file" | ||||
| 	@echo "  pickle     to make pickle files" | ||||
| 	@echo "  json       to make JSON files" | ||||
| 	@echo "  htmlhelp   to make HTML files and a HTML help project" | ||||
| 	@echo "  qthelp     to make HTML files and a qthelp project" | ||||
| 	@echo "  devhelp    to make HTML files and a Devhelp project" | ||||
| 	@echo "  epub       to make an epub" | ||||
| 	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter" | ||||
| 	@echo "  latexpdf   to make LaTeX files and run them through pdflatex" | ||||
| 	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx" | ||||
| 	@echo "  text       to make text files" | ||||
| 	@echo "  man        to make manual pages" | ||||
| 	@echo "  texinfo    to make Texinfo files" | ||||
| 	@echo "  info       to make Texinfo files and run them through makeinfo" | ||||
| 	@echo "  gettext    to make PO message catalogs" | ||||
| 	@echo "  changes    to make an overview of all changed/added/deprecated items" | ||||
| 	@echo "  xml        to make Docutils-native XML files" | ||||
| 	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes" | ||||
| 	@echo "  linkcheck  to check all external links for integrity" | ||||
| 	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)" | ||||
|  | ||||
| clean: | ||||
| 	rm -rf $(BUILDDIR)/* | ||||
|  | ||||
| html: | ||||
| 	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html | ||||
| 	@echo | ||||
| 	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html." | ||||
|  | ||||
| dirhtml: | ||||
| 	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml | ||||
| 	@echo | ||||
| 	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." | ||||
|  | ||||
| singlehtml: | ||||
| 	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml | ||||
| 	@echo | ||||
| 	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." | ||||
|  | ||||
| pickle: | ||||
| 	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle | ||||
| 	@echo | ||||
| 	@echo "Build finished; now you can process the pickle files." | ||||
|  | ||||
| json: | ||||
| 	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json | ||||
| 	@echo | ||||
| 	@echo "Build finished; now you can process the JSON files." | ||||
|  | ||||
| htmlhelp: | ||||
| 	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp | ||||
| 	@echo | ||||
| 	@echo "Build finished; now you can run HTML Help Workshop with the" \ | ||||
| 	      ".hhp project file in $(BUILDDIR)/htmlhelp." | ||||
|  | ||||
| qthelp: | ||||
| 	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp | ||||
| 	@echo | ||||
| 	@echo "Build finished; now you can run "qcollectiongenerator" with the" \ | ||||
| 	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:" | ||||
| 	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ReadtheDocsTemplate.qhcp" | ||||
| 	@echo "To view the help file:" | ||||
| 	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ReadtheDocsTemplate.qhc" | ||||
|  | ||||
| devhelp: | ||||
| 	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp | ||||
| 	@echo | ||||
| 	@echo "Build finished." | ||||
| 	@echo "To view the help file:" | ||||
| 	@echo "# mkdir -p $$HOME/.local/share/devhelp/ReadtheDocsTemplate" | ||||
| 	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ReadtheDocsTemplate" | ||||
| 	@echo "# devhelp" | ||||
|  | ||||
| epub: | ||||
| 	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub | ||||
| 	@echo | ||||
| 	@echo "Build finished. The epub file is in $(BUILDDIR)/epub." | ||||
|  | ||||
| latex: | ||||
| 	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||||
| 	@echo | ||||
| 	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." | ||||
| 	@echo "Run \`make' in that directory to run these through (pdf)latex" \ | ||||
| 	      "(use \`make latexpdf' here to do that automatically)." | ||||
|  | ||||
| latexpdf: | ||||
| 	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||||
| 	@echo "Running LaTeX files through pdflatex..." | ||||
| 	$(MAKE) -C $(BUILDDIR)/latex all-pdf | ||||
| 	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | ||||
|  | ||||
| latexpdfja: | ||||
| 	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||||
| 	@echo "Running LaTeX files through platex and dvipdfmx..." | ||||
| 	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja | ||||
| 	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | ||||
|  | ||||
| text: | ||||
| 	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text | ||||
| 	@echo | ||||
| 	@echo "Build finished. The text files are in $(BUILDDIR)/text." | ||||
|  | ||||
| man: | ||||
| 	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man | ||||
| 	@echo | ||||
| 	@echo "Build finished. The manual pages are in $(BUILDDIR)/man." | ||||
|  | ||||
| texinfo: | ||||
| 	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | ||||
| 	@echo | ||||
| 	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." | ||||
| 	@echo "Run \`make' in that directory to run these through makeinfo" \ | ||||
| 	      "(use \`make info' here to do that automatically)." | ||||
|  | ||||
| info: | ||||
| 	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | ||||
| 	@echo "Running Texinfo files through makeinfo..." | ||||
| 	make -C $(BUILDDIR)/texinfo info | ||||
| 	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." | ||||
|  | ||||
| gettext: | ||||
| 	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale | ||||
| 	@echo | ||||
| 	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." | ||||
|  | ||||
| changes: | ||||
| 	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes | ||||
| 	@echo | ||||
| 	@echo "The overview file is in $(BUILDDIR)/changes." | ||||
|  | ||||
| linkcheck: | ||||
| 	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck | ||||
| 	@echo | ||||
| 	@echo "Link check complete; look for any errors in the above output " \ | ||||
| 	      "or in $(BUILDDIR)/linkcheck/output.txt." | ||||
|  | ||||
| doctest: | ||||
| 	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest | ||||
| 	@echo "Testing of doctests in the sources finished, look at the " \ | ||||
| 	      "results in $(BUILDDIR)/doctest/output.txt." | ||||
|  | ||||
| xml: | ||||
| 	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml | ||||
| 	@echo | ||||
| 	@echo "Build finished. The XML files are in $(BUILDDIR)/xml." | ||||
|  | ||||
| pseudoxml: | ||||
| 	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml | ||||
| 	@echo | ||||
| 	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." | ||||
							
								
								
									
										18
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| ### Dependencies | ||||
| ```bash | ||||
|     pip3 install sphinx recommonmark | ||||
| ``` | ||||
|  | ||||
| ### Syntax | ||||
| Documentation can be written in [Markdown](https://en.wikipedia.org/wiki/Markdown) (.md) or [Restructured Text](https://en.wikipedia.org/wiki/ReStructuredText) (.rst). | ||||
|  | ||||
| ### Build and Test | ||||
| ```bash | ||||
| cd docs | ||||
| make html | ||||
| open _build/html/index.html | ||||
| ``` | ||||
|  | ||||
| ### Tips | ||||
| * Generate RST tables [here](https://www.tablesgenerator.com/text_tables#). | ||||
| * Set your editor's ruler to `100` characters. | ||||
							
								
								
									
										13
									
								
								docs/_static/theme_overrides.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								docs/_static/theme_overrides.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| /* override table width restrictions */ | ||||
| @media screen and (min-width: 767px) { | ||||
|  | ||||
|     .wy-table-responsive table td { | ||||
|        /* !important prevents the common CSS stylesheets from overriding | ||||
|           this as on RTD they are loaded after this stylesheet */ | ||||
|        white-space: normal !important; | ||||
|     } | ||||
|   | ||||
|     .wy-table-responsive { | ||||
|        overflow: visible !important; | ||||
|     } | ||||
|  } | ||||
							
								
								
									
										3
									
								
								docs/additional/audits.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/additional/audits.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Audits | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/additional/bounties.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/additional/bounties.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Bounties | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/additional/contributing.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/additional/contributing.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Contributing | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/advanced/aggregation.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/advanced/aggregation.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Aggregation | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/advanced/erc20_transformations.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/advanced/erc20_transformations.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| ERC20 Transformations | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/advanced/private_liquidity_pools.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/advanced/private_liquidity_pools.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Private Liquidity Poools | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/advanced/request_for_quote.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/advanced/request_for_quote.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Request for Quote | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/advanced/vip_paths.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/advanced/vip_paths.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| VIP Paths | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/advanced/weth_wrapping.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/advanced/weth_wrapping.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| WETH Wrapping | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/architecture/features.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/architecture/features.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Features | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/architecture/flash_wallet.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/architecture/flash_wallet.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Flash Wallet | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/architecture/overview.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/architecture/overview.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Overview | ||||
| ############################### | ||||
							
								
								
									
										3
									
								
								docs/architecture/proxy.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/architecture/proxy.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ############################### | ||||
| Proxy | ||||
| ############################### | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user