* `@0x/contracts-utils`: Convert more 0.6 contracts * `@0x/contracts-erc20`: Add solidity 0.6 contracts. * `@0x/utils`: Add new `ZeroExRevertErrors` revert types * `@0x/contracts-zero-ex`: Introduce the `TransformERC20` feature. * `@0x/subproviders`: Update ganache-core. `@0x/web3-wrapper`: Update ganache-core. * `@0x/contracts-zero-ex`: Make `TokenSpender`'s puppet contract a distinct contract type and rename `getTokenSpenderPuppet()` to `getAllowanceTarget()` * `@0x/zero-ex`: Rebase and use "slot" instead of "offset" language in storage buckets. * `@0x/web3-wrapper`: Add `getAccountNonceAsync()` to `Web3Wrapper` * `@0x/contracts-zero-ex`: Revamp TransformERC20. * `@0x/contracts-zero-ex`: Remove `payable` from `IERC20Transformer.transform()` and disable hex capitalization linter rule because of prettier conflicts. * `@0x/contracts-zero-ex`: Use `immutable` owner in `Puppet` instead of `Ownable`. * `@x/utils`: Address review feedback. * `@0x/contracts-zero-ex`: Address review feedback. * `@0x/contracts-utils`: Address review feedback. * `@0x/contracts-zero-ex`: Return deployment nonce in `transform()`. * `@0x/contracts-zero-ex`: Finish returning deployment nonce in `transform()`. * `@0x/contracts-zero-ex`: Fix doc-gen bug. * `@0x/contracts-zero-ex`: Address review comments. * `@0x/utils`: Add `NegativeTransformERC20OutputERror` * `@0x/contracts-zero-ex`: Revert if the taker's output amount decreases. Co-authored-by: Lawrence Forman <me@merklejerk.com>
@0x/subproviders
A few useful web3 subproviders including a LedgerSubprovider useful for adding Ledger Nano S support.
We have written up a guide article detailing some use cases of this subprovider package.
Read the Documentation.
Installation
yarn add @0x/subproviders
If your project is in TypeScript, add the following to your tsconfig.json
:
"compilerOptions": {
"typeRoots": ["node_modules/@0x/typescript-typings/types", "node_modules/@types"],
}
Contributing
We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
Please read our contribution guidelines before getting started.
Install dependencies
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
yarn config set workspaces-experimental true
Then install dependencies
yarn install
Build
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
PKG=@0x/subproviders yarn build
Or continuously rebuild on change:
PKG=@0x/subproviders yarn watch
Clean
yarn clean
Lint
yarn lint
Run tests
Unit tests
yarn run test:unit
Integration tests
In order to run the integration tests, make sure you have a Ledger Nano S available.
- Setup your Ledger with the development mnemonic seed:
concert load couple harbor equip island argue ramp clarify fence smart topic
- Plug it into your computer
- Unlock the device
- Open the on-device Ethereum app
- Make sure "browser support" and "contract data" are disabled
- Start TestRPC locally at port
8545
Then run:
yarn test:integration
Note: We assume a derivation path of m/44'/60'/0'/0
which is already configured in the tests. With this setup and derivation path, your first account should be 0x5409ed021d9299bf6814279a6a1411a7e866a631
, exactly like TestRPC.
All tests
yarn run test:all