mzhu25
c1177416f5
[Final] ERC721 and ERC1155 Orders ( #429 )
...
* add LibERC721Order.sol
* Add ERC721 interface to vendor/
* Add ERC721OrdersFeature interface
* Storage lib for ERC721 orders feature
* Implement basic functionality for ERC721 orders (buy, sell, cancel, etc)
* Add isValidERC721OrderSignature to interface
* implement onERC721Received
* Implement batchBuyERC721s
* left/right orders -> sell/buy orders
* Add missing @return comments
* Implement matching functions
* Use SafeMath where necessary
* add rich errors for ERC721OrdersFeature
* Add comments
* Add presign support for ERC721 orders
* Cancel using just the order nonce
* Add IERC721OrdersFeature to IZeroEx
* Add taker callback
* Assembly optimizations in LibERC721Order
* Add ERC721Orders TS class
* create zero-ex/contracts/test/integration/ and tokens/ directories
* TestMintableERC721Token
* tmp
* address feedback from original PR (#391 )
* address feedback from original PR
* Update contracts/zero-ex/contracts/src/features/ERC721OrdersFeature.sol
Co-authored-by: Kim Persson <kimpers@users.noreply.github.com>
* address review feedback and improve order parameter naming
* Add batchCancel function
* Emit order fields in preSign
* Fix tests
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Kim Persson <kimpers@users.noreply.github.com>
Co-authored-by: Michael Zhu <mchl.zhu.96@gmail.com>
* Remove revertIfIncomplete from batchMatch
* Sanity check maker address in preSign
* ERC1155OrdersFeature contracts
* Commence refactor, abstract base contract
* ERC721OrdersFeature inherits from NFTOrders
* Refactor ERC1155OrdersFeature to inherit from NFTOrders
* Fix order hashing
* Fix ERC721OrdersFeature tests
* Typos
* Remove maker address from preSigned mapping
* disable dex sampler tests
* Refactor TS tooling
* Address PR feedback
* Rearrange event fields to better align with struct fields
* Update comments
* update AbiEncoder.create params
* Add ERC1155Order to protocol-utils
* Add ERC1155OrdersFeeature tests
* Bump package versions and regenerate contract wrappers
* Add ERC165Feature
* NFT orders: address audit findings (#417 )
* CVF-1: use pragma solidity ^0.6 instead of ^0.6.5
* CVF-11: fix inaccurate comment
* CVF-16: Enable taker callbacks for batchBuyERC1155s
* CVF-17: use internal call if revertIfIncomplete is true
* CVF-21: avoid duplicate SLOAD
* CVF-23: merge if statements
* CVF-24: Reorder status checks to be consistent with ERC721OrdersFeature
* CVF-25: Update unclear comment (canonical hash -> EIP-712 hash)
* CVF-31: Document keys of orderState mapping
* CVF-45: DRY up fees/properties hashing
* CVF-47, CVF-50, CVF-57: calculate properties.length once; hash propertyStructHashArray in-place using assembly
* CVF-56: More descriptive names for assembly variables
* CVF-71: Update confusing comment about rounding in _payFees
* CVF-72: Move ETH assertions outside of loop in _payFees
* CVF-74: Move property validation loop to else branch
* CVF-82: Update inaccurate comment
* CVF-86: Enable taker callbacks for batchBuyERC721s
* CVF-87: use internal call if revertIfIncomplete is true
* CVF-89: Perform token mismatch checks before stateful operations
* CVF-90, CVF-91: Defer ERC20 token mismatch check
* CVF-93: Add inline comments for _payFees parameters in matchERC721Orders
* CVF-94: Fix comment (Step 7 -> Step 5)
* CVF-98: Use binary & operator instead of mod
* CVF-99: Update unclear comment (canonical hash -> EIP-712 hash)
* CVF-65, CVF-66, CVF-67: Copy params.ethAvailable into local variable; check that ethSpent does not exceed ethAvailable; remove ethAvailable < erc20FillAmount check
* CVF-52, CVF-55, CVF-59: calculate fees.length once; hash feeStructHashArray in-place using assembly
* CVF-14, CVF-32: OrderState struct; separate storage mapping for 1155 cancellations so orders can be cancelled by nonce
* Update changelogs, IZeroEx artifact/wrapper
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Kim Persson <kimpers@users.noreply.github.com>
2022-02-22 10:00:22 -08:00
mzhu25
1849b1bb9a
Update ExchangeProxySwapQuoteConsumer for MultiplexV2 ( #282 )
...
* Update ExchangeProxySwapQuoteConsumer for MultiplexV2
* Move TransformERC20FeatureContract instance into private readonly
2021-09-29 16:02:13 -07:00
Lawrence Forman
901d400d62
Address spot check feedback ( #251 )
...
* UniswapV3 VIP (#237 )
* `@0x/contracts-zero-ex`: Add UniswapV3Feature
* `@0x/contracts-zero-ex`: Add UniswapV3 VIP
`@0x/contract-artifacts`: Regenerate.
`@0x/contract-wrappers`: Regenerate.
`@0x/asset-swapper`: Add UniswapV3 VIP support.
* address review comments and appease linter
* `@0x/contracts-zero-ex`: Add UniswapV3Feature tests
* Multiplex UniswapV3 (#241 )
* Add UniswapV3 support to Multiplex batchFill
* Add AssetSwapper support for Multiplex UniswapV3
* fix repo scripts that use PKG= env var (#242 )
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* `@0x/asset-swapper`: Adjust uniswap gas overhead
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
* OTC orders feature (#244 )
* Add OTC orders feature contracts
* Address PR feedback
* Remove partial fills for takerSigned variant
* Add function to query the min valid nonce
* Add ETH support
* Tightly pack expiry, nonceBucket, and nonce
* Address PR feedback
* OTC orders unit tests
* Bump prettier version
* Skip unnecessary math if takerTokenFillAmount == order.takerAmount
* appease CI
* Update contract-artifacts and contract-wrappers and CHANGELOGs
* `@0x/contracts-zero-ex`: Address spot check feedback
* `regen wrappers
* prettier
* `@0x/asset-swapper`: prettier and tweak gas schedule slightly for uni3
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
2021-06-02 14:21:14 +10:00
Jacob Evans
cd296b8767
feat: Prune Paths + Fast ABI ( #183 )
...
* 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
2021-04-28 17:16:24 +10:00
Lawrence Forman
5946d32a7d
Berlin wrappers ( #212 )
...
* `@0x/contract-wrappers`: Regenerate wrappers using updated abi-gen
Update tools deps
* update deps to hopefully fix doc gen
2021-04-27 12:16:08 -04:00
Lawrence Forman
164a5d44d9
bsc<->development rebase ( #189 )
...
* FQT: Pack Protocol/source name into source ID (#162 )
* `@0x/contracts-zero-ex`: Encode protocol ID and source name in bridge source ID
`@0x/asset-swapper`: Use new bridge source ID encoding.
* fix linter issues
* contracts cleanup (#164 )
* `@0x/contracts-zero-ex`: Add PancakeSwapFeature
* `@0x/contracts-zero-ex`: Remove tokenspender/allowance target/greedy tokens stuff.'
`@0x/contract-addresses`: Add BSC addresses. Remove exchangeProxyAllowanceTarget.
`@0x/migrations`: Remove exchangeProxyAllowanceTarget.
* Update contracts/zero-ex/contracts/src/features/IPancakeSwapFeature.sol
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
* `@0x/contracts-zero-ex`: Add sushiswap support to PancakeSwap
* `@0x/contract-artifacts`: Regenerate artifacts
`@0x/contract-wrappers`: Regenerate wrappers
* `@0x/contract-addresses`: Add BSC addresses
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
* feat: Better chain support (#163 )
* feat: Better chain support
* feat: better chain support refactor deployment constants (#166 )
* proliferate the chainId
* Refactor sampler to remove DeploymentConstants dependency and fixed addresses
* Rework WETH out, replacing with address(0)
* wat
* hack DeploymentConstants for now
* proliferate the chainId
* Refactor sampler to remove DeploymentConstants dependency and fixed addresses
* remove duped network addresses
* Rework the bridge source encoder
* Use the constants NATIVE_FEE_TOKEN in EP consumer
* `@0x/contract-addresses`: Fix WBNB address (#170 )
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
* multichain enable cakez vip (#171 )
* feat: Better chain support
* feat: better chain support refactor deployment constants (#166 )
* proliferate the chainId
* Refactor sampler to remove DeploymentConstants dependency and fixed addresses
* Rework WETH out, replacing with address(0)
* wat
* hack DeploymentConstants for now
* proliferate the chainId
* Refactor sampler to remove DeploymentConstants dependency and fixed addresses
* remove duped network addresses
* `asset-swapper`: enable pancake VIP route generation
Co-authored-by: Jacob Evans <jacob@dekz.net>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* `@0x/contracts-zero-ex`: Fix `PancakeSwapFeature` sushi values (#172 )
* `@0x/contracts-zero-ex`: Fix `PancakeSwapFeature` sushi values
* `@0x/contracts-zero-ex`: I am a bad protocologist
Co-authored-by: Lawrence Forman <me@merklejerk.com>
* feat: BSC Nerve + Dodo + Nerve + Ellipsis (#181 )
* feat: BSC Nerve + DODO v1
* CHANGELOGs
* Remove extra balance fetch
* Add Belt
* Added Ellipsis
* Update FQT address
* `@0x/contracts-zero-ex`: Delete TokenSpenderFeature and get stuff compiling
* `@0x/asset-swapper`: fix compilation
* prettier
* `@0x/asset-swapper`: Truncate LiquidityProvider source ID name
* Update packages/asset-swapper/src/utils/market_operation_utils/sampler_operations.ts
Co-authored-by: Jacob Evans <jacob@dekz.net>
* Update packages/asset-swapper/src/utils/market_operation_utils/sampler_operations.ts
Co-authored-by: Jacob Evans <jacob@dekz.net>
* `@0x/contracts-zero-ex`: Fix BakerySwap on PackageSwapFeature (#190 )
* address review comments
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
Co-authored-by: Jacob Evans <jacob@dekz.net>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-03-31 18:49:44 -04:00
mzhu25
3cc639c8d0
MultiplexFeature and BatchFillNativeOrdersFeature ( #140 )
...
* WrappedFillFeature
* Address internal feedback
* create features/interfaces/ directory
* Split NativeOrdersFeature into mixins
* Rename mixins to use NativeOrders namespace
* Add BatchFillNativeOrdersFeature
* Rename WrapperFillFeature => MultiplexFeature and add natspec comments
* Emit LiquidityProviderSwap event
* post-rebase fixes
* Multiplex mainnet fork tests
* lint
* Add tests for batch fill functions
* Remove market functions
* Addres PR feedback
* Remove nested _batchFill calls from _multiHopFill
* Add BatchFillIncompleteRevertError type
* Use call{value: amount}() instead of transfer(amount)
* Remove outdated comment
* Update some comments
* Add events
* Address spot-check recommendations
* Remove-top level events, add ExpiredRfqOrder event
* Update changelog
* Change ExpiredRfqOrder event
* Update IZeroEx artifact and contract wrapper
2021-03-08 15:45:49 -08:00
Lawrence Forman
23953d8a5a
Update artifacts and wrappers ( #145 )
...
* `@0x/contract-artifacts`: Update artifacts.
`@0x/contract-wrappers`: Regenerate wrappers
* fix doc gen
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-02-17 14:34:43 -05:00
Lawrence Forman
5083fab06a
That time DevUtils wouldn't die ( #97 )
...
* `@0x/contracts-utils`: Allow for excess return data in `LibERC20TokenV06` compat* functions
* `@0x/contracts-zero-ex`: Add DevUtils-like functions to `NativeOrdersFeature`
* `@0x/contract-artifacts`: Update IZeroEx artifact
* `@0x/contract-wrappers`: Update IZeroExContract wrapper
* `@0x/contracts-zero-ex`: Address review feedback
* `@0x/contracts-utils`: Add `LibSafeMathV06.safeDowncastToUint128()`
* `@0x/contracts-zero-ex`: Fix changelog and add cancelled get relevant state tests
* `@0x/contracts-utils`: Fix changelog
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-04 17:52:29 -05:00
Lawrence Forman
edda1edc50
@0x/protocol-utils
(#76 )
...
* add new packages
* `@0x/protocol-utils`: Update with latest code from `@0x/contracs-zero-ex` + misc stuff
* @0x/contracts-zero-ex`: Switch to using `@0x/protocol-utils` in most places
* @0x/protocol-types`: Delete this package.
* regen yarn lock
* `@0x/contracts-zero-ex`: Unpin `@0x/protocol-utils` dep.
* `@0x/contracts-integrations`: Fix borken test
* update changelogs
* `@0x/protocol-utils`: Update deps
* `@0x/protocol-utils`: add tests
* `@0x/protocol-utils`: More tests
* `@0x/protocol-utils`: Update readme.
* update deps
* run prettier
* `@0x/contract-artifacts`: Regenerate artifacts
* `@0x/contract-wrappers`: Regenerate wrappers
* `@0x/protocol-utils`: Update changelog
* `@0x/contract-wrappers`: Export stuff for doc gen
* `@0x/protocol-utils`: Use `Web3Wrapper.signTypedDataV4Async()` for MM compatibility.
* upgrade org deps
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-12-08 22:08:52 -05:00
mzhu25
7403c0255a
Feature/liquidity provider sandbox ( #16 )
...
* Update liquidity provider feature to use sandbox
* add support for liquidity provider feature in the exchange proxy swap quote consumer
* Move to off-chain liquidity provider registry
* Update ILiquidityProvider interface
* Remove some unused artifacts and wrappers
* Consolidate ILiquidityProvider
* prettier
* lint
* Address PR feedback
* Add failover to sandbox
* Add test for failover behavior in LiquidityProviderSandbox
* Update changelogs
* Emit events for the new LiquidityProvider scenarios
* Fix swap quote consumer bug
* post-rebase fixes
* `@0x/contracts-zero-ex`: bump feature versions
* Add default field to TokenAdjacencyGraph
* update addresses
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-11-13 12:22:21 -08:00
Michael Zhu
78e3cd39d1
@0x/contracts-zero-ex
: Add LiquidityProviderFeature contracts
2020-10-05 09:43:19 -07:00
Lawrence Forman
f84b375cde
UniswapFeature ( #2703 )
...
* Minimal Uniswap accessor.
* Add comments
* Safe math
* mainnet gas benchmark
* Assembler Uniswap
* Selectors and addresses
* Fix bugs in ABI encoders
* Typo
* AsmUniswap test
* Fix wantAmount computation
* Golfing
* Bypass AllowanceTarget
* Generalized asm uniswapper
* Implement ordering
* Fix pair computation
* #6 Golfing Iron
* Remove 'to' argument (saves 377 gas)
* New contract api
* `@0x/contracts-zero-ex`: Add `UniswapFeature`
* `@0x/contract-artifacts`: Regenerate artifacts
* `@0x/contract-wrappers`: Regenerate wrappers
* `@0x/asset-swapper`: Add Uniswap VIP support.
`@0x/asset-swapper`: Add `includeSources` support.
* `@0x/contracts-zero-ex`: Fix misleading comments in `UniswapFeature`.
`@0x/asset-swapper`: Fix linter errors.
* `@0x/asset-swapper`: Fix source filter bugs.
* `@0x/contracts-zero-ex`: `UniswapFeature`: Reduce calldata size for AllowanceTarget call
`@0x/asset-swapper`: Fix failing test.
* `@0x/contracts-zero-ex`: Fix ETH buy tokens not being normalized to WETH.
* `@0x/asset-swapper`: Fix multi-hop weirdness with source filters.
* `@0x/asset-swapper`: Fix failing test.
* `@0x/asset-swapper`: Really fix that broken AS test.
* `@0x/asset-swapper`: use filter objects instead of source array for valid buy and sell sources/
* `@0x/asset-swapper`: Move some source filtering logic into the sampler operations.
* `@0x/contracts-zero-ex`: Address PR feedback
* `@0x/contracts-zero-ex`: Fix feature version bug.
* `@0x/asset-swapper`: Did I actually fix AS tests this time? Who knows.
Co-authored-by: Remco Bloemen <remco@0x.org>
Co-authored-by: Michael Zhu <mchl.zhu.96@gmail.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-09-23 16:27:48 +10:00
Lawrence Forman
9d1615fa23
@0x/contract-wrappers
: Fix doc gen
2020-07-23 00:03:23 -04:00