Compare commits

...

301 Commits

Author SHA1 Message Date
Github Actions
859c36cb10 Publish
- @0x/contracts-asset-proxy@3.7.17
 - @0x/contracts-broker@1.1.35
 - @0x/contracts-coordinator@3.1.36
 - @0x/contracts-dev-utils@1.3.34
 - @0x/contracts-erc1155@2.1.35
 - @0x/contracts-erc20@3.3.14
 - @0x/contracts-erc721@3.1.35
 - @0x/contracts-exchange-forwarder@4.2.36
 - @0x/contracts-exchange-libs@4.3.35
 - @0x/contracts-exchange@3.2.36
 - @0x/contracts-extensions@6.2.30
 - @0x/contracts-integrations@2.7.62
 - @0x/contracts-multisig@4.1.36
 - @0x/contracts-staking@2.0.43
 - @0x/contracts-test-utils@5.4.6
 - @0x/contracts-treasury@1.3.0
 - @0x/contracts-utils@4.7.14
 - @0x/contracts-zero-ex@0.27.0
 - @0x/asset-swapper@16.24.0
 - @0x/contract-addresses@6.5.0
 - @0x/contract-wrappers-test@12.2.51
 - @0x/contract-wrappers@13.17.3
 - @0x/migrations@8.0.12
 - @0x/order-utils@10.4.27
 - @0x/protocol-utils@1.8.0
2021-08-06 04:54:38 +00:00
Github Actions
3e34386812 Updated CHANGELOGS & MD docs 2021-08-06 04:54:34 +00:00
Jacob Evans
a35af11981 feat: Clipper (#299)
* feat: Clipper

* feat: Curve tricrypto2 (#302)

* Scope down the token list search space for Clipper

* update deployed addresses
2021-08-06 14:12:43 +10:00
mzhu25
59eabec71e Add proposal 1 and test (#298)
* Add proposal 1 and test

* update changelog
2021-08-05 13:10:36 -07:00
Github Actions
bf4c7e7d50 Publish
- @0x/contracts-integrations@2.7.61
 - @0x/asset-swapper@16.23.1
2021-07-29 15:23:54 +00:00
Github Actions
fd098ca4df Updated CHANGELOGS & MD docs 2021-07-29 15:23:49 +00:00
Lawrence Forman
c360f8d8fd Publish (#296)
- @0x/contracts-integrations@2.7.60
 - @0x/asset-swapper@16.23.0

Co-authored-by: Github Actions <github-actions@github.com>
2021-07-29 10:54:37 -04:00
Github Actions
b358559421 Publish
- @0x/contracts-integrations@2.7.60
 - @0x/asset-swapper@16.23.0
2021-07-16 22:11:44 +00:00
Github Actions
df5aad8e8e Updated CHANGELOGS & MD docs 2021-07-16 22:11:39 +00:00
Andreas Andreakis
8dbf79db59 fix: lint (#289) 2021-07-16 12:24:56 -07:00
Andreas Andreakis
1839608e84 feat: ACryptoS StableSwap (#284) 2021-07-15 15:19:40 -07:00
Github Actions
6e3e795b8b Publish
- @0x/contracts-integrations@2.7.59
 - @0x/asset-swapper@16.22.0
2021-07-13 22:19:54 +00:00
Github Actions
d9c410a7e3 Updated CHANGELOGS & MD docs 2021-07-13 22:19:49 +00:00
Romain Butteaud
609727afe8 feat: Saddle alETH, D4 pools (#283) 2021-07-13 14:22:16 -07:00
Romain Butteaud
8a5c74c0b4 feat: IronSwap (#281)
* feat: IronSwap

* feat: IronSwap, changelog

* feat: IronSwap, prettier
2021-07-13 14:07:45 -07:00
Github Actions
cd93f3b07e Publish
- @0x/contracts-integrations@2.7.58
 - @0x/asset-swapper@16.21.0
2021-07-10 08:00:34 +00:00
Github Actions
8397b12de6 Updated CHANGELOGS & MD docs 2021-07-10 08:00:29 +00:00
Romain Butteaud
3f85acec3a feat: JetSwap (#280)
* feat: JetSwap

* feat: JetSwap, changelog
2021-07-10 00:18:29 -07:00
phil-ociraptor
d6a9e3d600 fix: uncaught type error while logging (#277) 2021-07-07 14:28:42 -05:00
phil-ociraptor
361569ac2f chore: emit a log when a quote is returned that is between 99-100% of quote (#275) 2021-07-06 17:19:41 -05:00
Github Actions
719664c145 Publish
- @0x/contracts-integrations@2.7.57
 - @0x/asset-swapper@16.20.0
2021-07-06 21:34:44 +00:00
Github Actions
f800d6c24c Updated CHANGELOGS & MD docs 2021-07-06 21:34:39 +00:00
Romain Butteaud
a9a81bcafb feat: ShibaSwap (#276) 2021-07-06 13:53:39 -07:00
Github Actions
4280307a15 Publish
- @0x/contracts-integrations@2.7.56
 - @0x/asset-swapper@16.19.1
2021-07-06 04:03:16 +00:00
Github Actions
7b57d3ae51 Updated CHANGELOGS & MD docs 2021-07-06 04:03:11 +00:00
Romain Butteaud
8a8a5bbda0 fix: adding MultiHop for Polygon (#271) 2021-07-06 13:33:41 +10:00
Jacob Evans
76987c8db1 fix: PLP fallback (#272)
* fix: PLP fallback

* CHANGELOG
2021-07-06 13:32:34 +10:00
Github Actions
6f8971cc42 Publish
- @0x/contracts-integrations@2.7.55
 - @0x/asset-swapper@16.19.0
2021-07-02 01:48:13 +00:00
Github Actions
71ab882143 Updated CHANGELOGS & MD docs 2021-07-02 01:48:08 +00:00
Romain Butteaud
5a4961c8d9 fix: KyberDMM pick best pools, Polygon KyberDMM (#269)
* fix: KyberDMM all pools, Polygon KyberDMM

* fix: KyberDMM, remove getPoolsLength interface and revert if no pools found
2021-07-01 18:07:02 -07:00
mzhu25
4c4fb99d87 Add PLP as a source for Polygon (#270)
* Whitelist PLP as a source for Polygon

* changelog
2021-07-01 17:21:23 -07:00
Github Actions
872abf09e9 Publish
- @0x/contracts-integrations@2.7.54
 - @0x/asset-swapper@6.18.3
2021-06-29 17:20:15 +00:00
Github Actions
f10bfe7d04 Updated CHANGELOGS & MD docs 2021-06-29 17:20:11 +00:00
Romain Butteaud
a74d8deff3 feat: Balancer V2 Polygon (#267) 2021-06-29 09:46:17 -07:00
Github Actions
835ee4e8de Publish
- @0x/contracts-integrations@2.7.53
 - @0x/asset-swapper@6.18.2
2021-06-24 19:25:12 +00:00
Github Actions
63ec42303f Updated CHANGELOGS & MD docs 2021-06-24 19:25:07 +00:00
Romain Butteaud
f789aebddc fix: duplicate SOURCE_FLAGS index (#266) 2021-06-24 11:58:05 -07:00
Github Actions
efd83be779 Publish
- @0x/contracts-integrations@2.7.52
 - @0x/asset-swapper@6.18.1
2021-06-22 23:37:28 +00:00
Github Actions
603bc1d51c Updated CHANGELOGS & MD docs 2021-06-22 23:37:23 +00:00
Romain Butteaud
32a930a7fc feat: FirebirdOneSwap, ApeSwap [TKR-182] [TKR-173] (#265)
* fix: removing TITAN and IRON as intermediate tokens

* feat: FirebirdOneSwap, ApeSwap, intermediate tokens update

* chore: changelog
2021-06-22 16:04:09 -07:00
Github Actions
f464bf68d7 Publish
- @0x/contracts-asset-proxy@3.7.16
 - @0x/contracts-broker@1.1.34
 - @0x/contracts-coordinator@3.1.35
 - @0x/contracts-dev-utils@1.3.33
 - @0x/contracts-erc1155@2.1.34
 - @0x/contracts-erc20@3.3.13
 - @0x/contracts-erc721@3.1.34
 - @0x/contracts-exchange-forwarder@4.2.35
 - @0x/contracts-exchange-libs@4.3.34
 - @0x/contracts-exchange@3.2.35
 - @0x/contracts-extensions@6.2.29
 - @0x/contracts-integrations@2.7.51
 - @0x/contracts-multisig@4.1.35
 - @0x/contracts-staking@2.0.42
 - @0x/contracts-test-utils@5.4.5
 - @0x/contracts-treasury@1.2.3
 - @0x/contracts-utils@4.7.13
 - @0x/contracts-zero-ex@0.26.0
 - @0x/asset-swapper@6.18.0
 - @0x/contract-addresses@6.4.0
 - @0x/contract-wrappers-test@12.2.50
 - @0x/contract-wrappers@13.17.2
 - @0x/migrations@8.0.11
 - @0x/order-utils@10.4.26
 - @0x/protocol-utils@1.7.2
2021-06-22 10:03:41 +00:00
Github Actions
ebdc4fb509 Updated CHANGELOGS & MD docs 2021-06-22 10:03:35 +00:00
Kim Persson
7580719586 feat: Lido StETH deposit integration [TKR-90] (#260)
* 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
2021-06-22 11:25:47 +02:00
Github Actions
aba9db2be7 Publish
- @0x/contracts-integrations@2.7.50
 - @0x/asset-swapper@6.17.3
2021-06-16 01:38:55 +00:00
Github Actions
a6680411c8 Updated CHANGELOGS & MD docs 2021-06-16 01:38:51 +00:00
Romain Butteaud
0d0e87de94 QUICK, TITAN, IRON as intermediate tokens, integrating WaultSwap and Polydex for Polygon, Curve renBTC pool (#264) 2021-06-15 18:12:07 -07:00
Github Actions
ccf2000c09 Publish
- @0x/contracts-asset-proxy@3.7.15
 - @0x/contracts-broker@1.1.33
 - @0x/contracts-coordinator@3.1.34
 - @0x/contracts-dev-utils@1.3.32
 - @0x/contracts-erc1155@2.1.33
 - @0x/contracts-erc20@3.3.12
 - @0x/contracts-erc721@3.1.33
 - @0x/contracts-exchange-forwarder@4.2.34
 - @0x/contracts-exchange-libs@4.3.33
 - @0x/contracts-exchange@3.2.34
 - @0x/contracts-extensions@6.2.28
 - @0x/contracts-integrations@2.7.49
 - @0x/contracts-multisig@4.1.34
 - @0x/contracts-staking@2.0.41
 - @0x/contracts-test-utils@5.4.4
 - @0x/contracts-treasury@1.2.2
 - @0x/contracts-utils@4.7.12
 - @0x/contracts-zero-ex@0.25.1
 - @0x/asset-swapper@6.17.2
 - @0x/contract-addresses@6.3.1
 - @0x/contract-wrappers-test@12.2.49
 - @0x/contract-wrappers@13.17.1
 - @0x/migrations@8.0.10
 - @0x/order-utils@10.4.25
 - @0x/protocol-utils@1.7.1
2021-06-11 03:34:49 +00:00
Github Actions
3eb2e0f56a Updated CHANGELOGS & MD docs 2021-06-11 03:34:44 +00:00
Romain Butteaud
d07c7d5b69 feat: Curve V2 (#262)
* feat: Curve V2

* fix: CurveV2 gas schedule, remove unused import from MixinCurveV2

* feat: FQT address update

* chore: Curve V2 exchange_underlying, adding Polygon atricrypto pool

* prettier

* feat: FQT Polygon address update

* feat: FQT address update
2021-06-10 19:01:11 -07:00
Romain Butteaud
adf6684c29 chore: adding Uni v3 as a fee source (#261) 2021-06-08 17:57:49 -07:00
Github Actions
9bf889aa30 Publish
- @0x/contracts-asset-proxy@3.7.14
 - @0x/contracts-broker@1.1.32
 - @0x/contracts-coordinator@3.1.33
 - @0x/contracts-dev-utils@1.3.31
 - @0x/contracts-erc1155@2.1.32
 - @0x/contracts-erc20@3.3.11
 - @0x/contracts-erc721@3.1.32
 - @0x/contracts-exchange-forwarder@4.2.33
 - @0x/contracts-exchange-libs@4.3.32
 - @0x/contracts-exchange@3.2.33
 - @0x/contracts-extensions@6.2.27
 - @0x/contracts-integrations@2.7.48
 - @0x/contracts-multisig@4.1.33
 - @0x/contracts-staking@2.0.40
 - @0x/contracts-test-utils@5.4.3
 - @0x/contracts-treasury@1.2.1
 - @0x/contracts-utils@4.7.11
 - @0x/contracts-zero-ex@0.25.0
 - @0x/asset-swapper@6.17.1
 - @0x/contract-artifacts@3.15.0
 - @0x/contract-wrappers-test@12.2.48
 - @0x/contract-wrappers@13.17.0
 - @0x/migrations@8.0.9
 - @0x/order-utils@10.4.24
 - @0x/protocol-utils@1.7.0
2021-06-02 04:53:54 +00:00
Github Actions
e81c88564e Updated CHANGELOGS & MD docs 2021-06-02 04:53:49 +00: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
Github Actions
289474e2ce Publish
- @0x/contracts-integrations@2.7.47
 - @0x/contracts-treasury@1.2.0
 - @0x/asset-swapper@6.17.0
2021-05-27 22:22:14 +00:00
Github Actions
407ca21168 Updated CHANGELOGS & MD docs 2021-05-27 22:22:09 +00:00
mzhu25
5c68fc24d2 Miscellaneous Liquidity Provider changes (#253)
* Update KNC address and reenable PLP

* Enable PLP VIP on BSC
2021-05-25 14:01:07 -07:00
mzhu25
548800e0a9 Add proposal 0 params and mainnet fork test (#252) 2021-05-25 13:48:34 -07:00
Github Actions
bde3d6dc6a Publish
- @0x/contracts-asset-proxy@3.7.13
 - @0x/contracts-broker@1.1.31
 - @0x/contracts-coordinator@3.1.32
 - @0x/contracts-dev-utils@1.3.30
 - @0x/contracts-erc1155@2.1.31
 - @0x/contracts-erc20@3.3.10
 - @0x/contracts-erc721@3.1.31
 - @0x/contracts-exchange-forwarder@4.2.32
 - @0x/contracts-exchange-libs@4.3.31
 - @0x/contracts-exchange@3.2.32
 - @0x/contracts-extensions@6.2.26
 - @0x/contracts-integrations@2.7.46
 - @0x/contracts-multisig@4.1.32
 - @0x/contracts-staking@2.0.39
 - @0x/contracts-test-utils@5.4.2
 - @0x/contracts-treasury@1.1.8
 - @0x/contracts-utils@4.7.10
 - @0x/contracts-zero-ex@0.24.1
 - @0x/asset-swapper@6.16.0
 - @0x/contract-addresses@6.3.0
 - @0x/contract-wrappers-test@12.2.47
 - @0x/contract-wrappers@13.16.3
 - @0x/migrations@8.0.8
 - @0x/order-utils@10.4.23
 - @0x/protocol-utils@1.6.2
2021-05-25 12:13:43 +00:00
Github Actions
56550a6acc Updated CHANGELOGS & MD docs 2021-05-25 12:13:38 +00:00
Kim Persson
e51b83accc Polygon support (#240)
* feat: Polygon deployed

* Updated polygon FQT address

* feat: add SushiSwap on Polygon WIP

* fix: add Matic as a native token

* refactor: import valueByChainId from token-metadata to consolidate impl

* refactor: use same gas schedule fn for all uni v2 clones

* feat: Add QuickSwap Polygon integration

* fix: add Polygon tokens to initial TokenAdjacencyGraph

* feat: ComethSwap Polygon integration

* feat: Add Curve, Dfyn, mStable for Polygon

* fix: temporarily private publish contract-addresses, token-metadata

* feat: Add DODO V2 support for polygon, stability pool on mainnet, bsc

* chore: fix linting

* fix: incorrect Curve Polygon gas schedule

Co-authored-by: Jacob Evans <jacob@dekz.net>

* refator: consolidate Polygon token addresses in POLYGON_TOKENS

* feat: Polygon DODO V1 integration

* fix: remove dependency on @0x/token-metadata

* chore: remove private publish dependencies and add changelog entry

Co-authored-by: Jacob Evans <jacob@dekz.net>
Co-authored-by: Romain Butteaud <romain.butteaud@gmail.com>
2021-05-25 13:40:52 +02:00
Github Actions
d5ae971f1c Publish
- @0x/contracts-asset-proxy@3.7.12
 - @0x/contracts-broker@1.1.30
 - @0x/contracts-coordinator@3.1.31
 - @0x/contracts-dev-utils@1.3.29
 - @0x/contracts-erc1155@2.1.30
 - @0x/contracts-erc20@3.3.9
 - @0x/contracts-erc721@3.1.30
 - @0x/contracts-exchange-forwarder@4.2.31
 - @0x/contracts-exchange-libs@4.3.30
 - @0x/contracts-exchange@3.2.31
 - @0x/contracts-extensions@6.2.25
 - @0x/contracts-integrations@2.7.45
 - @0x/contracts-multisig@4.1.31
 - @0x/contracts-staking@2.0.38
 - @0x/contracts-test-utils@5.4.1
 - @0x/contracts-treasury@1.1.7
 - @0x/contracts-utils@4.7.9
 - @0x/contracts-zero-ex@0.24.0
 - @0x/asset-swapper@6.15.0
 - @0x/contract-addresses@6.2.0
 - @0x/contract-wrappers-test@12.2.46
 - @0x/contract-wrappers@13.16.2
 - @0x/migrations@8.0.7
 - @0x/order-utils@10.4.22
 - @0x/protocol-utils@1.6.1
2021-05-21 12:37:26 +00:00
Github Actions
5a2f5f9a42 Updated CHANGELOGS & MD docs 2021-05-21 12:37:22 +00:00
Jacob Evans
75a3b70cef chore: Temporarily disable a LiquidityProvider (#248) 2021-05-21 22:08:55 +10:00
Jacob Evans
803cf65ba1 fix: Deploy FQT for KyberDmm/Mstable (#247) 2021-05-19 08:34:26 +10:00
Jacob Evans
5d3947b838 fix prettier 2021-05-18 09:10:29 +10:00
mzhu25
4397a59008 Add Huobi Token to liquidity provider tokens (#246) 2021-05-17 15:21:53 -07:00
Jacob Evans
966d54c935 fix: KyberDmm (#236)
* 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>
2021-05-18 08:12:28 +10:00
Romain Butteaud
234ddb495d fix: mStable USD Sampler and Mixin fix (#238)
* fix: mStable USD Sampler and Mixin fix

* chore: adding mBTC (mStable) pool

* fix linter
2021-05-16 19:43:06 -07:00
mzhu25
a744acc7bc Add special selectors to selector collision test (#243) 2021-05-14 10:50:58 -07:00
Lawrence Forman
27c624633c fix repo scripts that use PKG= env var (#242)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-05-12 18:53:06 -04:00
Github Actions
7ef75101b4 Publish
- @0x/contracts-integrations@2.7.44
 - @0x/asset-swapper@6.14.0
2021-05-12 09:13:31 +00:00
Github Actions
6f8aace00d Updated CHANGELOGS & MD docs 2021-05-12 09:13:23 +00:00
Kim Persson
6c264b2f18 feat: add DAI and USDC as intermediate tokens on Ropsten [TKR-93] (#231)
* feat: add DAI and USDC as intermediate tokens on Ropsten

* chore: add changelog entry
2021-05-11 19:36:46 +02:00
Daniel Pyrathon
df055e1958 fix: Added fee parameter to Quote Requestor (#235)
* Added changes

* Fixes

* Applied PR feedback

* lint fix
2021-05-11 12:57:51 -04:00
Github Actions
70d2117470 Publish
- @0x/contracts-integrations@2.7.43
 - @0x/asset-swapper@6.13.0
2021-05-11 03:18:25 +00:00
Github Actions
2c173ccaf3 Updated CHANGELOGS & MD docs 2021-05-11 03:18:20 +00:00
mzhu25
d2f4a0c5f3 Updated config.yml 2021-05-10 19:51:12 -07:00
mzhu25
0d6021e5e3 Add LiquidityProvider to BSC sources (#234) 2021-05-10 18:27:52 -07:00
Github Actions
bb04726e7f Publish
- @0x/contracts-integrations@2.7.42
 - @0x/asset-swapper@6.12.0
2021-05-10 01:36:49 +00:00
Github Actions
220ca370c2 Updated CHANGELOGS & MD docs 2021-05-10 01:36:44 +00:00
Jacob Evans
63af4e3e98 fix: TwoHopSampler call (#233) 2021-05-10 11:05:30 +10:00
Github Actions
9754e12d82 Publish
- @0x/contracts-integrations@2.7.41
 - @0x/asset-swapper@6.11.0
2021-05-07 04:35:35 +00:00
Github Actions
d72ebed246 Updated CHANGELOGS & MD docs 2021-05-07 04:35:31 +00:00
Jacob Evans
587fc71058 fix: Sampler contract address overrides (#232)
* fix: Sampler contract address overrides

* Update CHANGELOG
2021-05-07 13:52:51 +10:00
Kim Persson
7d34e09a12 fix: add separate priceComparisonsReport to fix missing quoteReport data [TKR-91] (#219)
* 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
2021-05-06 14:54:54 +02:00
Kim Persson
7d15baad0f feat: Balancer V2 load and cache top pools by num swaps on startup [TKR-96] (#228)
* 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
2021-05-06 14:21:30 +02:00
mzhu25
1e6476ada7 Add ETH pseudo-address when wrapping/unwrapping in Multiplex multihop (#230)
* Add ETH pseudo-address when wrapping/unwrapping in Multiplex multihop

* Update changelog
2021-05-06 15:29:24 +10:00
Lawrence Forman
1d6ca5f6b5 @0x/asset-swapper: Tweak compiler settings for smaller sampler size (#229)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-05-05 18:36:38 -04:00
Github Actions
fb249f02fc Publish
- @0x/contracts-asset-proxy@3.7.11
 - @0x/contracts-broker@1.1.29
 - @0x/contracts-coordinator@3.1.30
 - @0x/contracts-dev-utils@1.3.28
 - @0x/contracts-erc1155@2.1.29
 - @0x/contracts-erc20@3.3.8
 - @0x/contracts-erc721@3.1.29
 - @0x/contracts-exchange-forwarder@4.2.30
 - @0x/contracts-exchange-libs@4.3.29
 - @0x/contracts-exchange@3.2.30
 - @0x/contracts-extensions@6.2.24
 - @0x/contracts-integrations@2.7.40
 - @0x/contracts-multisig@4.1.30
 - @0x/contracts-staking@2.0.37
 - @0x/contracts-test-utils@5.4.0
 - @0x/contracts-treasury@1.1.6
 - @0x/contracts-utils@4.7.8
 - @0x/contracts-zero-ex@0.23.0
 - @0x/asset-swapper@6.10.0
 - @0x/contract-addresses@6.1.0
 - @0x/contract-artifacts@3.14.2
 - @0x/contract-wrappers-test@12.2.45
 - @0x/contract-wrappers@13.16.1
 - @0x/migrations@8.0.6
 - @0x/order-utils@10.4.21
 - @0x/protocol-utils@1.6.0
2021-05-05 11:32:51 +00:00
Github Actions
fdf04ef275 Updated CHANGELOGS & MD docs 2021-05-05 11:32:46 +00:00
Jacob Evans
b0f5f634f2 bump test-publish resource_class 2021-05-05 21:02:31 +10:00
Jacob Evans
6ee0108565 fix: async pool cache (#226) 2021-05-05 21:01:51 +10:00
Jacob Evans
c73097e688 chore: Deploy FQT with UniswapV3 support (#227) 2021-05-05 21:01:39 +10:00
Lawrence Forman
a2d42b07b5 UniswapV3 [TKR-4] (#197)
* 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>
2021-05-05 19:44:17 +10:00
Xianny
f9a794af93 feat: Balancer V2 integration (#206)
* 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>
2021-05-05 11:01:28 +02:00
Jacob Evans
a2643674ca Fix: PLP now generates a fallback (#223)
* fix: PLP requires a fallback

* update changelog

* Fix missed source exclusion
2021-05-05 08:22:19 +10:00
Jacob Evans
c00ce9daac feat: Support ETH based Curve pools (#220)
* 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>
2021-05-05 07:33:41 +10:00
mzhu25
c68b5d7844 Fix/staking epoch finalization (#221)
* 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
2021-05-04 11:29:16 -07:00
Jacob Evans
09ed106d4c feat: Deployed Balancer V2 and Curve ETH support (#225) 2021-05-04 16:52:36 +10:00
Jacob Evans
a6b92fc658 fix: Fix test forever with new sources being added 2021-05-04 16:49:16 +10:00
mzhu25
4be4a1a30b Fix exchangeProxyGasOverhead used to compute fallback orders (#215)
* Fix exchangeProxyGasOverhead used to compute fallback orders

* update changelog
2021-05-04 13:41:21 +10:00
Romain Butteaud
9bede5d331 fix: reactive PancakeSwap, BakerySwap VIP on BSC (#222) 2021-05-04 13:40:57 +10:00
Romain Butteaud
b50d4aee6d Chore: adding xSigma liquidity source [TKR-59] (#201)
* Chore: adding xSigma liquidity source

* fix: prettier
2021-05-03 19:50:26 -07:00
Jacob Evans
55bc367bd6 feat: Add LUSD Curve pool (#218) 2021-05-04 08:08:27 +10:00
Github Actions
7a59b7eafe Publish
- @0x/contracts-integrations@2.7.39
 - @0x/contracts-zero-ex@0.22.3
 - @0x/asset-swapper@6.9.1
 - @0x/contract-wrappers-test@12.2.44
 - @0x/migrations@8.0.5
2021-05-01 01:03:24 +00:00
Github Actions
9e59d41e44 Updated CHANGELOGS & MD docs 2021-05-01 01:03:19 +00:00
Jacob Evans
475e6c7bca fix: Temporarily remove PancakeV2/Bakery from VIP (#217) 2021-05-01 10:35:54 +10:00
Github Actions
dbc5a5293e Publish
- @0x/contracts-integrations@2.7.38
 - @0x/contracts-treasury@1.1.5
 - @0x/contracts-zero-ex@0.22.2
 - @0x/asset-swapper@6.9.0
 - @0x/contract-wrappers-test@12.2.43
 - @0x/migrations@8.0.4
2021-04-30 23:39:46 +00:00
Github Actions
f4bd2bd0d8 Updated CHANGELOGS & MD docs 2021-04-30 23:39:42 +00:00
Romain Butteaud
f1782a83ba chore: BSC PancakeSwap forks VIP, PancakeSwapV2, Saddle BTC pool, Curve gas schedule [TKR-41] [TKR-11] [TKR-79] [TKR-86] (#208)
* chore: popular BSC Uniswap clones, Curve gas schedule update, Saddle BTC pool

* chore: adding PancakeSwapV2 VIP

* fix: yarn prettier
2021-05-01 08:48:10 +10:00
Jacob Evans
cbade0d558 fix: Ban colliding Kyber reserve (#216) 2021-04-29 15:24:39 +10:00
mzhu25
fe0c26387c Fix treasury voting power calculation (#214)
* Fix treasury voting power calculation

* Update changelog
2021-04-28 10:22:52 -07:00
Github Actions
c03a014740 Publish
- @0x/contracts-asset-proxy@3.7.10
 - @0x/contracts-broker@1.1.28
 - @0x/contracts-coordinator@3.1.29
 - @0x/contracts-dev-utils@1.3.27
 - @0x/contracts-erc1155@2.1.28
 - @0x/contracts-erc20@3.3.7
 - @0x/contracts-erc721@3.1.28
 - @0x/contracts-exchange-forwarder@4.2.29
 - @0x/contracts-exchange-libs@4.3.28
 - @0x/contracts-exchange@3.2.29
 - @0x/contracts-extensions@6.2.23
 - @0x/contracts-integrations@2.7.37
 - @0x/contracts-multisig@4.1.29
 - @0x/contracts-staking@2.0.36
 - @0x/contracts-test-utils@5.3.25
 - @0x/contracts-treasury@1.1.4
 - @0x/contracts-utils@4.7.7
 - @0x/contracts-zero-ex@0.22.1
 - @0x/asset-swapper@6.8.0
 - @0x/contract-artifacts@3.14.1
 - @0x/contract-wrappers-test@12.2.42
 - @0x/contract-wrappers@13.16.0
 - @0x/migrations@8.0.3
 - @0x/order-utils@10.4.20
 - @0x/protocol-utils@1.5.1
2021-04-28 07:48:31 +00:00
Github Actions
84e6d788aa Updated CHANGELOGS & MD docs 2021-04-28 07:48:27 +00: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
Alex Kroeger
842dd8572b bump NativeOrdersFeature version to 1.2 (#213)
* bump version to 1.2

* update changelog
2021-04-27 08:11:13 -07:00
Github Actions
33e260f9db Publish
- @0x/contracts-integrations@2.7.36
 - @0x/contracts-treasury@1.1.3
 - @0x/contracts-zero-ex@0.22.0
 - @0x/asset-swapper@6.7.0
 - @0x/contract-wrappers-test@12.2.41
 - @0x/migrations@8.0.2
 - @0x/protocol-utils@1.5.0
2021-04-26 23:59:58 +00:00
Github Actions
c44f8d0060 Updated CHANGELOGS & MD docs 2021-04-26 23:59:53 +00:00
Kim Persson
411548a33e feat: PancakeSwap 2 integration [TKR-83] (#211)
* feat: PancakeSwap 2 integration

* chore: add PancakeSwap V2 changelog entry

Co-authored-by: Romain Butteaud <romain@0xproject.com>
2021-04-26 15:51:04 -07:00
Alex Kroeger
9a17ce1383 add registerAllowedSigner to NativeOrdersFeature (#195)
* 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
2021-04-26 14:32:35 -07:00
Romain Butteaud
2b120d0669 fix: feeType=positive_slippage logic [TKR-81] (#209)
* fix: Fix feeType=positive_slippage logic to not force the EP route

* fix: yarn prettier
2021-04-26 11:26:57 -07:00
Github Actions
6d877d5242 Publish
- @0x/contracts-integrations@2.7.35
 - @0x/asset-swapper@6.6.0
2021-04-16 17:07:22 +00:00
Github Actions
e4abd690e7 Updated CHANGELOGS & MD docs 2021-04-16 17:07:17 +00:00
Jacob Evans
2a194384b6 [asset-swapper] Support Ropsten testnet (#203) 2021-04-16 13:55:35 +10:00
Jacob Evans
1e069e6f8a Remove 10 days from protocol fees docs (#202) 2021-04-16 10:51:41 +10:00
Daniel Pyrathon
a019bb913d only set Last Look parameter if it's explicitly set (#200)
* only set Last Look parameter if it's explicitly set

* remove expoectation of having isLastLook
2021-04-14 16:38:55 -07:00
Github Actions
9ce73931f7 Publish
- @0x/contracts-integrations@2.7.34
 - @0x/asset-swapper@6.5.3
2021-04-14 20:56:21 +00:00
Github Actions
97020df178 Updated CHANGELOGS & MD docs 2021-04-14 20:56:14 +00:00
Lawrence Forman
dfb7b3de8f Apply slippage to non-native orders [TKR-39] (#198)
* `@0x/asset-swapper`: Apply slippage to FQT bridge orders

* review comments

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-04-13 19:24:50 -04:00
Github Actions
9e152912fe Publish
- @0x/contracts-integrations@2.7.33
 - @0x/asset-swapper@6.5.2
2021-04-13 11:51:04 +00:00
Github Actions
b2c2f1e1aa Updated CHANGELOGS & MD docs 2021-04-13 11:50:57 +00:00
Jacob Evans
629c7d8e92 Fix asset-swapper test (#199) 2021-04-13 21:01:26 +10:00
Jacob Evans
62f24d4356 [asset-swapper] add Native fee token on all chains (#191) 2021-04-13 08:21:26 +10:00
Github Actions
ae281c33ca Publish
- @0x/contracts-integrations@2.7.32
 - @0x/contracts-treasury@1.1.2
 - @0x/contracts-zero-ex@0.21.1
 - @0x/asset-swapper@6.5.1
 - @0x/contract-wrappers-test@12.2.40
 - @0x/migrations@8.0.1
 - @0x/protocol-utils@1.4.1
2021-04-12 20:37:59 +00:00
Github Actions
5d034dd106 Updated CHANGELOGS & MD docs 2021-04-12 20:37:55 +00:00
Romain Butteaud
c1f8df0eca chore: Component.finance, Smoothy.finance, Saddle.finance, Curve open pools, Gas schedule [TKR-1] (#182)
* 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
2021-04-08 18:07:12 -07:00
Github Actions
76dda9eeda Publish
- @0x/contracts-integrations@2.7.31
 - @0x/asset-swapper@6.5.0
2021-04-08 20:27:04 +00:00
Github Actions
a9b84a92ac Updated CHANGELOGS & MD docs 2021-04-08 20:26:57 +00:00
mzhu25
0f7e881899 Add default liquidity provider registry and allow gas costs to be a function of tokens (#196) 2021-04-08 11:09:32 -07:00
mzhu25
6045f777ab Add Kyber DMM as a liquidity source (#194)
* Add Kyber DMM as a liquidity source

* update changelog
2021-04-07 10:08:19 -07:00
Github Actions
5a15044ead Publish
- @0x/contracts-asset-proxy@3.7.9
 - @0x/contracts-broker@1.1.27
 - @0x/contracts-coordinator@3.1.28
 - @0x/contracts-dev-utils@1.3.26
 - @0x/contracts-erc1155@2.1.27
 - @0x/contracts-erc20@3.3.6
 - @0x/contracts-erc721@3.1.27
 - @0x/contracts-exchange-forwarder@4.2.28
 - @0x/contracts-exchange-libs@4.3.27
 - @0x/contracts-exchange@3.2.28
 - @0x/contracts-extensions@6.2.22
 - @0x/contracts-integrations@2.7.30
 - @0x/contracts-multisig@4.1.28
 - @0x/contracts-staking@2.0.35
 - @0x/contracts-test-utils@5.3.24
 - @0x/contracts-treasury@1.1.1
 - @0x/contracts-utils@4.7.6
 - @0x/contracts-zero-ex@0.21.0
 - @0x/asset-swapper@6.4.0
 - @0x/contract-addresses@6.0.0
 - @0x/contract-artifacts@3.14.0
 - @0x/contract-wrappers-test@12.2.39
 - @0x/contract-wrappers@13.15.0
 - @0x/migrations@8.0.0
 - @0x/order-utils@10.4.19
 - @0x/protocol-utils@1.4.0
2021-04-01 21:09:06 +00:00
Github Actions
a69d76e487 Updated CHANGELOGS & MD docs 2021-04-01 21:09:02 +00:00
Kim Persson
3adfcdffa8 Maker PSM integration [TKR-2] (#150)
* 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>
2021-04-01 15:45:06 -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
phil-ociraptor
70ddab0231 [MKR-3] Prepare Asset Swapper for RFQM (#187)
* Prepare QuoteRequestor for RFQM

* Add unit tests for Quote Requestor changes

* Fix lint errors
2021-03-31 12:11:10 -05:00
Xianny
7bf009fbf6 Upgrade to typescript v4.2.2 (#188)
* upgrade to typescript v4.2.2

* prettier; remove outdated test
2021-03-30 13:26:05 -07:00
Daniel Pyrathon
525bc8197b Revive quote report (#184)
* Revives Quote Report

* prettier

* Remove unused parameters

* updated a few issues with tests

* Remove old code

* Fixed other unit tests
2021-03-30 09:57:03 -07:00
Alex Kroeger
24397c51a8 improve logging for alt rfq request (#158)
* improve logging for alt rfq request

* clean up unsuccessful status code logic

* Fix quote requestor tests

* get rid of unnecessary promise handling

* remove unused code

* update changelog

* changed warning message for no quote

* appease prettier
2021-03-24 13:45:54 -07:00
phil-ociraptor
06b3464756 Rename {Rfqt=>Rfq} for types in Asset Swapper (#179)
* Rename {Rfqt=>Rfq} for types in Asset Swapper

* PR edit 1 - fix build errors

* PR edit 2 - rename mocked types used in tests

* PR edit 3 - fix broken test build

* PR edit 4 - rename SwapQuoterRfqOpts and add changelog entry
2021-03-23 17:21:50 -05:00
phil-ociraptor
bbaa90bd9a Add a cancel token to manually enforce a timeout in Quote Requestor (#176)
* 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
2021-03-22 17:08:51 -05:00
mzhu25
5c683cbc0f Fix Multiplex multi-hop encoding issue (#178) 2021-03-17 22:28:35 -07:00
Alex Kroeger
95345f18bc use the RfqOrder source flag for comparison price EP overhead (#177)
* use the RfqOrder source flag for comparison price EP overhead

* updated changelog

* changelog -> 6.4
2021-03-17 16:37:56 -07:00
Github Actions
4c3fbe83ac Publish
- @0x/contracts-asset-proxy@3.7.8
 - @0x/contracts-broker@1.1.26
 - @0x/contracts-coordinator@3.1.27
 - @0x/contracts-dev-utils@1.3.25
 - @0x/contracts-erc1155@2.1.26
 - @0x/contracts-erc20@3.3.5
 - @0x/contracts-erc721@3.1.26
 - @0x/contracts-exchange-forwarder@4.2.27
 - @0x/contracts-exchange-libs@4.3.26
 - @0x/contracts-exchange@3.2.27
 - @0x/contracts-extensions@6.2.21
 - @0x/contracts-integrations@2.7.29
 - @0x/contracts-multisig@4.1.27
 - @0x/contracts-staking@2.0.34
 - @0x/contracts-test-utils@5.3.23
 - @0x/contracts-treasury@1.1.0
 - @0x/contracts-utils@4.7.5
 - @0x/contracts-zero-ex@0.20.0
 - @0x/asset-swapper@6.3.0
 - @0x/contract-artifacts@3.13.0
 - @0x/contract-wrappers-test@12.2.38
 - @0x/contract-wrappers@13.14.0
 - @0x/migrations@7.0.1
 - @0x/order-utils@10.4.18
 - @0x/protocol-utils@1.3.1
2021-03-17 18:23:51 +00:00
Github Actions
7caa43d02c Updated CHANGELOGS & MD docs 2021-03-17 18:23:47 +00:00
mzhu25
3d4c03c9df Update asset-swapper to support MultiplexFeature (#168)
* Update asset-swapper to support MultiplexFeature

* Address PR feedback

* Update changelogs
2021-03-16 22:20:33 -07:00
Lawrence Forman
22e1ed35d3 docs: Fix EIP712 hashing docs for limit and RFQ orders (#173) 2021-03-16 15:09:00 -04:00
Alex Kroeger
dabe6fd793 add tx origin blacklist to RFQ options (#169)
* 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
2021-03-11 18:05:16 -08: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
mzhu25
22c8e0b6db Make the proposal/quorum thresholds updatable (#165)
* Make the proposal/quorum thresholds updatable

* Test threshold updating
2021-03-04 10:56:37 -08:00
Oskar Paolini
f3ca4293bc feat: add proxy configuration to axios instance in RFQT asset-swapper (#159)
* add proxy configuration to axios instance

* add support for additional axios instance opts

* move quoteRequestorHttpClient parameter

* fix tests, build errors

* prettier

* bump axios

* bumped mock-axios-adapter version

* downgrade axios again

* re-upgrade axios 🤦

* updated yarn.lock

* updated changelog

Co-authored-by: Alex Kroeger <alexrkroeger@gmail.com>
2021-03-03 11:38:54 -08:00
Lawrence Forman
db3e076d03 update deps and publish gh action for prerelease support 2021-03-03 01:16:22 -05:00
Lawrence Forman
1a6759820a Mooniswap LP (#143)
* `@0x/asset-swapper`: Fix compiler error on `ILiquidityProvider` call
`@0x/protocol-utils`: Add VIP utils.

* `@0x/asset-swapper`: Clean up curve VIP integration

* `@0x/contracts-zero-ex`: Add `MooniswapLiquidityProvider`.
`@0x/asset-swapper`: Add Mooniswap "vip" to EP quote consumer.

* rebase and prettier

* fix linter error

* `@0x/contracts-zero-ex`: Add `MooniswapLiquidityProvider` tests.

* review feedback

* `@0x/contracts-zero-ex`: Emit `LiquidityProviderFill` events in LPs

* `@0x/asset-swapper`: Fix compilation error

* `@0x/asset-swapper`: Add EP gas overhead to Curve and Mooni LP bridge routes

* `@0x/asset-swapper`: Remove consumer gas overhead for LP VIPs

* `@0x/contracts-zero-ex`: Add more params to `LiquidityProviderFill` event

* `@0x/contracts-zero-ex`: Address review comments.

* `@0x/asset-swapper`: Update deployed Curve and Mooni LPs

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-03-02 16:50:37 -05:00
Github Actions
61c5e7b948 Publish
- @0x/contracts-integrations@2.7.28
 - @0x/asset-swapper@6.2.0
2021-03-02 00:44:13 +00:00
Github Actions
5fd78ef32f Updated CHANGELOGS & MD docs 2021-03-02 00:44:06 +00:00
Lawrence Forman
14ff9b827c @0x/asset-swapper: Drop Y and BUSD curve pools (#161) 2021-03-02 07:56:43 +10:00
Lawrence Forman
598dc2cd71 docs: update allowances blurb (#160) 2021-02-25 17:11:44 -05:00
Github Actions
08e1c5109f Publish
- @0x/contracts-asset-proxy@3.7.7
 - @0x/contracts-broker@1.1.25
 - @0x/contracts-coordinator@3.1.26
 - @0x/contracts-dev-utils@1.3.24
 - @0x/contracts-erc1155@2.1.25
 - @0x/contracts-erc20@3.3.4
 - @0x/contracts-erc721@3.1.25
 - @0x/contracts-exchange-forwarder@4.2.26
 - @0x/contracts-exchange-libs@4.3.25
 - @0x/contracts-exchange@3.2.26
 - @0x/contracts-extensions@6.2.20
 - @0x/contracts-integrations@2.7.27
 - @0x/contracts-multisig@4.1.26
 - @0x/contracts-staking@2.0.33
 - @0x/contracts-test-utils@5.3.22
 - @0x/contracts-treasury@1.0.2
 - @0x/contracts-utils@4.7.4
 - @0x/contracts-zero-ex@0.19.0
 - @0x/asset-swapper@6.1.0
 - @0x/contract-addresses@5.11.0
 - @0x/contract-artifacts@3.12.0
 - @0x/contract-wrappers-test@12.2.37
 - @0x/contract-wrappers@13.13.0
 - @0x/migrations@7.0.0
 - @0x/order-utils@10.4.17
 - @0x/protocol-utils@1.3.0
2021-02-24 04:42:41 +00:00
Github Actions
6f7a843742 Updated CHANGELOGS & MD docs 2021-02-24 04:42:32 +00:00
Jacob Evans
c9c9615bb5 Fix contract merge conflict 2021-02-24 14:08:54 +10:00
Romain Butteaud
f98609686d feat: opt-in positive slippage fee for integrators (#101)
* feat: Positive Slippage Fee

* fix: rename ethToTakerAssetRate to takerAssetPriceForOneEth

* fix: rename takerAssetPriceForOneEth to takerAssetsPerEth

* fix: export AffiliateFeeType

* rebased off development

* Add a gasOverhead for non-deterministic operations

* CHANGELOGs

* rename outputTokens to outputAmount

* Confirm transformer addresses on Mainnet and Ropsten

* fix import

Co-authored-by: Jacob Evans <jacob@dekz.net>
2021-02-24 12:51:58 +10:00
Jacob Evans
5b8bbc34e8 fix: FQT in migrations (#157) 2021-02-24 12:36:58 +10:00
Jacob Evans
49cb00a9ab feat: DODO V2, Linkswap (#152)
* feat: DODO V2

* Fix typo

* feat: Linkswap (#153)

* fix: intermediate hops WBTC (#154)

* feat: Linkswap

* fix: Re-add WBTC in default hop tokens

* Update review changes

* FQT deploy + no gas limit ETH refund (#155)

* `@0x/contracts-zero-ex`: refund ETH with no gas limit in FQT
`@0x/contract-addresses`: Deploy FQT

* Update packages/contract-addresses/CHANGELOG.json

Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>

Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>

Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
2021-02-24 12:19:26 +10:00
Alex Kroeger
74b240fb88 add exchange proxy overhead penalty to comparison price (#156)
* add exchange proxy overhead penalty to comparison price

* prettier
2021-02-23 17:32:15 -08:00
Alex Kroeger
514f9d2621 feat/alt RFQ MM implementation (#139)
* 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
2021-02-22 16:07:30 -08:00
Jacob Evans
fa78d1092a feat: asset-swapper Fake Taker contract (#151) 2021-02-22 08:32:53 +10:00
Lawrence Forman
297342092b @0x/asset-swapper: special case BNB in uni v1 sampler (#147)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-02-19 16:56:16 +10:00
Jacob Evans
076f263a86 feat: Validate v4 limit orders (#148)
re-renable tests
2021-02-19 16:42:10 +10:00
Jacob Evans
0c56207abc fix: Protocol fee in fee schedule (#146)
* fix: Protocol fee in fee schedule

* CHANGELOG

* hack imports
2021-02-18 14:12:11 +10: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
Jacob Evans
c6919eb25a feat: Mirror Protocol tokens (#142)
* feat: Mirror Protocol tokens

* added .tap to builder
2021-02-17 10:14:38 +10:00
Lawrence Forman
d509604b52 @0x/contracts-zero-ex: Export CurveLiquidityProviderContract (#144)
`@0x/asset-swapper`: Add deployed `CurveLiquidityProvider` addresses

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-02-16 16:17:08 -05:00
Lawrence Forman
a74a3450eb @0x/contracts-zero-ex: Add CurveLiquidityProvider and misc refactors (#127)
* `@0x/contracts-zero-ex`: Add `CurveLiquidityProvider` and misc refactors

* `@0x/asset-swapper`: Fix compiler error on `ILiquidityProvider` call
`@0x/protocol-utils`: Add VIP utils.

* `@0x/contracts-zero-ex`: Rebase and fix comiler warnings

* `@0x/asset-swapper`: Clean up curve VIP integration

* `@0x/protocol-utils`: Update changelog

* `@0x/protocol-utils`: tsdoc new functions

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-02-11 19:13:17 -05:00
Jacob Evans
72c5399b9d fix: Second hop source is missing (#138)
* fix: Second hop source is missing

* CHANGELOGs
2021-02-11 00:13:58 +10:00
Github Actions
b29196b983 Publish
- @0x/contracts-asset-proxy@3.7.6
 - @0x/contracts-broker@1.1.24
 - @0x/contracts-coordinator@3.1.25
 - @0x/contracts-dev-utils@1.3.23
 - @0x/contracts-erc1155@2.1.24
 - @0x/contracts-erc20@3.3.3
 - @0x/contracts-erc721@3.1.24
 - @0x/contracts-exchange-forwarder@4.2.25
 - @0x/contracts-exchange-libs@4.3.24
 - @0x/contracts-exchange@3.2.25
 - @0x/contracts-extensions@6.2.19
 - @0x/contracts-integrations@2.7.26
 - @0x/contracts-multisig@4.1.25
 - @0x/contracts-staking@2.0.32
 - @0x/contracts-test-utils@5.3.21
 - @0x/contracts-treasury@1.0.1
 - @0x/contracts-utils@4.7.3
 - @0x/contracts-zero-ex@0.18.2
 - @0x/asset-swapper@6.0.0
 - @0x/contract-addresses@5.10.0
 - @0x/contract-wrappers-test@12.2.36
 - @0x/contract-wrappers@13.12.3
 - @0x/migrations@6.6.0
 - @0x/order-utils@10.4.16
 - @0x/protocol-utils@1.2.0
2021-02-10 09:49:05 +00:00
Github Actions
ce76a7033d Updated CHANGELOGS & MD docs 2021-02-10 09:48:52 +00:00
Jacob Evans
3f4bb933d1 feat: v4 final (#136)
* v4 FillQuoteTransformer (#104)

* Update FQT to support v4 orders

* `@0x/contracts-zero-ex`: Tweak FQT
`@0x/contracts-zero-ex`: Drop `ERC20BridgeTransfer` event and add `PartialQuoteFill` event.

* `@0x/contracts-utils`: Add `LibSafeMathV06.downcastToUint128()`

* `@0x/protocol-utils`: Update transformer utils for V4 FQT

* `@0x/contracts-zero-ex`: Fixing FQT tests...

* `@0x/contracts-zero-ex`: rename FQT bridge event

* `@0x/contracts-zero-ex`: Un-`only` tests

* `@0x/migrations`: Update `BridgeAdapter` deployment

* `@0x/contracts-integrations`: Delete `mtx_tests`

* `@0x/protocol-utils`: Address review comments

* `@0x/contracts-zero-ex`: Address review comments

* `@0x/migrations`: Update migrations

Co-authored-by: Michael Zhu <mchl.zhu.96@gmail.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>

* v4: Asset-swapper (main branch) (#113)

* refactor quote_requestor

* WIP v4/asset-swapper: Clean up SwapQuoter and remove @0x/orderbook

* Start replacing SignedOrder everywhere

* wip: new order type

* wip

* remove order-utils from most places

* hack: Play around with VerboseX types (#119)

* hack: Play around with VerboseX types

* More hacks

* Fix up the bridgeData encodings

* Rework Orderbook return type

* feat: Don't charge a protocol fee for RFQ orders WIP (#121)

* fix simple build errors

* simplify types a little

* remove SwapQuoteCalculator: unnecessary abstraction

* Fix all ./src build errors; make types consistent

* export more types for use in 0x API; modify Orderbook interface

* stop overriding APIOrder

* feat: RFQ v4 + consolidated bridge encoders (#125)

* feat: check if taker address is contract

* Rework bridge data

* Worst case adjustments

* RFQT v4

* Future/v4 validate orders (#126)

* RFQT v4

* v4 validate native orders

* use default invalid signature

* refactor rfqt validations in swap quoter

* fix types

* fix RFQT unlisted api key

* remove priceAwareRFQFlag

* adjust maker/taker amounts

* update JSON schemas

* filter zero fillable orders

Co-authored-by: xianny <xianny@gmail.com>

* fix type export

Co-authored-by: xianny <xianny@gmail.com>

* remove order-utils as much as possible

* work on tests compile

* Comment out quote reporter test

* updated tests

* restore order-utils accidental changes

* some lints

* Remove old fill_test

* ts lint disable for now

* update quote report

* Re-enable quote report tests

* make fill data required field

* fix lint

* type guards

* force fillData as required

* fix lint

* fix naming

* exports

* adjust MultiBridge by slippage

* cleanups (checkpoint 1)

* cleanup types (checkpoint #2)

* remove unused deps

* `@0x/contract-addresses`: Deploy new FQT (#129)

Co-authored-by: Lawrence Forman <me@merklejerk.com>

* commit bump to republish

* DRY up the rfqt mocker

* fix: Balancer load top pools (#131)

* fix: Balancer load top 250 pools

* refetch top pools on an interval

Co-authored-by: Jacob Evans <jacob@dekz.net>
Co-authored-by: Kim Persson <kimpers@users.noreply.github.com>
Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>

* Update post rebase

* prettier

* Remove test helpers exported in asset-swapper

* Clean up from review comments

* prettier

* lint

* recreate rfqt mocker

* change merge and INVALID_SIGNATURE

Co-authored-by: Lawrence Forman <lawrence@0xproject.com>
Co-authored-by: Michael Zhu <mchl.zhu.96@gmail.com>
Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Xianny <8582774+xianny@users.noreply.github.com>
Co-authored-by: Kim Persson <kimpers@users.noreply.github.com>
2021-02-10 19:20:15 +10:00
Greg Hysz
501b7b9b65 Updated releases (#133) 2021-02-08 18:32:21 -08:00
Daniel Pyrathon
c0ea88e864 lint fix (#130) 2021-02-05 09:56:35 -08:00
Lawrence Forman
48f8bea460 docs: Fix wrong method name for order signature generation (#128)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-02-02 23:30:26 -05:00
Github Actions
f4e5b6e38d Publish
- @0x/contracts-integrations@2.7.25
 - @0x/contracts-treasury@1.0.0
 - @0x/asset-swapper@5.8.2
2021-01-28 21:36:31 +00:00
Github Actions
477cb0a48d Updated CHANGELOGS & MD docs 2021-01-28 21:36:22 +00:00
Jacob Evans
d6bc0a3368 fix: [asset-swapper] prevent error when multihop data is not present (#80)
* fix: [asset-swapper] prevent error when multihop is not present for a route

* Update changelog

Co-authored-by: Michael Zhu <mchl.zhu.96@gmail.com>
2021-01-28 13:04:32 -08:00
mzhu25
e544a804c2 ZrxTreasury (#120)
* `@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
2021-01-26 09:33:14 -08:00
Github Actions
96e0ad7899 Publish
- @0x/contracts-asset-proxy@3.7.5
 - @0x/contracts-broker@1.1.23
 - @0x/contracts-coordinator@3.1.24
 - @0x/contracts-dev-utils@1.3.22
 - @0x/contracts-erc1155@2.1.23
 - @0x/contracts-erc20@3.3.2
 - @0x/contracts-erc721@3.1.23
 - @0x/contracts-exchange-forwarder@4.2.24
 - @0x/contracts-exchange-libs@4.3.23
 - @0x/contracts-exchange@3.2.24
 - @0x/contracts-extensions@6.2.18
 - @0x/contracts-integrations@2.7.24
 - @0x/contracts-multisig@4.1.24
 - @0x/contracts-staking@2.0.31
 - @0x/contracts-test-utils@5.3.20
 - @0x/contracts-utils@4.7.2
 - @0x/contracts-zero-ex@0.18.1
 - @0x/asset-swapper@5.8.1
 - @0x/contract-artifacts@3.11.1
 - @0x/contract-wrappers-test@12.2.35
 - @0x/contract-wrappers@13.12.2
 - @0x/migrations@6.5.11
 - @0x/order-utils@10.4.15
 - @0x/protocol-utils@1.1.5
2021-01-26 08:02:10 +00:00
Github Actions
5a1fee5d31 Updated CHANGELOGS & MD docs 2021-01-26 08:02:03 +00:00
Lawrence Forman
3557a5e5a9 @0x/contracts-zero-ex: Update tests to work with ganache chainId of 1337 (#123)
* `@0x/contracts-zero-ex`: Update tests to work with ganache chainId of 1337

* `update org deps

* `@0x/protocol-utils`: Use `Web3Wrapper.signTypedDataAsync()` instead of removed `Web3Wrapper.signTypedDataV4Async()` (#124)

Co-authored-by: Lawrence Forman <me@merklejerk.com>

* `update org deps
`@0x/order-utils`: Fix broken tests

* remove lingering console.logs

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-26 02:50:09 -05:00
Lawrence Forman
0bd43d5265 docs: add big-pantsuit-energy release (#122)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-21 19:02:44 -05:00
Lawrence Forman
8fd7c1b386 @0x/migrations: Update dockerfile to override networkId and chainId in ganache-cli (#118)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-20 12:10:24 -05:00
Lawrence Forman
50068750f5 EP: Swallow reverts in batchGetLimit/RfqRelevantStates() (#117)
* `@0x/contracts-zero-ex`: Swallow reverts in `batchGetLimit/RfqRelevantStates()`.

* `@0x/contracts-zero-ex`: Fix typos

* `@0x/contracts-zero-ex`: Fix misleading RFQ typehash comment in `LibNativeOrder.sol`

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-20 00:25:48 -05:00
Daniel Pyrathon
a7a905de4c fix: Upgrade quote server and Asset Swapper types (and specify protocol ve… (#108)
* Upgrade quote server and Asset Swapper types (and specify protocol version in API requests)

* add package and lockfile

* fix tests
2021-01-13 17:07:45 -08:00
Github Actions
f283108586 Publish
- @0x/contracts-asset-proxy@3.7.4
 - @0x/contracts-broker@1.1.22
 - @0x/contracts-coordinator@3.1.23
 - @0x/contracts-dev-utils@1.3.21
 - @0x/contracts-erc1155@2.1.22
 - @0x/contracts-erc20@3.3.1
 - @0x/contracts-erc721@3.1.22
 - @0x/contracts-exchange-forwarder@4.2.23
 - @0x/contracts-exchange-libs@4.3.22
 - @0x/contracts-exchange@3.2.23
 - @0x/contracts-extensions@6.2.17
 - @0x/contracts-integrations@2.7.23
 - @0x/contracts-multisig@4.1.23
 - @0x/contracts-staking@2.0.30
 - @0x/contracts-test-utils@5.3.19
 - @0x/contracts-utils@4.7.1
 - @0x/contracts-zero-ex@0.18.0
 - @0x/asset-swapper@5.8.0
 - @0x/contract-addresses@5.9.0
 - @0x/contract-wrappers-test@12.2.34
 - @0x/contract-wrappers@13.12.1
 - @0x/migrations@6.5.10
 - @0x/order-utils@10.4.14
 - @0x/protocol-utils@1.1.4
2021-01-13 04:08:45 +00:00
Github Actions
9afe05095a Updated CHANGELOGS & MD docs 2021-01-13 04:08:39 +00:00
Jacob Evans
3dab892978 feat: Kyber reserve discovery using getTradingReserves (#111)
* feat: Kyber reserve discovery using getTradingReserves

* refactor sampler operations with

* Added Mooniswap v2.1
2021-01-13 13:28:15 +10:00
Greg Hysz
e40ddb800e Updated docs for Panettone release + v4 audit + v4 bounty (#112) 2021-01-12 15:19:50 -08:00
Lawrence Forman
72a74e7c66 Panettone cleanup (#109)
* `@0x/contracts-zero-ex`: Updates for panettone release

* `@0x/contract-addresses`: Update ganache snapshot addresses

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-12 10:53:50 -08:00
Greg Hysz
e8ae64673f Updating docs after cyberpants2077 release (#110) 2021-01-08 11:51:43 -08:00
mzhu25
2451f419c8 Update PLP sandbox addresses (#107) 2021-01-05 12:41:52 -08:00
Lawrence Forman
2394eb62aa @0x/contracts-zero-ex: Use consistent returndatasize checks in UniswapFeature (#96)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-05 14:40:08 -05:00
Lawrence Forman
f9078bb1c3 `Add SPDX license IDs to 0.6+ solidity files (#105)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2021-01-05 13:55:24 -05:00
Greg Hysz
bf25c81f1c Added Panettone release to docs (#95)
* Updated releases to include Panettone

* Updated releases + addresses
2021-01-04 18:45:31 -08:00
Github Actions
03ecc530c3 Publish
- @0x/contracts-asset-proxy@3.7.3
 - @0x/contracts-broker@1.1.21
 - @0x/contracts-coordinator@3.1.22
 - @0x/contracts-dev-utils@1.3.20
 - @0x/contracts-erc1155@2.1.21
 - @0x/contracts-erc20@3.3.0
 - @0x/contracts-erc721@3.1.21
 - @0x/contracts-exchange-forwarder@4.2.22
 - @0x/contracts-exchange-libs@4.3.21
 - @0x/contracts-exchange@3.2.22
 - @0x/contracts-extensions@6.2.16
 - @0x/contracts-integrations@2.7.22
 - @0x/contracts-multisig@4.1.22
 - @0x/contracts-staking@2.0.29
 - @0x/contracts-test-utils@5.3.18
 - @0x/contracts-utils@4.7.0
 - @0x/contracts-zero-ex@0.17.0
 - @0x/asset-swapper@5.6.2
 - @0x/contract-artifacts@3.11.0
 - @0x/contract-wrappers-test@12.2.33
 - @0x/contract-wrappers@13.12.0
 - @0x/migrations@6.5.9
 - @0x/order-utils@10.4.13
 - @0x/protocol-utils@1.1.3
2021-01-04 23:22:36 +00:00
Github Actions
d52b1d24d0 Updated CHANGELOGS & MD docs 2021-01-04 23:22:26 +00: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
Romain Butteaud
1249bf9ccc feat: adding UST, BBTC, OBTC, aDAI, aUSDC, aUSDT, sEUR, EURS, sETH pools (#103)
* feat: adding UST, BBTC, OBTC, aDAI, aUSDC, aUSDT, sEUR, EURS, sETH pools

* fix: comment seth curve pool

* fix: prettify, remove seth pool
2021-01-04 13:56:18 -08:00
Jacob Evans
681f6b3f07 chore: [asset-swapper] Update Shells to new version (#102) 2021-01-04 13:56:05 -08:00
Github Actions
d3ca1fe96b Publish
- @0x/contracts-integrations@2.7.21
 - @0x/asset-swapper@5.6.1
2020-12-31 04:02:02 +00:00
Github Actions
9e4f5815e4 Updated CHANGELOGS & MD docs 2020-12-31 04:01:53 +00:00
Jacob Evans
c3c27eaedc fix: [asset-swapper] Encoded Buy fillAmount (#106) 2020-12-31 13:18:25 +10:00
Github Actions
4bf6a23d23 Publish
- @0x/contracts-integrations@2.7.20
 - @0x/asset-swapper@5.6.0
2020-12-27 23:59:31 +00:00
Github Actions
aaaf0d02de Updated CHANGELOGS & MD docs 2020-12-27 23:59:23 +00:00
Jacob Evans
825cc4d035 feat: [asset-swapper] Added Mooniswap V2 factory address (#100) 2020-12-28 09:23:52 +10:00
Github Actions
c2d44e5c10 Publish
- @0x/contracts-asset-proxy@3.7.2
 - @0x/contracts-broker@1.1.20
 - @0x/contracts-coordinator@3.1.21
 - @0x/contracts-dev-utils@1.3.19
 - @0x/contracts-erc1155@2.1.20
 - @0x/contracts-erc20@3.2.14
 - @0x/contracts-erc721@3.1.20
 - @0x/contracts-exchange-forwarder@4.2.21
 - @0x/contracts-exchange-libs@4.3.20
 - @0x/contracts-exchange@3.2.21
 - @0x/contracts-extensions@6.2.15
 - @0x/contracts-integrations@2.7.19
 - @0x/contracts-multisig@4.1.21
 - @0x/contracts-staking@2.0.28
 - @0x/contracts-test-utils@5.3.17
 - @0x/contracts-utils@4.6.5
 - @0x/contracts-zero-ex@0.16.0
 - @0x/asset-swapper@5.5.3
 - @0x/contract-addresses@5.8.0
 - @0x/contract-wrappers-test@12.2.32
 - @0x/contract-wrappers@13.11.2
 - @0x/migrations@6.5.8
 - @0x/order-utils@10.4.12
 - @0x/protocol-utils@1.1.2
2020-12-23 02:55:08 +00:00
Github Actions
0efd0860c8 Updated CHANGELOGS & MD docs 2020-12-23 02:55:01 +00:00
Lawrence Forman
a890a06664 @0x/contract-addresses: Redeploy FQT (#99)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-12-23 13:13:49 +11:00
Jacob Evans
5befb87071 fix: CryptoCom rollup (#98) 2020-12-23 11:43:11 +11:00
mintcloud
12ba4c373a Update staking.md
Changed epoch length
2020-12-18 11:14:49 -08:00
Github Actions
7fd25be02e Publish
- @0x/contracts-asset-proxy@3.7.1
 - @0x/contracts-broker@1.1.19
 - @0x/contracts-coordinator@3.1.20
 - @0x/contracts-dev-utils@1.3.18
 - @0x/contracts-erc1155@2.1.19
 - @0x/contracts-erc20@3.2.13
 - @0x/contracts-erc721@3.1.19
 - @0x/contracts-exchange-forwarder@4.2.20
 - @0x/contracts-exchange-libs@4.3.19
 - @0x/contracts-exchange@3.2.20
 - @0x/contracts-extensions@6.2.14
 - @0x/contracts-integrations@2.7.18
 - @0x/contracts-multisig@4.1.20
 - @0x/contracts-staking@2.0.27
 - @0x/contracts-test-utils@5.3.16
 - @0x/contracts-utils@4.6.4
 - @0x/contracts-zero-ex@0.15.0
 - @0x/asset-swapper@5.5.2
 - @0x/contract-addresses@5.7.0
 - @0x/contract-wrappers-test@12.2.31
 - @0x/contract-wrappers@13.11.1
 - @0x/migrations@6.5.7
 - @0x/order-utils@10.4.11
 - @0x/protocol-utils@1.1.1
2020-12-17 22:52:27 +00:00
Github Actions
aa688c4a92 Updated CHANGELOGS & MD docs 2020-12-17 22:52:20 +00:00
mzhu25
fb437551c9 Bancor FQT rollup (#91)
* Add MixinBancor for BridgeAdapter

* Update changelog

* Use 0.6 call value syntax

* `@0x/contract-addresses`: Deploy new FQT

* feat: Rollup CoFiX (#92)

* `@0x/contract-addreses`: update FQT addresses

Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: Jacob Evans <jacob@dekz.net>
2020-12-17 17:12:40 -05:00
Greg Hysz
6fa1de7889 Emergency docs (#94) 2020-12-17 10:24:16 -08:00
mzhu25
7a42df9a65 Only use subgraph query result to populate function history (#93)
* Only use subgraph query result to populate function history

* Fix rollback for functions with no rollback history
2020-12-16 23:14:19 -08:00
Github Actions
15a508f3ea Publish
- @0x/contracts-integrations@2.7.17
 - @0x/contracts-zero-ex@0.14.0
 - @0x/asset-swapper@5.5.1
 - @0x/contract-wrappers-test@12.2.30
 - @0x/migrations@6.5.6
 - @0x/protocol-utils@1.1.0
2020-12-16 20:09:57 +00:00
Github Actions
b3c20ff909 Updated CHANGELOGS & MD docs 2020-12-16 20:09:48 +00:00
Lawrence Forman
682c07cb73 Add mtx tooling to @0x/protocol-utils (#90)
* `@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>
2020-12-16 14:22:00 -05:00
Jacob Evans
602605ab4b Disable Bancor Service for non-mainnet (#89)
* Disable Bancor Service for non-mainnet

* Fix import

* Fix mocked tests
2020-12-16 21:58:39 +10:00
Github Actions
0eff2548d5 Publish
- @0x/contracts-asset-proxy@3.7.0
 - @0x/contracts-broker@1.1.18
 - @0x/contracts-coordinator@3.1.19
 - @0x/contracts-dev-utils@1.3.17
 - @0x/contracts-exchange-forwarder@4.2.19
 - @0x/contracts-exchange@3.2.19
 - @0x/contracts-extensions@6.2.13
 - @0x/contracts-integrations@2.7.16
 - @0x/contracts-multisig@4.1.19
 - @0x/contracts-staking@2.0.26
 - @0x/contracts-zero-ex@0.13.0
 - @0x/asset-swapper@5.5.0
 - @0x/contract-wrappers-test@12.2.29
 - @0x/migrations@6.5.5
2020-12-16 08:03:31 +00:00
Github Actions
93ee681204 Updated CHANGELOGS & MD docs 2020-12-16 08:03:25 +00:00
Jacob Evans
d7bea98075 fix: [asset-swapper] Rework Bancor to only use paths and sample best path (#88)
* Rework Bancor to only use paths and sample best path

* Deployed address

* Clean up and pin bancor sdk

* CHANGELOGs
2020-12-16 17:34:47 +10:00
Lawrence Forman
437a3b048d EP: Address audit feedback (#82)
* `@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>
2020-12-16 01:37:39 -05:00
Daniel Pyrathon
f55a9454b5 fix: Fix quote report (#87)
* updates market side liquidity with the appropriate firm and indicative quotes for reporting

* linting and fixing

* linting and fixing
2020-12-15 16:57:54 -08:00
Daniel Pyrathon
3b03ad0db4 fix: added SRA schema for V4 orders (#86)
* added SRA schema for V4 orders

* address comments
2020-12-14 17:39:42 -08:00
mzhu25
27d679e1f1 Rollback CLI tools (#79)
* Rollback CLI tools

* Refactor

* Address PR feedback

* Sort deployment history

* Rollback specific deployment

* Split calldata
2020-12-10 19:42:00 -08:00
Github Actions
1e16d59c23 Publish
- @0x/contracts-asset-proxy@3.6.9
 - @0x/contracts-broker@1.1.17
 - @0x/contracts-coordinator@3.1.18
 - @0x/contracts-dev-utils@1.3.16
 - @0x/contracts-erc1155@2.1.18
 - @0x/contracts-erc20@3.2.12
 - @0x/contracts-erc721@3.1.18
 - @0x/contracts-exchange-forwarder@4.2.18
 - @0x/contracts-exchange-libs@4.3.18
 - @0x/contracts-exchange@3.2.18
 - @0x/contracts-extensions@6.2.12
 - @0x/contracts-integrations@2.7.15
 - @0x/contracts-multisig@4.1.18
 - @0x/contracts-staking@2.0.25
 - @0x/contracts-test-utils@5.3.15
 - @0x/contracts-utils@4.6.3
 - @0x/contracts-zero-ex@0.12.0
 - @0x/asset-swapper@5.4.2
 - @0x/contract-artifacts@3.10.0
 - @0x/contract-wrappers-test@12.2.28
 - @0x/contract-wrappers@13.11.0
 - @0x/migrations@6.5.4
 - @0x/order-utils@10.4.10
 - @0x/protocol-utils@1.0.1
2020-12-09 03:40:56 +00:00
Github Actions
1e7c9bbb1f Updated CHANGELOGS & MD docs 2020-12-09 03:40:51 +00: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
Greg Hysz
d1eb6279b4 Updated addresses and transformer nonces after hot-pants (#78) 2020-12-08 11:33:36 -08:00
Greg Hysz
4ace79d947 Updated Releases + Fix Links (#77)
* Updated releases

* fixed some typos and links in docs
2020-12-08 10:44:59 -08:00
mzhu25
e5eee96487 Add naive selector collision test (#74) 2020-12-07 19:49:37 -08:00
Github Actions
907adf9145 Publish
- @0x/contracts-asset-proxy@3.6.8
 - @0x/contracts-broker@1.1.16
 - @0x/contracts-coordinator@3.1.17
 - @0x/contracts-dev-utils@1.3.15
 - @0x/contracts-erc1155@2.1.17
 - @0x/contracts-erc20@3.2.11
 - @0x/contracts-erc721@3.1.17
 - @0x/contracts-exchange-forwarder@4.2.17
 - @0x/contracts-exchange-libs@4.3.17
 - @0x/contracts-exchange@3.2.17
 - @0x/contracts-extensions@6.2.11
 - @0x/contracts-integrations@2.7.14
 - @0x/contracts-multisig@4.1.17
 - @0x/contracts-staking@2.0.24
 - @0x/contracts-test-utils@5.3.14
 - @0x/contracts-utils@4.6.2
 - @0x/contracts-zero-ex@0.11.1
 - @0x/asset-swapper@5.4.1
 - @0x/contract-addresses@5.6.0
 - @0x/contract-wrappers-test@12.2.27
 - @0x/contract-wrappers@13.10.3
 - @0x/migrations@6.5.3
 - @0x/order-utils@10.4.9
2020-12-07 22:56:33 +00:00
Github Actions
c046fe6220 Updated CHANGELOGS & MD docs 2020-12-07 22:56:27 +00:00
Lawrence Forman
84bf20de41 Update CHANGELOG.json (#75)
* Update CHANGELOG.json

* Update CHANGELOG.json
2020-12-07 17:17:43 -05:00
Lawrence Forman
f5a6f74d9a Update mainnet and ropsten transformer addresses for hot-pants release (#70)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-12-07 16:41:56 -05:00
Github Actions
7c7fc51ccf Publish
- @0x/contracts-integrations@2.7.13
 - @0x/asset-swapper@5.4.0
2020-12-07 20:42:41 +00:00
Github Actions
fa22f6de0d Updated CHANGELOGS & MD docs 2020-12-07 20:42:34 +00:00
Kim Persson
4f41214af2 feat: add takerAssetToEthRate and makerAssetToEthRate to quote response (#49)
* ADDS expose ethToTakerAssetRate and ethToTakerAssetRate

* REFACTORS rename to more correct takerAssetToEth/makerAssetToEth naming

* ADDS asset-swapper change log entry
2020-12-07 20:40:56 +01:00
Github Actions
607b7169bc Publish
- @0x/contracts-integrations@2.7.12
 - @0x/asset-swapper@5.3.1
2020-12-03 23:05:32 +00:00
Github Actions
1253490a38 Updated CHANGELOGS & MD docs 2020-12-03 23:05:26 +00:00
Alex Kroeger
0a37a588e8 Added BalanceChecker contract (#60)
* Added BalanceChecker contract

* Upgraded to solidity 0.6, simplified contract, added tests

* uint -> uint256

* export BalanceChecker contract wrapper

* prettier

* removed superfluous test code

* prettier
2020-12-03 14:31:45 -08:00
Greg Hysz
23ee108089 updated release names (#72) 2020-12-03 11:00:44 -08:00
Github Actions
64feeeea75 Publish
- @0x/contracts-asset-proxy@3.6.7
 - @0x/contracts-broker@1.1.15
 - @0x/contracts-coordinator@3.1.16
 - @0x/contracts-dev-utils@1.3.14
 - @0x/contracts-erc1155@2.1.16
 - @0x/contracts-erc20@3.2.10
 - @0x/contracts-erc721@3.1.16
 - @0x/contracts-exchange-forwarder@4.2.16
 - @0x/contracts-exchange-libs@4.3.16
 - @0x/contracts-exchange@3.2.16
 - @0x/contracts-extensions@6.2.10
 - @0x/contracts-integrations@2.7.11
 - @0x/contracts-multisig@4.1.16
 - @0x/contracts-staking@2.0.23
 - @0x/contracts-test-utils@5.3.13
 - @0x/contracts-utils@4.6.1
 - @0x/contracts-zero-ex@0.11.0
 - @0x/asset-swapper@5.3.0
 - @0x/contract-addresses@5.5.0
 - @0x/contract-artifacts@3.9.1
 - @0x/contract-wrappers-test@12.2.26
 - @0x/contract-wrappers@13.10.2
 - @0x/migrations@6.5.2
 - @0x/order-utils@10.4.8
2020-12-03 02:08:13 +00:00
Github Actions
2ebef23b8c Updated CHANGELOGS & MD docs 2020-12-03 02:08:07 +00:00
mzhu25
cc9f43ba3b Reenable PLP VIP and add gasCost field to LiquidityProviderRegistry (#65) 2020-12-02 17:26:48 -08:00
Xianny
5f1c139176 fix: handle potentially undefined path (#69)
* handle potentially undefined path

* Remove unused import

Co-authored-by: Michael Zhu <mchl.zhu.96@gmail.com>
2020-12-02 16:23:19 -08:00
mzhu25
9eea7de340 Point to ILiquidityProvider interface in docs, not ILiquidityProviderSandbox (#71) 2020-12-02 14:38:46 -08:00
Lawrence Forman
4480f84efa @0x/contracts-staking: Set isOfflineMode: false in compiler.json (#68)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-12-02 16:43:25 -05:00
Lawrence Forman
5a8b8afff1 Independent compilation for contracts-zero-ex package (#67)
* `@0x/contracts-zero-ex`: Update `compiler.json`

* update org deps and regen yarn lock

* fix `@0x/contracts-gen` being pinned (why?)

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-12-02 11:14:19 -05:00
xianny
67c95bc0b7 add changelog and comments to pr #62 2020-12-01 13:05:21 -08:00
Greg Hysz
e70ec02be8 updated releases (#64) 2020-12-01 12:47:15 -08:00
Xianny
db81a94adb Return unoptimized quote in SwapQuote (#62)
* return unoptimized alternatives in SwapQuote

* refactor: dedupe
2020-12-01 12:40:48 -08:00
Lawrence Forman
475b608338 EP: FeeCollectorController (#59)
* `@0x/contracts-zero-ex`: Govern `FeeCollector`s through a separate `FeeCollectorController` contract.

* `@0x/contracts-integrations`: Fix broken EP protocol fees test.
`@0x/contracts-integrations`: Make this package private.

* `@0x/contract-addresses`: Update ganache snapshot addresses.

* Update contracts/zero-ex/contracts/src/external/FeeCollectorController.sol

Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>

* Apply suggestions from code review

Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>

* rebase

Co-authored-by: Lawrence Forman <me@merklejerk.com>
Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
2020-12-01 12:17:21 -05:00
Jacob Evans
27e36b112e feat: [asset-swapper] support selling entire balance (#37) 2020-12-01 12:54:06 +10:00
Jacob Evans
f698721484 feat: [asset-swapper] Add Crypto.com as a source (#43)
* feat: [asset-swapper] Add Crypto.com as a source

* Exclude in tests

* Disable hop sources to avoid excess inaccuracy

* Added CryptoCom Bridge and FQT rollup

* update test

* Deploy CryptoCom bridge

* Update package.json

* CHANGELOGs
2020-12-01 12:52:48 +10:00
Daniel Pyrathon
0c08353b2c reanme function to Async (#63) 2020-11-30 17:02:28 -08:00
Greg Hysz
a074b49732 Added link to Transformer Deployer section + fixeed safety checklist in Features (#61) 2020-11-30 17:00:33 -08:00
Greg Hysz
43b75c7953 minor doc updates: include Best Practices for Feature Development. (#58) 2020-11-30 09:50:20 -08:00
Greg Hysz
84a78eafc4 minor doc improvements (#57) 2020-11-28 11:21:35 -08:00
Greg Hysz
3c1ab889dd V4 Docs. See live on https://0xprotocol.readthedocs.io. (#56) 2020-11-28 00:51:50 -08:00
Steve Marx
012fff46f6 add permissionless transformer deployer (#55)
* add permissionless transformer deployer
2020-11-27 18:21:49 -05:00
Greg Hysz
6307ebc3a2 Replace PairOrdersCancelled event with PairCancelledLimitOrders and PairCancelledRfqOrders (#54) 2020-11-27 13:31:12 -08:00
Steve Marx
88d7e73eba remove calldata signing (#51) 2020-11-25 16:55:12 -05:00
Steve Marx
9653eb9e70 RFQ order with 0 txOrigin is INVALID (#50) 2020-11-25 14:15:59 -05:00
Steve Marx
ad337271d3 Miscellaneous fixes to RFQ origin registration (#48)
* Contracts can no longer call registerAllowedRfqOrigins()
* registerAllowedRfqOrigins() is now plural, registers an array of
addresses
2020-11-25 14:08:15 -05:00
Lawrence Forman
7591e99316 Remove protocol fees from RFQ orders (#45)
* `@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>
2020-11-24 18:24:06 -05:00
Lawrence Forman
ca20df4752 @0x/contracts-zero-ex: Fix TransformERC20Feature reverting when selling taker's entire balance when input token is ETH (#46)
Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-11-24 17:52:22 -05:00
Steve Marx
841e4ee666 require txOrigin for RFQ orders, allow origins to register alternate … (#47)
require txOrigin for RFQ orders, allow origins to register alternate addresses that can fill orders
2020-11-24 16:53:32 -05:00
Steve Marx
e2ee3414ea limit order metatransactions (#44) 2020-11-24 13:39:40 -05:00
Steve Marx
5306cc03e9 Convert MetaTransactionsFeature to use the new LibSignature (#31) 2020-11-23 16:14:09 -05:00
F. Eugene Aumson
85f5d32de2 Allow injection of an RfqtFirmQuoteValidator and an RfqtQuoteObserver (#11)
* Allow injection of RFQT quote hooks

* Remove QuoteObserver

* Remove unnecessary `async`

* modernized the code based on latest spec

* prettify

Co-authored-by: Daniel Pyrathon <daniel@0x.org>
2020-11-23 12:05:28 -08:00
Lawrence Forman
ab698cec14 EP: misc fixes (#38)
* `@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>
2020-11-23 12:59:02 -05:00
Steve Marx
b463a39bfa protocol fee / staking integration tests (#40) 2020-11-20 09:19:59 -05:00
Github Actions
018e25345b Publish
- @0x/contracts-asset-proxy@3.6.6
 - @0x/contracts-broker@1.1.14
 - @0x/contracts-coordinator@3.1.15
 - @0x/contracts-dev-utils@1.3.13
 - @0x/contracts-erc1155@2.1.15
 - @0x/contracts-erc20@3.2.9
 - @0x/contracts-erc721@3.1.15
 - @0x/contracts-exchange-forwarder@4.2.15
 - @0x/contracts-exchange-libs@4.3.15
 - @0x/contracts-exchange@3.2.15
 - @0x/contracts-extensions@6.2.9
 - @0x/contracts-integrations@2.7.10
 - @0x/contracts-multisig@4.1.15
 - @0x/contracts-staking@2.0.22
 - @0x/contracts-test-utils@5.3.12
 - @0x/contracts-utils@4.6.0
 - @0x/contracts-zero-ex@0.10.0
 - @0x/asset-swapper@5.2.0
 - @0x/contract-addresses@5.4.0
 - @0x/contract-wrappers-test@12.2.25
 - @0x/contract-wrappers@13.10.1
 - @0x/migrations@6.5.1
 - @0x/order-utils@10.4.7
2020-11-19 05:32:03 +00:00
Github Actions
b60fa8a7d7 Updated CHANGELOGS & MD docs 2020-11-19 05:31:53 +00:00
Jacob Evans
048d8dee60 fix: [asset-swapper] disable off-chain sampling for Balancer and CREAM (#41)
* fix: [asset-swapper] disable off-chain sampling for Balancer and CREAM

* Modify  Balancer off-chain test to expect only pools

* CHANGELOG
2020-11-19 15:00:09 +10:00
Alex Kroeger
927fe2b58b Improved ComparisonPrice function (#32)
* 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
2020-11-18 17:12:35 -08:00
mzhu25
89948b360c Add checkAllowance flag to LibTokenSpender.spendERC20Tokens (#39) 2020-11-18 12:23:13 -08: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
Jacob Evans
4f82543bdf feat: asset-swapper tweak the gas schedule + return decimals (#34)
* feat: asset-swapper Return decimals from sampler in quote

* feat: asset-swapper tweak the gas schedule

* fix lint

* CHANGELOG
2020-11-17 11:36:53 +10:00
Github Actions
3133c509f9 Publish
- @0x/contracts-integrations@2.7.9
 - @0x/asset-swapper@5.1.1
2020-11-14 02:19:41 +00:00
Github Actions
426c15692d Updated CHANGELOGS & MD docs 2020-11-14 02:19:33 +00:00
mzhu25
8c87a77faa Remove PLP VIP path from EP swap quote consumer (#36) 2020-11-13 17:49:30 -08:00
709 changed files with 59531 additions and 19255 deletions

View File

@@ -1,25 +1,25 @@
version: 2
version: 2.1
jobs:
build:
resource_class: medium+
resource_class: xlarge
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
environment:
CONTRACTS_COMMIT_HASH: '9ed05f5'
NODE_OPTIONS: '--max-old-space-size=16384'
working_directory: ~/repo
steps:
- checkout
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
- run:
name: install-yarn
command: npm install --force --global yarn@1.17.0
command: npm install --force --global yarn@1.22.0
- run:
name: yarn
command: yarn --frozen-lockfile --ignore-engines install || yarn --frozen-lockfile --ignore-engines install
- setup_remote_docker
- run: yarn build:ci
- run: yarn build:ts
- run: yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci
- run: yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts
- save_cache:
key: repo-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -31,57 +31,59 @@ jobs:
test-exchange-ganache:
resource_class: medium+
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-exchange
- run: yarn wsrun -p @0x/contracts-exchange -m --serial -c test:circleci
test-integrations-ganache:
resource_class: medium+
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-integrations
- run: yarn wsrun -p @0x/contracts-integrations -m --serial -c test:circleci
test-contracts-staking-ganache:
resource_class: medium+
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-staking
- run: yarn wsrun -p @0x/contracts-staking -m --serial -c test:circleci
test-contracts-extra-ganache:
resource_class: medium+
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-exchange-forwarder @0x/contracts-coordinator
- run: yarn wsrun -p @0x/contracts-exchange-forwarder -p @0x/contracts-coordinator -m --serial -c test:circleci
test-contracts-rest-ganache:
resource_class: medium+
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-multisig @0x/contracts-utils @0x/contracts-exchange-libs @0x/contracts-erc20 @0x/contracts-erc721 @0x/contracts-erc1155 @0x/contracts-asset-proxy @0x/contracts-broker @0x/contracts-zero-ex
- run: yarn wsrun -p @0x/contracts-multisig -p @0x/contracts-utils -p @0x/contracts-exchange-libs -p @0x/contracts-erc20 -p @0x/contracts-erc721 -p @0x/contracts-erc1155 -p @0x/contracts-asset-proxy -p @0x/contracts-broker -p @0x/contracts-zero-ex -m --serial -c test:circleci
test-publish:
resource_class: medium+
resource_class: large
environment:
NODE_OPTIONS: '--max-old-space-size=6442'
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
- image: 0xorg/verdaccio
working_directory: ~/repo
steps:
@@ -95,7 +97,7 @@ jobs:
path: ~/.npm/_logs
test-doc-generation:
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
@@ -106,18 +108,18 @@ jobs:
no_output_timeout: 1200
test-rest:
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-test-utils
- run: yarn wsrun test:circleci @0x/contract-artifacts
- run: yarn wsrun test:circleci @0x/contract-wrappers-test
- run: yarn wsrun test:circleci @0x/migrations
- run: yarn wsrun test:circleci @0x/order-utils
- run: yarn wsrun test:circleci @0x/asset-swapper
- run: yarn wsrun -p @0x/contracts-test-utils -m --serial -c test:circleci
- run: yarn wsrun -p @0x/contract-artifacts -m --serial -c test:circleci
- run: yarn wsrun -p @0x/contract-wrappers-test -m --serial -c test:circleci
- run: yarn wsrun -p @0x/migrations -m --serial -c test:circleci
- run: yarn wsrun -p @0x/order-utils -m --serial -c test:circleci
- run: yarn wsrun -p @0x/asset-swapper -m --serial -c test:circleci
- save_cache:
key: coverage-contract-wrappers-test-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -134,7 +136,7 @@ jobs:
resource_class: large
working_directory: ~/repo
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
steps:
- restore_cache:
keys:
@@ -145,7 +147,7 @@ jobs:
- run: yarn diff_md_docs:ci
submit-coverage:
docker:
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: node:12
working_directory: ~/repo
steps:
- restore_cache:

View File

@@ -7,6 +7,9 @@ on:
description: 'required CI status'
default: 'success'
required: true
prerelease:
description: 'prerelease name'
required: false
jobs:
publish:
@@ -21,7 +24,7 @@ jobs:
(echo "::error ::${{ github.ref }} does not have a successful CI status" && false)
- uses: actions/checkout@v2
with:
ref: 'development'
ref: ${{ github.ref }}
fetch-depth: 0
- uses: actions/setup-node@v1
with:
@@ -41,7 +44,9 @@ jobs:
env:
NPM_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
GITHUB_TOKEN: ${{ github.token }}
PUBLISH_PRERELEASE: ${{ github.event.inputs.prerelease }}
- name: 'merge into main branch'
if: github.event.inputs.prerelease == '' # unless it's a prerelease
run: |
git checkout main && \
git merge ${{ github.ref }} && \

4
.gitignore vendored
View File

@@ -113,6 +113,8 @@ contracts/dev-utils/generated-artifacts/
contracts/dev-utils/test/generated-artifacts/
contracts/zero-ex/generated-artifacts/
contracts/zero-ex/test/generated-artifacts/
contracts/treasury/generated-artifacts/
contracts/treasury/test/generated-artifacts/
# generated truffle contract artifacts/
contracts/broker/build/
@@ -167,6 +169,8 @@ contracts/dev-utils/generated-wrappers/
contracts/dev-utils/test/generated-wrappers/
contracts/zero-ex/generated-wrappers/
contracts/zero-ex/test/generated-wrappers/
contracts/treasury/generated-wrappers/
contracts/treasury/test/generated-wrappers/
# Doc README copy
packages/*/docs/README.md

View File

@@ -64,6 +64,10 @@ lib
/contracts/zero-ex/test/generated-wrappers
/contracts/zero-ex/generated-artifacts
/contracts/zero-ex/test/generated-artifacts
/contracts/treasury/generated-wrappers
/contracts/treasury/test/generated-wrappers
/contracts/treasury/generated-artifacts
/contracts/treasury/test/generated-artifacts
/contracts/staking/build/
/contracts/coordinator/build/
/contracts/exchange/build/

View File

@@ -3,5 +3,6 @@
"tabWidth": 4,
"singleQuote": true,
"trailingComma": "all",
"bracketSpacing": true
"bracketSpacing": true,
"arrowParens": "avoid"
}

23
.readthedocs.yaml Normal file
View File

@@ -0,0 +1,23 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# Build documentation with MkDocs
#mkdocs:
# configuration: mkdocs.yml
# Optionally build your docs in additional formats such as PDF
#formats:
# - pdf
# Optionally set the version of Python and requirements required to build your docs
python:
version: 3.7
install:
- requirements: docs/requirements.txt

View File

@@ -49,7 +49,6 @@
| Package | Version |
| ------: | :------ |
<!-- For example:
| `0x.js` | 2.0.4 |
| `Exchange Contract` | v2 |

View File

@@ -43,12 +43,12 @@ These packages are all under development. See [/contracts/README.md](/contracts/
#### 0x-specific packages
| Package | Version | Description |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [`@0x/contract-addresses`](/packages/contract-addresses) | [![npm](https://img.shields.io/npm/v/@0x/contract-addresses.svg)](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) | [![npm](https://img.shields.io/npm/v/@0x/contract-wrappers.svg)](https://www.npmjs.com/package/@0x/contract-wrappers) | JS/TS wrappers for interacting with the 0x smart contracts |
| [`@0x/order-utils`](/packages/order-utils) | [![npm](https://img.shields.io/npm/v/@0x/order-utils.svg)](https://www.npmjs.com/package/@0x/order-utils) | A set of utilities for generating, parsing, signing and validating 0x orders |
| [`@0x/migrations`](/packages/migrations) | [![npm](https://img.shields.io/npm/v/@0x/migrations.svg)](https://www.npmjs.com/package/@0x/migrations) | Migration tool for deploying 0x smart contracts on private testnets |
| [`@0x/contract-artifacts`](/packages/contract-artifacts) | [![npm](https://img.shields.io/npm/v/@0x/contract-artifacts.svg)](https://www.npmjs.com/package/@0x/contract-artifacts) | 0x smart contract compilation artifacts | |
| [`@0x/contract-artifacts`](/packages/contract-artifacts) | [![npm](https://img.shields.io/npm/v/@0x/contract-artifacts.svg)](https://www.npmjs.com/package/@0x/contract-artifacts) | 0x smart contract compilation artifacts | |
## Usage

View File

@@ -16,6 +16,7 @@
"quotes": ["error", "double"],
"separate-by-one-line-in-contract": "error",
"space-after-comma": "error",
"statement-indent": "error"
"statement-indent": "error",
"no-empty-blocks": false
}
}

View File

@@ -1,4 +1,203 @@
[
{
"timestamp": 1628225642,
"version": "3.7.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "3.7.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "3.7.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "3.7.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "3.7.13",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "3.7.12",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "3.7.11",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "3.7.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "3.7.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "3.7.8",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "3.7.7",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "3.7.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "3.7.5",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "3.7.4",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "3.7.3",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "3.7.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "3.7.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "3.7.0",
"changes": [
{
"note": "Fix Bancor support of ETH",
"pr": 88
}
],
"timestamp": 1608105788
},
{
"timestamp": 1607485227,
"version": "3.6.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "3.6.8",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "3.6.7",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "3.6.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "3.6.5",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v3.7.17 - _August 6, 2021_
* Dependencies updated
## v3.7.16 - _June 22, 2021_
* Dependencies updated
## v3.7.15 - _June 11, 2021_
* Dependencies updated
## v3.7.14 - _June 2, 2021_
* Dependencies updated
## v3.7.13 - _May 25, 2021_
* Dependencies updated
## v3.7.12 - _May 21, 2021_
* Dependencies updated
## v3.7.11 - _May 5, 2021_
* Dependencies updated
## v3.7.10 - _April 28, 2021_
* Dependencies updated
## v3.7.9 - _April 1, 2021_
* Dependencies updated
## v3.7.8 - _March 17, 2021_
* Dependencies updated
## v3.7.7 - _February 24, 2021_
* Dependencies updated
## v3.7.6 - _February 10, 2021_
* Dependencies updated
## v3.7.5 - _January 26, 2021_
* Dependencies updated
## v3.7.4 - _January 13, 2021_
* Dependencies updated
## v3.7.3 - _January 4, 2021_
* Dependencies updated
## v3.7.2 - _December 23, 2020_
* Dependencies updated
## v3.7.1 - _December 17, 2020_
* Dependencies updated
## v3.7.0 - _December 16, 2020_
* Fix Bancor support of ETH (#88)
## v3.6.9 - _December 9, 2020_
* Dependencies updated
## v3.6.8 - _December 7, 2020_
* Dependencies updated
## v3.6.7 - _December 3, 2020_
* Dependencies updated
## v3.6.6 - _November 19, 2020_
* Dependencies updated
## v3.6.5 - _November 13, 2020_
* Dependencies updated

View File

@@ -21,6 +21,7 @@ pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
import "@0x/contracts-erc20/contracts/src/interfaces/IERC20Token.sol";
import "@0x/contracts-erc20/contracts/src/interfaces/IEtherToken.sol";
import "@0x/contracts-erc20/contracts/src/LibERC20Token.sol";
import "@0x/contracts-exchange-libs/contracts/src/IWallet.sol";
import "@0x/contracts-utils/contracts/src/DeploymentConstants.sol";
@@ -36,6 +37,20 @@ contract BancorBridge is
struct TransferState {
address bancorNetworkAddress;
address[] path;
IEtherToken weth;
}
/// @dev Bancor ETH pseudo-address.
address constant public BANCOR_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
// solhint-disable no-empty-blocks
/// @dev Payable fallback to receive ETH from Bancor/WETH.
function ()
external
payable
{
// Poor man's receive in 0.5.9
require(msg.data.length == 0);
}
/// @dev Callback for `IERC20Bridge`. Tries to buy `amount` of
@@ -60,7 +75,6 @@ contract BancorBridge is
{
// hold variables to get around stack depth limitations
TransferState memory state;
// Decode the bridge data.
(
state.path,
@@ -68,34 +82,42 @@ contract BancorBridge is
// solhint-disable indent
) = abi.decode(bridgeData, (address[], address));
// solhint-enable indent
state.weth = IEtherToken(_getWethAddress());
require(state.path.length > 0, "BancorBridge/PATH_MUST_EXIST");
// Just transfer the tokens if they're the same.
if (state.path[0] == toTokenAddress) {
LibERC20Token.transfer(state.path[0], to, amount);
return BRIDGE_SUCCESS;
require(state.path.length >= 2, "BancorBridge/PATH_LENGTH_MUST_BE_GREATER_THAN_TWO");
// Grant an allowance to the Bancor Network to spend `fromTokenAddress` token.
uint256 fromTokenBalance;
uint256 payableAmount = 0;
// If it's ETH in the path then withdraw from WETH
// The Bancor path will have ETH as the 0xeee address
// Bancor expects to be paid in ETH not WETH
if (state.path[0] == BANCOR_ETH_ADDRESS) {
fromTokenBalance = state.weth.balanceOf(address(this));
state.weth.withdraw(fromTokenBalance);
payableAmount = fromTokenBalance;
} else {
fromTokenBalance = IERC20Token(state.path[0]).balanceOf(address(this));
LibERC20Token.approveIfBelow(state.path[0], state.bancorNetworkAddress, fromTokenBalance);
}
// Otherwise use Bancor to convert
require(state.path.length > 2, "BancorBridge/PATH_LENGTH_MUST_BE_GREATER_THAN_TWO");
require(state.path[state.path.length - 1] == toTokenAddress, "BancorBridge/LAST_ELEMENT_OF_PATH_MUST_MATCH_OUTPUT_TOKEN");
// // Grant an allowance to the Bancor Network to spend `fromTokenAddress` token.
uint256 fromTokenBalance = IERC20Token(state.path[0]).balanceOf(address(this));
LibERC20Token.approveIfBelow(state.path[0], state.bancorNetworkAddress, fromTokenBalance);
// Convert the tokens
uint256 boughtAmount = IBancorNetwork(state.bancorNetworkAddress).convertByPath(
uint256 boughtAmount = IBancorNetwork(state.bancorNetworkAddress).convertByPath.value(payableAmount)(
state.path, // path originating with source token and terminating in destination token
fromTokenBalance, // amount of source token to trade
amount, // minimum amount of destination token expected to receive
to, // beneficiary
state.path[state.path.length-1] == BANCOR_ETH_ADDRESS ? address(this) : to, // beneficiary
address(0), // affiliateAccount; no fee paid
0 // affiliateFee; no fee paid
);
if (state.path[state.path.length-1] == BANCOR_ETH_ADDRESS) {
state.weth.deposit.value(boughtAmount)();
state.weth.transfer(to, boughtAmount);
}
emit ERC20BridgeTransfer(
state.path[0], // fromTokenAddress
state.path[0] == BANCOR_ETH_ADDRESS ? address(state.weth) : state.path[0],
toTokenAddress,
fromTokenBalance,
boughtAmount,
@@ -118,5 +140,5 @@ contract BancorBridge is
{
return LEGACY_WALLET_MAGIC_VALUE;
}
}

View File

@@ -0,0 +1,136 @@
/*
Copyright 2020 ZeroEx Intl.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
import "@0x/contracts-erc20/contracts/src/interfaces/IERC20Token.sol";
import "@0x/contracts-erc20/contracts/src/interfaces/IEtherToken.sol";
import "@0x/contracts-erc20/contracts/src/LibERC20Token.sol";
import "@0x/contracts-exchange-libs/contracts/src/IWallet.sol";
import "@0x/contracts-utils/contracts/src/LibAddressArray.sol";
import "@0x/contracts-utils/contracts/src/DeploymentConstants.sol";
import "../interfaces/IUniswapV2Router01.sol";
import "../interfaces/IERC20Bridge.sol";
// solhint-disable space-after-comma
// solhint-disable not-rely-on-time
contract CryptoComBridge is
IERC20Bridge,
IWallet,
DeploymentConstants
{
struct TransferState {
address[] path;
address router;
uint256 fromTokenBalance;
}
/// @dev Callback for `IERC20Bridge`. Tries to buy `amount` of
/// `toTokenAddress` tokens by selling the entirety of the `fromTokenAddress`
/// token encoded in the bridge data.
/// @param toTokenAddress The token to buy and transfer to `to`.
/// @param from The maker (this contract).
/// @param to The recipient of the bought tokens.
/// @param amount Minimum amount of `toTokenAddress` tokens to buy.
/// @param bridgeData The abi-encoded path of token addresses. Last element must be toTokenAddress
/// @return success The magic bytes if successful.
function bridgeTransferFrom(
address toTokenAddress,
address from,
address to,
uint256 amount,
bytes calldata bridgeData
)
external
returns (bytes4 success)
{
// hold variables to get around stack depth limitations
TransferState memory state;
// Decode the bridge data to get the `fromTokenAddress`.
// solhint-disable indent
(state.path, state.router) = abi.decode(bridgeData, (address[], address));
// solhint-enable indent
require(state.path.length >= 2, "CryptoComBridge/PATH_LENGTH_MUST_BE_AT_LEAST_TWO");
require(state.path[state.path.length - 1] == toTokenAddress, "CryptoComBridge/LAST_ELEMENT_OF_PATH_MUST_MATCH_OUTPUT_TOKEN");
// Just transfer the tokens if they're the same.
if (state.path[0] == toTokenAddress) {
LibERC20Token.transfer(state.path[0], to, amount);
return BRIDGE_SUCCESS;
}
// Get our balance of `fromTokenAddress` token.
state.fromTokenBalance = IERC20Token(state.path[0]).balanceOf(address(this));
// Grant the SushiSwap router an allowance.
LibERC20Token.approveIfBelow(
state.path[0],
state.router,
state.fromTokenBalance
);
// Buy as much `toTokenAddress` token with `fromTokenAddress` token
// and transfer it to `to`.
IUniswapV2Router01 router = IUniswapV2Router01(state.router);
uint[] memory amounts = router.swapExactTokensForTokens(
// Sell all tokens we hold.
state.fromTokenBalance,
// Minimum buy amount.
amount,
// Convert `fromTokenAddress` to `toTokenAddress`.
state.path,
// Recipient is `to`.
to,
// Expires after this block.
block.timestamp
);
emit ERC20BridgeTransfer(
// input token
state.path[0],
// output token
toTokenAddress,
// input token amount
state.fromTokenBalance,
// output token amount
amounts[amounts.length - 1],
from,
to
);
return BRIDGE_SUCCESS;
}
/// @dev `SignatureType.Wallet` callback, so that this bridge can be the maker
/// and sign for itself in orders. Always succeeds.
/// @return magicValue Success bytes, always.
function isValidSignature(
bytes32,
bytes calldata
)
external
view
returns (bytes4 magicValue)
{
return LEGACY_WALLET_MAGIC_VALUE;
}
}

View File

@@ -56,11 +56,14 @@ contract KyberBridge is
uint256 constant private KYBER_RATE_BASE = 10 ** 18;
// solhint-disable no-empty-blocks
/// @dev Payable fallback to receive ETH from Kyber.
/// @dev Payable fallback to receive ETH from Kyber/WETH.
function ()
external
payable
{}
{
// Poor man's receive in 0.5.9
require(msg.data.length == 0);
}
/// @dev Callback for `IKyberBridge`. Tries to buy `amount` of
/// `toTokenAddress` tokens by selling the entirety of the opposing asset

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-asset-proxy",
"version": "3.6.5",
"version": "3.7.17",
"engines": {
"node": ">=6.12"
},
@@ -38,7 +38,7 @@
"docs:json": "typedoc --excludePrivate --excludeExternals --excludeProtected --ignoreCompilerErrors --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES"
},
"config": {
"abis": "./test/generated-artifacts/@(BalancerBridge|BancorBridge|ChaiBridge|CreamBridge|CurveBridge|DODOBridge|DexForwarderBridge|DydxBridge|ERC1155Proxy|ERC20BridgeProxy|ERC20Proxy|ERC721Proxy|Eth2DaiBridge|IAssetData|IAssetProxy|IAssetProxyDispatcher|IAuthorizable|IBalancerPool|IBancorNetwork|IChai|ICurve|IDydx|IDydxBridge|IERC20Bridge|IEth2Dai|IGasToken|IKyberNetworkProxy|IMStable|IMooniswap|IShell|IUniswapExchange|IUniswapExchangeFactory|IUniswapV2Router01|KyberBridge|MStableBridge|MixinAssetProxyDispatcher|MixinAuthorizable|MixinGasToken|MooniswapBridge|MultiAssetProxy|Ownable|ShellBridge|SnowSwapBridge|StaticCallProxy|SushiSwapBridge|SwerveBridge|TestBancorBridge|TestChaiBridge|TestDexForwarderBridge|TestDydxBridge|TestERC20Bridge|TestEth2DaiBridge|TestKyberBridge|TestStaticCallTarget|TestUniswapBridge|TestUniswapV2Bridge|UniswapBridge|UniswapV2Bridge).json",
"abis": "./test/generated-artifacts/@(BalancerBridge|BancorBridge|ChaiBridge|CreamBridge|CryptoComBridge|CurveBridge|DODOBridge|DexForwarderBridge|DydxBridge|ERC1155Proxy|ERC20BridgeProxy|ERC20Proxy|ERC721Proxy|Eth2DaiBridge|IAssetData|IAssetProxy|IAssetProxyDispatcher|IAuthorizable|IBalancerPool|IBancorNetwork|IChai|ICurve|IDydx|IDydxBridge|IERC20Bridge|IEth2Dai|IGasToken|IKyberNetworkProxy|IMStable|IMooniswap|IShell|IUniswapExchange|IUniswapExchangeFactory|IUniswapV2Router01|KyberBridge|MStableBridge|MixinAssetProxyDispatcher|MixinAuthorizable|MixinGasToken|MooniswapBridge|MultiAssetProxy|Ownable|ShellBridge|SnowSwapBridge|StaticCallProxy|SushiSwapBridge|SwerveBridge|TestBancorBridge|TestChaiBridge|TestDexForwarderBridge|TestDydxBridge|TestERC20Bridge|TestEth2DaiBridge|TestKyberBridge|TestStaticCallTarget|TestUniswapBridge|TestUniswapV2Bridge|UniswapBridge|UniswapV2Bridge).json",
"abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
@@ -51,15 +51,15 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contract-wrappers": "^13.10.0",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contract-wrappers": "^13.17.3",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/tslint-config": "^4.1.4",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -67,7 +67,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-util": "^5.1.1",
"ethereumjs-util": "^7.0.10",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
"npm-run-all": "^4.1.2",
@@ -76,20 +76,20 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/contracts-erc1155": "^2.1.14",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-erc721": "^3.1.14",
"@0x/contracts-exchange-libs": "^4.3.14",
"@0x/order-utils": "^10.4.6",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"ethereum-types": "^3.3.3",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-erc1155": "^2.1.35",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-erc721": "^3.1.35",
"@0x/contracts-exchange-libs": "^4.3.35",
"@0x/order-utils": "^10.4.27",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"ethereum-types": "^3.5.0",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -9,6 +9,7 @@ import * as BalancerBridge from '../generated-artifacts/BalancerBridge.json';
import * as BancorBridge from '../generated-artifacts/BancorBridge.json';
import * as ChaiBridge from '../generated-artifacts/ChaiBridge.json';
import * as CreamBridge from '../generated-artifacts/CreamBridge.json';
import * as CryptoComBridge from '../generated-artifacts/CryptoComBridge.json';
import * as CurveBridge from '../generated-artifacts/CurveBridge.json';
import * as DexForwarderBridge from '../generated-artifacts/DexForwarderBridge.json';
import * as DODOBridge from '../generated-artifacts/DODOBridge.json';
@@ -77,6 +78,7 @@ export const artifacts = {
BancorBridge: BancorBridge as ContractArtifact,
ChaiBridge: ChaiBridge as ContractArtifact,
CreamBridge: CreamBridge as ContractArtifact,
CryptoComBridge: CryptoComBridge as ContractArtifact,
CurveBridge: CurveBridge as ContractArtifact,
DODOBridge: DODOBridge as ContractArtifact,
DexForwarderBridge: DexForwarderBridge as ContractArtifact,

View File

@@ -7,6 +7,7 @@ export * from '../generated-wrappers/balancer_bridge';
export * from '../generated-wrappers/bancor_bridge';
export * from '../generated-wrappers/chai_bridge';
export * from '../generated-wrappers/cream_bridge';
export * from '../generated-wrappers/crypto_com_bridge';
export * from '../generated-wrappers/curve_bridge';
export * from '../generated-wrappers/d_o_d_o_bridge';
export * from '../generated-wrappers/dex_forwarder_bridge';

View File

@@ -9,6 +9,7 @@ import * as BalancerBridge from '../test/generated-artifacts/BalancerBridge.json
import * as BancorBridge from '../test/generated-artifacts/BancorBridge.json';
import * as ChaiBridge from '../test/generated-artifacts/ChaiBridge.json';
import * as CreamBridge from '../test/generated-artifacts/CreamBridge.json';
import * as CryptoComBridge from '../test/generated-artifacts/CryptoComBridge.json';
import * as CurveBridge from '../test/generated-artifacts/CurveBridge.json';
import * as DexForwarderBridge from '../test/generated-artifacts/DexForwarderBridge.json';
import * as DODOBridge from '../test/generated-artifacts/DODOBridge.json';
@@ -77,6 +78,7 @@ export const artifacts = {
BancorBridge: BancorBridge as ContractArtifact,
ChaiBridge: ChaiBridge as ContractArtifact,
CreamBridge: CreamBridge as ContractArtifact,
CryptoComBridge: CryptoComBridge as ContractArtifact,
CurveBridge: CurveBridge as ContractArtifact,
DODOBridge: DODOBridge as ContractArtifact,
DexForwarderBridge: DexForwarderBridge as ContractArtifact,

View File

@@ -12,13 +12,11 @@ import { DecodedLogs } from 'ethereum-types';
import * as _ from 'lodash';
import { artifacts } from './artifacts';
import { TestBancorBridgeContract } from './generated-wrappers/test_bancor_bridge';
import {
TestBancorBridgeConvertByPathInputEventArgs as ConvertByPathArgs,
TestBancorBridgeEvents as ContractEvents,
TestBancorBridgeTokenApproveEventArgs as TokenApproveArgs,
TestBancorBridgeTokenTransferEventArgs as TokenTransferArgs,
} from './wrappers';
blockchainTests.resets('Bancor unit tests', env => {
@@ -128,24 +126,6 @@ blockchainTests.resets('Bancor unit tests', env => {
expect(result).to.eq(AssetProxyId.ERC20Bridge);
});
it('performs transfer when both tokens are the same', async () => {
const createTokenFn = testContract.createToken(constants.NULL_ADDRESS);
const tokenAddress = await createTokenFn.callAsync();
await createTokenFn.awaitTransactionSuccessAsync();
const { opts, result, logs } = await transferFromAsync({
tokenAddressesPath: [tokenAddress, tokenAddress],
});
expect(result).to.eq(AssetProxyId.ERC20Bridge, 'asset proxy id');
const transfers = filterLogsToArguments<TokenTransferArgs>(logs, ContractEvents.TokenTransfer);
expect(transfers.length).to.eq(1);
expect(transfers[0].token).to.eq(tokenAddress, 'input token address');
expect(transfers[0].from).to.eq(testContract.address);
expect(transfers[0].to).to.eq(opts.toAddress, 'recipient address');
expect(transfers[0].amount).to.bignumber.eq(opts.amount, 'amount');
});
describe('token -> token', async () => {
it('calls BancorNetwork.convertByPath()', async () => {
const { opts, result, logs } = await transferFromAsync();

View File

@@ -1,354 +0,0 @@
import { ContractTxFunctionObj } from '@0x/contract-wrappers';
import {
blockchainTests,
constants,
expect,
filterLogsToArguments,
getRandomInteger,
randomAddress,
shortZip,
} from '@0x/contracts-test-utils';
import { BigNumber, hexUtils, NULL_ADDRESS } from '@0x/utils';
import { DecodedLogs } from 'ethereum-types';
import * as _ from 'lodash';
import { DexForwarderBridgeCall, dexForwarderBridgeDataEncoder } from '../src/dex_forwarder_bridge';
import { artifacts } from './artifacts';
import {
TestDexForwarderBridgeBridgeTransferFromCalledEventArgs as BtfCalledEventArgs,
TestDexForwarderBridgeContract,
TestDexForwarderBridgeEvents as TestEvents,
} from './wrappers';
const { ZERO_AMOUNT } = constants;
blockchainTests.resets('DexForwarderBridge unit tests', env => {
let testContract: TestDexForwarderBridgeContract;
let inputToken: string;
let outputToken: string;
const BRIDGE_SUCCESS = '0xdc1600f3';
const BRIDGE_FAILURE = '0xffffffff';
const BRIDGE_REVERT_ERROR = 'oopsie';
const NOT_AUTHORIZED_REVERT = 'DexForwarderBridge/SENDER_NOT_AUTHORIZED';
const DEFAULTS = {
toAddress: randomAddress(),
};
before(async () => {
testContract = await TestDexForwarderBridgeContract.deployFrom0xArtifactAsync(
artifacts.TestDexForwarderBridge,
env.provider,
env.txDefaults,
artifacts,
);
// Create test tokens.
[inputToken, outputToken] = [
await callAndTransactAsync(testContract.createToken()),
await callAndTransactAsync(testContract.createToken()),
];
await callAndTransactAsync(testContract.setAuthorized(env.txDefaults.from as string));
});
async function callAndTransactAsync<TResult>(fnCall: ContractTxFunctionObj<TResult>): Promise<TResult> {
const result = await fnCall.callAsync();
await fnCall.awaitTransactionSuccessAsync({}, { shouldValidate: false });
return result;
}
function getRandomBridgeCall(
bridgeAddress: string,
fields: Partial<DexForwarderBridgeCall> = {},
): DexForwarderBridgeCall {
return {
target: bridgeAddress,
inputTokenAmount: getRandomInteger(1, '100e18'),
outputTokenAmount: getRandomInteger(1, '100e18'),
bridgeData: hexUtils.leftPad(inputToken),
...fields,
};
}
describe('bridgeTransferFrom()', () => {
let goodBridgeCalls: DexForwarderBridgeCall[];
let revertingBridgeCall: DexForwarderBridgeCall;
let failingBridgeCall: DexForwarderBridgeCall;
let allBridgeCalls: DexForwarderBridgeCall[];
let totalFillableOutputAmount: BigNumber;
let totalFillableInputAmount: BigNumber;
let recipientOutputBalance: BigNumber;
beforeEach(async () => {
goodBridgeCalls = [];
for (let i = 0; i < 4; ++i) {
goodBridgeCalls.push(await createBridgeCallAsync({ returnCode: BRIDGE_SUCCESS }));
}
revertingBridgeCall = await createBridgeCallAsync({ revertError: BRIDGE_REVERT_ERROR });
failingBridgeCall = await createBridgeCallAsync({ returnCode: BRIDGE_FAILURE });
allBridgeCalls = _.shuffle([failingBridgeCall, revertingBridgeCall, ...goodBridgeCalls]);
totalFillableInputAmount = BigNumber.sum(...goodBridgeCalls.map(c => c.inputTokenAmount));
totalFillableOutputAmount = BigNumber.sum(...goodBridgeCalls.map(c => c.outputTokenAmount));
// Grant the taker some output tokens.
await testContract.setTokenBalance(
outputToken,
DEFAULTS.toAddress,
(recipientOutputBalance = getRandomInteger(1, '100e18')),
);
});
async function setForwarderInputBalanceAsync(amount: BigNumber): Promise<void> {
await testContract
.setTokenBalance(inputToken, testContract.address, amount)
.awaitTransactionSuccessAsync({}, { shouldValidate: false });
}
async function createBridgeCallAsync(
opts: Partial<{
returnCode: string;
revertError: string;
callFields: Partial<DexForwarderBridgeCall>;
outputFillAmount: BigNumber;
}>,
): Promise<DexForwarderBridgeCall> {
const { returnCode, revertError, callFields, outputFillAmount } = {
returnCode: BRIDGE_SUCCESS,
revertError: '',
...opts,
};
const bridge = await callAndTransactAsync(testContract.createBridge(returnCode, revertError));
const call = getRandomBridgeCall(bridge, callFields);
await testContract
.setBridgeTransferAmount(call.target, outputFillAmount || call.outputTokenAmount)
.awaitTransactionSuccessAsync({}, { shouldValidate: false });
return call;
}
async function callBridgeTransferFromAsync(opts: {
bridgeData: string;
sellAmount?: BigNumber;
buyAmount?: BigNumber;
}): Promise<DecodedLogs> {
// Fund the forwarder with input tokens to sell.
await setForwarderInputBalanceAsync(opts.sellAmount || totalFillableInputAmount);
const call = testContract.bridgeTransferFrom(
outputToken,
testContract.address,
DEFAULTS.toAddress,
opts.buyAmount || totalFillableOutputAmount,
opts.bridgeData,
);
const returnCode = await call.callAsync();
if (returnCode !== BRIDGE_SUCCESS) {
throw new Error('Expected BRIDGE_SUCCESS');
}
const receipt = await call.awaitTransactionSuccessAsync({}, { shouldValidate: false });
// tslint:disable-next-line: no-unnecessary-type-assertion
return receipt.logs as DecodedLogs;
}
it('succeeds with no bridge calls and no input balance', async () => {
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls: [],
});
await callBridgeTransferFromAsync({ bridgeData, sellAmount: ZERO_AMOUNT });
});
it('succeeds with bridge calls and no input balance', async () => {
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls: allBridgeCalls,
});
await callBridgeTransferFromAsync({ bridgeData, sellAmount: ZERO_AMOUNT });
});
it('succeeds with no bridge calls and an input balance', async () => {
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls: [],
});
await callBridgeTransferFromAsync({
bridgeData,
sellAmount: new BigNumber(1),
});
});
it('succeeds if entire input token balance is not consumed', async () => {
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls: allBridgeCalls,
});
await callBridgeTransferFromAsync({
bridgeData,
sellAmount: totalFillableInputAmount.plus(1),
});
});
it('fails if not authorized', async () => {
const calls = goodBridgeCalls.slice(0, 1);
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
await callAndTransactAsync(testContract.setAuthorized(NULL_ADDRESS));
return expect(callBridgeTransferFromAsync({ bridgeData, sellAmount: new BigNumber(1) })).to.revertWith(
NOT_AUTHORIZED_REVERT,
);
});
it('succeeds with one bridge call', async () => {
const calls = goodBridgeCalls.slice(0, 1);
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
await callBridgeTransferFromAsync({ bridgeData, sellAmount: calls[0].inputTokenAmount });
});
it('succeeds with many bridge calls', async () => {
const calls = goodBridgeCalls;
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
await callBridgeTransferFromAsync({ bridgeData });
});
it('swallows a failing bridge call', async () => {
const calls = _.shuffle([...goodBridgeCalls, failingBridgeCall]);
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
await callBridgeTransferFromAsync({ bridgeData });
});
it('consumes input tokens for output tokens', async () => {
const calls = allBridgeCalls;
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
await callBridgeTransferFromAsync({ bridgeData });
const currentBridgeInputBalance = await testContract
.balanceOf(inputToken, testContract.address)
.callAsync();
expect(currentBridgeInputBalance).to.bignumber.eq(0);
const currentRecipientOutputBalance = await testContract
.balanceOf(outputToken, DEFAULTS.toAddress)
.callAsync();
expect(currentRecipientOutputBalance).to.bignumber.eq(totalFillableOutputAmount);
});
it("transfers only up to each call's input amount to each bridge", async () => {
const calls = goodBridgeCalls;
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
const logs = await callBridgeTransferFromAsync({ bridgeData });
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
for (const [call, btf] of shortZip(goodBridgeCalls, btfs)) {
expect(btf.inputTokenBalance).to.bignumber.eq(call.inputTokenAmount);
}
});
it('transfers only up to outstanding sell amount to each bridge', async () => {
// Prepend an extra bridge call.
const calls = [
await createBridgeCallAsync({
callFields: {
inputTokenAmount: new BigNumber(1),
outputTokenAmount: new BigNumber(1),
},
}),
...goodBridgeCalls,
];
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
const logs = await callBridgeTransferFromAsync({ bridgeData });
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
expect(btfs).to.be.length(goodBridgeCalls.length + 1);
// The last call will receive 1 less token.
const lastCall = calls.slice(-1)[0];
const lastBtf = btfs.slice(-1)[0];
expect(lastBtf.inputTokenBalance).to.bignumber.eq(lastCall.inputTokenAmount.minus(1));
});
it('recoups funds from a bridge that fails', async () => {
// Prepend a call that will take the whole input amount but will
// fail.
const badCall = await createBridgeCallAsync({
callFields: { inputTokenAmount: totalFillableInputAmount },
returnCode: BRIDGE_FAILURE,
});
const calls = [badCall, ...goodBridgeCalls];
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
const logs = await callBridgeTransferFromAsync({ bridgeData });
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
expect(btfs).to.be.length(goodBridgeCalls.length);
});
it('recoups funds from a bridge that reverts', async () => {
// Prepend a call that will take the whole input amount but will
// revert.
const badCall = await createBridgeCallAsync({
callFields: { inputTokenAmount: totalFillableInputAmount },
revertError: BRIDGE_REVERT_ERROR,
});
const calls = [badCall, ...goodBridgeCalls];
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
const logs = await callBridgeTransferFromAsync({ bridgeData });
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
expect(btfs).to.be.length(goodBridgeCalls.length);
});
it('recoups funds from a bridge that under-pays', async () => {
// Prepend a call that will take the whole input amount but will
// underpay the output amount..
const badCall = await createBridgeCallAsync({
callFields: {
inputTokenAmount: totalFillableInputAmount,
outputTokenAmount: new BigNumber(2),
},
outputFillAmount: new BigNumber(1),
});
const calls = [badCall, ...goodBridgeCalls];
const bridgeData = dexForwarderBridgeDataEncoder.encode({
inputToken,
calls,
});
const logs = await callBridgeTransferFromAsync({ bridgeData });
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
expect(btfs).to.be.length(goodBridgeCalls.length);
});
});
describe('executeBridgeCall()', () => {
it('cannot be called externally', async () => {
return expect(
testContract
.executeBridgeCall(
randomAddress(),
randomAddress(),
randomAddress(),
randomAddress(),
new BigNumber(1),
new BigNumber(1),
constants.NULL_BYTES,
)
.callAsync(),
).to.revertWith('DexForwarderBridge/ONLY_SELF');
});
});
});

View File

@@ -168,7 +168,7 @@ describe('StaticCallProxy', () => {
it('should revert if the hash of the output is different than expected expected', async () => {
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(0)).getABIEncodedTransactionData();
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
const expectedResultHash = ethUtil.bufferToHex(ethUtil.sha3(trueAsBuffer));
const expectedResultHash = ethUtil.bufferToHex(ethUtil.keccak256(trueAsBuffer));
const assetData = assetDataInterface
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
.getABIEncodedTransactionData();
@@ -199,7 +199,7 @@ describe('StaticCallProxy', () => {
it('should be successful if a function call with one static input returns the correct value', async () => {
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(1)).getABIEncodedTransactionData();
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
const expectedResultHash = ethUtil.bufferToHex(ethUtil.sha3(trueAsBuffer));
const expectedResultHash = ethUtil.bufferToHex(ethUtil.keccak256(trueAsBuffer));
const assetData = assetDataInterface
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
.getABIEncodedTransactionData();
@@ -232,7 +232,7 @@ describe('StaticCallProxy', () => {
const offset = '0000000000000000000000000000000000000000000000000000000000000020';
const encodedExpectedResultWithOffset = `0x${offset}${abiEncoder.encode(expectedResults).slice(2)}`;
const expectedResultHash = ethUtil.bufferToHex(
ethUtil.sha3(ethUtil.toBuffer(encodedExpectedResultWithOffset)),
ethUtil.keccak256(ethUtil.toBuffer(encodedExpectedResultWithOffset)),
);
const assetData = assetDataInterface
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)

View File

@@ -7,6 +7,7 @@ export * from '../test/generated-wrappers/balancer_bridge';
export * from '../test/generated-wrappers/bancor_bridge';
export * from '../test/generated-wrappers/chai_bridge';
export * from '../test/generated-wrappers/cream_bridge';
export * from '../test/generated-wrappers/crypto_com_bridge';
export * from '../test/generated-wrappers/curve_bridge';
export * from '../test/generated-wrappers/d_o_d_o_bridge';
export * from '../test/generated-wrappers/dex_forwarder_bridge';

View File

@@ -7,6 +7,7 @@
"generated-artifacts/BancorBridge.json",
"generated-artifacts/ChaiBridge.json",
"generated-artifacts/CreamBridge.json",
"generated-artifacts/CryptoComBridge.json",
"generated-artifacts/CurveBridge.json",
"generated-artifacts/DODOBridge.json",
"generated-artifacts/DexForwarderBridge.json",
@@ -65,6 +66,7 @@
"test/generated-artifacts/BancorBridge.json",
"test/generated-artifacts/ChaiBridge.json",
"test/generated-artifacts/CreamBridge.json",
"test/generated-artifacts/CryptoComBridge.json",
"test/generated-artifacts/CurveBridge.json",
"test/generated-artifacts/DODOBridge.json",
"test/generated-artifacts/DexForwarderBridge.json",

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "1.1.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "1.1.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "1.1.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "1.1.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "1.1.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "1.1.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "1.1.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "1.1.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "1.1.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "1.1.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "1.1.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "1.1.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "1.1.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "1.1.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "1.1.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "1.1.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "1.1.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "1.1.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "1.1.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "1.1.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "1.1.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "1.1.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "1.1.13",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v1.1.35 - _August 6, 2021_
* Dependencies updated
## v1.1.34 - _June 22, 2021_
* Dependencies updated
## v1.1.33 - _June 11, 2021_
* Dependencies updated
## v1.1.32 - _June 2, 2021_
* Dependencies updated
## v1.1.31 - _May 25, 2021_
* Dependencies updated
## v1.1.30 - _May 21, 2021_
* Dependencies updated
## v1.1.29 - _May 5, 2021_
* Dependencies updated
## v1.1.28 - _April 28, 2021_
* Dependencies updated
## v1.1.27 - _April 1, 2021_
* Dependencies updated
## v1.1.26 - _March 17, 2021_
* Dependencies updated
## v1.1.25 - _February 24, 2021_
* Dependencies updated
## v1.1.24 - _February 10, 2021_
* Dependencies updated
## v1.1.23 - _January 26, 2021_
* Dependencies updated
## v1.1.22 - _January 13, 2021_
* Dependencies updated
## v1.1.21 - _January 4, 2021_
* Dependencies updated
## v1.1.20 - _December 23, 2020_
* Dependencies updated
## v1.1.19 - _December 17, 2020_
* Dependencies updated
## v1.1.18 - _December 16, 2020_
* Dependencies updated
## v1.1.17 - _December 9, 2020_
* Dependencies updated
## v1.1.16 - _December 7, 2020_
* Dependencies updated
## v1.1.15 - _December 3, 2020_
* Dependencies updated
## v1.1.14 - _November 19, 2020_
* Dependencies updated
## v1.1.13 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-broker",
"version": "1.1.13",
"version": "1.1.35",
"engines": {
"node": ">=6.12"
},
@@ -51,20 +51,20 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-erc721": "^3.1.14",
"@0x/contracts-exchange": "^3.2.14",
"@0x/contracts-exchange-libs": "^4.3.14",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-erc721": "^3.1.35",
"@0x/contracts-exchange": "^3.2.36",
"@0x/contracts-exchange-libs": "^4.3.35",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -81,14 +81,14 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/order-utils": "^10.4.6",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"ethereum-types": "^3.3.3"
"@0x/base-contract": "^6.4.0",
"@0x/order-utils": "^10.4.27",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0"
},
"publishConfig": {
"access": "public"

View File

@@ -7,7 +7,10 @@ export interface GodsUnchainedProperties {
quality: BigNumber | number;
}
const propertyDataEncoder = AbiEncoder.create([{ name: 'proto', type: 'uint16' }, { name: 'quality', type: 'uint8' }]);
const propertyDataEncoder = AbiEncoder.create([
{ name: 'proto', type: 'uint16' },
{ name: 'quality', type: 'uint8' },
]);
const brokerDataEncoder = AbiEncoder.create([
{ name: 'godsUnchainedAddress', type: 'address' },
{ name: 'validatorAddress', type: 'address' },

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "3.1.36",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "3.1.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "3.1.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "3.1.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "3.1.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "3.1.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "3.1.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "3.1.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "3.1.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "3.1.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "3.1.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "3.1.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "3.1.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "3.1.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "3.1.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "3.1.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "3.1.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "3.1.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "3.1.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "3.1.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "3.1.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "3.1.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "3.1.14",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v3.1.36 - _August 6, 2021_
* Dependencies updated
## v3.1.35 - _June 22, 2021_
* Dependencies updated
## v3.1.34 - _June 11, 2021_
* Dependencies updated
## v3.1.33 - _June 2, 2021_
* Dependencies updated
## v3.1.32 - _May 25, 2021_
* Dependencies updated
## v3.1.31 - _May 21, 2021_
* Dependencies updated
## v3.1.30 - _May 5, 2021_
* Dependencies updated
## v3.1.29 - _April 28, 2021_
* Dependencies updated
## v3.1.28 - _April 1, 2021_
* Dependencies updated
## v3.1.27 - _March 17, 2021_
* Dependencies updated
## v3.1.26 - _February 24, 2021_
* Dependencies updated
## v3.1.25 - _February 10, 2021_
* Dependencies updated
## v3.1.24 - _January 26, 2021_
* Dependencies updated
## v3.1.23 - _January 13, 2021_
* Dependencies updated
## v3.1.22 - _January 4, 2021_
* Dependencies updated
## v3.1.21 - _December 23, 2020_
* Dependencies updated
## v3.1.20 - _December 17, 2020_
* Dependencies updated
## v3.1.19 - _December 16, 2020_
* Dependencies updated
## v3.1.18 - _December 9, 2020_
* Dependencies updated
## v3.1.17 - _December 7, 2020_
* Dependencies updated
## v3.1.16 - _December 3, 2020_
* Dependencies updated
## v3.1.15 - _November 19, 2020_
* Dependencies updated
## v3.1.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-coordinator",
"version": "3.1.14",
"version": "3.1.36",
"engines": {
"node": ">=6.12"
},
@@ -52,17 +52,17 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-dev-utils": "^1.3.12",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-gen": "2.0.18",
"@0x/dev-utils": "^4.0.1",
"@0x/order-utils": "^10.4.6",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-dev-utils": "^1.3.34",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-gen": "^2.0.38",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.27",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -79,20 +79,20 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/assert": "^3.0.17",
"@0x/base-contract": "^6.2.11",
"@0x/contract-addresses": "^5.3.0",
"@0x/contracts-exchange": "^3.2.14",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/json-schemas": "^5.3.3",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"ethereum-types": "^3.3.3",
"@0x/assert": "^3.0.27",
"@0x/base-contract": "^6.4.0",
"@0x/contract-addresses": "^6.5.0",
"@0x/contracts-exchange": "^3.2.36",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/json-schemas": "^6.1.3",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"http-status-codes": "^1.3.2"
},
"publishConfig": {

View File

@@ -1,8 +1,4 @@
import { assert as sharedAssert } from '@0x/assert';
// HACK: We need those two unused imports because they're actually used by sharedAssert which gets injected here
import { Schema } from '@0x/json-schemas'; // tslint:disable-line:no-unused-variable
import { Order } from '@0x/types'; // tslint:disable-line:no-unused-variable
import { BigNumber } from '@0x/utils'; // tslint:disable-line:no-unused-variable
import { Web3Wrapper } from '@0x/web3-wrapper';
export const assert = {

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "1.3.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "1.3.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "1.3.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "1.3.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "1.3.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "1.3.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "1.3.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "1.3.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "1.3.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "1.3.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "1.3.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "1.3.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "1.3.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "1.3.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "1.3.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "1.3.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "1.3.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "1.3.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "1.3.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "1.3.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "1.3.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "1.3.13",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "1.3.12",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v1.3.34 - _August 6, 2021_
* Dependencies updated
## v1.3.33 - _June 22, 2021_
* Dependencies updated
## v1.3.32 - _June 11, 2021_
* Dependencies updated
## v1.3.31 - _June 2, 2021_
* Dependencies updated
## v1.3.30 - _May 25, 2021_
* Dependencies updated
## v1.3.29 - _May 21, 2021_
* Dependencies updated
## v1.3.28 - _May 5, 2021_
* Dependencies updated
## v1.3.27 - _April 28, 2021_
* Dependencies updated
## v1.3.26 - _April 1, 2021_
* Dependencies updated
## v1.3.25 - _March 17, 2021_
* Dependencies updated
## v1.3.24 - _February 24, 2021_
* Dependencies updated
## v1.3.23 - _February 10, 2021_
* Dependencies updated
## v1.3.22 - _January 26, 2021_
* Dependencies updated
## v1.3.21 - _January 13, 2021_
* Dependencies updated
## v1.3.20 - _January 4, 2021_
* Dependencies updated
## v1.3.19 - _December 23, 2020_
* Dependencies updated
## v1.3.18 - _December 17, 2020_
* Dependencies updated
## v1.3.17 - _December 16, 2020_
* Dependencies updated
## v1.3.16 - _December 9, 2020_
* Dependencies updated
## v1.3.15 - _December 7, 2020_
* Dependencies updated
## v1.3.14 - _December 3, 2020_
* Dependencies updated
## v1.3.13 - _November 19, 2020_
* Dependencies updated
## v1.3.12 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-dev-utils",
"version": "1.3.12",
"version": "1.3.34",
"engines": {
"node": ">=6.12"
},
@@ -41,18 +41,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/dev-utils",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/assert": "^3.0.17",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/assert": "^3.0.27",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/utils": "^6.1.0",
"ethereum-types": "^3.3.3",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"ethers": "~4.0.4",
"npm-run-all": "^4.1.2",
"shx": "^0.2.2",
@@ -60,10 +60,10 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/base-contract": "^6.4.0",
"@types/node": "12.12.54"
},
"publishConfig": {

View File

@@ -1,4 +1,193 @@
[
{
"timestamp": 1628225642,
"version": "2.1.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "2.1.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "2.1.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "2.1.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "2.1.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "2.1.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "2.1.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "2.1.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "2.1.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "2.1.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "2.1.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "2.1.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "2.1.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "2.1.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "2.1.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "2.1.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "2.1.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "2.1.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "2.1.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "2.1.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "2.1.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "2.1.14",

View File

@@ -5,6 +5,90 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v2.1.35 - _August 6, 2021_
* Dependencies updated
## v2.1.34 - _June 22, 2021_
* Dependencies updated
## v2.1.33 - _June 11, 2021_
* Dependencies updated
## v2.1.32 - _June 2, 2021_
* Dependencies updated
## v2.1.31 - _May 25, 2021_
* Dependencies updated
## v2.1.30 - _May 21, 2021_
* Dependencies updated
## v2.1.29 - _May 5, 2021_
* Dependencies updated
## v2.1.28 - _April 28, 2021_
* Dependencies updated
## v2.1.27 - _April 1, 2021_
* Dependencies updated
## v2.1.26 - _March 17, 2021_
* Dependencies updated
## v2.1.25 - _February 24, 2021_
* Dependencies updated
## v2.1.24 - _February 10, 2021_
* Dependencies updated
## v2.1.23 - _January 26, 2021_
* Dependencies updated
## v2.1.22 - _January 13, 2021_
* Dependencies updated
## v2.1.21 - _January 4, 2021_
* Dependencies updated
## v2.1.20 - _December 23, 2020_
* Dependencies updated
## v2.1.19 - _December 17, 2020_
* Dependencies updated
## v2.1.18 - _December 9, 2020_
* Dependencies updated
## v2.1.17 - _December 7, 2020_
* Dependencies updated
## v2.1.16 - _December 3, 2020_
* Dependencies updated
## v2.1.15 - _November 19, 2020_
* Dependencies updated
## v2.1.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-erc1155",
"version": "2.1.14",
"version": "2.1.35",
"engines": {
"node": ">=6.12"
},
@@ -52,15 +52,15 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -68,7 +68,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.3.3",
"ethereum-types": "^3.5.0",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
"npm-run-all": "^4.1.2",
@@ -77,13 +77,13 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -1,4 +1,198 @@
[
{
"timestamp": 1628225642,
"version": "3.3.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "3.3.13",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "3.3.12",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "3.3.11",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "3.3.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "3.3.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "3.3.8",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "3.3.7",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "3.3.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "3.3.5",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "3.3.4",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "3.3.3",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "3.3.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "3.3.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "3.3.0",
"changes": [
{
"note": "Add SPDX license identifiers to solidity files",
"pr": 105
},
{
"note": "Allow for excess return data in `LibERC20TokenV06` compat* functions",
"pr": 97
}
],
"timestamp": 1609802516
},
{
"timestamp": 1608692071,
"version": "3.2.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "3.2.13",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "3.2.12",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "3.2.11",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "3.2.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "3.2.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "3.2.8",

View File

@@ -5,6 +5,91 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v3.3.14 - _August 6, 2021_
* Dependencies updated
## v3.3.13 - _June 22, 2021_
* Dependencies updated
## v3.3.12 - _June 11, 2021_
* Dependencies updated
## v3.3.11 - _June 2, 2021_
* Dependencies updated
## v3.3.10 - _May 25, 2021_
* Dependencies updated
## v3.3.9 - _May 21, 2021_
* Dependencies updated
## v3.3.8 - _May 5, 2021_
* Dependencies updated
## v3.3.7 - _April 28, 2021_
* Dependencies updated
## v3.3.6 - _April 1, 2021_
* Dependencies updated
## v3.3.5 - _March 17, 2021_
* Dependencies updated
## v3.3.4 - _February 24, 2021_
* Dependencies updated
## v3.3.3 - _February 10, 2021_
* Dependencies updated
## v3.3.2 - _January 26, 2021_
* Dependencies updated
## v3.3.1 - _January 13, 2021_
* Dependencies updated
## v3.3.0 - _January 4, 2021_
* Add SPDX license identifiers to solidity files (#105)
* Allow for excess return data in `LibERC20TokenV06` compat* functions (#97)
## v3.2.14 - _December 23, 2020_
* Dependencies updated
## v3.2.13 - _December 17, 2020_
* Dependencies updated
## v3.2.12 - _December 9, 2020_
* Dependencies updated
## v3.2.11 - _December 7, 2020_
* Dependencies updated
## v3.2.10 - _December 3, 2020_
* Dependencies updated
## v3.2.9 - _November 19, 2020_
* Dependencies updated
## v3.2.8 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,3 +1,4 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright 2020 ZeroEx Intl.

View File

@@ -1,3 +1,4 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright 2020 ZeroEx Intl.

View File

@@ -1,3 +1,4 @@
// SPDX-License-Identifier: Apache-2.0
/*
Copyright 2020 ZeroEx Intl.
@@ -118,7 +119,7 @@ library LibERC20TokenV06 {
{
tokenDecimals = 18;
(bool didSucceed, bytes memory resultData) = address(token).staticcall(DECIMALS_CALL_DATA);
if (didSucceed && resultData.length == 32) {
if (didSucceed && resultData.length >= 32) {
tokenDecimals = uint8(LibBytesV06.readUint256(resultData, 0));
}
}
@@ -141,7 +142,7 @@ library LibERC20TokenV06 {
spender
)
);
if (didSucceed && resultData.length == 32) {
if (didSucceed && resultData.length >= 32) {
allowance_ = LibBytesV06.readUint256(resultData, 0);
}
}
@@ -162,7 +163,7 @@ library LibERC20TokenV06 {
owner
)
);
if (didSucceed && resultData.length == 32) {
if (didSucceed && resultData.length >= 32) {
balance = LibBytesV06.readUint256(resultData, 0);
}
}
@@ -180,7 +181,7 @@ library LibERC20TokenV06 {
if (resultData.length == 0) {
return true;
}
if (resultData.length == 32) {
if (resultData.length >= 32) {
uint256 result = LibBytesV06.readUint256(resultData, 0);
if (result == 1) {
return true;

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-erc20",
"version": "3.2.8",
"version": "3.3.14",
"engines": {
"node": ">=6.12"
},
@@ -51,18 +51,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -70,7 +70,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.3.3",
"ethereum-types": "^3.5.0",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -79,10 +79,10 @@
"solhint": "^1.4.1",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11"
"@0x/base-contract": "^6.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -6,6 +6,7 @@ export {
WETH9Events,
WETH9DepositEventArgs,
WETH9TransferEventArgs,
WETH9WithdrawalEventArgs,
ZRXTokenContract,
DummyERC20TokenTransferEventArgs,
ERC20TokenEventArgs,

View File

@@ -39,8 +39,8 @@ describe('EtherToken', () => {
artifacts.WETH9,
provider,
{
gasPrice,
...txDefaults,
gasPrice,
},
artifacts,
);

View File

@@ -1,4 +1,193 @@
[
{
"timestamp": 1628225642,
"version": "3.1.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "3.1.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "3.1.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "3.1.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "3.1.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "3.1.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "3.1.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "3.1.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "3.1.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "3.1.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "3.1.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "3.1.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "3.1.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "3.1.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "3.1.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "3.1.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "3.1.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "3.1.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "3.1.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "3.1.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "3.1.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "3.1.14",

View File

@@ -5,6 +5,90 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v3.1.35 - _August 6, 2021_
* Dependencies updated
## v3.1.34 - _June 22, 2021_
* Dependencies updated
## v3.1.33 - _June 11, 2021_
* Dependencies updated
## v3.1.32 - _June 2, 2021_
* Dependencies updated
## v3.1.31 - _May 25, 2021_
* Dependencies updated
## v3.1.30 - _May 21, 2021_
* Dependencies updated
## v3.1.29 - _May 5, 2021_
* Dependencies updated
## v3.1.28 - _April 28, 2021_
* Dependencies updated
## v3.1.27 - _April 1, 2021_
* Dependencies updated
## v3.1.26 - _March 17, 2021_
* Dependencies updated
## v3.1.25 - _February 24, 2021_
* Dependencies updated
## v3.1.24 - _February 10, 2021_
* Dependencies updated
## v3.1.23 - _January 26, 2021_
* Dependencies updated
## v3.1.22 - _January 13, 2021_
* Dependencies updated
## v3.1.21 - _January 4, 2021_
* Dependencies updated
## v3.1.20 - _December 23, 2020_
* Dependencies updated
## v3.1.19 - _December 17, 2020_
* Dependencies updated
## v3.1.18 - _December 9, 2020_
* Dependencies updated
## v3.1.17 - _December 7, 2020_
* Dependencies updated
## v3.1.16 - _December 3, 2020_
* Dependencies updated
## v3.1.15 - _November 19, 2020_
* Dependencies updated
## v3.1.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-erc721",
"version": "3.1.14",
"version": "3.1.35",
"engines": {
"node": ">=6.12"
},
@@ -52,18 +52,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -71,7 +71,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.3.3",
"ethereum-types": "^3.5.0",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -81,10 +81,10 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11"
"@0x/base-contract": "^6.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "4.2.36",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "4.2.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "4.2.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "4.2.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "4.2.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "4.2.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "4.2.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "4.2.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "4.2.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "4.2.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "4.2.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "4.2.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "4.2.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "4.2.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "4.2.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "4.2.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "4.2.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "4.2.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "4.2.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "4.2.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "4.2.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "4.2.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "4.2.14",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v4.2.36 - _August 6, 2021_
* Dependencies updated
## v4.2.35 - _June 22, 2021_
* Dependencies updated
## v4.2.34 - _June 11, 2021_
* Dependencies updated
## v4.2.33 - _June 2, 2021_
* Dependencies updated
## v4.2.32 - _May 25, 2021_
* Dependencies updated
## v4.2.31 - _May 21, 2021_
* Dependencies updated
## v4.2.30 - _May 5, 2021_
* Dependencies updated
## v4.2.29 - _April 28, 2021_
* Dependencies updated
## v4.2.28 - _April 1, 2021_
* Dependencies updated
## v4.2.27 - _March 17, 2021_
* Dependencies updated
## v4.2.26 - _February 24, 2021_
* Dependencies updated
## v4.2.25 - _February 10, 2021_
* Dependencies updated
## v4.2.24 - _January 26, 2021_
* Dependencies updated
## v4.2.23 - _January 13, 2021_
* Dependencies updated
## v4.2.22 - _January 4, 2021_
* Dependencies updated
## v4.2.21 - _December 23, 2020_
* Dependencies updated
## v4.2.20 - _December 17, 2020_
* Dependencies updated
## v4.2.19 - _December 16, 2020_
* Dependencies updated
## v4.2.18 - _December 9, 2020_
* Dependencies updated
## v4.2.17 - _December 7, 2020_
* Dependencies updated
## v4.2.16 - _December 3, 2020_
* Dependencies updated
## v4.2.15 - _November 19, 2020_
* Dependencies updated
## v4.2.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-exchange-forwarder",
"version": "4.2.14",
"version": "4.2.36",
"engines": {
"node": ">=6.12"
},
@@ -52,25 +52,25 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-dev-utils": "^1.3.12",
"@0x/contracts-erc1155": "^2.1.14",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-erc721": "^3.1.14",
"@0x/contracts-exchange": "^3.2.14",
"@0x/contracts-exchange-libs": "^4.3.14",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/order-utils": "^10.4.6",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-dev-utils": "^1.3.34",
"@0x/contracts-erc1155": "^2.1.35",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-erc721": "^3.1.35",
"@0x/contracts-exchange": "^3.2.36",
"@0x/contracts-exchange-libs": "^4.3.35",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.27",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -87,12 +87,12 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/typescript-typings": "^5.1.5",
"ethereum-types": "^3.3.3"
"@0x/base-contract": "^6.4.0",
"@0x/typescript-typings": "^5.2.0",
"ethereum-types": "^3.5.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,4 +1,193 @@
[
{
"timestamp": 1628225642,
"version": "4.3.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "4.3.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "4.3.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "4.3.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "4.3.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "4.3.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "4.3.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "4.3.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "4.3.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "4.3.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "4.3.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "4.3.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "4.3.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "4.3.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "4.3.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "4.3.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "4.3.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "4.3.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "4.3.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "4.3.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "4.3.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "4.3.14",

View File

@@ -5,6 +5,90 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v4.3.35 - _August 6, 2021_
* Dependencies updated
## v4.3.34 - _June 22, 2021_
* Dependencies updated
## v4.3.33 - _June 11, 2021_
* Dependencies updated
## v4.3.32 - _June 2, 2021_
* Dependencies updated
## v4.3.31 - _May 25, 2021_
* Dependencies updated
## v4.3.30 - _May 21, 2021_
* Dependencies updated
## v4.3.29 - _May 5, 2021_
* Dependencies updated
## v4.3.28 - _April 28, 2021_
* Dependencies updated
## v4.3.27 - _April 1, 2021_
* Dependencies updated
## v4.3.26 - _March 17, 2021_
* Dependencies updated
## v4.3.25 - _February 24, 2021_
* Dependencies updated
## v4.3.24 - _February 10, 2021_
* Dependencies updated
## v4.3.23 - _January 26, 2021_
* Dependencies updated
## v4.3.22 - _January 13, 2021_
* Dependencies updated
## v4.3.21 - _January 4, 2021_
* Dependencies updated
## v4.3.20 - _December 23, 2020_
* Dependencies updated
## v4.3.19 - _December 17, 2020_
* Dependencies updated
## v4.3.18 - _December 9, 2020_
* Dependencies updated
## v4.3.17 - _December 7, 2020_
* Dependencies updated
## v4.3.16 - _December 3, 2020_
* Dependencies updated
## v4.3.15 - _November 19, 2020_
* Dependencies updated
## v4.3.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-exchange-libs",
"version": "4.3.14",
"version": "4.3.35",
"engines": {
"node": ">=6.12"
},
@@ -52,14 +52,14 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/libs",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-gen": "2.0.18",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/subproviders": "^6.1.9",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/subproviders": "^6.5.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -67,7 +67,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-util": "^5.1.1",
"ethereumjs-util": "^7.0.10",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -77,17 +77,17 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/order-utils": "^10.4.6",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"ethereum-types": "^3.3.3"
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/order-utils": "^10.4.27",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "3.2.36",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "3.2.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "3.2.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "3.2.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "3.2.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "3.2.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "3.2.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "3.2.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "3.2.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "3.2.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "3.2.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "3.2.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "3.2.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "3.2.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "3.2.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "3.2.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "3.2.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "3.2.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "3.2.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "3.2.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "3.2.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "3.2.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "3.2.14",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v3.2.36 - _August 6, 2021_
* Dependencies updated
## v3.2.35 - _June 22, 2021_
* Dependencies updated
## v3.2.34 - _June 11, 2021_
* Dependencies updated
## v3.2.33 - _June 2, 2021_
* Dependencies updated
## v3.2.32 - _May 25, 2021_
* Dependencies updated
## v3.2.31 - _May 21, 2021_
* Dependencies updated
## v3.2.30 - _May 5, 2021_
* Dependencies updated
## v3.2.29 - _April 28, 2021_
* Dependencies updated
## v3.2.28 - _April 1, 2021_
* Dependencies updated
## v3.2.27 - _March 17, 2021_
* Dependencies updated
## v3.2.26 - _February 24, 2021_
* Dependencies updated
## v3.2.25 - _February 10, 2021_
* Dependencies updated
## v3.2.24 - _January 26, 2021_
* Dependencies updated
## v3.2.23 - _January 13, 2021_
* Dependencies updated
## v3.2.22 - _January 4, 2021_
* Dependencies updated
## v3.2.21 - _December 23, 2020_
* Dependencies updated
## v3.2.20 - _December 17, 2020_
* Dependencies updated
## v3.2.19 - _December 16, 2020_
* Dependencies updated
## v3.2.18 - _December 9, 2020_
* Dependencies updated
## v3.2.17 - _December 7, 2020_
* Dependencies updated
## v3.2.16 - _December 3, 2020_
* Dependencies updated
## v3.2.15 - _November 19, 2020_
* Dependencies updated
## v3.2.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-exchange",
"version": "3.2.14",
"version": "3.2.36",
"engines": {
"node": ">=6.12"
},
@@ -52,21 +52,21 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-exchange-libs": "^4.3.14",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-multisig": "^4.1.14",
"@0x/contracts-staking": "^2.0.21",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-exchange-libs": "^4.3.35",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-multisig": "^4.1.36",
"@0x/contracts-staking": "^2.0.43",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -74,8 +74,8 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.3.3",
"ethereumjs-util": "^5.1.1",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10",
"js-combinatorics": "^0.5.3",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -85,16 +85,16 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/contracts-dev-utils": "^1.3.12",
"@0x/contracts-erc1155": "^2.1.14",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-erc721": "^3.1.14",
"@0x/order-utils": "^10.4.6",
"@0x/utils": "^6.1.0",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-dev-utils": "^1.3.34",
"@0x/contracts-erc1155": "^2.1.35",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-erc721": "^3.1.35",
"@0x/order-utils": "^10.4.27",
"@0x/utils": "^6.4.3",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -13,7 +13,11 @@ export const exchangeDataEncoder = {
.getABIEncodedTransactionData();
} else if (constants.BATCH_FILL_FN_NAMES.indexOf(fnName) !== -1) {
data = (exchangeInstance as any)
[fnName](orders, orders.map(order => order.takerAssetAmount), orders.map(order => order.signature))
[fnName](
orders,
orders.map(order => order.takerAssetAmount),
orders.map(order => order.signature),
)
.getABIEncodedTransactionData();
} else if (constants.MARKET_FILL_FN_NAMES.indexOf(fnName) !== -1) {
const fillAsset = /Buy/.test(fnName) ? 'makerAssetAmount' : 'takerAssetAmount';

View File

@@ -39,7 +39,10 @@ blockchainTests.resets('Reentrancy Tests', env => {
// Handle tuples.
if (item.type === 'tuple') {
const tuple = item as TupleDataItem;
return _.zipObject(tuple.components.map(c => c.name), tuple.components.map(createFunctionInputs));
return _.zipObject(
tuple.components.map(c => c.name),
tuple.components.map(createFunctionInputs),
);
}
// Handle strings.
if (item.type === 'string') {

View File

@@ -86,7 +86,7 @@ blockchainTests.resets('MixinSignatureValidator', env => {
const SIGNATURE_LENGTH = 65;
const generateRandomSignature = (): string => hexUtils.random(SIGNATURE_LENGTH);
const hashBytes = (bytesHex: string): string => ethUtil.bufferToHex(ethUtil.sha3(ethUtil.toBuffer(bytesHex)));
const hashBytes = (bytesHex: string): string => hexUtils.hash(bytesHex);
const signDataHex = (dataHex: string, privateKey: Buffer): string => {
const ecSignature = ethUtil.ecsign(ethUtil.toBuffer(dataHex), privateKey);
return hexUtils.concat(ecSignature.v, ecSignature.r, ecSignature.s);

View File

@@ -12,12 +12,12 @@ export abstract class AbstractBalanceAndProxyAllowanceFetcher {
* @param userAddress Ethereum address for which to fetch the balance
* @return Balance amount in base units
*/
public abstract async getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
/**
* Get the 0x asset proxy allowance of assetData for userAddress
* @param assetData AssetData for which to fetch the allowance
* @param userAddress Ethereum address for which to fetch the allowance
* @return Allowance amount in base units
*/
public abstract async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
}

View File

@@ -1,8 +1,8 @@
import { BigNumber } from '@0x/utils';
export abstract class AbstractBalanceAndProxyAllowanceLazyStore {
public abstract async getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract setBalance(assetData: string, userAddress: string, balance: BigNumber): void;
public abstract deleteBalance(assetData: string, userAddress: string): void;
public abstract setProxyAllowance(assetData: string, userAddress: string, proxyAllowance: BigNumber): void;

View File

@@ -11,5 +11,5 @@ export abstract class AbstractOrderFilledCancelledFetcher {
* @param orderHash OrderHash of order we are interested in
* @return FilledTakerAmount
*/
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
}

View File

@@ -1,7 +1,7 @@
import { BigNumber } from '@0x/utils';
export abstract class AbstractOrderFilledCancelledLazyStore {
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract setFilledTakerAmount(orderHash: string, balance: BigNumber): void;
public abstract deleteFilledTakerAmount(orderHash: string): void;
public abstract setIsCancelled(orderHash: string, isCancelled: boolean): void;

View File

@@ -109,7 +109,11 @@ export class ExchangeWrapper {
opts: { makerAssetFillAmount: BigNumber; gas?: number; gasPrice?: BigNumber },
): Promise<TransactionReceiptWithDecodedLogs> {
return this.exchangeContract
.marketBuyOrdersNoThrow(orders, opts.makerAssetFillAmount, orders.map(signedOrder => signedOrder.signature))
.marketBuyOrdersNoThrow(
orders,
opts.makerAssetFillAmount,
orders.map(signedOrder => signedOrder.signature),
)
.awaitTransactionSuccessAsync({ from, gas: opts.gas });
}
public async marketSellOrdersFillOrKillAsync(

View File

@@ -18,6 +18,7 @@ import {
IsolatedExchangeFillEventArgs as FillEventArgs,
} from '../wrappers';
export { Order } from '@0x/types';
export interface AssetBalances {
[assetData: string]: { [address: string]: BigNumber };
}
@@ -27,7 +28,6 @@ export interface IsolatedExchangeEvents {
transferFromCalls: DispatchTransferFromCallArgs[];
}
export type Order = Order;
export type Numberish = string | number | BigNumber;
export const DEFAULT_GOOD_SIGNATURE = createGoodSignature();

View File

@@ -12,7 +12,6 @@ import { ReferenceFunctions as UtilReferenceFunctions, SafeMathRevertErrors } fr
import { FillResults, Order } from '@0x/types';
import { AnyRevertError, BigNumber, ExchangeRevertErrors, hexUtils, StringRevertError } from '@0x/utils';
import { LogEntry, LogWithDecodedArgs } from 'ethereum-types';
import * as ethjs from 'ethereumjs-util';
import * as _ from 'lodash';
import { artifacts } from './artifacts';
@@ -104,7 +103,7 @@ blockchainTests('Exchange wrapper functions unit tests.', env => {
// Creates a deterministic order signature, even though no signature validation
// actually occurs in the test contract.
function createOrderSignature(order: Order): string {
return ethjs.bufferToHex(ethjs.sha3(ethjs.toBuffer(orderHashUtils.getOrderHashHex(order))));
return hexUtils.hash(orderHashUtils.getOrderHashHex(order));
}
// Asserts that `_fillOrder()` was called in the same order and with the same

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "6.2.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "6.2.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "6.2.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "6.2.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "6.2.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "6.2.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "6.2.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "6.2.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "6.2.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "6.2.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "6.2.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "6.2.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "6.2.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "6.2.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "6.2.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "6.2.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "6.2.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "6.2.13",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "6.2.12",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "6.2.11",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "6.2.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "6.2.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "6.2.8",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v6.2.30 - _August 6, 2021_
* Dependencies updated
## v6.2.29 - _June 22, 2021_
* Dependencies updated
## v6.2.28 - _June 11, 2021_
* Dependencies updated
## v6.2.27 - _June 2, 2021_
* Dependencies updated
## v6.2.26 - _May 25, 2021_
* Dependencies updated
## v6.2.25 - _May 21, 2021_
* Dependencies updated
## v6.2.24 - _May 5, 2021_
* Dependencies updated
## v6.2.23 - _April 28, 2021_
* Dependencies updated
## v6.2.22 - _April 1, 2021_
* Dependencies updated
## v6.2.21 - _March 17, 2021_
* Dependencies updated
## v6.2.20 - _February 24, 2021_
* Dependencies updated
## v6.2.19 - _February 10, 2021_
* Dependencies updated
## v6.2.18 - _January 26, 2021_
* Dependencies updated
## v6.2.17 - _January 13, 2021_
* Dependencies updated
## v6.2.16 - _January 4, 2021_
* Dependencies updated
## v6.2.15 - _December 23, 2020_
* Dependencies updated
## v6.2.14 - _December 17, 2020_
* Dependencies updated
## v6.2.13 - _December 16, 2020_
* Dependencies updated
## v6.2.12 - _December 9, 2020_
* Dependencies updated
## v6.2.11 - _December 7, 2020_
* Dependencies updated
## v6.2.10 - _December 3, 2020_
* Dependencies updated
## v6.2.9 - _November 19, 2020_
* Dependencies updated
## v6.2.8 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-extensions",
"version": "6.2.8",
"version": "6.2.30",
"engines": {
"node": ">=6.12"
},
@@ -52,23 +52,23 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-dev-utils": "^1.3.12",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-erc721": "^3.1.14",
"@0x/contracts-exchange": "^3.2.14",
"@0x/contracts-exchange-libs": "^4.3.14",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/order-utils": "^10.4.6",
"@0x/sol-compiler": "^4.2.7",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-dev-utils": "^1.3.34",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-erc721": "^3.1.35",
"@0x/contracts-exchange": "^3.2.36",
"@0x/contracts-exchange-libs": "^4.3.35",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.27",
"@0x/sol-compiler": "^4.7.3",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -77,7 +77,7 @@
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-abi": "0.6.5",
"ethereumjs-util": "^5.1.1",
"ethereumjs-util": "^7.0.10",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -87,13 +87,13 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/typescript-typings": "^5.1.5",
"ethereum-types": "^3.3.3"
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/typescript-typings": "^5.2.0",
"ethereum-types": "^3.5.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,4 +1,22 @@
[
{
"timestamp": 1605763885,
"version": "2.7.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605320370,
"version": "2.7.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "2.7.8",

View File

@@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v2.7.10 - _November 19, 2020_
* Dependencies updated
## v2.7.9 - _November 14, 2020_
* Dependencies updated
## v2.7.8 - _November 13, 2020_
* Dependencies updated

View File

@@ -0,0 +1,39 @@
/*
Copyright 2020 ZeroEx Intl.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
pragma solidity ^0.6.5;
import "@0x/contracts-zero-ex/contracts/test/TestFixinProtocolFees.sol";
import "@0x/contracts-zero-ex/contracts/src/external/FeeCollectorController.sol";
contract TestFixinProtocolFeesIntegration is TestFixinProtocolFees {
constructor(
IEtherTokenV06 weth,
IStaking staking,
uint32 protocolFeeMultiplier
)
public
TestFixinProtocolFees(
weth,
staking,
new FeeCollectorController(weth, staking),
protocolFeeMultiplier
)
{}
}

View File

@@ -0,0 +1,110 @@
/*
Copyright 2019 ZeroEx Intl.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
import "@0x/contracts-staking/contracts/src/Staking.sol";
contract TestStaking is
Staking
{
IEtherToken public testWeth;
struct TestPool {
uint96 operatorStake;
uint96 membersStake;
}
mapping(bytes32 => TestPool) private _testPools;
constructor(address exchangeAddress, IEtherToken _testWeth) public {
testWeth = _testWeth;
_addAuthorizedAddress(msg.sender);
init();
validExchanges[exchangeAddress] = true;
_removeAuthorizedAddressAtIndex(msg.sender, 0);
}
function advanceEpoch()
external
{
currentEpoch += 1;
}
/// @dev Create a test pool.
function createTestPool(
bytes32 poolId,
uint96 operatorStake,
uint96 membersStake
)
external
{
TestPool storage pool = _testPools[poolId];
pool.operatorStake = operatorStake;
pool.membersStake = membersStake;
}
function getAggregatedStatsForCurrentEpoch()
external
view
returns (IStructs.AggregatedStats memory)
{
return aggregatedStatsByEpoch[currentEpoch];
}
/// @dev Overridden to use test pools.
function getTotalStakeDelegatedToPool(bytes32 poolId)
public
view
returns (IStructs.StoredBalance memory balance)
{
TestPool memory pool = _testPools[poolId];
uint96 stake = pool.operatorStake + pool.membersStake;
return IStructs.StoredBalance({
currentEpoch: currentEpoch.downcastToUint64(),
currentEpochBalance: stake,
nextEpochBalance: stake
});
}
/// @dev Overridden to use test pools.
function getStakeDelegatedToPoolByOwner(address, bytes32 poolId)
public
view
returns (IStructs.StoredBalance memory balance)
{
TestPool memory pool = _testPools[poolId];
return IStructs.StoredBalance({
currentEpoch: currentEpoch.downcastToUint64(),
currentEpochBalance: pool.operatorStake,
nextEpochBalance: pool.operatorStake
});
}
function getWethContract()
public
view
returns (IEtherToken wethContract)
{
return testWeth;
}
}

View File

@@ -0,0 +1,24 @@
/*
Copyright 2020 ZeroEx Intl.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
pragma solidity ^0.6.5;
import "@0x/contracts-zero-ex/contracts/test/TestWeth.sol";
contract TestWethIntegration is TestWeth {}

View File

@@ -1,6 +1,7 @@
{
"name": "@0x/contracts-integrations",
"version": "2.7.8",
"version": "2.7.62",
"private": true,
"engines": {
"node": ">=6.12"
},
@@ -38,7 +39,7 @@
},
"config": {
"publicInterfaceContracts": "TestFramework",
"abis": "./test/generated-artifacts/@(ChainlinkStopLimit|IChainlinkAggregator|TestChainlinkAggregator|TestContractWrapper|TestDydxUser|TestEth2Dai|TestEth2DaiBridge|TestFramework|TestMainnetAggregatorFills|TestSignatureValidationWallet|TestUniswapBridge|TestUniswapExchange|TestUniswapExchangeFactory).json",
"abis": "./test/generated-artifacts/@(ChainlinkStopLimit|IChainlinkAggregator|TestChainlinkAggregator|TestContractWrapper|TestDydxUser|TestEth2Dai|TestEth2DaiBridge|TestFixinProtocolFeesIntegration|TestFramework|TestMainnetAggregatorFills|TestSignatureValidationWallet|TestStaking|TestUniswapBridge|TestUniswapExchange|TestUniswapExchangeFactory|TestWethIntegration).json",
"abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
@@ -51,24 +52,25 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contract-addresses": "^5.3.0",
"@0x/contract-wrappers": "^13.10.0",
"@0x/contracts-broker": "^1.1.13",
"@0x/contracts-coordinator": "^3.1.14",
"@0x/contracts-dev-utils": "^1.3.12",
"@0x/contracts-exchange-forwarder": "^4.2.14",
"@0x/contracts-exchange-libs": "^4.3.14",
"@0x/contracts-extensions": "^6.2.8",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-utils": "^4.5.8",
"@0x/abi-gen": "^5.6.0",
"@0x/contract-addresses": "^6.5.0",
"@0x/contract-wrappers": "^13.17.3",
"@0x/contracts-broker": "^1.1.35",
"@0x/contracts-coordinator": "^3.1.36",
"@0x/contracts-dev-utils": "^1.3.34",
"@0x/contracts-exchange-forwarder": "^4.2.36",
"@0x/contracts-exchange-libs": "^4.3.35",
"@0x/contracts-extensions": "^6.2.30",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.14",
"@0x/coordinator-server": "^1.0.5",
"@0x/dev-utils": "^4.0.1",
"@0x/migrations": "^6.5.0",
"@0x/order-utils": "^10.4.6",
"@0x/sol-compiler": "^4.2.7",
"@0x/tslint-config": "^4.1.3",
"@0x/web3-wrapper": "^7.2.8",
"@0x/dev-utils": "^4.2.7",
"@0x/migrations": "^8.0.12",
"@0x/order-utils": "^10.4.27",
"@0x/protocol-utils": "^1.8.0",
"@0x/sol-compiler": "^4.7.3",
"@0x/tslint-config": "^4.1.4",
"@0x/web3-wrapper": "^7.5.3",
"@azure/core-asynciterator-polyfill": "^1.0.0",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
@@ -88,26 +90,26 @@
"solhint": "^1.4.1",
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/asset-swapper": "^5.1.0",
"@0x/base-contract": "^6.2.11",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-erc1155": "^2.1.14",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-erc721": "^3.1.14",
"@0x/contracts-exchange": "^3.2.14",
"@0x/contracts-multisig": "^4.1.14",
"@0x/contracts-staking": "^2.0.21",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-zero-ex": "^0.9.0",
"@0x/subproviders": "^6.1.9",
"@0x/types": "^3.3.0",
"@0x/typescript-typings": "^5.1.5",
"@0x/utils": "^6.1.0",
"ethereum-types": "^3.3.3",
"ethereumjs-util": "^6.2.0",
"@0x/asset-swapper": "^16.24.0",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-erc1155": "^2.1.35",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-erc721": "^3.1.35",
"@0x/contracts-exchange": "^3.2.36",
"@0x/contracts-multisig": "^4.1.36",
"@0x/contracts-staking": "^2.0.43",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-zero-ex": "^0.27.0",
"@0x/subproviders": "^6.5.3",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -1,239 +0,0 @@
import { MarketBuySwapQuote, MarketSellSwapQuote, Orderbook, SwapQuoter } from '@0x/asset-swapper';
import { blockchainTests, expect, Numberish } from '@0x/contracts-test-utils';
import { assetDataUtils } from '@0x/order-utils';
import { FillResults, SignedOrder } from '@0x/types';
import { BigNumber, logUtils } from '@0x/utils';
import * as _ from 'lodash';
import { TestMainnetAggregatorFillsContract } from '../wrappers';
import { tokens } from './tokens';
blockchainTests.live('Aggregator Mainnet Tests', env => {
// Mainnet address of the `TestMainnetAggregatorFills` contract.
const TEST_CONTRACT_ADDRESS = '0x37Ca306F42748b7fe105F89FCBb2CD03D27c8146';
const TAKER_ADDRESS = '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'; // Vitalik
const ORDERBOOK_POLLING_MS = 1000;
const GAS_PRICE = new BigNumber(1);
const TAKER_ASSET_ETH_VALUE = 500e18;
const MIN_BALANCE = 500.1e18;
const SYMBOLS = ['ETH', 'DAI', 'USDC', 'FOAM'];
const TEST_PAIRS = _.flatten(SYMBOLS.map(m => SYMBOLS.filter(t => t !== m).map(t => [m, t])));
const FILL_VALUES = [1, 10, 1e2, 1e3, 1e4, 2.5e4, 5e4];
let testContract: TestMainnetAggregatorFillsContract;
let swapQuoter: SwapQuoter;
let takerEthBalance: BigNumber;
const orderbooks: { [name: string]: Orderbook } = {};
async function getTakerOrdersAsync(takerAssetSymbol: string): Promise<SignedOrder[]> {
if (takerAssetSymbol === 'ETH') {
return [];
}
return getOrdersAsync(takerAssetSymbol, 'ETH');
}
// Fetches ETH -> taker asset orders for the forwarder contract.
async function getOrdersAsync(makerAssetSymbol: string, takerAssetSymbol: string): Promise<SignedOrder[]> {
const takerTokenAddress = tokens[takerAssetSymbol].address;
const makerTokenAddress = tokens[makerAssetSymbol].address;
const makerAssetData = assetDataUtils.encodeERC20AssetData(makerTokenAddress);
const takerAssetData = assetDataUtils.encodeERC20AssetData(takerTokenAddress);
const orders = _.flatten(
await Promise.all(
Object.keys(orderbooks).map(async name =>
getOrdersFromOrderBookAsync(name, makerAssetData, takerAssetData),
),
),
);
const uniqueOrders: SignedOrder[] = [];
for (const order of orders) {
if (!order.makerFee.eq(0) || !order.takerFee.eq(0)) {
continue;
}
if (uniqueOrders.findIndex(o => isSameOrder(order, o)) === -1) {
uniqueOrders.push(order);
}
}
return uniqueOrders;
}
async function getOrdersFromOrderBookAsync(
name: string,
makerAssetData: string,
takerAssetData: string,
): Promise<SignedOrder[]> {
try {
return (await orderbooks[name].getOrdersAsync(makerAssetData, takerAssetData)).map(r => r.order);
} catch (err) {
logUtils.warn(`Failed to retrieve orders from orderbook "${name}".`);
}
return [];
}
function isSameOrder(a: SignedOrder, b: SignedOrder): boolean {
for (const [k, v] of Object.entries(a)) {
if (k in (b as any)) {
if (BigNumber.isBigNumber(v) && !v.eq((b as any)[k])) {
return false;
}
if (v !== (b as any)[k]) {
return false;
}
}
}
return true;
}
function toTokenUnits(symbol: string, weis: Numberish): BigNumber {
return new BigNumber(weis).div(new BigNumber(10).pow(tokens[symbol].decimals));
}
function fromTokenUnits(symbol: string, units: Numberish): BigNumber {
return new BigNumber(units)
.times(new BigNumber(10).pow(tokens[symbol].decimals))
.integerValue(BigNumber.ROUND_DOWN);
}
interface MarketOperationResult {
makerAssetBalanceBefore: BigNumber;
takerAssetBalanceBefore: BigNumber;
makerAssetBalanceAfter: BigNumber;
takerAssetBalanceAfter: BigNumber;
fillResults: FillResults;
}
// Liquidity is low right now so it's possible we didn't have
// enough taker assets to cover the orders, so occasionally we'll get incomplete
// fills. This function will catch those cases.
// TODO(dorothy-zbornak): Remove this special case when liquidity is up.
function checkHadEnoughTakerAsset(
quote: MarketBuySwapQuote | MarketSellSwapQuote,
result: MarketOperationResult,
): boolean {
if (result.takerAssetBalanceBefore.gte(quote.worstCaseQuoteInfo.takerAssetAmount)) {
return true;
}
const takerAssetPct = result.takerAssetBalanceBefore
.div(quote.worstCaseQuoteInfo.takerAssetAmount)
.times(100)
.toNumber()
.toFixed(1);
logUtils.warn(`Could not acquire enough taker asset to complete the fill: ${takerAssetPct}%`);
expect(result.fillResults.makerAssetFilledAmount).to.bignumber.lt(quote.worstCaseQuoteInfo.makerAssetAmount);
return false;
}
before(async () => {
testContract = new TestMainnetAggregatorFillsContract(TEST_CONTRACT_ADDRESS, env.provider, {
...env.txDefaults,
gasPrice: GAS_PRICE,
gas: 10e6,
});
swapQuoter = SwapQuoter.getSwapQuoterForStandardRelayerAPIUrl(env.provider, 'https://api.0x.org/sra');
// Pool orderbooks because we're desperate for liquidity.
orderbooks.swapQuoter = swapQuoter.orderbook;
orderbooks.bamboo = Orderbook.getOrderbookForPollingProvider({
httpEndpoint: 'https://sra.bamboorelay.com/0x/v3',
pollingIntervalMs: ORDERBOOK_POLLING_MS,
});
// TODO(dorothy-zbornak): Uncomment when radar's SRA is up.
// orderbooks.radar = Orderbook.getOrderbookForPollingProvider({
// httpEndpoint: 'https://api-v3.radarrelay.com/v3',
// pollingIntervalMs: ORDERBOOK_POLLING_MS,
// });
takerEthBalance = await env.web3Wrapper.getBalanceInWeiAsync(TAKER_ADDRESS);
});
it('taker has minimum ETH', async () => {
expect(takerEthBalance).to.bignumber.gte(MIN_BALANCE);
});
describe('market sells', () => {
for (const [makerSymbol, takerSymbol] of TEST_PAIRS) {
for (const fillValue of FILL_VALUES) {
const fillAmount = fromTokenUnits(takerSymbol, new BigNumber(fillValue).div(tokens[takerSymbol].price));
it(`sell ${toTokenUnits(takerSymbol, fillAmount)} ${takerSymbol} for ${makerSymbol}`, async () => {
const [quote, takerOrders] = await Promise.all([
swapQuoter.getMarketSellSwapQuoteAsync(
tokens[makerSymbol].address,
tokens[takerSymbol].address,
fillAmount,
{ gasPrice: GAS_PRICE },
),
getTakerOrdersAsync(takerSymbol),
]);
// Buy taker assets from `takerOrders` and and perform a
// market sell on the bridge orders.
const fill = await testContract
.marketSell(
tokens[makerSymbol].address,
tokens[takerSymbol].address,
quote.orders,
takerOrders,
quote.orders.map(o => o.signature),
takerOrders.map(o => o.signature),
quote.takerAssetFillAmount,
)
.callAsync({
value: quote.worstCaseQuoteInfo.protocolFeeInWeiAmount.plus(TAKER_ASSET_ETH_VALUE),
from: TAKER_ADDRESS,
gasPrice: quote.gasPrice,
});
if (checkHadEnoughTakerAsset(quote, fill)) {
expect(fill.fillResults.makerAssetFilledAmount, 'makerAssetFilledAmount').to.bignumber.gte(
quote.worstCaseQuoteInfo.makerAssetAmount,
);
expect(fill.fillResults.takerAssetFilledAmount, 'takerAssetFilledAmount').to.bignumber.lte(
quote.takerAssetFillAmount,
);
}
});
}
}
});
describe('market buys', () => {
for (const [makerSymbol, takerSymbol] of TEST_PAIRS) {
for (const fillValue of FILL_VALUES) {
const fillAmount = fromTokenUnits(makerSymbol, new BigNumber(fillValue).div(tokens[makerSymbol].price));
it(`buy ${toTokenUnits(makerSymbol, fillAmount)} ${makerSymbol} with ${takerSymbol}`, async () => {
const [quote, takerOrders] = await Promise.all([
swapQuoter.getMarketBuySwapQuoteAsync(
tokens[makerSymbol].address,
tokens[takerSymbol].address,
fillAmount,
{ gasPrice: GAS_PRICE },
),
getTakerOrdersAsync(takerSymbol),
]);
// Buy taker assets from `takerOrders` and and perform a
// market buy on the bridge orders.
const fill = await testContract
.marketBuy(
tokens[makerSymbol].address,
tokens[takerSymbol].address,
quote.orders,
takerOrders,
quote.orders.map(o => o.signature),
takerOrders.map(o => o.signature),
quote.makerAssetFillAmount,
)
.callAsync({
value: quote.worstCaseQuoteInfo.protocolFeeInWeiAmount.plus(TAKER_ASSET_ETH_VALUE),
from: TAKER_ADDRESS,
gasPrice: quote.gasPrice,
});
if (checkHadEnoughTakerAsset(quote, fill)) {
expect(fill.fillResults.takerAssetFilledAmount, 'takerAssetFilledAmount').to.bignumber.lte(
quote.worstCaseQuoteInfo.takerAssetAmount,
);
expect(fill.fillResults.makerAssetFilledAmount, 'makerAssetFilledAmount').to.bignumber.gte(
quote.makerAssetFillAmount,
);
}
});
}
}
});
});

View File

@@ -1,77 +0,0 @@
export const tokens: { [symbol: string]: { address: string; decimals: number; price: number } } = {
ETH: {
address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
decimals: 18,
price: 133,
},
SAI: {
address: '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359',
decimals: 18,
price: 1,
},
DAI: {
address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
decimals: 18,
price: 1,
},
USDC: {
address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
decimals: 6,
price: 1,
},
WBTC: {
address: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
decimals: 8,
price: 6900,
},
MKR: {
address: '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2',
decimals: 18,
price: 454,
},
BAT: {
address: '0x0D8775F648430679A709E98d2b0Cb6250d2887EF',
decimals: 18,
price: 0.17,
},
OMG: {
address: '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07',
decimals: 18,
price: 0.65,
},
ZRX: {
address: '0xE41d2489571d322189246DaFA5ebDe1F4699F498',
decimals: 18,
price: 0.19,
},
ZIL: {
address: '0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27',
decimals: 12,
price: 0.004,
},
FOAM: {
address: '0x4946Fcea7C692606e8908002e55A582af44AC121',
decimals: 18,
price: 0.004,
},
USDT: {
address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
decimals: 6,
price: 0.019,
},
REP: {
address: '0x1985365e9f78359a9B6AD760e32412f4a445E862',
decimals: 18,
price: 8.9,
},
MANA: {
address: '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942',
decimals: 18,
price: 0.025,
},
LINK: {
address: '0x514910771AF9Ca656af840dff83E8264EcF986CA',
decimals: 18,
price: 1.8,
},
};

View File

@@ -12,12 +12,15 @@ import * as TestContractWrapper from '../test/generated-artifacts/TestContractWr
import * as TestDydxUser from '../test/generated-artifacts/TestDydxUser.json';
import * as TestEth2Dai from '../test/generated-artifacts/TestEth2Dai.json';
import * as TestEth2DaiBridge from '../test/generated-artifacts/TestEth2DaiBridge.json';
import * as TestFixinProtocolFeesIntegration from '../test/generated-artifacts/TestFixinProtocolFeesIntegration.json';
import * as TestFramework from '../test/generated-artifacts/TestFramework.json';
import * as TestMainnetAggregatorFills from '../test/generated-artifacts/TestMainnetAggregatorFills.json';
import * as TestSignatureValidationWallet from '../test/generated-artifacts/TestSignatureValidationWallet.json';
import * as TestStaking from '../test/generated-artifacts/TestStaking.json';
import * as TestUniswapBridge from '../test/generated-artifacts/TestUniswapBridge.json';
import * as TestUniswapExchange from '../test/generated-artifacts/TestUniswapExchange.json';
import * as TestUniswapExchangeFactory from '../test/generated-artifacts/TestUniswapExchangeFactory.json';
import * as TestWethIntegration from '../test/generated-artifacts/TestWethIntegration.json';
export const artifacts = {
ChainlinkStopLimit: ChainlinkStopLimit as ContractArtifact,
IChainlinkAggregator: IChainlinkAggregator as ContractArtifact,
@@ -26,10 +29,13 @@ export const artifacts = {
TestDydxUser: TestDydxUser as ContractArtifact,
TestEth2Dai: TestEth2Dai as ContractArtifact,
TestEth2DaiBridge: TestEth2DaiBridge as ContractArtifact,
TestFixinProtocolFeesIntegration: TestFixinProtocolFeesIntegration as ContractArtifact,
TestFramework: TestFramework as ContractArtifact,
TestMainnetAggregatorFills: TestMainnetAggregatorFills as ContractArtifact,
TestSignatureValidationWallet: TestSignatureValidationWallet as ContractArtifact,
TestStaking: TestStaking as ContractArtifact,
TestUniswapBridge: TestUniswapBridge as ContractArtifact,
TestUniswapExchange: TestUniswapExchange as ContractArtifact,
TestUniswapExchangeFactory: TestUniswapExchangeFactory as ContractArtifact,
TestWethIntegration: TestWethIntegration as ContractArtifact,
};

View File

@@ -534,9 +534,14 @@ blockchainTests.skip('Coordinator Client', env => {
const signedOrders = [signedOrder, signedOrderWithDifferentFeeRecipient];
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
await coordinatorClient
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
from: takerAddress,
})
.batchFillOrdersAsync(
signedOrders,
takerAssetFillAmounts,
signedOrders.map(o => o.signature),
{
from: takerAddress,
},
)
.then(res => {
expect(res).to.be.undefined();
})
@@ -570,9 +575,14 @@ blockchainTests.skip('Coordinator Client', env => {
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
await coordinatorClient
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
from: takerAddress,
})
.batchFillOrdersAsync(
signedOrders,
takerAssetFillAmounts,
signedOrders.map(o => o.signature),
{
from: takerAddress,
},
)
.then(res => {
expect(res).to.be.undefined();
})
@@ -600,9 +610,14 @@ blockchainTests.skip('Coordinator Client', env => {
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
await coordinatorClient
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
from: takerAddress,
})
.batchFillOrdersAsync(
signedOrders,
takerAssetFillAmounts,
signedOrders.map(o => o.signature),
{
from: takerAddress,
},
)
.then(res => {
expect(res).to.be.undefined();
})

View File

@@ -267,7 +267,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
await balanceStore.updateBalancesAsync();
balanceStore.assertEquals(expectedBalances);
verifyEvents(txReceipt, orders.map(order => expectedFillEvent(order)), ExchangeEvents.Fill);
verifyEvents(
txReceipt,
orders.map(order => expectedFillEvent(order)),
ExchangeEvents.Fill,
);
});
it(`${fnName} should fill the orders if called by approver (eth fee, no refund)`, async () => {
await balanceStore.updateBalancesAsync();
@@ -280,7 +284,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
await balanceStore.updateBalancesAsync();
balanceStore.assertEquals(expectedBalances);
verifyEvents(txReceipt, orders.map(order => expectedFillEvent(order)), ExchangeEvents.Fill);
verifyEvents(
txReceipt,
orders.map(order => expectedFillEvent(order)),
ExchangeEvents.Fill,
);
});
it(`${fnName} should fill the orders if called by approver (mixed fees, refund)`, async () => {
await balanceStore.updateBalancesAsync();
@@ -293,7 +301,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
await balanceStore.updateBalancesAsync();
balanceStore.assertEquals(expectedBalances);
verifyEvents(txReceipt, orders.map(order => expectedFillEvent(order)), ExchangeEvents.Fill);
verifyEvents(
txReceipt,
orders.map(order => expectedFillEvent(order)),
ExchangeEvents.Fill,
);
});
it(`${fnName} should revert with an invalid approval signature`, async () => {
const approvalSignature = hexUtils.concat(
@@ -360,7 +372,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
.executeTransaction(transaction, maker.address, transaction.signature, [])
.awaitTransactionSuccessAsync({ from: maker.address });
verifyEvents(txReceipt, orders.map(order => expectedCancelEvent(order)), ExchangeEvents.Cancel);
verifyEvents(
txReceipt,
orders.map(order => expectedCancelEvent(order)),
ExchangeEvents.Cancel,
);
});
it('cancelOrdersUpTo call should be successful without an approval', async () => {
const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrdersUpTo, []);

View File

@@ -63,11 +63,9 @@ blockchainTests.fork('DevUtils dydx order validation tests', env => {
let dai: ERC20TokenContract;
let usdc: ERC20TokenContract;
let devUtils: DevUtilsContract;
let accountOwner: string;
let minMarginRatio: number;
before(async () => {
[accountOwner] = await env.getAccountAddressesAsync();
dydx = new IDydxContract(DYDX_ADDRESS, env.provider, env.txDefaults);
dai = new ERC20TokenContract(DAI_ADDRESS, env.provider, env.txDefaults);
usdc = new ERC20TokenContract(USDC_ADDRESS, env.provider, env.txDefaults);

View File

@@ -186,13 +186,13 @@ blockchainTests.resets('LibAssetData', env => {
});
it('should decode multiasset data', async () => {
expect(await devUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData).callAsync()).to.deep.equal(
[
AssetProxyId.MultiAsset,
KNOWN_MULTI_ASSET_ENCODING.amounts,
KNOWN_MULTI_ASSET_ENCODING.nestedAssetData,
],
);
expect(
await devUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData).callAsync(),
).to.deep.equal([
AssetProxyId.MultiAsset,
KNOWN_MULTI_ASSET_ENCODING.amounts,
KNOWN_MULTI_ASSET_ENCODING.nestedAssetData,
]);
});
it('should encode StaticCall data', async () => {

View File

@@ -1,426 +0,0 @@
import { ContractAddresses } from '@0x/contract-addresses';
import { artifacts as erc20Artifacts, DummyERC20TokenContract } from '@0x/contracts-erc20';
import { IExchangeContract } from '@0x/contracts-exchange';
import { blockchainTests, constants, expect, getRandomPortion, verifyEventsFromLogs } from '@0x/contracts-test-utils';
import {
artifacts as exchangeProxyArtifacts,
IZeroExContract,
LogMetadataTransformerContract,
signCallData,
} from '@0x/contracts-zero-ex';
import { migrateOnceAsync } from '@0x/migrations';
import {
assetDataUtils,
encodeFillQuoteTransformerData,
encodePayTakerTransformerData,
ETH_TOKEN_ADDRESS,
FillQuoteTransformerSide,
findTransformerNonce,
signatureUtils,
SignedExchangeProxyMetaTransaction,
} from '@0x/order-utils';
import { AssetProxyId, Order, SignedOrder } from '@0x/types';
import { BigNumber, hexUtils, ZeroExRevertErrors } from '@0x/utils';
import * as ethjs from 'ethereumjs-util';
const { MAX_UINT256, NULL_ADDRESS, NULL_BYTES, NULL_BYTES32, ZERO_AMOUNT } = constants;
blockchainTests.resets('exchange proxy - meta-transactions', env => {
const quoteSignerKey = hexUtils.random();
const quoteSigner = hexUtils.toHex(ethjs.privateToAddress(ethjs.toBuffer(quoteSignerKey)));
let owner: string;
let relayer: string;
let maker: string;
let taker: string;
let flashWalletAddress: string;
let zeroEx: IZeroExContract;
let exchange: IExchangeContract;
let inputToken: DummyERC20TokenContract;
let outputToken: DummyERC20TokenContract;
let feeToken: DummyERC20TokenContract;
let addresses: ContractAddresses;
let protocolFee: BigNumber;
let metadataTransformer: LogMetadataTransformerContract;
const GAS_PRICE = new BigNumber('1e9');
const MAKER_BALANCE = new BigNumber('100e18');
const TAKER_BALANCE = new BigNumber('100e18');
const TAKER_FEE_BALANCE = new BigNumber('100e18');
before(async () => {
[, relayer, maker, taker] = await env.getAccountAddressesAsync();
addresses = await migrateOnceAsync(env.provider);
zeroEx = new IZeroExContract(addresses.exchangeProxy, env.provider, env.txDefaults, {
LogMetadataTransformer: LogMetadataTransformerContract.ABI(),
DummyERC20Token: DummyERC20TokenContract.ABI(),
});
exchange = new IExchangeContract(addresses.exchange, env.provider, env.txDefaults);
[inputToken, outputToken, feeToken] = await Promise.all(
[...new Array(3)].map(i =>
DummyERC20TokenContract.deployFrom0xArtifactAsync(
erc20Artifacts.DummyERC20Token,
env.provider,
env.txDefaults,
{},
`DummyToken-${i}`,
`TOK${i}`,
new BigNumber(18),
BigNumber.max(MAKER_BALANCE, TAKER_BALANCE),
),
),
);
// LogMetadataTransformer is not deployed in migrations.
metadataTransformer = await LogMetadataTransformerContract.deployFrom0xArtifactAsync(
exchangeProxyArtifacts.LogMetadataTransformer,
env.provider,
{
...env.txDefaults,
from: addresses.exchangeProxyTransformerDeployer,
},
{},
);
owner = await zeroEx.owner().callAsync();
protocolFee = await exchange.protocolFeeMultiplier().callAsync();
flashWalletAddress = await zeroEx.getTransformWallet().callAsync();
const erc20Proxy = await exchange.getAssetProxy(AssetProxyId.ERC20).callAsync();
const allowanceTarget = await zeroEx.getAllowanceTarget().callAsync();
await outputToken.mint(MAKER_BALANCE).awaitTransactionSuccessAsync({ from: maker });
await inputToken.mint(TAKER_BALANCE).awaitTransactionSuccessAsync({ from: taker });
await feeToken.mint(TAKER_FEE_BALANCE).awaitTransactionSuccessAsync({ from: taker });
await outputToken.approve(erc20Proxy, MAX_UINT256).awaitTransactionSuccessAsync({ from: maker });
await inputToken.approve(allowanceTarget, MAX_UINT256).awaitTransactionSuccessAsync({ from: taker });
await feeToken.approve(allowanceTarget, MAX_UINT256).awaitTransactionSuccessAsync({ from: taker });
await zeroEx.setQuoteSigner(quoteSigner).awaitTransactionSuccessAsync({ from: owner });
});
interface Transformation {
deploymentNonce: number;
data: string;
}
interface SwapInfo {
inputTokenAddress: string;
outputTokenAddress: string;
inputTokenAmount: BigNumber;
minOutputTokenAmount: BigNumber;
transformations: Transformation[];
orders: SignedOrder[];
}
async function generateSwapAsync(orderFields: Partial<Order> = {}, isRfqt: boolean = false): Promise<SwapInfo> {
const order = await signatureUtils.ecSignTypedDataOrderAsync(
env.provider,
{
chainId: 1337,
exchangeAddress: exchange.address,
expirationTimeSeconds: new BigNumber(Date.now()),
salt: new BigNumber(hexUtils.random()),
feeRecipientAddress: NULL_ADDRESS,
senderAddress: NULL_ADDRESS,
takerAddress: isRfqt ? flashWalletAddress : NULL_ADDRESS,
makerAddress: maker,
makerAssetData: assetDataUtils.encodeERC20AssetData(outputToken.address),
takerAssetData: assetDataUtils.encodeERC20AssetData(inputToken.address),
makerFeeAssetData: NULL_BYTES,
takerFeeAssetData: NULL_BYTES,
takerAssetAmount: getRandomPortion(TAKER_BALANCE),
makerAssetAmount: getRandomPortion(MAKER_BALANCE),
makerFee: ZERO_AMOUNT,
takerFee: ZERO_AMOUNT,
...orderFields,
},
maker,
);
const transformations = [
{
deploymentNonce: findTransformerNonce(
addresses.transformers.fillQuoteTransformer,
addresses.exchangeProxyTransformerDeployer,
),
data: encodeFillQuoteTransformerData({
orders: [order],
signatures: [order.signature],
buyToken: outputToken.address,
sellToken: inputToken.address,
fillAmount: order.takerAssetAmount,
maxOrderFillAmounts: [],
refundReceiver: hexUtils.leftPad(2, 20), // Send refund to sender.
rfqtTakerAddress: isRfqt ? taker : NULL_ADDRESS,
side: FillQuoteTransformerSide.Sell,
}),
},
{
deploymentNonce: findTransformerNonce(
addresses.transformers.payTakerTransformer,
addresses.exchangeProxyTransformerDeployer,
),
data: encodePayTakerTransformerData({
tokens: [inputToken.address, outputToken.address, ETH_TOKEN_ADDRESS],
amounts: [MAX_UINT256, MAX_UINT256, MAX_UINT256],
}),
},
{
deploymentNonce: findTransformerNonce(
metadataTransformer.address,
addresses.exchangeProxyTransformerDeployer,
),
data: NULL_BYTES,
},
];
return {
transformations,
orders: [order],
inputTokenAddress: inputToken.address,
outputTokenAddress: outputToken.address,
inputTokenAmount: order.takerAssetAmount,
minOutputTokenAmount: order.makerAssetAmount,
};
}
function getSwapData(swap: SwapInfo): string {
return zeroEx
.transformERC20(
swap.inputTokenAddress,
swap.outputTokenAddress,
swap.inputTokenAmount,
swap.minOutputTokenAmount,
swap.transformations,
)
.getABIEncodedTransactionData();
}
function getSignedSwapData(swap: SwapInfo, signerKey?: string): string {
return signCallData(
zeroEx
.transformERC20(
swap.inputTokenAddress,
swap.outputTokenAddress,
swap.inputTokenAmount,
swap.minOutputTokenAmount,
swap.transformations,
)
.getABIEncodedTransactionData(),
signerKey ? signerKey : quoteSignerKey,
);
}
async function createMetaTransactionAsync(
data: string,
value: BigNumber,
fee?: BigNumber | number,
): Promise<SignedExchangeProxyMetaTransaction> {
return signatureUtils.ecSignTypedDataExchangeProxyMetaTransactionAsync(
env.provider,
{
value,
signer: taker,
sender: relayer,
minGasPrice: GAS_PRICE,
maxGasPrice: GAS_PRICE,
expirationTimeSeconds: new BigNumber(Math.floor(Date.now() / 1000) + 60),
salt: new BigNumber(hexUtils.random()),
callData: data,
feeToken: feeToken.address,
feeAmount: fee !== undefined ? new BigNumber(fee) : getRandomPortion(TAKER_FEE_BALANCE),
domain: {
chainId: 1,
name: 'ZeroEx',
version: '1.0.0',
verifyingContract: zeroEx.address,
},
},
taker,
);
}
it('can call `transformERC20()` with signed calldata and no relayer fee', async () => {
const swap = await generateSwapAsync();
const callDataHash = hexUtils.hash(getSwapData(swap));
const signedSwapData = getSignedSwapData(swap);
const _protocolFee = protocolFee.times(GAS_PRICE).times(swap.orders.length + 1); // Pay a little more fee than needed.
const mtx = await createMetaTransactionAsync(signedSwapData, _protocolFee, 0);
const relayerEthBalanceBefore = await env.web3Wrapper.getBalanceInWeiAsync(relayer);
const receipt = await zeroEx
.executeMetaTransaction(mtx, mtx.signature)
.awaitTransactionSuccessAsync({ from: relayer, value: mtx.value, gasPrice: GAS_PRICE });
const relayerEthRefund = relayerEthBalanceBefore
.minus(await env.web3Wrapper.getBalanceInWeiAsync(relayer))
.minus(GAS_PRICE.times(receipt.gasUsed));
// Ensure the relayer got back the unused protocol fees.
expect(relayerEthRefund).to.bignumber.eq(protocolFee.times(GAS_PRICE));
// Ensure the relayer got paid no mtx fees.
expect(await feeToken.balanceOf(relayer).callAsync()).to.bignumber.eq(0);
// Ensure the taker got output tokens.
expect(await outputToken.balanceOf(taker).callAsync()).to.bignumber.eq(swap.minOutputTokenAmount);
// Ensure the maker got input tokens.
expect(await inputToken.balanceOf(maker).callAsync()).to.bignumber.eq(swap.inputTokenAmount);
// Check events.
verifyEventsFromLogs(
receipt.logs,
[
{
taker,
callDataHash,
sender: zeroEx.address,
data: NULL_BYTES,
},
],
'TransformerMetadata',
);
});
it('can call `transformERC20()` with signed calldata and a relayer fee', async () => {
const swap = await generateSwapAsync();
const callDataHash = hexUtils.hash(getSwapData(swap));
const signedSwapData = getSignedSwapData(swap);
const _protocolFee = protocolFee.times(GAS_PRICE).times(swap.orders.length + 1); // Pay a little more fee than needed.
const mtx = await createMetaTransactionAsync(signedSwapData, _protocolFee);
const relayerEthBalanceBefore = await env.web3Wrapper.getBalanceInWeiAsync(relayer);
const receipt = await zeroEx
.executeMetaTransaction(mtx, mtx.signature)
.awaitTransactionSuccessAsync({ from: relayer, value: mtx.value, gasPrice: GAS_PRICE });
const relayerEthRefund = relayerEthBalanceBefore
.minus(await env.web3Wrapper.getBalanceInWeiAsync(relayer))
.minus(GAS_PRICE.times(receipt.gasUsed));
// Ensure the relayer got back the unused protocol fees.
expect(relayerEthRefund).to.bignumber.eq(protocolFee.times(GAS_PRICE));
// Ensure the relayer got paid mtx fees.
expect(await feeToken.balanceOf(relayer).callAsync()).to.bignumber.eq(mtx.feeAmount);
// Ensure the taker got output tokens.
expect(await outputToken.balanceOf(taker).callAsync()).to.bignumber.eq(swap.minOutputTokenAmount);
// Ensure the maker got input tokens.
expect(await inputToken.balanceOf(maker).callAsync()).to.bignumber.eq(swap.inputTokenAmount);
// Check events.
verifyEventsFromLogs(
receipt.logs,
[
{
taker,
callDataHash,
sender: zeroEx.address,
data: NULL_BYTES,
},
],
'TransformerMetadata',
);
});
it('can call `transformERC20()` with wrongly signed calldata and a relayer fee', async () => {
const swap = await generateSwapAsync();
const signedSwapData = getSignedSwapData(swap, hexUtils.random());
const _protocolFee = protocolFee.times(GAS_PRICE).times(swap.orders.length + 1); // Pay a little more fee than needed.
const mtx = await createMetaTransactionAsync(signedSwapData, _protocolFee);
const relayerEthBalanceBefore = await env.web3Wrapper.getBalanceInWeiAsync(relayer);
const receipt = await zeroEx
.executeMetaTransaction(mtx, mtx.signature)
.awaitTransactionSuccessAsync({ from: relayer, value: mtx.value, gasPrice: GAS_PRICE });
const relayerEthRefund = relayerEthBalanceBefore
.minus(await env.web3Wrapper.getBalanceInWeiAsync(relayer))
.minus(GAS_PRICE.times(receipt.gasUsed));
// Ensure the relayer got back the unused protocol fees.
expect(relayerEthRefund).to.bignumber.eq(protocolFee.times(GAS_PRICE));
// Ensure the relayer got paid mtx fees.
expect(await feeToken.balanceOf(relayer).callAsync()).to.bignumber.eq(mtx.feeAmount);
// Ensure the taker got output tokens.
expect(await outputToken.balanceOf(taker).callAsync()).to.bignumber.eq(swap.minOutputTokenAmount);
// Ensure the maker got input tokens.
expect(await inputToken.balanceOf(maker).callAsync()).to.bignumber.eq(swap.inputTokenAmount);
// Check events.
verifyEventsFromLogs(
receipt.logs,
[
{
taker,
// Only signed calldata should have a nonzero hash.
callDataHash: NULL_BYTES32,
sender: zeroEx.address,
data: NULL_BYTES,
},
],
'TransformerMetadata',
);
});
it('`transformERC20()` can fill RFQT order if calldata is signed', async () => {
const swap = await generateSwapAsync({}, true);
const callDataHash = hexUtils.hash(getSwapData(swap));
const signedSwapData = getSignedSwapData(swap);
const _protocolFee = protocolFee.times(GAS_PRICE).times(swap.orders.length + 1); // Pay a little more fee than needed.
const mtx = await createMetaTransactionAsync(signedSwapData, _protocolFee, 0);
const relayerEthBalanceBefore = await env.web3Wrapper.getBalanceInWeiAsync(relayer);
const receipt = await zeroEx
.executeMetaTransaction(mtx, mtx.signature)
.awaitTransactionSuccessAsync({ from: relayer, value: mtx.value, gasPrice: GAS_PRICE });
const relayerEthRefund = relayerEthBalanceBefore
.minus(await env.web3Wrapper.getBalanceInWeiAsync(relayer))
.minus(GAS_PRICE.times(receipt.gasUsed));
// Ensure the relayer got back the unused protocol fees.
expect(relayerEthRefund).to.bignumber.eq(protocolFee.times(GAS_PRICE));
// Ensure the relayer got paid no mtx fees.
expect(await feeToken.balanceOf(relayer).callAsync()).to.bignumber.eq(0);
// Ensure the taker got output tokens.
expect(await outputToken.balanceOf(taker).callAsync()).to.bignumber.eq(swap.minOutputTokenAmount);
// Ensure the maker got input tokens.
expect(await inputToken.balanceOf(maker).callAsync()).to.bignumber.eq(swap.inputTokenAmount);
// Check events.
verifyEventsFromLogs(
receipt.logs,
[
{
taker,
callDataHash,
sender: zeroEx.address,
data: NULL_BYTES,
},
],
'TransformerMetadata',
);
});
it('`transformERC20()` can fill RFQT order if calldata is not signed but no quote signer configured', async () => {
const swap = await generateSwapAsync({}, true);
const callData = getSwapData(swap);
const callDataHash = hexUtils.hash(callData);
const _protocolFee = protocolFee.times(GAS_PRICE).times(swap.orders.length + 1); // Pay a little more fee than needed.
const mtx = await createMetaTransactionAsync(callData, _protocolFee, 0);
const relayerEthBalanceBefore = await env.web3Wrapper.getBalanceInWeiAsync(relayer);
await zeroEx.setQuoteSigner(NULL_ADDRESS).awaitTransactionSuccessAsync({ from: owner });
const receipt = await zeroEx
.executeMetaTransaction(mtx, mtx.signature)
.awaitTransactionSuccessAsync({ from: relayer, value: mtx.value, gasPrice: GAS_PRICE });
const relayerEthRefund = relayerEthBalanceBefore
.minus(await env.web3Wrapper.getBalanceInWeiAsync(relayer))
.minus(GAS_PRICE.times(receipt.gasUsed));
// Ensure the relayer got back the unused protocol fees.
expect(relayerEthRefund).to.bignumber.eq(protocolFee.times(GAS_PRICE));
// Ensure the relayer got paid no mtx fees.
expect(await feeToken.balanceOf(relayer).callAsync()).to.bignumber.eq(0);
// Ensure the taker got output tokens.
expect(await outputToken.balanceOf(taker).callAsync()).to.bignumber.eq(swap.minOutputTokenAmount);
// Ensure the maker got input tokens.
expect(await inputToken.balanceOf(maker).callAsync()).to.bignumber.eq(swap.inputTokenAmount);
// Check events.
verifyEventsFromLogs(
receipt.logs,
[
{
taker,
callDataHash,
sender: zeroEx.address,
data: NULL_BYTES,
},
],
'TransformerMetadata',
);
});
it('`transformERC20()` cannot fill RFQT order if calldata is not signed', async () => {
const swap = await generateSwapAsync({}, true);
const callData = getSwapData(swap);
const _protocolFee = protocolFee.times(GAS_PRICE).times(swap.orders.length + 1); // Pay a little more fee than needed.
const mtx = await createMetaTransactionAsync(callData, _protocolFee, 0);
const tx = zeroEx
.executeMetaTransaction(mtx, mtx.signature)
.awaitTransactionSuccessAsync({ from: relayer, value: mtx.value, gasPrice: GAS_PRICE });
return expect(tx).to.revertWith(new ZeroExRevertErrors.MetaTransactions.MetaTransactionCallFailedError());
});
});

View File

@@ -278,15 +278,21 @@ blockchainTests.resets('matchOrders integration tests', env => {
ExchangeRevertErrors.BatchMatchOrdersErrorCodes.InvalidLengthRightSignatures,
);
let tx = deployment.exchange
.batchMatchOrders(leftOrders, rightOrders, leftOrders.map(order => order.signature), [
rightOrders[0].signature,
])
.batchMatchOrders(
leftOrders,
rightOrders,
leftOrders.map(order => order.signature),
[rightOrders[0].signature],
)
.awaitTransactionSuccessAsync({ from: matcher.address });
await expect(tx).to.revertWith(expectedError);
tx = deployment.exchange
.batchMatchOrdersWithMaximalFill(leftOrders, rightOrders, leftOrders.map(order => order.signature), [
rightOrders[0].signature,
])
.batchMatchOrdersWithMaximalFill(
leftOrders,
rightOrders,
leftOrders.map(order => order.signature),
[rightOrders[0].signature],
)
.awaitTransactionSuccessAsync({ from: matcher.address });
return expect(tx).to.revertWith(expectedError);
});
@@ -475,7 +481,10 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
matchIndices: [[0, 0], [1, 0]],
matchIndices: [
[0, 0],
[1, 0],
],
shouldMaximallyFill: false,
});
});
@@ -524,7 +533,10 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
matchIndices: [[0, 0], [0, 1]],
matchIndices: [
[0, 0],
[0, 1],
],
shouldMaximallyFill: false,
});
});
@@ -626,7 +638,11 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
matchIndices: [[0, 0], [0, 1], [1, 1]],
matchIndices: [
[0, 0],
[0, 1],
[1, 1],
],
shouldMaximallyFill: false,
});
});
@@ -801,7 +817,11 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
matchIndices: [[0, 0], [1, 0], [1, 1]],
matchIndices: [
[0, 0],
[1, 0],
[1, 1],
],
shouldMaximallyFill: true,
});
});

View File

@@ -106,7 +106,12 @@ blockchainTests.fork.resets('Forwarder mainnet tests', env => {
orders[1].takerAssetAmount.dividedToIntegerBy(2),
);
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
.marketSellOrdersWithEth(orders, orders.map(o => o.signature), [], [])
.marketSellOrdersWithEth(
orders,
orders.map(o => o.signature),
[],
[],
)
.callAsync({
from: takerAddress,
value: ethSellAmount,
@@ -161,7 +166,13 @@ blockchainTests.fork.resets('Forwarder mainnet tests', env => {
orders[1].makerAssetAmount.dividedToIntegerBy(2),
);
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
.marketBuyOrdersWithEth(orders, makerAssetBuyAmount, orders.map(o => o.signature), [], [])
.marketBuyOrdersWithEth(
orders,
makerAssetBuyAmount,
orders.map(o => o.signature),
[],
[],
)
.callAsync({
from: takerAddress,
value: ethSellAmount,

View File

@@ -190,9 +190,14 @@ export function MakerMixin<TBase extends Constructor>(Base: TBase): TBase & Cons
rightTakerAssetData,
makerFeeAssetData,
takerFeeAssetData,
] = [leftMakerToken, leftTakerToken, rightMakerToken, rightTakerToken, makerFeeToken, takerFeeToken].map(
token => encodeERC20AssetData(token.address),
);
] = [
leftMakerToken,
leftTakerToken,
rightMakerToken,
rightTakerToken,
makerFeeToken,
takerFeeToken,
].map(token => encodeERC20AssetData(token.address));
// Construct and sign the left order
const leftOrder = await this.signOrderAsync({

View File

@@ -8,7 +8,10 @@ import { Actor, Constructor } from './base';
* Useful for BalanceStore.
*/
export function actorAddressesByName(actors: Actor[]): ObjectMap<string> {
return _.zipObject(actors.map(actor => actor.name), actors.map(actor => actor.address));
return _.zipObject(
actors.map(actor => actor.name),
actors.map(actor => actor.address),
);
}
/**
@@ -19,5 +22,5 @@ export function filterActorsByRole<TClass extends Constructor>(
actors: Actor[],
role: TClass,
): Array<InstanceType<typeof role>> {
return actors.filter(actor => actor.mixins.includes(role.name)) as InstanceType<typeof role>;
return actors.filter(actor => actor.mixins.includes(role.name)) as Array<InstanceType<typeof role>>;
}

View File

@@ -77,19 +77,24 @@ tests('Exchange signature validation fuzz tests', env => {
before(async () => {
chainId = await env.web3Wrapper.getChainIdAsync();
accounts = await env.getAccountAddressesAsync();
privateKeys = _.zipObject(accounts, accounts.map((a, i) => constants.TESTRPC_PRIVATE_KEYS[i]));
privateKeys = _.zipObject(
accounts,
accounts.map((a, i) => constants.TESTRPC_PRIVATE_KEYS[i]),
);
deployment = await DeploymentManager.deployAsync(env, {
numErc20TokensToDeploy: 0,
numErc721TokensToDeploy: 0,
numErc1155TokensToDeploy: 0,
});
exchange = deployment.exchange;
walletContractAddress = (await TestSignatureValidationWalletContract.deployFrom0xArtifactAsync(
artifacts.TestSignatureValidationWallet,
env.provider,
env.txDefaults,
{},
)).address;
walletContractAddress = (
await TestSignatureValidationWalletContract.deployFrom0xArtifactAsync(
artifacts.TestSignatureValidationWallet,
env.provider,
env.txDefaults,
{},
)
).address;
// This just has to be a contract address that doesn't implement the
// wallet spec.
notWalletContractAddress = exchange.address;
@@ -715,7 +720,7 @@ tests('Exchange signature validation fuzz tests', env => {
invalidTestTransactionMangledSignature(),
];
const simulationEnvironment = new SimulationEnvironment(deployment, new BlockchainBalanceStore({}, {}), []);
const simulation = new class extends Simulation {
const simulation = new (class extends Simulation {
// tslint:disable-next-line: prefer-function-over-method
protected async *_assertionGenerator(): AsyncIterableIterator<AssertionResult | void> {
while (true) {
@@ -723,7 +728,7 @@ tests('Exchange signature validation fuzz tests', env => {
yield (await action!.next()).value;
}
}
}(simulationEnvironment);
})(simulationEnvironment);
simulation.resets = true;
return simulation.fuzzAsync();
});

View File

@@ -10,9 +10,12 @@ export * from '../test/generated-wrappers/test_contract_wrapper';
export * from '../test/generated-wrappers/test_dydx_user';
export * from '../test/generated-wrappers/test_eth2_dai';
export * from '../test/generated-wrappers/test_eth2_dai_bridge';
export * from '../test/generated-wrappers/test_fixin_protocol_fees_integration';
export * from '../test/generated-wrappers/test_framework';
export * from '../test/generated-wrappers/test_mainnet_aggregator_fills';
export * from '../test/generated-wrappers/test_signature_validation_wallet';
export * from '../test/generated-wrappers/test_staking';
export * from '../test/generated-wrappers/test_uniswap_bridge';
export * from '../test/generated-wrappers/test_uniswap_exchange';
export * from '../test/generated-wrappers/test_uniswap_exchange_factory';
export * from '../test/generated-wrappers/test_weth_integration';

View File

@@ -0,0 +1,85 @@
import { blockchainTests, constants, expect } from '@0x/contracts-test-utils';
import { BigNumber, hexUtils } from '@0x/utils';
import { artifacts } from '../artifacts';
import {
TestFixinProtocolFeesIntegrationContract,
TestStakingContract,
TestWethIntegrationContract,
} from '../wrappers';
blockchainTests.resets('ProtocolFeeIntegration', env => {
const FEE_MULTIPLIER = 70e3;
let owner: string;
let taker: string;
let protocolFees: TestFixinProtocolFeesIntegrationContract;
let staking: TestStakingContract;
let weth: TestWethIntegrationContract;
let singleFeeAmount: BigNumber;
before(async () => {
[owner, taker] = await env.getAccountAddressesAsync();
weth = await TestWethIntegrationContract.deployFrom0xArtifactAsync(
artifacts.TestWethIntegration,
env.provider,
env.txDefaults,
artifacts,
);
staking = await TestStakingContract.deployFrom0xArtifactAsync(
artifacts.TestStaking,
env.provider,
env.txDefaults,
artifacts,
constants.NULL_ADDRESS, // exchange address, which we don't know yet
weth.address,
);
protocolFees = await TestFixinProtocolFeesIntegrationContract.deployFrom0xArtifactAsync(
artifacts.TestFixinProtocolFeesIntegration,
env.provider,
{ ...env.txDefaults, from: taker },
artifacts,
weth.address,
staking.address,
FEE_MULTIPLIER,
);
await staking.addAuthorizedAddress(owner).awaitTransactionSuccessAsync();
await staking.addExchangeAddress(protocolFees.address).awaitTransactionSuccessAsync({ from: owner });
await weth.mint(taker, constants.ONE_ETHER).awaitTransactionSuccessAsync();
await weth.approve(protocolFees.address, constants.ONE_ETHER).awaitTransactionSuccessAsync({ from: taker });
singleFeeAmount = await protocolFees.getSingleProtocolFee().callAsync();
});
describe('fee collection integration', () => {
const pool0 = constants.NULL_BYTES32;
const poolId = hexUtils.random();
it('should collect fees for pool 0', async () => {
await protocolFees.collectProtocolFee(pool0).awaitTransactionSuccessAsync({ value: singleFeeAmount });
await protocolFees.transferFeesForPool(pool0).awaitTransactionSuccessAsync();
// Fees in the pool bytes32(0) don't get attributed to a pool.
await expect(
(await staking.getStakingPoolStatsThisEpoch(pool0).callAsync()).feesCollected,
).to.bignumber.equal(constants.ZERO_AMOUNT);
// Expected amount is singleFeeAmount - 1 because we leave 1 wei of WETH behind for future gas savings.
return expect(await weth.balanceOf(staking.address).callAsync()).to.bignumber.equal(
singleFeeAmount.minus(1),
);
});
it('should collect fees for non-zero pool', async () => {
const eth100 = constants.ONE_ETHER.multipliedBy(100);
await staking.createTestPool(poolId, eth100, eth100).awaitTransactionSuccessAsync();
await protocolFees.collectProtocolFee(poolId).awaitTransactionSuccessAsync({ value: singleFeeAmount });
await protocolFees.transferFeesForPool(poolId).awaitTransactionSuccessAsync();
// Expected amount is singleFeeAmount - 1 because we leave 1 wei of WETH behind for future gas savings.
return expect(
(await staking.getStakingPoolStatsThisEpoch(poolId).callAsync()).feesCollected,
).to.bignumber.equal(singleFeeAmount.minus(1));
});
});
});

View File

@@ -11,11 +11,14 @@
"test/generated-artifacts/TestDydxUser.json",
"test/generated-artifacts/TestEth2Dai.json",
"test/generated-artifacts/TestEth2DaiBridge.json",
"test/generated-artifacts/TestFixinProtocolFeesIntegration.json",
"test/generated-artifacts/TestFramework.json",
"test/generated-artifacts/TestMainnetAggregatorFills.json",
"test/generated-artifacts/TestSignatureValidationWallet.json",
"test/generated-artifacts/TestStaking.json",
"test/generated-artifacts/TestUniswapBridge.json",
"test/generated-artifacts/TestUniswapExchange.json",
"test/generated-artifacts/TestUniswapExchangeFactory.json"
"test/generated-artifacts/TestUniswapExchangeFactory.json",
"test/generated-artifacts/TestWethIntegration.json"
]
}

View File

@@ -1,4 +1,202 @@
[
{
"timestamp": 1628225642,
"version": "4.1.36",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "4.1.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "4.1.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "4.1.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "4.1.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "4.1.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "4.1.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "4.1.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "4.1.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "4.1.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "4.1.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "4.1.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "4.1.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "4.1.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "4.1.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "4.1.21",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "4.1.20",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "4.1.19",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "4.1.18",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "4.1.17",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "4.1.16",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "4.1.15",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "4.1.14",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v4.1.36 - _August 6, 2021_
* Dependencies updated
## v4.1.35 - _June 22, 2021_
* Dependencies updated
## v4.1.34 - _June 11, 2021_
* Dependencies updated
## v4.1.33 - _June 2, 2021_
* Dependencies updated
## v4.1.32 - _May 25, 2021_
* Dependencies updated
## v4.1.31 - _May 21, 2021_
* Dependencies updated
## v4.1.30 - _May 5, 2021_
* Dependencies updated
## v4.1.29 - _April 28, 2021_
* Dependencies updated
## v4.1.28 - _April 1, 2021_
* Dependencies updated
## v4.1.27 - _March 17, 2021_
* Dependencies updated
## v4.1.26 - _February 24, 2021_
* Dependencies updated
## v4.1.25 - _February 10, 2021_
* Dependencies updated
## v4.1.24 - _January 26, 2021_
* Dependencies updated
## v4.1.23 - _January 13, 2021_
* Dependencies updated
## v4.1.22 - _January 4, 2021_
* Dependencies updated
## v4.1.21 - _December 23, 2020_
* Dependencies updated
## v4.1.20 - _December 17, 2020_
* Dependencies updated
## v4.1.19 - _December 16, 2020_
* Dependencies updated
## v4.1.18 - _December 9, 2020_
* Dependencies updated
## v4.1.17 - _December 7, 2020_
* Dependencies updated
## v4.1.16 - _December 3, 2020_
* Dependencies updated
## v4.1.15 - _November 19, 2020_
* Dependencies updated
## v4.1.14 - _November 13, 2020_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-multisig",
"version": "4.1.14",
"version": "4.1.36",
"engines": {
"node": ">=6.12"
},
@@ -49,18 +49,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/multisig",
"devDependencies": {
"@0x/abi-gen": "^5.4.7",
"@0x/contracts-asset-proxy": "^3.6.5",
"@0x/contracts-erc20": "^3.2.8",
"@0x/contracts-gen": "2.0.18",
"@0x/contracts-test-utils": "^5.3.11",
"@0x/contracts-utils": "^4.5.8",
"@0x/dev-utils": "^4.0.1",
"@0x/sol-compiler": "^4.2.7",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.0",
"@0x/utils": "^6.1.0",
"@0x/web3-wrapper": "^7.2.8",
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.17",
"@0x/contracts-erc20": "^3.3.14",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.6",
"@0x/contracts-utils": "^4.7.14",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -75,12 +75,12 @@
"shx": "^0.2.2",
"solhint": "^1.4.1",
"tslint": "5.11.0",
"typescript": "3.0.1"
"typescript": "4.2.2"
},
"dependencies": {
"@0x/base-contract": "^6.2.11",
"@0x/typescript-typings": "^5.1.5",
"ethereum-types": "^3.3.3"
"@0x/base-contract": "^6.4.0",
"@0x/typescript-typings": "^5.2.0",
"ethereum-types": "^3.5.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,4 +1,203 @@
[
{
"timestamp": 1628225642,
"version": "2.0.43",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1624356181,
"version": "2.0.42",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1623382456,
"version": "2.0.41",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1622609597,
"version": "2.0.40",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "2.0.39",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "2.0.38",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "2.0.37",
"changes": [
{
"note": "Patch epoch finalization issue",
"pr": 221
}
],
"timestamp": 1620214333
},
{
"timestamp": 1619596077,
"version": "2.0.36",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "2.0.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "2.0.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1614141718,
"version": "2.0.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1612950500,
"version": "2.0.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1611648096,
"version": "2.0.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1610510890,
"version": "2.0.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1609802516,
"version": "2.0.29",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608692071,
"version": "2.0.28",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608245516,
"version": "2.0.27",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1608105788,
"version": "2.0.26",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607485227,
"version": "2.0.25",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1607381756,
"version": "2.0.24",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1606961263,
"version": "2.0.23",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605763885,
"version": "2.0.22",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1605302002,
"version": "2.0.21",

View File

@@ -5,6 +5,94 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v2.0.43 - _August 6, 2021_
* Dependencies updated
## v2.0.42 - _June 22, 2021_
* Dependencies updated
## v2.0.41 - _June 11, 2021_
* Dependencies updated
## v2.0.40 - _June 2, 2021_
* Dependencies updated
## v2.0.39 - _May 25, 2021_
* Dependencies updated
## v2.0.38 - _May 21, 2021_
* Dependencies updated
## v2.0.37 - _May 5, 2021_
* Patch epoch finalization issue (#221)
## v2.0.36 - _April 28, 2021_
* Dependencies updated
## v2.0.35 - _April 1, 2021_
* Dependencies updated
## v2.0.34 - _March 17, 2021_
* Dependencies updated
## v2.0.33 - _February 24, 2021_
* Dependencies updated
## v2.0.32 - _February 10, 2021_
* Dependencies updated
## v2.0.31 - _January 26, 2021_
* Dependencies updated
## v2.0.30 - _January 13, 2021_
* Dependencies updated
## v2.0.29 - _January 4, 2021_
* Dependencies updated
## v2.0.28 - _December 23, 2020_
* Dependencies updated
## v2.0.27 - _December 17, 2020_
* Dependencies updated
## v2.0.26 - _December 16, 2020_
* Dependencies updated
## v2.0.25 - _December 9, 2020_
* Dependencies updated
## v2.0.24 - _December 7, 2020_
* Dependencies updated
## v2.0.23 - _December 3, 2020_
* Dependencies updated
## v2.0.22 - _November 19, 2020_
* Dependencies updated
## v2.0.21 - _November 13, 2020_
* Dependencies updated

View File

@@ -2,7 +2,7 @@
"artifactsDir": "./test/generated-artifacts",
"contractsDir": "./contracts",
"useDockerisedSolc": false,
"isOfflineMode": true,
"isOfflineMode": false,
"shouldSaveStandardInput": true,
"compilerSettings": {
"evmVersion": "istanbul",

View File

@@ -0,0 +1,55 @@
/*
Copyright 2019 ZeroEx Intl.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
import "./interfaces/IStaking.sol";
import "./sys/MixinParams.sol";
import "./stake/MixinStake.sol";
import "./fees/MixinExchangeFees.sol";
contract StakingPatch is
IStaking,
MixinParams,
MixinStake,
MixinExchangeFees
{
/// @dev Initialize storage owned by this contract.
/// This function should not be called directly.
/// The StakingProxy contract will call it in `attachStakingContract()`.
function init()
public
onlyAuthorized
{
uint256 currentEpoch_ = currentEpoch;
uint256 prevEpoch = currentEpoch_.safeSub(1);
// Patch corrupted state
aggregatedStatsByEpoch[prevEpoch].numPoolsToFinalize = 0;
this.endEpoch();
uint256 lastPoolId_ = 57;
for (uint256 i = 1; i <= lastPoolId_; i++) {
this.finalizePool(bytes32(i));
}
// Ensure that current epoch's state is not corrupted
aggregatedStatsByEpoch[currentEpoch_].numPoolsToFinalize = 0;
}
}

View File

@@ -53,6 +53,10 @@ contract MixinExchangeFees is
{
_assertValidProtocolFee(protocolFee);
if (protocolFee == 0) {
return;
}
// Transfer the protocol fee to this address if it should be paid in
// WETH.
if (msg.value == 0) {

Some files were not shown because too many files have changed in this diff Show More