Update contracts-test-utils README
This commit is contained in:
parent
74dac18e47
commit
958f4aa8e8
@ -1,36 +1,29 @@
|
|||||||
## Contracts
|
## Contracts test utils
|
||||||
|
|
||||||
Smart contracts that implement the 0x protocol. Addresses of the deployed contracts can be found in the 0x [wiki](https://0xproject.com/wiki#Deployed-Addresses) or the [CHANGELOG](./CHANGELOG.json) of this package.
|
This package contains test utilities used by other smart contracts packages.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Contracts that make up and interact with version 2.0.0 of the protocol can be found in the [contracts](./contracts) directory. The contents of this directory are broken down into the following subdirectories:
|
```typescript
|
||||||
|
import {
|
||||||
* [protocol](./contracts/protocol)
|
chaiSetup,
|
||||||
* 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).
|
constants,
|
||||||
* [extensions](./contracts/extensions)
|
expectContractCallFailedAsync,
|
||||||
* 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.
|
expectContractCreationFailedAsync,
|
||||||
* [examples](./contracts/examples)
|
expectTransactionFailedAsync,
|
||||||
* 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.
|
expectTransactionFailedWithoutReasonAsync,
|
||||||
* [tokens](./contracts/tokens)
|
increaseTimeAndMineBlockAsync,
|
||||||
* 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).
|
provider,
|
||||||
* [multisig](./contracts/multisig)
|
sendTransactionResult,
|
||||||
* This directory contains the [Gnosis MultiSigWallet](https://github.com/gnosis/MultiSigWallet) and a custom extension that adds a timelock to transactions within the MultiSigWallet.
|
txDefaults,
|
||||||
* [utils](./contracts/utils)
|
web3Wrapper,
|
||||||
* This directory contains libraries and utils that are shared across all of the other directories.
|
} from '@0x/contracts-test-utils';
|
||||||
* [test](./contracts/test)
|
```
|
||||||
* This directory contains mocks and other contracts that are used solely for testing contracts within the other directories.
|
|
||||||
|
|
||||||
## 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
|
## 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.
|
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.
|
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||||
|
|
||||||
### Install Dependencies
|
### Install Dependencies
|
||||||
@ -52,13 +45,13 @@ yarn install
|
|||||||
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
PKG=contracts yarn build
|
PKG=@0x/contracts-test-utils yarn build
|
||||||
```
|
```
|
||||||
|
|
||||||
Or continuously rebuild on change:
|
Or continuously rebuild on change:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
PKG=contracts yarn watch
|
PKG=@0x/contracts-test-utils yarn watch
|
||||||
```
|
```
|
||||||
|
|
||||||
### Clean
|
### Clean
|
||||||
@ -78,52 +71,3 @@ yarn lint
|
|||||||
```bash
|
```bash
|
||||||
yarn test
|
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 `@0x/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.
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user