From 8f0ceaf1d8261e9779213276372f4690cdf3426c Mon Sep 17 00:00:00 2001 From: Alex Browne Date: Thu, 4 Oct 2018 14:14:05 -0700 Subject: Create abi-gen-wrappers package --- .gitignore | 2 + packages/abi-gen-wrappers/package.json | 40 +++++++++ packages/abi-gen-wrappers/src/index.ts | 12 +++ packages/abi-gen-wrappers/tsconfig.json | 8 ++ packages/contract-artifacts/README.md | 135 ------------------------------- packages/contract-artifacts/package.json | 5 +- packages/contract-artifacts/src/index.ts | 3 +- tsconfig.json | 1 + 8 files changed, 67 insertions(+), 139 deletions(-) create mode 100644 packages/abi-gen-wrappers/package.json create mode 100644 packages/abi-gen-wrappers/src/index.ts create mode 100644 packages/abi-gen-wrappers/tsconfig.json delete mode 100644 packages/contract-artifacts/README.md diff --git a/.gitignore b/.gitignore index ac921ea20..4aff448f0 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,7 @@ packages/react-docs/example/public/bundle* packages/testnet-faucets/server/ # generated contract artifacts/ +packages/contracts/generated-artifacts/ packages/sol-cov/test/fixtures/artifacts/ packages/metacoin/artifacts/ packages/order-watcher/test/artifacts/ @@ -90,6 +91,7 @@ packages/order-utils/src/artifacts/ packages/migrations/artifacts/development/ # generated contract wrappers +packages/abi-gen-wrappers/wrappers packages/0x.js/src/generated_contract_wrappers/ packages/contracts/generated-wrappers/ packages/metacoin/src/contract_wrappers diff --git a/packages/abi-gen-wrappers/package.json b/packages/abi-gen-wrappers/package.json new file mode 100644 index 000000000..7412e2739 --- /dev/null +++ b/packages/abi-gen-wrappers/package.json @@ -0,0 +1,40 @@ +{ + "name": "@0xproject/abi-gen-wrappers", + "version": "1.0.0", + "engines": { + "node": ">=6.12" + }, + "description": "Smart contract components of 0x protocol", + "main": "lib/src/index.js", + "directories": { + "test": "test" + }, + "scripts": { + "build": "yarn pre_build && tsc -b", + "build:ci": "yarn build", + "pre_build": "yarn generate_contract_wrappers", + "clean": "shx rm -rf lib wrappers", + "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output wrappers --backend ethers" + }, + "config": { + "abis": "../contract-artifacts/artifacts/@(AssetProxyOwner|DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC20Token|ERC721Proxy|ERC721Token|Exchange|Forwarder|IValidator|IWallet|OrderValidator|WETH9|ZRXToken).json" + }, + "repository": { + "type": "git", + "url": "https://github.com/0xProject/0x-monorepo.git" + }, + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/0xProject/0x-monorepo/issues" + }, + "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md", + "devDependencies": { + "@0xproject/abi-gen": "^1.0.12", + "shx": "^0.2.2" + }, + "dependencies": { + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/abi-gen-wrappers/src/index.ts b/packages/abi-gen-wrappers/src/index.ts new file mode 100644 index 000000000..614eb4ec0 --- /dev/null +++ b/packages/abi-gen-wrappers/src/index.ts @@ -0,0 +1,12 @@ +export * from '../wrappers/asset_proxy_owner'; +export * from '../wrappers/dummy_erc20_token'; +export * from '../wrappers/dummy_erc721_token'; +export * from '../wrappers/erc20_proxy'; +export * from '../wrappers/erc721_proxy'; +export * from '../wrappers/erc20_token'; +export * from '../wrappers/erc721_token'; +export * from '../wrappers/exchange'; +export * from '../wrappers/forwarder'; +export * from '../wrappers/order_validator'; +export * from '../wrappers/weth9'; +export * from '../wrappers/zrx_token'; diff --git a/packages/abi-gen-wrappers/tsconfig.json b/packages/abi-gen-wrappers/tsconfig.json new file mode 100644 index 000000000..241a4ae51 --- /dev/null +++ b/packages/abi-gen-wrappers/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "lib", + "rootDir": ".", + }, + "include": ["./src/**/*", "./wrappers/**/*"], +} diff --git a/packages/contract-artifacts/README.md b/packages/contract-artifacts/README.md deleted file mode 100644 index 33cbdae26..000000000 --- a/packages/contract-artifacts/README.md +++ /dev/null @@ -1,135 +0,0 @@ -## Contracts - -Smart contracts that implement the 0x protocol. Addresses of the deployed contracts can be found [here](https://0xproject.com/wiki#Deployed-Addresses). - -## Usage - -### 2.0.0 - -Contracts that make up and interact with version 2.0.0 of the protocol can be found in the `src/2.0.0` directory. The contents of this directory are broken down into the following subdirectories: - -* protocol - * This directory contains the contracts that make up version 2.0.0. A full specification can be found [here](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md). -* extensions - * This directory contains contracts that interact with the 2.0.0 contracts and will be used in production, such as the [Forwarder](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/forwarder-specification.md) contract. -* examples - * This directory contains example implementations of contracts that interact with the protocol but are _not_ intended for use in production. Examples include [filter](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#filter-contracts) contracts, a [Wallet](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#wallet) contract, and a [Validator](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#validator) contract, among others. -* tokens - * This directory contains implementations of different tokens and token standards, including [wETH](https://weth.io/), ZRX, [ERC20](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md), and [ERC721](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md). -* multisig - * This directory contains the [Gnosis MultiSigWallet](https://github.com/gnosis/MultiSigWallet) and a custom extension that adds a timelock to transactions within the MultiSigWallet. -* utils - * This directory contains libraries and utils that are shared across all of the other directories. -* test - * This directory contains mocks and other contracts that are used solely for testing contracts within the other directories. - -### 1.0.0 - -Contracts that make up version 1.0.0 of the protocol can be found in `src/1.0.0`. These contracts are considered deprecated and will have limited support going forward. - -## Bug bounty - -A bug bounty for the 2.0.0 contracts is ongoing! Instructions can be found [here](https://0xproject.com/wiki#Bug-Bounty). - -## Contributing - -We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository. - -For proposals regarding the 0x protocol's smart contract architecture, message format, or additional functionality, go to the [0x Improvement Proposals (ZEIPs)](https://github.com/0xProject/ZEIPs) repository and follow the contribution guidelines provided therein. - -Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started. - -### Install Dependencies - -If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them: - -```bash -yarn config set workspaces-experimental true -``` - -Then install dependencies - -```bash -yarn install -``` - -### Build - -To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory: - -```bash -PKG=contracts yarn build -``` - -Or continuously rebuild on change: - -```bash -PKG=contracts yarn watch -``` - -### Clean - -```bash -yarn clean -``` - -### Lint - -```bash -yarn lint -``` - -### Run Tests - -```bash -yarn test -``` - -#### Testing options - -###### Revert stack traces - -If you want to see helpful stack traces (incl. line number, code snippet) for smart contract reverts, run the tests with: - -``` -yarn test:trace -``` - -**Note:** This currently slows down the test runs and is therefore not enabled by default. - -###### Backing Ethereum node - -By default, our tests run against an in-process [Ganache](https://github.com/trufflesuite/ganache-core) instance. In order to run the tests against [Geth](https://github.com/ethereum/go-ethereum), first follow the instructions in the README for the devnet package to start the devnet Geth node. Then run: - -```bash -TEST_PROVIDER=geth yarn test -``` - -###### Code coverage - -In order to see the Solidity code coverage output generated by `@0xproject/sol-cov`, run: - -``` -yarn test:coverage -``` - -###### Gas profiler - -In order to profile the gas costs for a specific smart contract call/transaction, you can run the tests in `profiler` mode. - -**Note:** Traces emitted by ganache have incorrect gas costs so we recommend using Geth for profiling. - -``` -TEST_PROVIDER=geth yarn test:profiler -``` - -You'll see a warning that you need to explicitly enable and disable the profiler before and after the block of code you want to profile. - -```typescript -import { profiler } from './utils/profiler'; -profiler.start(); -// Some call to a smart contract -profiler.stop(); -``` - -Without explicitly starting and stopping the profiler, the profiler output will be too busy, and therefore unusable. diff --git a/packages/contract-artifacts/package.json b/packages/contract-artifacts/package.json index 1493510e8..39fe68410 100644 --- a/packages/contract-artifacts/package.json +++ b/packages/contract-artifacts/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/contract-artifacts", - "version": "2.0.0", + "version": "1.0.0", "engines": { "node": ">=6.12" }, @@ -24,7 +24,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contract-artifacts/README.md", "devDependencies": { - "typescript": "3.0.1" + "typescript": "3.0.1", + "shx": "^0.2.2" }, "dependencies": { }, diff --git a/packages/contract-artifacts/src/index.ts b/packages/contract-artifacts/src/index.ts index d8c83503b..f30276dd9 100644 --- a/packages/contract-artifacts/src/index.ts +++ b/packages/contract-artifacts/src/index.ts @@ -13,8 +13,7 @@ import * as OrderValidator from '../artifacts/OrderValidator.json'; import * as WETH9 from '../artifacts/WETH9.json'; import * as ZRXToken from '../artifacts/ZRXToken.json'; -// TODO(albrow): Do we need to export all of these? -export const artifacts = { +export { AssetProxyOwner, DummyERC20Token, DummyERC721Token, diff --git a/tsconfig.json b/tsconfig.json index 5d1da9d02..7127f9a88 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,6 +22,7 @@ "references": [ { "path": "./packages/0x.js" }, { "path": "./packages/abi-gen" }, + { "path": "./packages/abi-gen-wrappers" }, { "path": "./packages/assert" }, { "path": "./packages/asset-buyer" }, { "path": "./packages/base-contract" }, -- cgit v1.2.3