From d88af4dfa6b15d8e1d6d3fc4ec75b67f6ee0e652 Mon Sep 17 00:00:00 2001 From: Greg Hysen Date: Thu, 14 Mar 2019 21:30:56 -0700 Subject: [PATCH 1/3] Bumped version of ERC1155Proxy to 0.5.5 + merged ERC20Proxy/ERC721Proxy/MultiAssetProxy dependencies into base contract files --- contracts/asset-proxy/CHANGELOG.json | 4 ++++ contracts/asset-proxy/contracts/src/ERC1155Proxy.sol | 2 +- contracts/asset-proxy/contracts/src/ERC20Proxy.sol | 2 +- contracts/asset-proxy/contracts/src/ERC721Proxy.sol | 2 +- .../contracts/src/MixinAssetProxyDispatcher.sol | 8 ++++---- contracts/asset-proxy/contracts/src/MixinAuthorizable.sol | 2 +- contracts/asset-proxy/contracts/src/MultiAssetProxy.sol | 2 +- .../asset-proxy/contracts/src/interfaces/IAssetData.sol | 6 +++--- .../asset-proxy/contracts/src/interfaces/IAssetProxy.sol | 4 ++-- .../contracts/src/interfaces/IAssetProxyDispatcher.sol | 2 +- .../contracts/src/interfaces/IAuthorizable.sol | 2 +- .../contracts/src/mixins/MAssetProxyDispatcher.sol | 2 +- .../asset-proxy/contracts/src/mixins/MAuthorizable.sol | 2 +- contracts/asset-proxy/package.json | 2 +- 14 files changed, 23 insertions(+), 19 deletions(-) diff --git a/contracts/asset-proxy/CHANGELOG.json b/contracts/asset-proxy/CHANGELOG.json index 40f67bad8e..d4a8083933 100644 --- a/contracts/asset-proxy/CHANGELOG.json +++ b/contracts/asset-proxy/CHANGELOG.json @@ -13,6 +13,10 @@ { "note": "Add ERC1155Proxy", "pr": 1661 + }, + { + "note": "Bumped solidity version to ^0.5.5", + "pr": 1701 } ] }, diff --git a/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol b/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol index b11f0d8d7d..1249616714 100644 --- a/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol +++ b/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol @@ -16,7 +16,7 @@ */ -pragma solidity 0.4.24; +pragma solidity ^0.5.5; import "./MixinAuthorizable.sol"; diff --git a/contracts/asset-proxy/contracts/src/ERC20Proxy.sol b/contracts/asset-proxy/contracts/src/ERC20Proxy.sol index 258443bca9..446d879c71 100644 --- a/contracts/asset-proxy/contracts/src/ERC20Proxy.sol +++ b/contracts/asset-proxy/contracts/src/ERC20Proxy.sol @@ -16,7 +16,7 @@ */ -pragma solidity 0.4.24; +pragma solidity ^0.5.5; import "./MixinAuthorizable.sol"; diff --git a/contracts/asset-proxy/contracts/src/ERC721Proxy.sol b/contracts/asset-proxy/contracts/src/ERC721Proxy.sol index 65b664b8b3..7730eda532 100644 --- a/contracts/asset-proxy/contracts/src/ERC721Proxy.sol +++ b/contracts/asset-proxy/contracts/src/ERC721Proxy.sol @@ -16,7 +16,7 @@ */ -pragma solidity 0.4.24; +pragma solidity ^0.5.5; import "./MixinAuthorizable.sol"; diff --git a/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol b/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol index 36c287ea34..8ac521e384 100644 --- a/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol +++ b/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; import "@0x/contracts-utils/contracts/src/Ownable.sol"; import "./mixins/MAssetProxyDispatcher.sol"; @@ -41,7 +41,7 @@ contract MixinAssetProxyDispatcher is // Ensure that no asset proxy exists with current id. bytes4 assetProxyId = assetProxyContract.getProxyId(); - address currentAssetProxy = assetProxies[assetProxyId]; + address currentAssetProxy = address(assetProxies[assetProxyId]); require( currentAssetProxy == address(0), "ASSET_PROXY_ALREADY_EXISTS" @@ -63,7 +63,7 @@ contract MixinAssetProxyDispatcher is view returns (address) { - return assetProxies[assetProxyId]; + return address(assetProxies[assetProxyId]); } /// @dev Forwards arguments to assetProxy and calls `transferFrom`. Either succeeds or throws. @@ -95,7 +95,7 @@ contract MixinAssetProxyDispatcher is 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 ) } - address assetProxy = assetProxies[assetProxyId]; + address assetProxy = address(assetProxies[assetProxyId]); // Ensure that assetProxy exists require( diff --git a/contracts/asset-proxy/contracts/src/MixinAuthorizable.sol b/contracts/asset-proxy/contracts/src/MixinAuthorizable.sol index ace820625c..a7fc9d155d 100644 --- a/contracts/asset-proxy/contracts/src/MixinAuthorizable.sol +++ b/contracts/asset-proxy/contracts/src/MixinAuthorizable.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; import "@0x/contracts-utils/contracts/src/Ownable.sol"; import "./mixins/MAuthorizable.sol"; diff --git a/contracts/asset-proxy/contracts/src/MultiAssetProxy.sol b/contracts/asset-proxy/contracts/src/MultiAssetProxy.sol index 0b2cb41348..b26d8c0138 100644 --- a/contracts/asset-proxy/contracts/src/MultiAssetProxy.sol +++ b/contracts/asset-proxy/contracts/src/MultiAssetProxy.sol @@ -16,7 +16,7 @@ */ -pragma solidity 0.4.24; +pragma solidity ^0.5.5; import "./MixinAssetProxyDispatcher.sol"; import "./MixinAuthorizable.sol"; diff --git a/contracts/asset-proxy/contracts/src/interfaces/IAssetData.sol b/contracts/asset-proxy/contracts/src/interfaces/IAssetData.sol index a130e615fc..2f5e49bd93 100644 --- a/contracts/asset-proxy/contracts/src/interfaces/IAssetData.sol +++ b/contracts/asset-proxy/contracts/src/interfaces/IAssetData.sol @@ -17,7 +17,7 @@ */ // solhint-disable -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; pragma experimental ABIEncoderV2; @@ -36,8 +36,8 @@ interface IAssetData { external; function MultiAsset( - uint256[] amounts, - bytes[] nestedAssetData + uint256[] calldata amounts, + bytes[] calldata nestedAssetData ) external; diff --git a/contracts/asset-proxy/contracts/src/interfaces/IAssetProxy.sol b/contracts/asset-proxy/contracts/src/interfaces/IAssetProxy.sol index 706412dd0b..d176b57ade 100644 --- a/contracts/asset-proxy/contracts/src/interfaces/IAssetProxy.sol +++ b/contracts/asset-proxy/contracts/src/interfaces/IAssetProxy.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; import "./IAuthorizable.sol"; @@ -30,7 +30,7 @@ contract IAssetProxy is /// @param to Address to transfer asset to. /// @param amount Amount of asset to transfer. function transferFrom( - bytes assetData, + bytes calldata assetData, address from, address to, uint256 amount diff --git a/contracts/asset-proxy/contracts/src/interfaces/IAssetProxyDispatcher.sol b/contracts/asset-proxy/contracts/src/interfaces/IAssetProxyDispatcher.sol index b73881c077..6ae3c1cbe2 100644 --- a/contracts/asset-proxy/contracts/src/interfaces/IAssetProxyDispatcher.sol +++ b/contracts/asset-proxy/contracts/src/interfaces/IAssetProxyDispatcher.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; contract IAssetProxyDispatcher { diff --git a/contracts/asset-proxy/contracts/src/interfaces/IAuthorizable.sol b/contracts/asset-proxy/contracts/src/interfaces/IAuthorizable.sol index 0df6547117..2fcf3e5110 100644 --- a/contracts/asset-proxy/contracts/src/interfaces/IAuthorizable.sol +++ b/contracts/asset-proxy/contracts/src/interfaces/IAuthorizable.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; import "@0x/contracts-utils/contracts/src/interfaces/IOwnable.sol"; diff --git a/contracts/asset-proxy/contracts/src/mixins/MAssetProxyDispatcher.sol b/contracts/asset-proxy/contracts/src/mixins/MAssetProxyDispatcher.sol index 0ae555ddad..b53e7166e6 100644 --- a/contracts/asset-proxy/contracts/src/mixins/MAssetProxyDispatcher.sol +++ b/contracts/asset-proxy/contracts/src/mixins/MAssetProxyDispatcher.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; import "../interfaces/IAssetProxyDispatcher.sol"; diff --git a/contracts/asset-proxy/contracts/src/mixins/MAuthorizable.sol b/contracts/asset-proxy/contracts/src/mixins/MAuthorizable.sol index c9c07e788b..6b3d0b7d9f 100644 --- a/contracts/asset-proxy/contracts/src/mixins/MAuthorizable.sol +++ b/contracts/asset-proxy/contracts/src/mixins/MAuthorizable.sol @@ -16,7 +16,7 @@ */ -pragma solidity ^0.4.24; +pragma solidity ^0.5.5; import "../interfaces/IAuthorizable.sol"; diff --git a/contracts/asset-proxy/package.json b/contracts/asset-proxy/package.json index 138485472a..36bda3404c 100644 --- a/contracts/asset-proxy/package.json +++ b/contracts/asset-proxy/package.json @@ -71,7 +71,7 @@ "@0x/contracts-erc20": "^1.0.9", "@0x/contracts-erc721": "^1.0.9", "@0x/contracts-erc1155": "^1.0.0", - "@0x/contracts-utils": "2.0.1", + "@0x/contracts-utils": "^2.0.8", "@0x/order-utils": "^7.0.2", "@0x/types": "^2.1.1", "@0x/typescript-typings": "^4.1.0", From 6f17ff55fa2e880ba25373a26c524f1af0755c5a Mon Sep 17 00:00:00 2001 From: Greg Hysen Date: Fri, 15 Mar 2019 11:21:13 -0700 Subject: [PATCH 2/3] Added deployed contract packages to readme (and link to top-level readme) --- README.md | 2 ++ contracts/README.md | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 contracts/README.md diff --git a/README.md b/README.md index cfcc399924..f6299bf43e 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,8 @@ Visit our [developer portal](https://0xproject.com/docs/order-utils) for a compr ### Solidity Packages +These packages are all under development. See [/contracts/README.md](/contracts/README.md) for a list of deployed packages. + | Package | Version | Description | | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [`@0x/contracts-asset-proxy`](/contracts/asset-proxy) | [![npm](https://img.shields.io/npm/v/@0x/contracts-asset-proxy.svg)](https://www.npmjs.com/package/@0x/contracts-asset-proxy) | [`AssetProxy`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#assetproxy) contracts used within the protocol | diff --git a/contracts/README.md b/contracts/README.md new file mode 100644 index 0000000000..da9db02432 --- /dev/null +++ b/contracts/README.md @@ -0,0 +1,12 @@ +#### Deployed Contract Packages + +| Contract | Package | Version | Git Tag | +| --------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| AssetProxyOwner | [`@0x/contracts-multisig`](/contracts/multisig) | [v1.0.2](https://www.npmjs.com/package/@0x/contracts-multisig/v/1.0.2) | [@0x/contracts-multisig@1.0.2](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-multisig@1.0.2) | +| ERC20Proxy | [`@0x/contracts-asset-proxy`](/contracts/asset-proxy) | [v1.0.1](https://www.npmjs.com/package/@0x/contracts-asset-proxy/v/1.0.1) | [@0x/contracts-asset-proxy@1.0.1](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-asset-proxy@1.0.1) | +| ERC721Proxy | [`@0x/contracts-asset-proxy`](/contracts/asset-proxy) | [v1.0.1](https://www.npmjs.com/package/@0x/contracts-asset-proxy/v/1.0.1) | [@0x/contracts-asset-proxy@1.0.1](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-asset-proxy@1.0.1) | +| Exchange | [`@0x/contracts-exchange`](/contracts/exchange) | [v1.0.1](https://www.npmjs.com/package/@0x/contracts-exchange/v/1.0.1) | [@0x/contracts-exchange@1.0.1](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-exchange@1.0.1) | +| DutchAuction | [`@0x/contracts-extensions`](/contracts/extensions) | [v1.0.2](https://www.npmjs.com/package/@0x/contracts-extensions/v/1.0.2) | [@0x/contracts-extensions@1.0.2](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-extensions@1.0.2) | +| Forwarder | [`@0x/contracts-exchange-forwarder`](/contracts/exchange-forwarder) | [v1.0.1](https://www.npmjs.com/package/@0x/contracts-exchange-forwarder/v/1.0.1) | [@0x/contracts-exchange-forwarder@1.0.1](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-exchange-forwarder@1.0.1) | +| MultiAssetProxy | [`@0x/contracts-asset-proxy`](/contracts/asset-proxy) | [v1.0.1](https://www.npmjs.com/package/@0x/contracts-asset-proxy/v/1.0.1) | [@0x/contracts-asset-proxy@1.0.1](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-asset-proxy@1.0.1) | +| ZRXToken | [`@0x/contracts-erc20`](/contracts/erc20) | [v1.0.1](https://www.npmjs.com/package/@0x/contracts-erc20/v/1.0.1) | [@0x/contracts-erc20@1.0.1](https://github.com/0xProject/0x-monorepo/releases/tag/@0x/contracts-erc20@1.0.1) | From e1cfbcd4f627fc8f6ef2c58cf6e99e0dfbc1c50b Mon Sep 17 00:00:00 2001 From: Greg Hysen Date: Fri, 15 Mar 2019 18:39:18 -0700 Subject: [PATCH 3/3] Copied MixinAssetProxyDispatcher from exchange --- .../contracts/src/MixinAssetProxyDispatcher.sol | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol b/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol index 8ac521e384..e9e6805737 100644 --- a/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol +++ b/contracts/asset-proxy/contracts/src/MixinAssetProxyDispatcher.sol @@ -28,7 +28,7 @@ contract MixinAssetProxyDispatcher is MAssetProxyDispatcher { // Mapping from Asset Proxy Id's to their respective Asset Proxy - mapping (bytes4 => IAssetProxy) public assetProxies; + mapping (bytes4 => address) public assetProxies; /// @dev Registers an asset proxy to its asset proxy id. /// Once an asset proxy is registered, it cannot be unregistered. @@ -37,18 +37,16 @@ contract MixinAssetProxyDispatcher is external onlyOwner { - IAssetProxy assetProxyContract = IAssetProxy(assetProxy); - // Ensure that no asset proxy exists with current id. - bytes4 assetProxyId = assetProxyContract.getProxyId(); - address currentAssetProxy = address(assetProxies[assetProxyId]); + bytes4 assetProxyId = IAssetProxy(assetProxy).getProxyId(); + address currentAssetProxy = assetProxies[assetProxyId]; require( currentAssetProxy == address(0), "ASSET_PROXY_ALREADY_EXISTS" ); // Add asset proxy and log registration. - assetProxies[assetProxyId] = assetProxyContract; + assetProxies[assetProxyId] = assetProxy; emit AssetProxyRegistered( assetProxyId, assetProxy @@ -63,7 +61,7 @@ contract MixinAssetProxyDispatcher is view returns (address) { - return address(assetProxies[assetProxyId]); + return assetProxies[assetProxyId]; } /// @dev Forwards arguments to assetProxy and calls `transferFrom`. Either succeeds or throws. @@ -95,7 +93,7 @@ contract MixinAssetProxyDispatcher is 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 ) } - address assetProxy = address(assetProxies[assetProxyId]); + address assetProxy = assetProxies[assetProxyId]; // Ensure that assetProxy exists require(