* 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>
* Update coveralls link to point to protocol repo coverage
* Remove obsoleted ignores in .gitignore
* Run forge coverage in CI and upload results to coveralls
* Remove unused wrapper
* Remove legacy coverage setup
* Remove lcov-result-merger
* Add base-path setting to coverallsapp in CI
* Implement base instantiation of the ZeroEx proxy in foundry
and move TestZeroExFeature contract to the foundry mocks
* Migrate zero-ex tests to foundry
* Update copyright year
* Update contracts/zero-ex/tests/mocks/TestZeroExFeature.sol
Co-authored-by: Jacob Evans <jacob@dekz.net>
Co-authored-by: Jacob Evans <jacob@dekz.net>
* Remove contracts/zero-ex/contracts/test/TestBridge.sol
* Move foundry tests to their default location
* Wire up base foundry test and start moving
FlashWallet tests and mocks to foundry
* Move remaining FlashWallet contract tests to foundry
* Switch to foundry default cache config
* Update message when closing stale issues with the correct duration
* Update autolabeller to correctly label
* Reformat the stale yml and change daysUntilClose to 14
* Update cci scrptisdas
* Add github action workflow for installing the solution
* Add building the solution to github actions
* Add linting and formatting checks to github action
* Add deps to list of prettier ignore
* Add tests for @0x/contracts*
* Add dependency checker tests in CI
* Add checks for markdown issues to CI
* Add foundry tests to CI
* Add Test local @0x/contracts-* to CI
* Add tests for doc generation to CI
* Surgeon out leftover circle references and config
* Fix foundry working-directory
* Switch order of generate docs and checks in CI
* Add dependabot action to github
* Run ci on push ot development branch
* Add check-md package and command
* Remove broken references to TESTING.md
* Fix broken link in contributing.md
* Fix staking docs headings
* Add checks for broken links to CI
* Add solhint and basic configuration
* Add solhint-plugin-prettier to run prettier via solhint
* Remove all solhint-disable rules in contracts
* Turn off compiler version errors
* Fix max-line-length linter errors
* Fix linting and prettier issues in contracts
* Add global lint command to run both ts and solidity linter
* Use `call` instead of `transfer` in `LibERC20Transformer`
* Since `transfer` only forwards 2300 gas it can cause an `out of gas`
revert when the receipient is a smart contract.
* Add `unsafeTransformerTransfer` and migrate `transformers` to use
`unsafeTransformerTransfer` instead of `transformerTransfer`
* Update .prettierignore
* swap rfq and otc in fillQuoteTransformerDataEncoder to match our enum
* changelog
* fix changelog and move otcOrders field to last in fillQuoteTransformerDataEncoder
* prettier
* move otcOrders array to end of fqtTransformData
Co-authored-by: Noah Khamliche <0xnoah@Noahs-MacBook-Pro-2.local>
* add prettier-solidity + config
* run prettier
* update lockfile
* run prettier again
* Prettier missed one /:
* keep bridge adapter the same
* yarn prettier
* replace TSLint with ESLint in contracts-utils
* also contracts/treasury
* also do test-utils
* yarn fix
* fix stuff yarn fix could not fix
* eslint erc20 contracts folder too
* changelogs
* actually zeroex was a different pr
* PR #589 in changelogs
* whitespace
* prettier
* replace tslint with eslint + add eslintrc config
* few more missing packages for eslint
* exclude. now eslint is running (but there are errors)
* correct excludes fixes all the linter issues
* no need for max warnings
* Re-usable cache
By use of branch as a cache key, we invalidate the cache very often.
This leads to incresed builds time. By use of cache based on checksum of
yarn.lock, we may drop the build time.
It will increase the time every time checksum has changed. In our case,
it happens multiple times per month.
* Skip job run if no changes applied
* Skip tests if no changes applied
* Skip tests if no changes applied
* Add asset-swapper deprecation notice in README.md
* Remove asset-swapper references from the top-level README
* Remove asset-swapper from circleci config
* Set asset-swapper private to prevent it from being published
* Remove asset-swapper from `nonContractPackages`
* Disable asset-swapper build and test scripts
* Update package.jsons to latest tools packages
* Skip tests relying on gasPrice > 0
* Yarn.lock
* Fix linter
* Update Balance checker, new ganache gets more ETH
* Fix new Ganache insufficient assertion string
* Temporarily set QuoteRequestor to skip
* Fix headers Axios now requests with
* Add WooFI interface for sampling
* WooFi Sampler
* Add mixin
* Update bridge adapters
* fix some bugs
* update transformer_utils
* Add BSC support
* yarn prettier
* Capitalize WOOFI in bridge adapters
* Put rebateAddress in a constant, fixed some other stylistic errors
* bug fixes
* Updated CHANGELOGS & MD docs
* Publish
- @0x/contracts-erc20@3.3.33
- @0x/contracts-test-utils@5.4.24
- @0x/contracts-treasury@1.4.16
- @0x/contracts-utils@4.8.14
- @0x/contracts-zero-ex@0.36.0
- @0x/asset-swapper@16.64.0
- @0x/contract-addresses@6.17.0
- @0x/contract-wrappers@13.20.5
- @0x/protocol-utils@11.16.0
* Update reference.mdx (#531)
Align with `DEFAULT_QUOTE_SLIPPAGE_PERCENTAGE` value from c74e31c219/src/constants.ts (L26)
* code cleanup
* remove deusdc curve pool from this pr
* Refactor PoolsCache (part 1) [TKR-500] (#525)
* Make _refreshPoolCacheIfRequiredAsync type-safe and remove Promise.all
* Factor out PoolsCache key logic into a function
* Use Map instead of object in PoolsCache and increase the default timeout
* Clean up PoolsCache and simplify its public interface
* Refactor PoolsCache (part 2) [TKR-500] (#526)
* Introduce NoOpPoolsCache and use it in unsupported chains for BeethovenX
* Use `NoOpPoolsCache` for `CreamPoolsCache` and `BalancerPoolsCache` on unsupported chains
* Remove `getBidAskLiquidityForMakerTakerAssetPairAsync` (#528)
* Add transfer approval for quote token for multi-hops and fix buy sampler typo
* Use 0x gas api instead of eth gas station api [TKR-502] (#532)
* Use 0x gas api instead of eth gas station api
* Add integration test for `ProtocolFeeUtils`
* Update CHANGELOG.json
* Add polygon, fantom, avalanche support
* yarn prettier
* Updated CHANGELOGS & MD docs
* Publish
- @0x/asset-swapper@16.65.0
* Remove references to `custom-no-magic-numbers` ts lint rule [TKR-484] (#533)
* Remove references to `custom-no-magic-numbers ts` lint rule
* Run prettier
* resolve Kyu's comments
* remove fqt change
* Add WooFI interface for sampling
* WooFi Sampler
* Add mixin
* Update bridge adapters
* fix some bugs
* update transformer_utils
* Add BSC support
* yarn prettier
* Capitalize WOOFI in bridge adapters
* Put rebateAddress in a constant, fixed some other stylistic errors
* bug fixes
* code cleanup
* remove deusdc curve pool from this pr
* Add transfer approval for quote token for multi-hops and fix buy sampler typo
* Add polygon, fantom, avalanche support
* yarn prettier
* resolve Kyu's comments
* remove fqt change
* merge types.ts
* WOOFi -> WOOFI
* fix lerna run lint
* Changelog
* nit changes
Co-authored-by: Github Actions <github-actions@github.com>
Co-authored-by: Pavel <51318041+pavel-bc@users.noreply.github.com>
Co-authored-by: Kyu <kyuhyun217@gmail.com>
* Introduce NoOpPoolsCache and use it in unsupported chains for BeethovenX
* Use `NoOpPoolsCache` for `CreamPoolsCache` and `BalancerPoolsCache` on unsupported chains
* Make _refreshPoolCacheIfRequiredAsync type-safe and remove Promise.all
* Factor out PoolsCache key logic into a function
* Use Map instead of object in PoolsCache and increase the default timeout
* Clean up PoolsCache and simplify its public interface
* Replace Beethoven X subgraph url and add a test
* Simplify PoolsCacheMap type
* Make `BalancerV2PoolsCache` optional for Beethoven X
* Update CHANGELOG.json
* Add a new TokenAdjacencyGraph implementation
* Replace old TokenAdjacencyGraph with new implementation
* Simplify token adjacency graph in constants.ts
* Fix lint error
* Update CHANGELOG.json
* Remove old JS router and add a FillAdjustor
Clean up JS router and unused functions
Remove more unused functions, add adjustment of fills
Comment on why we use fill over sample
update CODEOWNERS
lint
Clean up Fill removing unused properties
Remove CollapsedFills, omit flags bigint
Create GasSchedule vs FeeSchedule, return Fill and gas on OptimizedOrder
Use Fill Adjustment in Phase2 of routing
Fix Limit orders being treated as VIP
* Fix case where dex liquidity is empty
* Use best gas adjusted pricing for fee sources
* CHANGELOG
* Curve pool script to generate pools and their info. Still need to integrate into API
* Added MDEX to BSC
* Removed curve automation scripts from this PR
* Fixed typo
* Changelog
* fix formatting
* Fixed yarn lint
* Add KnightSwap
* Changelog
* update changelog
* changelog again...
* Curve pool script to generate pools and their info. Still need to integrate into API
* Added MDEX to BSC
* Removed curve automation scripts from this PR
* Fixed typo
* Changelog
* fix formatting
* Fixed yarn lint
* Remove Oasis
* Remove CoFix code
* Remove MixinKyber
* Remove Kyber from asset-swapper
* Delete unused imports, interface, and etc.
* Fix the test failure issue when it's run with neon-router
* Update CHANGELOG.json
* Add cvxfxs-fxs curve pool on Ethereum mainnet
* Update CHANGELOG.json
* Fix an existing formatting issue
* Adjust gasSchedule and merge the change under 16.57.1
* Draft. PoC pseudo code showing general idea for resuing SOR path creation logic and adding multihop support.
* Add actual Balancer SDK function calls.
* Update to handle buys.
* Correct taker>maker for buy.
* Draft. PoC pseudo code showing general idea for resuing SOR path creation logic and adding multihop support.
* make it build
* rebase
* add BalancerV2Batch protocol
* add BalancerV2Batch protocol
* get balancer v2 multihop working
* fix BalancerV2Batch for sells (buys still iffy)
* fix buys, appease linter and prettier
* remove unused RPC URL from balancer sdk construction
* update changelogs
* clean up comments
add event loop yield in `BalancerV2SwapInfoCache.loadTopPools()`
* add negative result check on balancerv2batch swap output
* compiler hack
* reintroduce CompilerHack
* delete unused multibridge sampler
* remove compilerhack
* reintroduce compilerhack
* try to fix CI compile errors
* plz work
* plz work
* pretty plz work
* yay it works, also address feedback
* appease linter
* deploy new FQTs
Co-authored-by: johngrantuk <johngrantuk@googlemail.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* feat: calculate all routes and VIP only routes in a single router call
* fix: Try to disable using fallback orders for quotes with native orders
* fix: create VIP sources set once per routing call
* chore: use private publish version of neon-router to test
* chore(lint): comment out unused fn _addOptionalFallbackAsync
* chore: update to latest private publish of neon-router
* refactor: fix router metrics beforeTimeMs naming
* feat: don't recompute isVip for ever sample of a source
* chore: update neon-router to real published version
* fix: merge conflict resolution issue
* chore: add asset-swapper changelog entry
* Revert "fix: Revert Improve Uniswap V3 gas schedule (#397) (#419)"
This reverts commit df0e0866e4.
* fix: UniswapV3Sampler return token amounts as the last value in return tuple
* fix: bump Uniswap V3 quote max gas because QuoterV2 is more expensive
* fix: don't try to rout 0 sellAmount/buyAmount quotes
* fix: Linting issue
* fix: use median gas usage instead of mean in UniV3 gas schedule
* chore: add asset-swapper changelog entry
* fix: remove contract-addresses changelog empty row failing linting
* Add Geist on Fantom
* nvm there is not subgraph for it
* finish giest utils
* Address pr comments
* lowercase gtoken addresses
* return undefined instead of error for unsupported pairs
* another lower case
* Update fantom fillQuoteTransformer address
* more const clean up
* feat: scale oversized native orders to quote amount for fake samples
* chore: temporarily use private publish neon-router version
* fix: short circuit 1 base unit trades to avoid router error
* chore: use published version of `neon-router`
* chore: add changelog entry for asset-swapper
* fix: 1 base unit output amount being scale down, rounding to 0 output
* chore: add asset-swapper changelog entry
* fix: round scaled output to base units before clamping
* feat: UniswapV3Sampler use QuoterV2 for sells WIP
* feat: UniswapV3Sampler for QuoterV2 buys WIP
* refactor: separate logic to remove stack too deep issue
* feat: Use initializedTicksCrossed from Uniswap QuoterV2 for gas est.
* fix: use Quoter gasUsed instead of estimating gas from pools + ticks
* refactor: clean up UniswapV3Sampler & remove old Quoter interface
* refactor: unify code for buys and sells while handling stack too deep
* fix: use mean gas price from all sample estimating UniV3 gas schedule
* fix: fallback to legacy Uniswap V3 gas estimate if we can't get gasUsed
* refactor: use named function instead of fat arrow
* chore: add asset-swapper changelog entry
* fix: don't try to create fills for 0 output samples
* fix: negative adjusted output native orders causing undefined fills
* fix: make sure to use the same sourcePathId for fills from same source
* fix: should be same sourcePathId within the same DexSample[]
* fix: split native orders into 13 samples to align with interpolation
* chore: add changelog entry for asset-swapper
* feat: use Rust router estimated output amount when possible
* fix: use strings for sample ids, and increase samples in the rust router
* fix: remove unnecessary interpolation of out of range values
* fix: don't recalculate sampled dist sum in a loop
* fix: use 14 samples for rust router to work around interpolation issues
* fix: unintentional logic change
* fix: remove local dev plotting param from route fn call
* feat: make neon-router number of samples configurable
* chore: bump to newly published neon-router version
* fix: handle insufficient liquidity at all requested sources
* chore: update asset-swapper changelog
* rebase and remove WIP Clipper new weth router test
* remove clipper test
* restore from clipper test
* add uniswapV3 on optimism
* modify token addresses and add EP-related addresses on optimism
* prettier
* modify CHANGLOG.json
* convert addresses to lowercase
* remove testnet addresses
Co-authored-by: Romain Butteaud <romain.butteaud@gmail.com>
* Updated Sushiswap router on CELO
Sushi address in the docs was incorrect, this is the correct address `0x1421bDe4B10e8dd459b3BCb598810B1337D56842`.
* address to lowercase
* Update CHANGELOG.json
* fixed sushi router address, replaced celo ref with wcelo, fixed mcusd address
* celo->wcelo
* Update packages/asset-swapper/CHANGELOG.json
Co-authored-by: Jacob Evans <jacob@dekz.net>
* changelog
* version bump
Co-authored-by: Jacob Evans <jacob@dekz.net>
* Rebase to development branch
* add support for MorpheusSwap and JetSwap on Fantom
* fix lint
* modify changelog.json for asset-swapper
* fix the comments
* prettier
* Use BalancerV2PoolsCache for BeethovenX
Co-authored-by: Romain Butteaud <romain.butteaud@gmail.com>
* fix: removing Clipper custom integration (to add it later as a real PLP)
* fix: update CHHANGELOG
* fix: keep Clipper as BridgeProtocols so we dont have to redeploy and comment this is not used
* fix: prettier
* feat: integrate Rust router with asset-swapper WIP
* fix: produce outputFees in the format the Rust router expects
* fix: correct output fee calc and only use the rust router for sells
* fix: make sure numbers sent to the rust router are integers
* hack: try to debug why rust router output is being overestimated WIP
* refactor: clean up router debugging code
* fix: don't use negative output fees for sells
* feat: try VIP sources in isolation and compare with routing all sources
* fix: adjust for FQT overhead when choosing between VIP, all sources WIP
* fix: pass gasPrice to path_optimizer for EP overhead calculations
* feat: buy support with the Rust Router WIP
* chore: WIP commit trying to get buys working
* refactor: use samples instead of fills for the Rust router
* feat: add vip handling hack to sample based routing
* fix: revert to 200 samplings for rust router when using pure samples
* refactor: remove old hacky Path based Rust code, add back feature toggle
* fix: scale both fill output and adjustedOutput my same factor as input
* feat: initial plumbing for supporting RFQ/Limit orders
* fix: incorrect bump of input amount by one base unit before routing
* fix: add fake samples for rfq/limit orders to fulfill the 3 sample req
* fix pass rfq orders in the correct format to the rust router
* chore: remove debugging logs and clean up code & comments
* fix: use published version of @0x/neon-router
* hack: scale routed amounts to account for precision loss of number/f64
* refactor: clean up code and address initial review comments
* fix: only remove trailing 0 output samples before passing to the router
* refactor: consolidate eth to output token calc into ethToOutputAmount fn
* fix: interpolate input between samples on output amount instead of price
* fix: return no path when we have no samples, add sanity asserts
* refactor: fix interpolation comment wording
* fix: remove double adjusted source route input amount
* chore: update changelog for asset-swapper
* Set AssetSwapper protocol fee multiplier to zero
* Set market_operation_utils protocol fee multiplier to zero
* Updated CHANGELOG.json
* Removed whitespace in CHANGELOG.json
* Remove unnecessary timestamp in packages/asset-swapper/CHANGELOG.json
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
* Updated param for quote simulation test
* Updated quote simulation test
* fix failing tests
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* Support cast vote by signature in ZrxTreasury
* Address comments and fix existing tests
* test that doesnt work
* test file format
* updates
* address some of the comments
* Remove unused const
* get rid of vote_factory
* unit test for castVoteBySignature p1
* unit test for castVoteBySignature p2
* Add version to domain, and one more test
* unit test for castVoteBySignature p3
* unit test for castVoteBySignature p4
* bump utils version
* remove debug code
* address some comments
* address more pr comments
* move Vote class to protocol-utils
* Address pr comments and update changelogs
* Initial commit of changes
* Added unit tests for filtering process
* linting
* Update packages/asset-swapper/src/utils/quote_requestor.ts
Co-authored-by: phil-ociraptor <philipliao@gmail.com>
* lint and refactor based on feedback
Co-authored-by: phil-ociraptor <philipliao@gmail.com>
* feat: Enable partial Native order fills
* change intermediary tokens to be a UNION.
Hint to cvxCRV and CRV
* Pin asset-swapper to use contracts-zero-ex 0.27.0 for now
* feat: Retire Eth2Dai/Oasis
Prune exchange-libs
deploy migrations at specific address
remove exchange-libs, moving LibMath into Utils
Remove staking order-utils multisig and remaining asset-proxy
* Refactor Multiplex into multiple files
* Pull UniswapV3 into separate file
* Add support for multihop nested within batch sell
* Add useSelfBalance and recipient to _fillRfqOrder
* Expose onlySelf variant in UniswapV3Feature for Multiplex
* Add useSelfBalance and recipient to _transformERC20
* Add support for proportional fill amounts in batchSell
* Comments and renaming
* Unit tests
* Use caps for immutables
* Rename taker -> recipient in TransformContext and SettleOrderInfo
* lint
* Address nits
* Swallow reverts for LiquidityProvider and UniswapV2 batch sells
* Address spot-check findings (#279)
* Check didSucceed in _callWithOptionalBooleanResult
* Add takerToken=ETH support to OtcOrdersFeature (#287)
* Add takerToken=ETH support to OtcOrdersFeature
* Add batchFillTakerSignedOtcOrders
* Add support for OTC to Multiplex
* Address PR feedback
* Update TransformERC20Feature (#303)
* remove multiplex_utils
* Update changelog
* unbreak tests
* feat: initial stab at the LidoSampler and the MixinLido
* feat: full integration of lido sampler and mixin
* fix: return pooled Ether amount not shares & properly unwrap WETH
* refactor: clean up Lido sampler and data passing
* fix: lower gas schedule for WETH to stETH deposits
* refactor: remove MixinLido unused ETH code path
* chore: add changelog entries
* fix: lower Lido gas schedule slightly
* fix: revert MixinLido on unsupported token pair
* fix: address review comments, improve early exit if wrong tokens
* fix: add contract addresses to Lido FQT
* fix: KyberDmm
* fix: pass buyToken to kyberDmm and require that path ends with buyToken
* Pass BigNumber down to FastABI
* Address Feedback
Co-authored-by: Kim Persson <kimpersson88@gmail.com>
* fix: add separate priceComparisonsReport to fix missing quoteReport data
* chore: remove notice about unconfirmed Uniswap V3 addresses
* refactor: move price comparisons computation logic into separate method
* chore: add AS changelog entry
* feat: Balancer V2 load and cache top pools by num swaps on startup
* refactor: Clean up code for Balancer V1 & V2 cache heating
* chore: add AS changelog entry
* add balancer v2
* fetch balancer v2 pools from subgraph
* feat: initial stab at a Balancer V2 Sampler WIP
* feat: add sampling for buys and fix build issues WIP [untested]
* fix: BalancerV2Sampler implementation issues, works on Kovan
* chore: BalancerV2 sampling boilerplate
* fix: update Balancer V2 mainnet address
* fix: consolidate differences between the 2 working branches
* fix: use mainnet Balancer V2 subgraph
* fix: stack too deep by minimizing and inline Balancer V2 vault interface
* fix: address review comments and clean up
* fix: sampler vault interface and pools cache assuming a pool has swaps
* address more review comments
* fix: TS type issues and add a comment about deadline argument
* fix: pools_cache_tests incorrect token addresses, prettier incompat
* fix: make ERC20BridgeSampler support BalancerV2 non view sampler fns
* fix: use a struct for passing encoded bridge data for Balancer V2
* chore: add changelog entries
* fix: improve gas accuracy of gas schedule for Balancer V2 & Maker Psm
* fix: don't exclude sources with stale caches & wait for cache refresh
* rebase
* `@0x/asset-swapper`: Fix stack too deep errors in sampler
* `@0x/asset-swapper`: Add uniswap V3 sampler.
* `@0x/contracts-zero-ex`: Add UniswapV3 support to FQT
* `@0x/protocol-utils`: Update BridgeProtocols.
`@0x/asset-swapper`: Add sell integration for UniswapV3.
* `@0x/asset-swapper`: Remove unnecessary swap quote consumer constructor arg.
`@0x/asset-swapper`: Enable UniswapV3 on ropsten.
* `@0x/asset-swapper`: UniswapV3 fixes
* `@0x/asset-swapper`: Fix stuff based on latest deployed testnet contracts
* `@0x/asset-swapper`: Remove UniV3 from mainnet sources for now
* `@0x/asset-swapper`: Tweak univ3 gas schedule
* fix CI?
* `@0x/contracts-test-utils`: Set default ganache gas limit to 100e6
Co-authored-by: xianny <xianny@gmail.com>
Co-authored-by: Kim Persson <kimpersson88@gmail.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Jacob Evans <jacob@dekz.net>
* add balancer v2
* fetch balancer v2 pools from subgraph
* feat: initial stab at a Balancer V2 Sampler WIP
* feat: add sampling for buys and fix build issues WIP [untested]
* fix: BalancerV2Sampler implementation issues, works on Kovan
* chore: BalancerV2 sampling boilerplate
* fix: update Balancer V2 mainnet address
* fix: consolidate differences between the 2 working branches
* fix: use mainnet Balancer V2 subgraph
* fix: stack too deep by minimizing and inline Balancer V2 vault interface
* fix: address review comments and clean up
* fix: sampler vault interface and pools cache assuming a pool has swaps
* address more review comments
* fix: TS type issues and add a comment about deadline argument
* fix: pools_cache_tests incorrect token addresses, prettier incompat
* fix: make ERC20BridgeSampler support BalancerV2 non view sampler fns
* fix: use a struct for passing encoded bridge data for Balancer V2
* chore: add changelog entries
* fix: improve gas accuracy of gas schedule for Balancer V2 & Maker Psm
* fix: don't exclude sources with stale caches & wait for cache refresh
* rebase
* `@0x/asset-swapper`: Fix stack too deep errors in sampler
Co-authored-by: Kim Persson <kimpersson88@gmail.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* feat: Support ETH based Curve pools
* Disable Curve VIP for WETH trades
* feat: Support for sETH and ankrETH (Curve)
* Disable SnowSwap ETH pools
* feat: add BUSD Curve 3pool
* fix changelog
Co-authored-by: Romain Butteaud <romain.butteaud@gmail.com>
* Patch staking and recover state in constructor
* Add ganache mainnet fork test
* Add ganache mainnet fork test
* update changelog
* hardcode last pool ID
* Separate patch contract to unbreak tests
* Cull paths which cannot improve price
* fixes and rename
* optimizations
* disable ABI optimization for sampler
* fix lint
* use fastabi
* Update to fastabi 0.0.2
* update packages
* Fix NaN case
* update to published packages
* rebased
* Update generated wrappers
* add registerAllowedSigner to NativeOrdersFeature
* fix PR reference in changelog
* prettier
* add cancel pair orders functions for signers
* refactored cancelPairOrders logic, changed naming of signerRegistry to orderSigner registry everywhere, cleaned up tests
* updated changelog for protocol-utils, made batchCancelPairOrders functions more efficient
* clean up function documentation
* added additional tests for batchCancelPairsWithSigner functions, added additional checks for events being emitted correctly
* fix typos in function documentation
* fix typo in function documentation
* update docs
* update comments on cancel functions, small tweaks to docs
* chore: Component.finance, Smoothy.finance (mainnet + BSC), Saddle.finance, Curve open pools, adjusting gas schedule, fixing Shell buys
* chore: adding a Sampler for Smoothy.finance to only use whats in the contracts reserve
* fix: Smoothy sampler, only use approx. for buys, removing y and BUSD curve pools
* add CHANGELOGs
* fix: prettier
* add: FRAX Curve open pool
* fix: prettier
* chore: adjusting gas schedule for BSC Smoothy
* ADDS basic boilerplate for PSM bridge WIP
* ADDS integrate the MakerPSM mixin and fix incorrect naming
* fix: take into account PSM fee when buying USDC from PSM
* feat: intial stab at a PSM sampler WIP
* feat: integrate MakerPsm into AS WIP
* refactor: get VAT contract address from PSM instead of passing it in
* fix: hardcode PSM Gemtoken to USDC
* fix: remove passing in authGem, get from PSM contract instead
* fix: use constant modified to avoid using storage variables
* fix: incorrect num decimals after multiplication in sampler
* fix: PSM buy sampling
* fix: use fillData to estimate gas schedule
* Rebased on latest development
* Guard and use latest Curve LiquidityProvider
* `@0x/contract-addresses`: Redeploy FQT on mainnet and ropsten
Co-authored-by: Jacob Evans <jacob@dekz.net>
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
* Add a cancel token to manually enforce a timeout in Quote Requestor
* Start setTimeout before making requests, add an extra buffer
* Run prettier
* Add comment to changelog
* add tx origin blacklist to RFQ options
* Fix typo
* use set instead of array
* make sure tx origin is lower case
* changed default blacklist value from array to set
* baseline adapter code [WIP]
* fixed adapter logic, quote_requester instantiation
* modified quote-requestor test to include alt implementation
* type changes, fixes to quote requestor test
* small fixes
* working tests, made alt utils more readable
* lint errors
* added alt indicative quote tests, minor fixes
* export alt MM market offering types
* altered alt market offering to have id instead of symbols
* addressed minor comments
* updated changelog
* got rid of unnecessary, large if-block, fixed the buy-sell assignment to be from the MM's perspective
* extra logging for debugging
* fixed existingOrder size
* get rid of only flag on test, get rid of extra logging
* prettier
* `@0x/contracts-treasury` (squashed)
Fix @0x/contracts-zero-ex readme
Create package for governance contracts
Rename @0x/contracts-governance to @0x/contracts-treasury and write contracts
Write tests and such
Missed a few places where "governance" should be "treasury"`
Update changelog with PR number
Appease CI
Arbitrary treasury actions
Export treasury artifacts and wrappers
Continue to do battle with CI
Address PR feedback
* More PR feedback
* `@0x/contracts-zero-ex`: Use the `MetaTransaction` class from `@0x/protocol-utils` in tests.
* `@0x/protocol-utils`: Add the `MetaTransaction` class for EP mtxs + refactors
* update changelogs
* `@0x/protocol-utils`: Add mtx tests
* `@0x/protocol-utils`: Rename `mtx.ts` to `meta_transactions.ts` and misc review feedback
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* `@0x/contracts-zero-ex`: Address audit feedback (1/2)
* `@0x/contracts-zero-ex`: Cap the ETH transfer amount to a liquidity provider to `msg.value`
* `@0x/contracts-zero-ex`: Bump feature contract versions
* `@0x/contracts-zero-ex`: Always transfer msg.value to the liqudity provider in LiquiidityProviderFeature
* Remove PLP backwards-compatibility (#85)
* Remove backwards-compatibility from MixinZeroExBridge and LiquidityProviderSandbox
* `@0x/contracts-zero-ex`: Update CHANGELOG
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
* `@0x/contracts-zero-ex`: Remove protocol fees from native orders in certain scenarios.
* `@0x/contracts-zero-ex`: update changelog
* `@0x/contracts-zero-ex`: Add `taker` field to RFQ orders.`
`@0x/contracts-zero-ex`: Introduce protocol fees to all limit orders again.
* `@0x/contracts-zero-ex`: Rebase.
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* `@0x/contracts-zero-ex`: Fix NativeOrdersFeature order hash cancellation not emitting proper maker.
`@0x/contracts-zero-ex`: Revert to original (deployed) ZeroEx/EP proxy implementation. Optimized one is now at `ZeroExOptimized.sol`.
`@0x/contracts-zero-ex`: Add gas limits to first `transferFrom()` call in `LibTokenSpender` and `UniswapFeature`.
* `@0x/contracts-zero-ex`: Update changelog
* disable `no-empty-blocks` solidity linter rule
* `@0x/contracts-zero-ex`: Use bloom filters of greedy tokens in token transfer logic
`@0x/contracts-zero-ex`: Turn `LibTokenSpender` into `FixinTokenSpender`.
`@0x/contracts-zero-ex`: Misc renames for consistency.
* `@0x/contracts-zero-ex`: Export `GREEDY_TOKENS` list
* rebase and update changelog
* `@0x/contracts-zero-ex`: Change bloom filter hash algo based on discussions
* `@0x/contracts-zero-ex`: Fix changelog
* update orders docs
* `@0x/contracts-zero-ex`: revert if allowance call fails in uniswap feature
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* separated comparison price function into a new file, accounted for backup orders
* removed scratch code
* Adjusted documentation, object naming
* Refactored comparisonPrice function to use adjusted rate from optimizer, used native order fee schedule to adjust for order fees
* Small fixes to function, added unit tests
* Adjusted fee calculation for comparisonPrice function
* use available OptimalPathRate object
* fix lint error in test, separate out fee calculation
* Fixed market operation utils test, added additional checks for fee schedule
* removed unused dep, prettier
* `@0x/contracts-zero-ex`: Change `ProtocolFeeUnfunded` event in FQT
`@0x/contracts-zero-ex`: Use new PLP interface in FQT.
* `@0x/contract-addresses`: Deploy new FQT
* fix failing FQT test
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* Adds `docs` directory, along with boilerplate code and templates for readthedocs.org.
* docs: update orders spec
Co-authored-by: Lawrence Forman <me@merklejerk.com>
add LibTokenSpender and convert to using that
This skips the allowance target. Allowances are instead just set on the
exchange proxy itself. There is a fallback, though, to try spending from
the allowance target if the original transfer fails.
...in order to accomodate now-too-big contract TestERC20BridgeSampler,
which imports the recently-added-to NativeOrderSampler.sol.
Fixes test failing like:
1) erc20-bridge-sampler
"before all" hook in "erc20-bridge-sampler":
RuntimeError: VM Exception while processing transaction: out of gas
* ADDS quote report: pass back optional fill data for dex samples
* ADDS return fillData for Multihop in quote report
* FIXES quote report generator tests handle passing back fillData
* FIXES typing multi hop report source will always have fillData
* ADDS asset-swapper CHANGELOG entry
`@0x/contracts-zero-ex`: Remove redundant event from `BridgeAdapter`.
`@0x/contracts-zero-ex`: Treat all calldata as signed if quote signer is not in `TransformERC20Feature`.
`@0x/contracts-zero-ex`: Update bridge adapters
`@0x/contracts-zero-ex`: Add refund mechanism to mtxs
`@0x/contracts-zero-ex`: Pass sender to transfomers.
`@0x/contracts-zero-ex`: Refund protocol fees to `refundReceiver` in FQT.
`@0x/utils`: Add EP flavor of `IllegalReentrancyError`
`@0x/order-utils`: Add `refundReceiver` to FQT transform data.
`@0x/asset-swapper`: Add `refundReceiver` support to EP swap quote consumer.
* `@0x/contracts-erc20-bridge-sampler`: Add TwoHopSampler + refactor
* `@0x/asset-swapper`: Refactor + add two-hop skeleton
* Round out two-hop support in asset-swapper
* Add BalancerSampler, use it for two-hop quotes
* Fix bugs discovered from simbot
* rebases are hard
* Add intermediate token to MultiHop source breakdown
* Fix market buy bugs
* Use hybrid on-chain/off-chain sampling for Balancer
* Another day, another rebase
* Update changelogs
* Address PR feedback, CI fixes
* Address more PR feedback
* Bancor Bridge contract
* refactor Quote and FillData types
* BancorService (wrapper for the Bancor SDK)
* disable bancor while waiting for bancor SDK update
* add bancor to test
`@0x/contracts-zero-ex`: Rename all feature contracts to have `Feature` suffix.
`@0x/contracts-zero-ex`: Return an `IZeroExContract` instance from `fullMigrateAsync()`.
* feat: mStable
* deploy and CHANGELOG
* `@0x/contracts-utils`: Add more testnet addresses.
* `@0x/contract-addresses`: Deply Mstable on testnets
* `@0x/contract-addresses`: Remove testnet deployments of mStable :-)
* move `erc20-bridge-sampler` into `asset-swapper`
remove `DevUtils` dependency from sampler contract.
* `@0x/asset-swapper`: Add ERC20BridgeSampler support for validating orders in maker fees denominated in non-maker assets.
`@0x/asset-swapper`: Add tests for `NativeOrderSampler`.
* `@0x/asset-swapper`: Return `0` sample if native order asset data is unsupported.
* `@0x/asset-swapper`: Fix failing test.
* feat: ExchangeProxy FQT fruit rollup (#2645)
* feat: Optimize Bridges in ExchangeProxy
* compile and most work
* work around to trust the delecall contract
* force allowances
* Update Kyber/Eth2Dai bridges
* Remove memory state where not required
* cleanup
* Combine Bridges into one adapter
* mixins
* refactor out ZeroExBridge
* move out interface
* comment out hacks
* update migrations
* remove simbot hacks
* AdapterAddresses and mStable
* Share constructor arg
* fix migration
* Remove whitespace
* `@0x/contracts-zero-ex`: BridgeAdapter -- revert if bridge address is 0.
* `@0x/contract-addresses`: Deploy FQT.
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
* update ganache contract addresses
* fix: asset-swapper empty batch call (#2669)
* update ganache contract addresses
* fix: asset-swapper prevent empty sampler batch call
* add sampler to migrations
* change migrations version
* Use contract-wrappers and artifacts
* remove extra data
* remove deps, set sampler to NULL_ADDRESS
* all the exports
* noop sell rate too
* update ganache contract addresses
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
`@0x/contracts-zero-ex`: Add refund mechanism to mtxs
`@0x/contracts-zero-ex`: Pass sender to transfomers.
`@0x/contracts-zero-ex`: Refund protocol fees to `refundReceiver` in FQT.
`@0x/utils`: Add EP flavor of `IllegalReentrancyError`
`@0x/order-utils`: Add `refundReceiver` to FQT transform data.
`@0x/asset-swapper`: Add `refundReceiver` support to EP swap quote consumer.
* `@0x/asset-swapper`: Speed up path optimizer.
* `@0x/asset-swapper`: address my own review comment
* `@0x/asset-swapper`: Update changelog
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Jacob Evans <jacob@dekz.net>
`@0x/contracts-erc20-bridge-sampler`: Refactor.
`@0x/contracts-erc20-bridge-sampler`: Add support for more varied curves.
`@0x/contracts-integrations`: Update curve bridge tests.
* fix: allow a empty overrides to signal no default
* fix: asset-swapper yield to the event loop every mix path
* fix: optimizations skip order find if Native excluded
* changelogs
* chore: update protocol fee multiplier
* fix: tests async
* Update to use KNP getExpectedRateAfterFee
* hack: use overrides instead of forking in ganache
* fix: added some tests using overrides
* override sampler
* Overrides in bridge_sampler_mainnet_test
* use getContracts to fake out tests
* chore: supply devUtils address
* feat: specify the call override by default
* CHANGELOGs
* export SamplerOverrides
* fix package.json
* fix: after rebase
* Detect Bridge orders and fill direct
* Mark as external for try/catch
* Initial tests
* discuss: Continue if protocol fee insufficient
* Emit ProtocolFeeUnfunded
* put the clamps on taker balance
* feat: GST free and optimize
* fix: low level GST free call
* fix: review feedback
* remove unused return struct
It was added due to the introduction of the use of the TakerRequest type
from @0x/quote-server, as it's included in that structure. However,
that structure is primarily used within the quote server as the output
of parameter parsing, and that parsing routine transforms the API key
HEADER from the request into the TakerRequest type. In short, the API
key is input as a header, not a parameter.
Addresses review comment
https://github.com/0xProject/0x-monorepo/pull/2582#discussion_r437624647
* Include in RFQ-T info log entry the query parameters that were sent to
the maker.
* Re-organize log entry
* Rename top-level field from rfqtMakerResponse to
rfqtMakerInteraction.
* Create separate `request` and `response` sub-objects.
* Rename field `latency` to `latencyMs`.
* Change QuoteRequestor logger parameters to conform to pino logging
library, duplicating (one of) their LogFunction prototype interfaces for
our purposes here. With this, every log emission now includes BOTH a
human-readable message AND a JSON object. Also, this pattern has been
applied to both the error logger and the info logger.
* Do better handling of Axios errors when logging them. Before we were
(a) logging errors in a separate log entry than the message that
explains it, and (b) dumping the whole error object to the log entry,
which was resulting in an object so massive that pino/Kibana was
splitting it into 3 separate entries. Now, we (a) follow the pattern
described in the previous bullet, which puts the error object and the
human readable message into the same log entry, and (b) we check to see
if an error object is Axios-specific, and if so then we use the
AxiosError.toJSON() method to strip out the irrelevant properties.
* Log a uniform maker response metric, with maker endpoint URL, status
code, and latency, for both successful cases and erroneous ones.
(Before, we were only doing this for successful cases.)
This comment recently got moved from one context to another. In the old
context, the whole comment made sense, but in the new context it needed
paring down.
Do case INsensitive comparison when verifying that RFQ-T firm quote
contains the requested taker address.
This commit also introduces some changes around the RfqtRequestOpts
parameter. Without these changes, there were errors (tsc or tslint?
can't remember) about takerAddress being possibly undefined.
Rather than asserting it yet again (which we're already doing via
assertTakerAddressOrThrow()), I decided to change the RfqtRequestOpts
param to be required, not optional. Coincidentally, this brings the
requestRfqtFirmQuotesAsync() interface into alignment with the
requestRfqtIndicativeQuotesAsync() one, which already requires the
options parameter.
Addresses review comment https://github.com/0xProject/0x-monorepo/pull/2574#discussion_r419770087
For firm quotes, re-use orderCalculationUtils.willOrderExpire(), just
like utils.order_prune_utils.
For indicative quotes, duplicate the logic used in that
willOrderExpire() function, since it can't be re-used for an indicative
quote (it's not a full Order object), and since the logic is very
minimal.
Addresses review comment https://github.com/0xProject/0x-monorepo/pull/2574#discussion_r419768395
In the QuoteRequestor class, when _infoLogger() is used, log objects
directly, rather than stringifying them first. This changes the 0x API
log rendering from
{"level":"info","time":1588209135290,"pid":13022,"hostname":"precision5510","msg":"{\"aggregatedRfqtLatencyMs\":4}","v":1}
to
{"level":"info","time":1588224481908,"pid":3637,"hostname":"precision5510","aggregatedRfqtLatencyMs":2,"v":1}
This facilitates parsing of these logs by Kibana.
I tried to get fancy back in 5effc6ec90.
I changed something more than the single refactor targetted by the
commit, and it broke things! This reverts part of that commit,
restoring clean runs of 0x API tests.
`@0x/contracts-zero-ex`: `bootstrap()` de-registers itself and self-destructs once it's called.
`@0x/contracts-zero-ex`: `bootstrap()` now takes arbitrary call data, but the callee is fixed in an immutable.
`@0x/contracts-zero-ex`: `bootstrap()` caller is fixed in an immutable.
`@0x/contracts-zero-ex`: `bootstrap()` only calls a single target.
`@0x/contracts-zero-ex`: Renamed `BasicMigration` to `InitialMigration`.
`@0x/contracts-zero-ex`: `InitialMigration` is now the bootstrap target and multiplexes to the initial features.
`@0x/contracts-zero-ex`: Add `Migrate` feature and tests.
`@0x/contracts-zero-ex`: Re-organize contract locatins (remove `interfaces` folder).
Validate that the responses returned from maker endpoints both conform
to expected JSON schema data types and also have the expected asset
data, per the taker's request.
These changes have been exercised via mocha tests in the 0x-api repo.
Not sure why I had to add GetMarketOrdersRfqtOpts to the package
exports. `yarn test:generate_docs:circleci` said:
$ node ./packages/monorepo-scripts/lib/doc_generate.js --package @0x/asset-swapper
GENERATE_DOCS: Generating Typedoc JSON for @0x/asset-swapper...
GENERATE_DOCS: Generating Typedoc Markdown for @0x/asset-swapper...
GENERATE_DOCS: Modifying Markdown To Exclude Unexported Items...
Error: @0x/asset-swapper package needs to export:
GetMarketOrdersRfqtOpts
From it's index.ts. If any are from external dependencies, then add them to the EXTERNAL_TYPE_MAP.
at DocGenerateUtils._lookForMissingReferenceExportsThrowIfExists (/root/repo/packages/monorepo-scripts/lib/utils/doc_generate_utils.js:288:19)
at DocGenerateUtils.<anonymous> (/root/repo/packages/monorepo-scripts/lib/utils/doc_generate_utils.js:255:34)
at step (/root/repo/packages/monorepo-scripts/lib/utils/doc_generate_utils.js:32:23)
at Object.next (/root/repo/packages/monorepo-scripts/lib/utils/doc_generate_utils.js:13:53)
at fulfilled (/root/repo/packages/monorepo-scripts/lib/utils/doc_generate_utils.js:4:58)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
There's one subtlety here: apiKey has been moved to be within the rfqt
namespace, after talking to Fabio and discovering that he only needs to
re-use the API key in 0x API, not in asset-swapper.
SwapQuoter._getSwapQuoteAsync() was merging defaults into the options
sent into SwapQuoteCalculator.calculateMarket{Buy,Sell}SwapQuoteAsync(),
but it was using the unmerged options function parameter for the RFQ-T
options and also for the gas price option.
* test for returning a 200 with invalid data, and additonal logging for that case
* Ensure RFQ-T response has asset data we expect
* validate signed order schema
* give more descriptive variable names and test an unsigned order
* takeout unused var
The latest version of Sphinx (documentation generation utility) was
giving a warning (which we were configured to treat as an error) about
there being multiple docstring definitions for the same class. This had
never been flagged before.
`@0x/contract-addresses`: Redeploy `DexForwarderBridge` on Mainnet with Gas Token freeing
`@0x/contract-addresses`: Revert to older Curve Bridge (without Gas Tokens)
* Forwarder Market sell specified amount or throw
* Address feedback comments
* Break if we have only protocol fee remaining
* Lint
* Update deployed addresses
* Updated artifacts and wrappers
* [asset-swapper] Forwarder throws on market sell if amount not sold (#2534)
* Gas Tokens in Bridges
* Added freesGasTokensFromCollector.
To handle the case where GST2 is being traded and the balanceOf checks become confusing
* Update CHANGELOGs
`@0x/asset-swapper`: Make native fills one single path.
`@0x/asset-swapper`: Redo the optimizer algo again to be more thorough.
`@0x/asset-swapper`: Make `getMedianSellRate()` return `1` if maker token == taker token.
@@ -4,17 +4,17 @@ We welcome contributions from anyone on the internet and are grateful for even t
### Getting started
1. Fork `0xproject/0x-monorepo`
1. Fork `0xproject/0x-tools`
2. Clone your fork
3. Follow the [installation & build steps](https://github.com/0xProject/0x-monorepo#install-dependencies) in the repo's top-level README.
3. Follow the [installation & build steps](https://github.com/0xProject/0x-tools#install-dependencies) in the repo's top-level README.
4. Setup the recommended [Development Tooling](#development-tooling).
5. Open a PR with the `[WIP]` flag against the `development` branch and describe the change you are intending to undertake in the PR description. (see [our branch naming conventions](#branch-structure))
5. Open a [draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests/) against the `development` branch and describe the change you are intending to undertake in the PR description. (see [our branch naming conventions](#branch-structure))
Before removing the `[WIP]` tag and submitting the PR for review, make sure:
Before making the PR "Ready for review", make sure:
- It passes our linter checks (`yarn lint`)
- It is properly formatted with Prettier (`yarn prettier`)
- It passes our continuous integration tests (See: [Enabling code coverage checks on your fork](#enabling-code-coverage-checks-on-your-fork) for instructions on getting the `submit-coverage` test to pass on forks)
- It passes our continuous integration tests (See: [Enabling code coverage checks on your fork](#fix-submit-coverage-ci-failure) for instructions on getting the `submit-coverage` test to pass on forks)
- You've created/updated the corresponding [CHANGELOG](#CHANGELOGs) entries.
- Your changes have sufficient test coverage (e.g regression tests have been added for bug fixes)
@@ -59,16 +59,14 @@ We strongly recommend you use the [VSCode](https://code.visualstudio.com/) text
#### Linter
We use [TSLint](https://palantir.github.io/tslint/) with [custom configs](https://github.com/0xProject/0x-monorepo/tree/development/packages/tslint-config) to keep our code-style consistent.
We use [ESLint](https://eslint.org/docs/latest/) to keep our code-style consistent.
Use `yarn:lint` to lint the entire monorepo, and `PKG={PACKAGE_NAME} yarn lint` to lint a specific package.
If you want to change a rule, or add a custom rule, please make these changes to our [tslint-config](https://github.com/0xProject/0x-monorepo/tree/development/packages/tslint-config) package. All other packages have it as a dependency.
Use `yarnlint` to lint the entire monorepo, and `PKG={PACKAGE_NAME} yarn lint` to lint a specific package.
@@ -91,15 +89,3 @@ A few of our coding conventions are not yet enforced by the linter/auto-formatte
1. If you _must_ cast a variable to any - try to type it back as fast as possible. (e.g., `const cw = ((zeroEx as any)._contractWrappers as ContractWrappers);`). This ensures subsequent code is type-safe.
1. Our enum conventions coincide with the recommended TypeScript conventions, using capitalized keys, and all-caps snake-case values. Eg `GetStats = 'GET_STATS'`
1. All public, exported methods/functions/classes must have associated Javadoc-style comments.
### Fix `submit-coverage` CI failure
If you simply fork the repo and then create a PR from it, your PR will fail the `submit-coverage` check on CI. This is because the 0x CircleCI configuration sets the `COVERALLS_REPO_TOKEN` environment variable to the token for `0xProject/0x-monorepo`, but when running the check against your fork the token needs to match your repo's name `your-username/0x-monorepo`.
To facilitate this check, after creating your fork, but before creating the branch for your PR, do the following:
1. Log in to [coveralls.io](https://coveralls.io/), go to `Add Repos`, and enable your fork. Then go to the settings for that repo, and copy the `Repo Token` identifier.
2. Log in to [CircleCI](https://circleci.com/login), go to `Add Projects`, click the `Set Up Project` button corresponding to your fork, and then click `Start Building`. (Aside from step 3 below, no actual set up is needed, since it will use the `.circleci/config.yml` file in 0x-monorepo, so you can ignore all of the instruction/explanation given on the page with the `Start Building` button.)
3. In CircleCI, configure your project to add an environment variable, with name `COVERALLS_REPO_TOKEN`, and for the value paste in the `Repo Token` you copied in step 1.
Now, when you push to your branch, CircleCI will automatically run all of the checks in your own instance, and the coverage check will work since it has the proper `Repo Token`, and the PR will magically refer to your own checks rather than running them in the 0x CircleCI instance.
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] Prefix PR title with `[WIP]` if necessary.
- [ ] Add tests to cover changes as needed.
- [ ] Update documentation as needed.
- [ ] Add new entries to the relevant CHANGELOG.jsons.
# Number of days of inactivity before an issue becomes stale
daysUntilStale:30
# Number of days of inactivity before a stale issue is closed
daysUntilClose:30
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
# Label to use when marking an issue as stale
staleLabel:stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment:>
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment:>
This issue has been automatically closed because no activity occured in 7 days after being marked as stale. If it's still relevant - feel free to reopen. Thank you
stale-issue-message:"This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-label:stale
stale-pr-message:"This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
# Time immemorial when in debug-only mode (ie. on pull requests).
# `STALEBOT_START_DATE` otherwise.
# You can use this as a killswitch by setting `STALEBOT_START_DATE` in the far future.
start-date:${{ github.event_name == 'pull_request' && '1970-01-01T00:00:00Z' || secrets.STALEBOT_START_DATE }}# ISO 8601 or RFC 2822
[0x][website-url] 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](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).
[0x][website-url] 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](https://protocol.0x.org/).
This repository is a monorepo including the 0x protocol smart contracts and numerous developer tools. Each public sub-package is independently published to NPM.
Visit our [developer portal](https://0x.org/docs/tools/order-utils) for a comprehensive list of core & community maintained packages. All packages maintained with this monorepo are listed below.
| [`0x-contract-addresses`](/python-packages/contract_addresses) | [](https://pypi.org/project/0x-contract-addresses/) | A tiny utility library for getting known deployed contract addresses for a particular network |
| [`0x-order-utils`](/python-packages/order_utils) | [](https://pypi.org/project/0x-order-utils/) | A set of utilities for generating, parsing, signing and validating 0x orders |
| [`0x-sra-client`](/python-packages/sra_client) | [](https://pypi.org/project/0x-sra-client/) | A Python client for interacting with servers conforming to the Standard Relayer API specification |
Visit our [developer portal](https://0x.org/docs/) 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](/contracts/README.md) for a list of deployed packages.
| [`@0x/contracts-asset-proxy`](/contracts/asset-proxy) | [](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 |
| [`@0x/contracts-erc20`](/contracts/erc20) | [](https://www.npmjs.com/package/@0x/contracts-erc20) | Implementations of various ERC20 tokens |
| [`@0x/contracts-erc721`](/contracts/erc721) | [](https://www.npmjs.com/package/@0x/contracts-erc721) | Implementations of various ERC721 tokens |
| [`@0x/contracts-erc1155`](/contracts/erc1155) | [](https://www.npmjs.com/package/@0x/contracts-erc1155) | Implementations of various ERC1155 tokens |
| [`@0x/contracts-exchange`](/contracts/exchange) | [](https://www.npmjs.com/package/@0x/contracts-exchange) | The [`Exchange`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#exchange) contract used for settling trades within the protocol |
| [`@0x/contracts-exchange-forwarder`](/contracts/exchange-forwarder) | [](https://www.npmjs.com/package/@0x/contracts-exchange-forwarder) | A [`Forwarder`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/forwarder-specification.md) contract used to simplify UX for interacting with the protocol |
| [`@0x/contracts-exchange-libs`](/contracts/exchange-libs) | [](https://www.npmjs.com/package/@0x/contracts-exchange-libs) | Protocol specific libraries used within the [`Exchange`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#exchange) contract |
| [`@0x/contracts-extensions`](/contracts/extensions) | [](https://www.npmjs.com/package/@0x/contracts-extensions) | Contracts that interact with and extend the functionality of the core protocol |
| [`@0x/contracts-multisig`](/contracts/multisig) | [](https://www.npmjs.com/package/@0x/contracts-multisig) | Various implementations of multisignature wallets, including the [`AssetProxyOwner`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#assetproxyowner) contract that has permissions to upgrade the protocol |
| [`@0x/contracts-test-utils`](/contracts/test-utils) | [](https://www.npmjs.com/package/@0x/contracts-test-utils) | TypeScript/Javascript shared utilities used for testing contracts |
| [`@0x/contracts-utils`](/contracts/utils) | [](https://www.npmjs.com/package/@0x/contracts-utils) | Generic libraries and utilities used throughout all of the contracts |
| [`@0x/contracts-coordinator`](/contracts/coordinator) | [](https://www.npmjs.com/package/@0x/contracts-coordinator) | A contract that allows users to execute 0x transactions with permission from a Coordinator |
| [`@0x/contracts-dev-utils`](/contracts/dev-utils) | [](https://www.npmjs.com/package/@0x/contracts-dev-utils) | A contract contains utility functions for developers (such as validating many orders using a single eth_call) |
| [`@0x/contracts-staking`](/contracts/staking) | [](https://www.npmjs.com/package/@0x/contracts-staking) | Implements the stake-based liquidity incentives defined by [`ZEIP-31`](https://github.com/0xProject/ZEIPs/issues/31) |
| [`@0x/contracts-zero-ex`](/contracts/zero-ex) | [](https://www.npmjs.com/package/@0x/contracts-zero-ex) | The contracts used for settling trades within the protocol |
| [`@0x/contracts-erc20`](/contracts/erc20) | [](https://www.npmjs.com/package/@0x/contracts-erc20) | Implementations of various ERC20 tokens |
| [`@0x/contracts-test-utils`](/contracts/test-utils) | [](https://www.npmjs.com/package/@0x/contracts-test-utils) | TypeScript/Javascript shared utilities used for testing contracts |
| [`@0x/contracts-utils`](/contracts/utils) | [](https://www.npmjs.com/package/@0x/contracts-utils) | Generic libraries and utilities used throughout all of the contracts |
| [`0x.js`](/packages/0x.js) | [](https://www.npmjs.com/package/0x.js) | An aggregate package combining many smaller utility packages for interacting with the 0x protocol |
| [`@0x/contract-addresses`](/packages/contract-addresses) | [](https://www.npmjs.com/package/@0x/contract-addresses) | A tiny utility library for getting known deployed contract addresses for a particular network. |
| [`@0x/contract-wrappers`](/packages/contract-wrappers) | [](https://www.npmjs.com/package/@0x/contract-wrappers) | JS/TS wrappers for interacting with the 0x smart contracts |
| [`@0x/order-utils`](/packages/order-utils) | [](https://www.npmjs.com/package/@0x/order-utils) | A set of utilities for generating, parsing, signing and validating 0x orders |
| [`@0x/sra-spec`](/packages/sra-spec) | [](https://www.npmjs.com/package/@0x/sra-spec) | OpenAPI specification for the Standard Relayer API |
| [`@0x/connect`](/packages/connect) | [](https://www.npmjs.com/package/@0x/connect) | An HTTP/WS client for interacting with the Standard Relayer API |
| [`@0x/asset-swapper`](/packages/asset-swapper) | [](https://www.npmjs.com/package/@0x/asset-swapper) | Convenience package for discovering and performing swaps for any ERC20 Assets |
| [`@0x/sol-compiler`](/packages/sol-compiler) | [](https://www.npmjs.com/package/@0x/sol-compiler) | A wrapper around solc-js that adds smart re-compilation, ability to compile an entire project, Solidity version specific compilation, standard input description support and much more. |
| [`@0x/sol-coverage`](/packages/sol-coverage) | [](https://www.npmjs.com/package/@0x/sol-coverage) | A solidity test coverage tool |
| [`@0x/sol-profiler`](/packages/sol-profiler) | [](https://www.npmjs.com/package/@0x/sol-profiler) | A solidity gas cost profiler |
| [`@0x/abi-gen`](/packages/abi-gen) | [](https://www.npmjs.com/package/@0x/abi-gen) | Tool to generate TS wrappers from smart contract ABIs |
| [`@0x/tslint-config`](/packages/tslint-config) | [](https://www.npmjs.com/package/@0x/tslint-config) | Custom TSLint rules used by the 0x core team |
| [`@0x/types`](/packages/types) | [](https://www.npmjs.com/package/@0x/types) | Shared type declarations |
| [`@0x/typescript-typings`](/packages/typescript-typings) | [](https://www.npmjs.com/package/@0x/typescript-typings) | Repository of types for external packages |
| [`@0x/assert`](/packages/assert) | [](https://www.npmjs.com/package/@0x/assert) | Type and schema assertions used by our packages |
| [`@0x/base-contract`](/packages/base-contract) | [](https://www.npmjs.com/package/@0x/base-contract) | BaseContract used by auto-generated `abi-gen` wrapper contracts |
| [`@0x/dev-utils`](/packages/dev-utils) | [](https://www.npmjs.com/package/@0x/dev-utils) | Dev utils to be shared across 0x packages |
| [`@0x/protocol-utils`](/packages/protocol-utils) | [](https://www.npmjs.com/package/@0x/protocol-utils) | A set of utilities for generating, parsing, signing and validating 0x orders |
| [`@0x/contract-addresses`](/packages/contract-addresses) | [](https://www.npmjs.com/package/@0x/contract-addresses) | A tiny utility library for getting known deployed contract addresses for a particular network. |
| [`@0x/contract-wrappers`](/packages/contract-wrappers) | [](https://www.npmjs.com/package/@0x/contract-wrappers) | JS/TS wrappers for interacting with the 0x smart contracts |
@@ -113,7 +53,7 @@ You can include those by prepending the `@0x/typescript-typings` package to your
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.
You will also need to have Python 3 installed, in order to build and run the tests of `abi-gen`'s command-line interface, which is integrated with the yarn build, yarn test, and yarn lint commands described below. More specifically, your local pip should resolve to the Python 3 version of pip, not a Python 2.x version.
### Build
To build all packages:
@@ -142,7 +80,7 @@ yarn build
To build a specific package:
```bash
PKG=@0x/web3-wrapper yarn build
PKG=@0x/protocol-utils yarn build
```
To build all contracts packages:
@@ -165,7 +103,7 @@ To watch a specific package and all it's dependent packages:
PKG=[NPM_PACKAGE_NAME] yarn watch
e.g
PKG=@0x/web3-wrapper yarn watch
PKG=@0x/protocol-utils yarn watch
```
### Clean
@@ -179,7 +117,7 @@ yarn clean
Clean a specific package
```bash
PKG=0x.js yarn clean
PKG=@0x/protocol-utils yarn clean
```
### Rebuild
@@ -193,7 +131,7 @@ yarn rebuild
To re-build (clean & build) a specific package & it's deps:
Building solidity files will update the contract artifact in `{package-name}/generated-artifacts/{contract}.json`, but does not automatically update the `contract-artifacts` or `contract-wrappers` packages, which are generated from the artifact JSON. See `contract-artifacts/README.md` for instructions on updating these packages.
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-coverage`, 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.
"note":"Drastically reduced bundle size by adding .npmignore, only exporting specific artifacts/wrappers/utils",
"pr":2330
},
{
"note":"ERC20Wrapper and ERC1155ProxyWrapper constructors now require an instance of DevUtilsContract",
"pr":2034
},
{
"note":"Disallow the zero address from being made an authorized address in MixinAuthorizable, and created an archive directory that includes an old version of Ownable",
"pr":2019
},
{
"note":"Remove `LibAssetProxyIds` contract",
"pr":2055
},
{
"note":"Compile and export all contracts, artifacts, and wrappers by default",
"pr":2055
},
{
"note":"Remove unused dependency on IAuthorizable in IAssetProxy",
"pr":1910
},
{
"note":"Add `ERC20BridgeProxy`",
"pr":2220
},
{
"note":"Add `Eth2DaiBridge`",
"pr":2221
},
{
"note":"Add `UniswapBridge`",
"pr":2233
},
{
"note":"Replaced `SafeMath` with `LibSafeMath`",
"pr":2254
}
],
"timestamp":1575296764
},
{
"version":"2.3.0-beta.4",
"changes":[
{
"note":"Implement `KyberBridge`.",
"pr":2352
},
{
"note":"Implement `DydxBridge`.",
"pr":2365
}
],
"timestamp":1575290197
},
{
"version":"2.3.0-beta.3",
"changes":[
{
"note":"Dependencies updated"
}
],
"timestamp":1574238768
},
{
"version":"2.3.0-beta.2",
"changes":[
{
"note":"Drastically reduced bundle size by adding .npmignore, only exporting specific artifacts/wrappers/utils",
"pr":2330
}
],
"timestamp":1574030254
},
{
"version":"2.3.0-beta.1",
"changes":[
{
"note":"ERC20Wrapper and ERC1155ProxyWrapper constructors now require an instance of DevUtilsContract",
"pr":2034
}
],
"timestamp":1573159180
},
{
"version":"2.3.0-beta.0",
"changes":[
{
"note":"Disallow the zero address from being made an authorized address in MixinAuthorizable, and created an archive directory that includes an old version of Ownable",
"pr":2019
},
{
"note":"Remove `LibAssetProxyIds` contract",
"pr":2055
},
{
"note":"Compile and export all contracts, artifacts, and wrappers by default",
"pr":2055
},
{
"note":"Remove unused dependency on IAuthorizable in IAssetProxy",
"pr":1910
},
{
"note":"Add `ERC20BridgeProxy`",
"pr":2220
},
{
"note":"Add `Eth2DaiBridge`",
"pr":2221
},
{
"note":"Add `UniswapBridge`",
"pr":2233
},
{
"note":"Replaced `SafeMath` with `LibSafeMath`",
"pr":2254
}
],
"timestamp":1570135330
},
{
"timestamp":1568744790,
"version":"2.2.8",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1567521715,
"version":"2.2.7",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1566446343,
"version":"2.2.6",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1565296576,
"version":"2.2.5",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"version":"2.2.4",
"changes":[
{
"note":"Updated calls to <contract wrapper>.deployFrom0xArtifactAsync to include artifact dependencies.",
"pr":1995
}
],
"timestamp":1564607468
},
{
"timestamp":1563957393,
"version":"2.2.3",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1563193019,
"version":"2.2.2",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1563047529,
"version":"2.2.1",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"version":"2.2.0",
"changes":[
{
"note":"Add `LibAssetProxyIds` contract",
"pr":1835
},
{
"note":"Updated ERC1155 Asset Proxy. Less optimization. More explicit handling of edge cases.",
"pr":1852
},
{
"note":"Implement StaticCallProxy",
"pr":1863
}
],
"timestamp":1563006338
},
{
"timestamp":1558712885,
"version":"2.1.5",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1557961111,
"version":"2.1.4",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1557799313,
"version":"2.1.3",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"version":"2.1.2",
"changes":[
{
"note":"Update tests to use contract-built-in `awaitTransactionSuccessAsync`",
"pr":1797
},
{
"note":"Make `ERC721Wrapper.setApprovalForAll()` take an owner address instead of a token ID",
"pr":1819
},
{
"note":"Automatically set unlimited proxy allowances in `ERC721.setBalancesAndAllowancesAsync()`",
"pr":1819
},
{
"note":"Add `setProxyAllowanceForAllAsync()` to `ERC1155ProxyWrapper`.",
"pr":1819
}
],
"timestamp":1557507213
},
{
"version":"2.1.1",
"changes":[
{
"note":"Dependencies updated"
}
],
"timestamp":1554997931
},
{
"version":"2.1.0",
"changes":[
{
"note":"Run Web3ProviderEngine without excess block polling",
"pr":1695
}
],
"timestamp":1553183790
},
{
"version":"2.0.0",
"changes":[
{
"note":"Do not reexport external dependencies",
"pr":1682
},
{
"note":"Add ERC1155Proxy",
"pr":1661
},
{
"note":"Bumped solidity version to ^0.5.5",
"pr":1701
},
{
"note":"Integration testing for ERC1155Proxy",
"pr":1673
}
],
"timestamp":1553091633
},
{
"timestamp":1551479279,
"version":"1.0.9",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1551299797,
"version":"1.0.8",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1551220833,
"version":"1.0.7",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1551130135,
"version":"1.0.6",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1549733923,
"version":"1.0.5",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"version":"1.0.4",
"changes":[
{
"note":"Dependencies updated"
}
],
"timestamp":1549547375
},
{
"version":"1.0.3",
"changes":[
{
"note":"Fake publish to enable pinning"
}
],
"timestamp":1549504360
},
{
"timestamp":1549452781,
"version":"1.0.2",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"timestamp":1549373905,
"version":"1.0.1",
"changes":[
{
"note":"Dependencies updated"
}
]
},
{
"version":"1.0.0",
"changes":[
{
"note":"Move all AssetProxy contracts out of contracts-protocol to new package",
* Drastically reduced bundle size by adding .npmignore, only exporting specific artifacts/wrappers/utils (#2330)
* ERC20Wrapper and ERC1155ProxyWrapper constructors now require an instance of DevUtilsContract (#2034)
* Disallow the zero address from being made an authorized address in MixinAuthorizable, and created an archive directory that includes an old version of Ownable (#2019)
* Remove `LibAssetProxyIds` contract (#2055)
* Compile and export all contracts, artifacts, and wrappers by default (#2055)
* Remove unused dependency on IAuthorizable in IAssetProxy (#1910)
* Add `ERC20BridgeProxy` (#2220)
* Add `Eth2DaiBridge` (#2221)
* Add `UniswapBridge` (#2233)
* Replaced `SafeMath` with `LibSafeMath` (#2254)
## v2.3.0-beta.4 - _December 2, 2019_
* Implement `KyberBridge`. (#2352)
* Implement `DydxBridge`. (#2365)
## v2.3.0-beta.3 - _November 20, 2019_
* Dependencies updated
## v2.3.0-beta.2 - _November 17, 2019_
* Drastically reduced bundle size by adding .npmignore, only exporting specific artifacts/wrappers/utils (#2330)
## v2.3.0-beta.1 - _November 7, 2019_
* ERC20Wrapper and ERC1155ProxyWrapper constructors now require an instance of DevUtilsContract (#2034)
## v2.3.0-beta.0 - _October 3, 2019_
* Disallow the zero address from being made an authorized address in MixinAuthorizable, and created an archive directory that includes an old version of Ownable (#2019)
* Remove `LibAssetProxyIds` contract (#2055)
* Compile and export all contracts, artifacts, and wrappers by default (#2055)
* Remove unused dependency on IAuthorizable in IAssetProxy (#1910)
* Add `ERC20BridgeProxy` (#2220)
* Add `Eth2DaiBridge` (#2221)
* Add `UniswapBridge` (#2233)
* Replaced `SafeMath` with `LibSafeMath` (#2254)
## v2.2.8 - _September 17, 2019_
* Dependencies updated
## v2.2.7 - _September 3, 2019_
* Dependencies updated
## v2.2.6 - _August 22, 2019_
* Dependencies updated
## v2.2.5 - _August 8, 2019_
* Dependencies updated
## v2.2.4 - _July 31, 2019_
* Updated calls to <contractwrapper>.deployFrom0xArtifactAsync to include artifact dependencies. (#1995)
## v2.2.3 - _July 24, 2019_
* Dependencies updated
## v2.2.2 - _July 15, 2019_
* Dependencies updated
## v2.2.1 - _July 13, 2019_
* Dependencies updated
## v2.2.0 - _July 13, 2019_
* Add `LibAssetProxyIds` contract (#1835)
* Updated ERC1155 Asset Proxy. Less optimization. More explicit handling of edge cases. (#1852)
* Implement StaticCallProxy (#1863)
## v2.1.5 - _May 24, 2019_
* Dependencies updated
## v2.1.4 - _May 15, 2019_
* Dependencies updated
## v2.1.3 - _May 14, 2019_
* Dependencies updated
## v2.1.2 - _May 10, 2019_
* Update tests to use contract-built-in `awaitTransactionSuccessAsync` (#1797)
* Make `ERC721Wrapper.setApprovalForAll()` take an owner address instead of a token ID (#1819)
* Automatically set unlimited proxy allowances in `ERC721.setBalancesAndAllowancesAsync()` (#1819)
* Add `setProxyAllowanceForAllAsync()` to `ERC1155ProxyWrapper`. (#1819)
## v2.1.1 - _April 11, 2019_
* Dependencies updated
## v2.1.0 - _March 21, 2019_
* Run Web3ProviderEngine without excess block polling (#1695)
## v2.0.0 - _March 20, 2019_
* Do not reexport external dependencies (#1682)
* Add ERC1155Proxy (#1661)
* Bumped solidity version to ^0.5.5 (#1701)
* Integration testing for ERC1155Proxy (#1673)
## v1.0.9 - _March 1, 2019_
* Dependencies updated
## v1.0.8 - _February 27, 2019_
* Dependencies updated
## v1.0.7 - _February 26, 2019_
* Dependencies updated
## v1.0.6 - _February 25, 2019_
* Dependencies updated
## v1.0.5 - _February 9, 2019_
* Dependencies updated
## v1.0.4 - _February 7, 2019_
* Dependencies updated
## v1.0.3 - _February 7, 2019_
* Fake publish to enable pinning
## v1.0.2 - _February 6, 2019_
* Dependencies updated
## v1.0.1 - _February 5, 2019_
* Dependencies updated
## v1.0.0 - _Invalid date_
* Move all AssetProxy contracts out of contracts-protocol to new package (#1539)
This package contains the implementations of all of the [`AssetProxy`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#assetproxy) contracts available within the 0x protocol. These contracts are responsible for decoding the `assetData` sent to them and performing the actual transfer of assets. Addresses of the deployed contracts can be found in this 0x [guide](https://0x.org/docs/guides/0x-cheat-sheet) or the [DEPLOYS](./DEPLOYS.json) file within this package.
## Installation
**Install**
```bash
npm install @0x/contracts-asset-proxy --save
```
## Bug bounty
A bug bounty for the 2.0.0 contracts is ongoing! Instructions can be found [here](https://0x.org/docs/guides/bug-bounty-program).
## 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)-enablethem:
This package contains the implementation of the [`Broker` contract](https://github.com/0xProject/ZEIPs/issues/75). This contract serves as an entry-point to the 0x Exchange for the filling of property-based orders. Addresses of the deployed contracts can be found in this 0x [guide](https://0x.org/docs/guides/0x-cheat-sheet) or the [DEPLOYS](./DEPLOYS.json) file within this package.
## Installation
**Install**
```bash
npm install @0x/contracts-broker --save
```
## Bug bounty
A bug bounty for the 3.0 contracts is ongoing! Instructions can be found [here](https://0x.org/docs/guides/bug-bounty-program).
## 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)-enablethem:
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.