eobbad
b6597df84f
ignore generated wrappers and asset-swapper ( #591 )
2022-09-26 16:05:55 -04:00
Ido Kleinman
390e1b8510
chore: Replace TSLint with ESLint in contracts/zeroex ( #587 )
...
* replace tslint with eslint
* config file
* fix linting errors
* changelog
* prettier
2022-09-23 12:39:17 -07:00
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
b46eeadc64
Feat/multiplex/v2 ( #263 )
...
* 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
2021-08-12 17:09:46 -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
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
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
Lawrence Forman
561b60a24d
EP Native Orders ( #27 )
...
* `@0x/contracts-zero-ex`: add limit orders feature
`@0x/contracts-utils`: add `uint128` functions to `LibSafeMathV06`
* `@0x/contract-addresses`: Update ganache snapshot addresses
* `@0x/contracts-zero-ex`: Mask EIP712 struct hash values.
* `@0x/contracts-zero-ex`: Add more limit order tests
* `@0x/contracts-zero-ex`: Fix typos
* `@0x/contracts-zero-ex`: Compute fee collector address after protocol fee zero check.
* `@0x/contracts-zero-ex`: Remove WETH payment logic from fee collector fixin
* `@0x/contracts-zero-ex`: Convert all ETH to WETH in `FeeCollector`.
* `@0x/contracts-zero-ex`: Address review feedback
* `@0x/contracts-zero-ex`: Export more utils
* `@0x/contracts-zero-ex`: Rename `LimitOrdersFeatures`, `LibLimitOrders`, etc. into `*NativeOrders*`.
`@0x/contracts-zero-ex`: Emit `protocolFeePaid` in native order fill events.
`@0x/contracts-zero-ex`: Refactor to get around stack limits.
`@0x/contracts-zero-ex`: Use different storage mappings for RFQ and limit order pair cancellations.
* `@0x/contracts-zero-ex`: Add `getProtocolFeeMultiplier()` and `transferProtocolFeesForPools()` to `NativeOrdersFeature`.
* `@0x/contracts-zero-ex`: Fix broken tests
* update orders docs
* `@0x/contracts-zero-ex`: Add more tests to `NativeOrdersFeature`
* rebuild after rebase
* `@0x/contract-addresses`: Fix changelog booboo
* `@0x/contracts-zero-ex`: Add method selectors output to generated artifacts
* `@0x/contracts-zero-ex`: Add maker address to order cancel events.
`@0x/contracts-zreo-ex`: Remove `UpTo` suffix from order pair cancellation functions.
`@0x/contracts-zreo-ex`: Address misc review comments.
* `@0x/contracts-zero-ex`: More SafeMath in native orders
* update orders docs
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-11-17 15:39:40 -05:00
Lawrence Forman
297ff10c14
@0x/contracts-zero-ex
: add SignatureValidator
and MetaTransactions
features.
2020-07-10 02:36:00 -04:00
Lawrence Forman
a5a68acfec
Add Exchange Proxy to Ganache snapshot ( #2612 )
...
* `@0x/contracts-zero-ex`: Expose migration tools.
* `@0x/contract-addresses`: Update ganache snapshot Exchange Proxy addresses
* `@0x/migrations`: Add Exchange Proxy migration
2020-06-25 13:52:01 +10:00
Lawrence Forman
ebfa62637e
@0x/contracts-zero-ex
: Address audit feedback.
2020-06-08 15:28:27 -04:00
Lawrence Forman
2fce332ed7
ZeroEx: TransformERC20, TokenSpender ( #2545 )
...
* `@0x/contracts-utils`: Convert more 0.6 contracts
* `@0x/contracts-erc20`: Add solidity 0.6 contracts.
* `@0x/utils`: Add new `ZeroExRevertErrors` revert types
* `@0x/contracts-zero-ex`: Introduce the `TransformERC20` feature.
* `@0x/subproviders`: Update ganache-core.
`@0x/web3-wrapper`: Update ganache-core.
* `@0x/contracts-zero-ex`: Make `TokenSpender`'s puppet contract a distinct contract type and rename `getTokenSpenderPuppet()` to `getAllowanceTarget()`
* `@0x/zero-ex`: Rebase and use "slot" instead of "offset" language in storage buckets.
* `@0x/web3-wrapper`: Add `getAccountNonceAsync()` to `Web3Wrapper`
* `@0x/contracts-zero-ex`: Revamp TransformERC20.
* `@0x/contracts-zero-ex`: Remove `payable` from `IERC20Transformer.transform()` and disable hex capitalization linter rule because of prettier conflicts.
* `@0x/contracts-zero-ex`: Use `immutable` owner in `Puppet` instead of `Ownable`.
* `@x/utils`: Address review feedback.
* `@0x/contracts-zero-ex`: Address review feedback.
* `@0x/contracts-utils`: Address review feedback.
* `@0x/contracts-zero-ex`: Return deployment nonce in `transform()`.
* `@0x/contracts-zero-ex`: Finish returning deployment nonce in `transform()`.
* `@0x/contracts-zero-ex`: Fix doc-gen bug.
* `@0x/contracts-zero-ex`: Address review comments.
* `@0x/utils`: Add `NegativeTransformERC20OutputERror`
* `@0x/contracts-zero-ex`: Revert if the taker's output amount decreases.
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-05-20 22:47:21 -04:00
Lawrence Forman
69f7343be5
@0x/contracts-zero-ex
: Lock the caller of InitialMigration.deploy()
and actually self-destruct.
2020-04-29 14:26:55 -04:00
Lawrence Forman
12f2250ab5
@0x/contracts-zero-ex
: bootstrap()
is now a temporary feature, registered in the ZeroEx constructor.
...
`@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).
2020-04-21 22:29:46 -04:00
Lawrence Forman
c11d661b39
@0x/contracts-zero-ex`: Create ZeroEx (proxy) contracts
2020-04-21 22:29:46 -04:00