* added initial foundry transformERC20 tests * added foundry tests into CircleCI flow * add verbosity for failing tests in CI * revert wrong CI commands * feat: Foundry, added some more deployments (#558) * Added some more deployments * Rename WETH9 to WETH9V06 * Set to 0.6.x * fix typo * remove commit with bad prettier changes * working bridge Fills through weth transformer * remove unused reference * clean up tests * added working otc fill through transformERC20 in FQT * resolve file imports, add samplers, arbitrumBridgeAdatper, and new FQT version * add extra 'v' for debugging verbosity * add extra 'v' for debugging verbosity in circleci config * remove old traces * refactor rpc's out of foundry.toml and into .env for CI compatibility * remove verbosity from CI command as its now defined in foundry.toml * setup rpc's * ignore foundry artifacts in prettier * change naming in prettierignore * move /samplers to the tests subdirectory, modify remappings to reflext change * one more try 🤞 * change CI steps * remove yarn from CI step * get to the right directory * update foundry before tests * fix tip() deprecation and use deal() * use deal() instead of vm.deal() * try to get foundry to have the right directory structure by updating it * I HATE THIS * remove foundryup * Fix prettier issues * Remove obsoleted import * Use forge native commands to install deps and test and add the --root option * Try using forge with working-directory flag in CI * Use nightly foundry docker image * Update rpc endpoints config in foundry * move tests into /forked and /local * rename tests * add foundry profiles to CI * try to fix CI * 🔧 add foundry local and forked tests to workflow * prettier and lint * revert deps update * remove all samplers and add uniswapV2 sampler to ForkUtils * address jacobs comments * cleanup and comment * prettier and lint * bump contracts-zero-ex version * set func-name-mixedcase to off in solhint for elenas new changes * max line length to warn * add --fix for check-md * Update ci.yml * fix some nitpcks and leftover code * fix inconsistent naming * fix bridge adapter reverts and foundry cache * migrate foundry integration tests to /tests * refactor contract-addresses to use the contract-addresses package style nested json * fix solhint * fix contract linting errors * dont check broken links in libraries * move forge order in gh action for testing * add env instead of vars * try again * fix github actions ordering * update licence and address comments * remove verbosity from foundry.toml * fix contract lint * move back to emitting an event until samplers can be integrated as some chains dont have uniswap as a source * add uniswap v3 sampling code for future use * remove uniswap v3 code as its not used * fix lint Co-authored-by: Noah Khamliche <0xnoah@Noahs-MacBook-Pro-2.local> Co-authored-by: Jacob Evans <jacob@dekz.net> Co-authored-by: elenadimitrova <elena@arenabg.com>

0x is an open protocol that facilitates trustless, low friction exchange of Ethereum-based assets. For more information on how it works, check out the 0x protocol specification.
This repository is a monorepo including the 0x protocol smart contracts and numerous developer tools. Each public sub-package is independently published to NPM.
Packages
Visit our developer portal for a comprehensive list of core & community maintained packages. All packages maintained with this monorepo are listed below.
Solidity Packages
These packages are all under development. See /contracts/README.md for a list of deployed packages.
Package | Version | Description |
---|---|---|
@0x/contracts-zero-ex |
The contracts used for settling trades within the protocol | |
@0x/contracts-erc20 |
Implementations of various ERC20 tokens | |
@0x/contracts-test-utils |
TypeScript/Javascript shared utilities used for testing contracts | |
@0x/contracts-utils |
Generic libraries and utilities used throughout all of the contracts |
TypeScript/Javascript Packages
0x-specific packages
Package | Version | Description |
---|---|---|
@0x/protocol-utils |
A set of utilities for generating, parsing, signing and validating 0x orders | |
@0x/contract-addresses |
A tiny utility library for getting known deployed contract addresses for a particular network. | |
@0x/contract-wrappers |
JS/TS wrappers for interacting with the 0x smart contracts | |
@0x/contract-artifacts |
0x smart contract compilation artifacts |
Usage
Node version 6.x or 8.x is required.
Most of the packages require additional typings for external dependencies.
You can include those by prepending the @0x/typescript-typings
package to your typeRoots
config.
"typeRoots": ["node_modules/@0x/typescript-typings/types", "node_modules/@types"],
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.
Read our contribution guidelines.
Install dependencies
Make sure you are using Yarn v1.9.4. To install using brew:
brew install yarn@1.9.4
Then install dependencies
yarn install
Build
To build all packages:
yarn build
To build a specific package:
PKG=@0x/protocol-utils yarn build
To build all contracts packages:
yarn build:contracts
Watch
To re-build all packages on change:
yarn watch
To watch a specific package and all it's dependent packages:
PKG=[NPM_PACKAGE_NAME] yarn watch
e.g
PKG=@0x/protocol-utils yarn watch
Clean
Clean all packages:
yarn clean
Clean a specific package
PKG=@0x/protocol-utils yarn clean
Rebuild
To re-build (clean & build) all packages:
yarn rebuild
To re-build (clean & build) a specific package & it's deps:
PKG=@0x/protocol-utils yarn rebuild
Lint
Lint all packages:
yarn lint
Lint a specific package:
PKG=@0x/protocol-utils yarn lint
Run Tests
Run all tests:
yarn test
Run a specific package's test:
PKG=@0x/protocol-utils yarn test
Run all contracts packages tests:
yarn test:contracts