diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c4c2457efb..4cd269da45 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,19 +1,21 @@ name: publish on: - workflow_dispatch: - inputs: - ci_status: - description: 'required CI status' - default: 'success' - required: true - prerelease: - description: 'prerelease name' - required: false + workflow_dispatch: + inputs: + ci_status: + description: 'required CI status' + default: 'success' + required: true + prerelease: + description: 'prerelease name' + required: false jobs: publish: runs-on: ubuntu-latest + env: + PublishBranch: publish/${{github.ref_name }}-${{ github.run_id }}-${{ github.run_number }} steps: - name: 'check successful status' run: | @@ -28,16 +30,20 @@ jobs: version: nightly - uses: actions/checkout@v2 with: - ref: ${{ github.ref }} - fetch-depth: 0 + ref: ${{ github.ref }} + fetch-depth: 0 - uses: actions/setup-node@v1 with: - node-version: 16 + node-version: 16 - uses: actions/setup-python@v2 - name: 'configure git' run: | git config --global user.email "github-actions@github.com" git config --global user.name "Github Actions" + - name: 'Checkout new branch' + run: | + git checkout -b $PublishBranch + git push -u origin $PublishBranch - name: 'install dependencies' run: | yarn -D @@ -49,9 +55,23 @@ jobs: 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 + - name: 'Create PR to merge into ref branch' run: | - git checkout main && \ - git merge ${{ github.ref }} && \ - git push + gh pr create \ + -B ${{ github.ref_name }} \ + -H $PublishBranch \ + --title "Publish: CHANGELOG and Package Version Updates into ${{ github.ref_name }}" \ + --body "Syncing CHANGELOG and package version updates from publish action ${{github.run_id}}-${{github.run_number}} into ${{ github.ref_name}} branch" \ + --reviewer ${{ github.actor }} + env: + GITHUB_TOKEN: ${{ github.token }} + - name: 'Create PR to merge ref branch into main' + run: | + gh pr create \ + -B main \ + -H ${{ github.ref_name }} \ + --title "Publish: Sync ${{ github.ref_name }} into main " \ + --body "Syncing ${{ github.ref_name }} back into main after publish action. NOTE: this PR should be merged after CHANGELOG and package version updates have been merged into ${{ github.ref_name }}" \ + --reviewer ${{ github.actor }} + env: + GITHUB_TOKEN: ${{ github.token }} diff --git a/.gitignore b/.gitignore index 9937ee084b..a4524b1792 100644 --- a/.gitignore +++ b/.gitignore @@ -84,6 +84,9 @@ TODO.md # IDE file .vscode .idea +*~ +.\#* +\#*\# # generated contract artifacts/ generated-artifacts/ diff --git a/contracts/erc20/CHANGELOG.json b/contracts/erc20/CHANGELOG.json index 74eb45c966..27daa70ea5 100644 --- a/contracts/erc20/CHANGELOG.json +++ b/contracts/erc20/CHANGELOG.json @@ -1,4 +1,49 @@ [ + { + "timestamp": 1693346928, + "version": "4.0.13", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1692368658, + "version": "4.0.12", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1691617396, + "version": "4.0.11", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689974915, + "version": "4.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689791426, + "version": "4.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1683749017, "version": "4.0.8", diff --git a/contracts/erc20/CHANGELOG.md b/contracts/erc20/CHANGELOG.md index 3e5df407d7..779d52a9f8 100644 --- a/contracts/erc20/CHANGELOG.md +++ b/contracts/erc20/CHANGELOG.md @@ -5,6 +5,26 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.13 - _August 29, 2023_ + + * Dependencies updated + +## v4.0.12 - _August 18, 2023_ + + * Dependencies updated + +## v4.0.11 - _August 9, 2023_ + + * Dependencies updated + +## v4.0.10 - _July 21, 2023_ + + * Dependencies updated + +## v4.0.9 - _July 19, 2023_ + + * Dependencies updated + ## v4.0.8 - _May 10, 2023_ * Dependencies updated diff --git a/contracts/erc20/package.json b/contracts/erc20/package.json index ec7636ba3e..65444e72a4 100644 --- a/contracts/erc20/package.json +++ b/contracts/erc20/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc20", - "version": "4.0.8", + "version": "4.0.13", "engines": { "node": ">=6.12" }, @@ -24,7 +24,7 @@ }, "homepage": "https://github.com/0xProject/protocol", "devDependencies": { - "@0x/contracts-utils": "^4.8.46", + "@0x/contracts-utils": "^4.8.51", "@0x/ts-doc-gen": "^0.0.28", "typedoc": "~0.16.11" }, diff --git a/contracts/test-utils/CHANGELOG.json b/contracts/test-utils/CHANGELOG.json index ce77fa55de..5814d6c10c 100644 --- a/contracts/test-utils/CHANGELOG.json +++ b/contracts/test-utils/CHANGELOG.json @@ -1,4 +1,49 @@ [ + { + "timestamp": 1693346928, + "version": "5.4.59", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1692368658, + "version": "5.4.58", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1691617396, + "version": "5.4.57", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689974915, + "version": "5.4.56", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689791426, + "version": "5.4.55", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1683749017, "version": "5.4.54", diff --git a/contracts/test-utils/CHANGELOG.md b/contracts/test-utils/CHANGELOG.md index 8a4189378e..cda787a637 100644 --- a/contracts/test-utils/CHANGELOG.md +++ b/contracts/test-utils/CHANGELOG.md @@ -5,6 +5,26 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v5.4.59 - _August 29, 2023_ + + * Dependencies updated + +## v5.4.58 - _August 18, 2023_ + + * Dependencies updated + +## v5.4.57 - _August 9, 2023_ + + * Dependencies updated + +## v5.4.56 - _July 21, 2023_ + + * Dependencies updated + +## v5.4.55 - _July 19, 2023_ + + * Dependencies updated + ## v5.4.54 - _May 10, 2023_ * Dependencies updated diff --git a/contracts/test-utils/package.json b/contracts/test-utils/package.json index bd14f54eee..0d6228c2dc 100644 --- a/contracts/test-utils/package.json +++ b/contracts/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-test-utils", - "version": "5.4.54", + "version": "5.4.59", "engines": { "node": ">=6.12" }, @@ -41,7 +41,7 @@ "dependencies": { "@0x/assert": "^3.0.36", "@0x/base-contract": "^7.0.0", - "@0x/contract-addresses": "^8.7.0", + "@0x/contract-addresses": "^8.12.0", "@0x/dev-utils": "^5.0.2", "@0x/json-schemas": "^6.4.4", "@0x/order-utils": "^10.4.28", diff --git a/contracts/treasury/CHANGELOG.json b/contracts/treasury/CHANGELOG.json index 15d4b0f5b4..f975b697b6 100644 --- a/contracts/treasury/CHANGELOG.json +++ b/contracts/treasury/CHANGELOG.json @@ -1,4 +1,49 @@ [ + { + "timestamp": 1693346928, + "version": "1.4.53", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1692368658, + "version": "1.4.52", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1691617396, + "version": "1.4.51", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689974915, + "version": "1.4.50", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689791426, + "version": "1.4.49", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1683749017, "version": "1.4.48", diff --git a/contracts/treasury/CHANGELOG.md b/contracts/treasury/CHANGELOG.md index 63973fbfe0..0b3d885cdb 100644 --- a/contracts/treasury/CHANGELOG.md +++ b/contracts/treasury/CHANGELOG.md @@ -5,6 +5,26 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.4.53 - _August 29, 2023_ + + * Dependencies updated + +## v1.4.52 - _August 18, 2023_ + + * Dependencies updated + +## v1.4.51 - _August 9, 2023_ + + * Dependencies updated + +## v1.4.50 - _July 21, 2023_ + + * Dependencies updated + +## v1.4.49 - _July 19, 2023_ + + * Dependencies updated + ## v1.4.48 - _May 10, 2023_ * Dependencies updated diff --git a/contracts/treasury/package.json b/contracts/treasury/package.json index 48a9ee05cd..07cd2caa8f 100644 --- a/contracts/treasury/package.json +++ b/contracts/treasury/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-treasury", - "version": "1.4.48", + "version": "1.4.53", "engines": { "node": ">=6.12" }, @@ -46,12 +46,12 @@ "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury", "devDependencies": { "@0x/abi-gen": "^5.8.5", - "@0x/contract-addresses": "^8.7.0", + "@0x/contract-addresses": "^8.12.0", "@0x/contracts-asset-proxy": "^3.7.19", "@0x/contracts-erc20": "3.3.57", "@0x/contracts-gen": "^2.0.50", "@0x/contracts-staking": "^2.0.45", - "@0x/contracts-test-utils": "^5.4.54", + "@0x/contracts-test-utils": "^5.4.59", "@0x/sol-compiler": "^4.8.2", "@0x/ts-doc-gen": "^0.0.28", "@types/isomorphic-fetch": "^0.0.35", @@ -73,7 +73,7 @@ }, "dependencies": { "@0x/base-contract": "^7.0.0", - "@0x/protocol-utils": "^11.22.2", + "@0x/protocol-utils": "^11.24.1", "@0x/subproviders": "^8.0.1", "@0x/types": "^3.3.7", "@0x/typescript-typings": "^5.3.1", diff --git a/contracts/utils/CHANGELOG.json b/contracts/utils/CHANGELOG.json index cd6f1de357..5611e58731 100644 --- a/contracts/utils/CHANGELOG.json +++ b/contracts/utils/CHANGELOG.json @@ -1,4 +1,49 @@ [ + { + "timestamp": 1693346928, + "version": "4.8.51", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1692368658, + "version": "4.8.50", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1691617396, + "version": "4.8.49", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689974915, + "version": "4.8.48", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689791426, + "version": "4.8.47", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1683749017, "version": "4.8.46", diff --git a/contracts/utils/CHANGELOG.md b/contracts/utils/CHANGELOG.md index 54ba0a4db1..82f914a811 100644 --- a/contracts/utils/CHANGELOG.md +++ b/contracts/utils/CHANGELOG.md @@ -5,6 +5,26 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.8.51 - _August 29, 2023_ + + * Dependencies updated + +## v4.8.50 - _August 18, 2023_ + + * Dependencies updated + +## v4.8.49 - _August 9, 2023_ + + * Dependencies updated + +## v4.8.48 - _July 21, 2023_ + + * Dependencies updated + +## v4.8.47 - _July 19, 2023_ + + * Dependencies updated + ## v4.8.46 - _May 10, 2023_ * Dependencies updated diff --git a/contracts/utils/package.json b/contracts/utils/package.json index fc02b5bbe1..0422eebc8f 100644 --- a/contracts/utils/package.json +++ b/contracts/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-utils", - "version": "4.8.46", + "version": "4.8.51", "engines": { "node": ">=6.12" }, @@ -45,7 +45,7 @@ "devDependencies": { "@0x/abi-gen": "^5.8.5", "@0x/contracts-gen": "^2.0.50", - "@0x/contracts-test-utils": "^5.4.54", + "@0x/contracts-test-utils": "^5.4.59", "@0x/dev-utils": "^5.0.2", "@0x/order-utils": "^10.4.28", "@0x/sol-compiler": "^4.8.2", diff --git a/contracts/zero-ex/CHANGELOG.json b/contracts/zero-ex/CHANGELOG.json index 941af42efd..a3d4e3c4cd 100644 --- a/contracts/zero-ex/CHANGELOG.json +++ b/contracts/zero-ex/CHANGELOG.json @@ -1,4 +1,40 @@ [ + { + "version": "0.48.0", + "changes": [ + { + "note": "Add VelodromeV2 support on Base" + } + ], + "timestamp": 1693346928 + }, + { + "version": "0.47.0", + "changes": [ + { + "note": "Add MaverickV1 support on Ethereum, BSC, and Base" + } + ], + "timestamp": 1692368658 + }, + { + "version": "0.46.0", + "changes": [ + { + "note": "Add VelodromeV2 support on Optimism" + } + ], + "timestamp": 1691617396 + }, + { + "timestamp": 1689974915, + "version": "0.45.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "0.45.0", "changes": [ @@ -7,8 +43,15 @@ }, { "note": "Remove Shell and MStable support" + }, + { + "note": "Add Base Mainnet and Goerli BridgeAdapters" + }, + { + "note": "Add Uniswap V3 support on Avalanche and BSC" } - ] + ], + "timestamp": 1689791426 }, { "version": "0.44.0", diff --git a/contracts/zero-ex/CHANGELOG.md b/contracts/zero-ex/CHANGELOG.md index b2a79a29bd..5e8478fadb 100644 --- a/contracts/zero-ex/CHANGELOG.md +++ b/contracts/zero-ex/CHANGELOG.md @@ -5,6 +5,29 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.48.0 - _August 29, 2023_ + + * Add VelodromeV2 support on Base + +## v0.47.0 - _August 18, 2023_ + + * Add MaverickV1 support on Ethereum, BSC, and Base + +## v0.46.0 - _August 9, 2023_ + + * Add VelodromeV2 support on Optimism + +## v0.45.1 - _July 21, 2023_ + + * Dependencies updated + +## v0.45.0 - _July 19, 2023_ + + * Remove Bancor V1 support + * Remove Shell and MStable support + * Add Base Mainnet and Goerli BridgeAdapters + * Add Uniswap V3 support on Avalanche and BSC + ## v0.44.0 - _May 10, 2023_ * Add Trader Joe V2 MixIn to Arbitrum diff --git a/contracts/zero-ex/compiler.json b/contracts/zero-ex/compiler.json index 23ef6ed955..0bbd20919b 100644 --- a/contracts/zero-ex/compiler.json +++ b/contracts/zero-ex/compiler.json @@ -115,6 +115,8 @@ "./contracts/src/transformers/bridges/ArbitrumBridgeAdapter.sol", "./contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol", "./contracts/src/transformers/bridges/BSCBridgeAdapter.sol", + "./contracts/src/transformers/bridges/BaseBridgeAdapter.sol", + "./contracts/src/transformers/bridges/BaseGoerliBridgeAdapter.sol", "./contracts/src/transformers/bridges/BridgeProtocols.sol", "./contracts/src/transformers/bridges/CeloBridgeAdapter.sol", "./contracts/src/transformers/bridges/EthereumBridgeAdapter.sol", diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol index f2ce9879c6..c8f836b565 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol @@ -28,6 +28,7 @@ import "./mixins/MixinNerve.sol"; import "./mixins/MixinPlatypus.sol"; import "./mixins/MixinTraderJoeV2.sol"; import "./mixins/MixinUniswapV2.sol"; +import "./mixins/MixinUniswapV3.sol"; import "./mixins/MixinWOOFi.sol"; import "./mixins/MixinZeroExBridge.sol"; @@ -44,6 +45,7 @@ contract AvalancheBridgeAdapter is MixinPlatypus, MixinTraderJoeV2, MixinUniswapV2, + MixinUniswapV3, MixinWOOFi, MixinZeroExBridge { @@ -72,6 +74,11 @@ contract AvalancheBridgeAdapter is return (0, true); } boughtAmount = _tradeUniswapV2(buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.UNISWAPV3) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeUniswapV3(sellToken, sellAmount, order.bridgeData); } else if (protocolId == BridgeProtocols.NERVE) { if (dryRun) { return (0, true); diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol index de7809a9a6..00a79320ca 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/BSCBridgeAdapter.sol @@ -22,9 +22,11 @@ import "./mixins/MixinDodo.sol"; import "./mixins/MixinDodoV2.sol"; import "./mixins/MixinKyberDmm.sol"; import "./mixins/MixinKyberElastic.sol"; +import "./mixins/MixinMaverickV1.sol"; import "./mixins/MixinMooniswap.sol"; import "./mixins/MixinNerve.sol"; import "./mixins/MixinUniswapV2.sol"; +import "./mixins/MixinUniswapV3.sol"; import "./mixins/MixinWOOFi.sol"; import "./mixins/MixinZeroExBridge.sol"; @@ -35,9 +37,11 @@ contract BSCBridgeAdapter is MixinDodoV2, MixinKyberDmm, MixinKyberElastic, + MixinMaverickV1, MixinMooniswap, MixinNerve, MixinUniswapV2, + MixinUniswapV3, MixinWOOFi, MixinZeroExBridge { @@ -61,6 +65,11 @@ contract BSCBridgeAdapter is return (0, true); } boughtAmount = _tradeUniswapV2(buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.UNISWAPV3) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeUniswapV3(sellToken, sellAmount, order.bridgeData); } else if (protocolId == BridgeProtocols.MOONISWAP) { if (dryRun) { return (0, true); @@ -96,6 +105,11 @@ contract BSCBridgeAdapter is return (0, true); } boughtAmount = _tradeWOOFi(sellToken, buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.MAVERICKV1) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeMaverickV1(sellToken, buyToken, sellAmount, order.bridgeData); } else if (protocolId == BridgeProtocols.UNKNOWN) { if (dryRun) { return (0, true); diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/BaseBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/BaseBridgeAdapter.sol new file mode 100644 index 0000000000..aec3042eb4 --- /dev/null +++ b/contracts/zero-ex/contracts/src/transformers/bridges/BaseBridgeAdapter.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "./AbstractBridgeAdapter.sol"; +import "./BridgeProtocols.sol"; +import "./mixins/MixinUniswapV3.sol"; +import "./mixins/MixinUniswapV2.sol"; +import "./mixins/MixinBalancerV2Batch.sol"; +import "./mixins/MixinCurve.sol"; +import "./mixins/MixinCurveV2.sol"; +import "./mixins/MixinMaverickV1.sol"; +import "./mixins/MixinSolidly.sol"; +import "./mixins/MixinVelodromeV2.sol"; + +contract BaseBridgeAdapter is + AbstractBridgeAdapter(8453, "Base"), + MixinUniswapV3, + MixinUniswapV2, + MixinBalancerV2Batch, + MixinCurve, + MixinCurveV2, + MixinMaverickV1, + MixinSolidly, + MixinVelodromeV2 +{ + constructor(IEtherToken weth) public MixinCurve(weth) {} + + function _trade( + BridgeOrder memory order, + IERC20Token sellToken, + IERC20Token buyToken, + uint256 sellAmount, + bool dryRun + ) internal override returns (uint256 boughtAmount, bool supportedSource) { + uint128 protocolId = uint128(uint256(order.source) >> 128); + if (protocolId == BridgeProtocols.CURVE) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeCurve(sellToken, buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.CURVEV2) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeCurveV2(sellToken, buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.UNISWAPV3) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeUniswapV3(sellToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.UNISWAPV2) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeUniswapV2(buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.SOLIDLY) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeSolidly(sellToken, buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.BALANCERV2BATCH) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeBalancerV2Batch(sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.MAVERICKV1) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeMaverickV1(sellToken, buyToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.VELODROMEV2) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeVelodromeV2(sellToken, sellAmount, order.bridgeData); + } + emit BridgeFill(order.source, sellToken, buyToken, sellAmount, boughtAmount); + } +} diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/BaseGoerliBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/BaseGoerliBridgeAdapter.sol new file mode 100644 index 0000000000..c77e1278b6 --- /dev/null +++ b/contracts/zero-ex/contracts/src/transformers/bridges/BaseGoerliBridgeAdapter.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "./AbstractBridgeAdapter.sol"; +import "./BridgeProtocols.sol"; +import "./mixins/MixinUniswapV3.sol"; +import "./mixins/MixinUniswapV2.sol"; + +contract BaseGoerliBridgeAdapter is AbstractBridgeAdapter(84531, "Base Goerli"), MixinUniswapV3, MixinUniswapV2 { + function _trade( + BridgeOrder memory order, + IERC20Token sellToken, + IERC20Token buyToken, + uint256 sellAmount, + bool dryRun + ) internal override returns (uint256 boughtAmount, bool supportedSource) { + uint128 protocolId = uint128(uint256(order.source) >> 128); + if (protocolId == BridgeProtocols.UNISWAPV3) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeUniswapV3(sellToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.UNISWAPV2) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeUniswapV2(buyToken, sellAmount, order.bridgeData); + } + emit BridgeFill(order.source, sellToken, buyToken, sellAmount, boughtAmount); + } +} diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/BridgeProtocols.sol b/contracts/zero-ex/contracts/src/transformers/bridges/BridgeProtocols.sol index 85e5897219..6cd62ad9d4 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/BridgeProtocols.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/BridgeProtocols.sol @@ -57,4 +57,6 @@ library BridgeProtocols { uint128 internal constant KYBERELASTIC = 33; uint128 internal constant BARTER = 34; uint128 internal constant TRADERJOEV2 = 35; + uint128 internal constant VELODROMEV2 = 36; + uint128 internal constant MAVERICKV1 = 37; } diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol index ea5be816b0..d2ce9c2304 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/EthereumBridgeAdapter.sol @@ -32,6 +32,7 @@ import "./mixins/MixinKyberDmm.sol"; import "./mixins/MixinKyberElastic.sol"; import "./mixins/MixinLido.sol"; import "./mixins/MixinMakerPSM.sol"; +import "./mixins/MixinMaverickV1.sol"; import "./mixins/MixinNerve.sol"; import "./mixins/MixinSynthetix.sol"; import "./mixins/MixinUniswap.sol"; @@ -56,6 +57,7 @@ contract EthereumBridgeAdapter is MixinKyberElastic, MixinLido, MixinMakerPSM, + MixinMaverickV1, MixinNerve, MixinSynthetix, MixinUniswap, @@ -175,6 +177,11 @@ contract EthereumBridgeAdapter is return (0, true); } boughtAmount = _tradeBarter(sellToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.MAVERICKV1) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeMaverickV1(sellToken, buyToken, sellAmount, order.bridgeData); } else if (protocolId == BridgeProtocols.UNKNOWN) { if (dryRun) { return (0, true); diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol b/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol index 224dd6f9d4..82081a15ca 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/OptimismBridgeAdapter.sol @@ -26,6 +26,7 @@ import "./mixins/MixinNerve.sol"; import "./mixins/MixinSolidly.sol"; import "./mixins/MixinSynthetix.sol"; import "./mixins/MixinUniswapV3.sol"; +import "./mixins/MixinVelodromeV2.sol"; import "./mixins/MixinWOOFi.sol"; import "./mixins/MixinZeroExBridge.sol"; @@ -39,6 +40,7 @@ contract OptimismBridgeAdapter is MixinNerve, MixinSynthetix, MixinUniswapV3, + MixinVelodromeV2, MixinSolidly, MixinWOOFi, MixinZeroExBridge @@ -109,6 +111,11 @@ contract OptimismBridgeAdapter is return (0, true); } boughtAmount = _tradeKyberElastic(sellToken, sellAmount, order.bridgeData); + } else if (protocolId == BridgeProtocols.VELODROMEV2) { + if (dryRun) { + return (0, true); + } + boughtAmount = _tradeVelodromeV2(sellToken, sellAmount, order.bridgeData); } emit BridgeFill(order.source, sellToken, buyToken, sellAmount, boughtAmount); diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinMaverickV1.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinMaverickV1.sol new file mode 100644 index 0000000000..60a8ef5abf --- /dev/null +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinMaverickV1.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "@0x/contracts-erc20/src/v06/LibERC20TokenV06.sol"; +import "@0x/contracts-erc20/src/IERC20Token.sol"; + +interface IMaverickV1Router { + struct ExactInputSingleParams { + address tokenIn; + address tokenOut; + address pool; + address recipient; + uint256 deadline; + uint256 amountIn; + uint256 amountOutMinimum; + uint256 sqrtPriceLimitD18; + } + + function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); +} + +contract MixinMaverickV1 { + using LibERC20TokenV06 for IERC20Token; + + function _tradeMaverickV1( + IERC20Token sellToken, + IERC20Token buyToken, + uint256 sellAmount, + bytes memory bridgeData + ) internal returns (uint256 boughtAmount) { + (IMaverickV1Router router, address pool) = abi.decode(bridgeData, (IMaverickV1Router, address)); + + // Grant the MaverickV1 router an allowance to sell the sellToken + sellToken.approveIfBelow(address(router), sellAmount); + + boughtAmount = router.exactInputSingle( + IMaverickV1Router.ExactInputSingleParams({ + tokenIn: address(sellToken), + tokenOut: address(buyToken), + pool: pool, + recipient: address(this), + deadline: block.timestamp, + amountIn: sellAmount, + amountOutMinimum: 1, + sqrtPriceLimitD18: 0 + }) + ); + } +} diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol index 1aedd28cc0..660938a8db 100644 --- a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol @@ -31,6 +31,18 @@ interface IUniswapV3Router { function exactInput(ExactInputParams memory params) external payable returns (uint256 amountOut); } +// https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/interfaces/IV3SwapRouter.sol +interface IUniswapV3Router2 { + struct ExactInputParams { + bytes path; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + } + + function exactInput(ExactInputParams memory params) external payable returns (uint256 amountOut); +} + contract MixinUniswapV3 { using LibERC20TokenV06 for IERC20Token; @@ -39,19 +51,30 @@ contract MixinUniswapV3 { uint256 sellAmount, bytes memory bridgeData ) internal returns (uint256 boughtAmount) { - (IUniswapV3Router router, bytes memory path) = abi.decode(bridgeData, (IUniswapV3Router, bytes)); + (address router, bytes memory path, uint256 routerVersion) = abi.decode(bridgeData, (address, bytes, uint256)); // Grant the Uniswap router an allowance to sell the sell token. - sellToken.approveIfBelow(address(router), sellAmount); + sellToken.approveIfBelow(router, sellAmount); - boughtAmount = router.exactInput( - IUniswapV3Router.ExactInputParams({ - path: path, - recipient: address(this), - deadline: block.timestamp, - amountIn: sellAmount, - amountOutMinimum: 1 - }) - ); + if (routerVersion != 2) { + boughtAmount = IUniswapV3Router(router).exactInput( + IUniswapV3Router.ExactInputParams({ + path: path, + recipient: address(this), + deadline: block.timestamp, + amountIn: sellAmount, + amountOutMinimum: 1 + }) + ); + } else { + boughtAmount = IUniswapV3Router2(router).exactInput( + IUniswapV3Router2.ExactInputParams({ + path: path, + recipient: address(this), + amountIn: sellAmount, + amountOutMinimum: 1 + }) + ); + } } } diff --git a/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinVelodromeV2.sol b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinVelodromeV2.sol new file mode 100644 index 0000000000..baa34ccc92 --- /dev/null +++ b/contracts/zero-ex/contracts/src/transformers/bridges/mixins/MixinVelodromeV2.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "@0x/contracts-erc20/src/v06/LibERC20TokenV06.sol"; +import "@0x/contracts-erc20/src/IERC20Token.sol"; + +interface IVelodromeV2Router { + struct Route { + address from; + address to; + bool stable; + address factory; + } + + /// @notice Swap one token for another + /// @param amountIn Amount of token in + /// @param amountOutMin Minimum amount of desired token received + /// @param routes Array of trade routes used in the swap + /// @param to Recipient of the tokens received + /// @param deadline Deadline to receive tokens + /// @return amounts Array of amounts returned per route + function swapExactTokensForTokens( + uint256 amountIn, + uint256 amountOutMin, + Route[] calldata routes, + address to, + uint256 deadline + ) external returns (uint256[] memory amounts); +} + +contract MixinVelodromeV2 { + using LibERC20TokenV06 for IERC20Token; + + function _tradeVelodromeV2( + IERC20Token sellToken, + uint256 sellAmount, + bytes memory bridgeData + ) internal returns (uint256 boughtAmount) { + (IVelodromeV2Router router, IVelodromeV2Router.Route[] memory routes) = abi.decode( + bridgeData, + (IVelodromeV2Router, IVelodromeV2Router.Route[]) + ); + sellToken.approveIfBelow(address(router), sellAmount); + + uint256[] memory amounts = router.swapExactTokensForTokens( + sellAmount, + 1, + routes, + address(this), + block.timestamp + 1 + ); + + return amounts[amounts.length - 1]; + } +} diff --git a/contracts/zero-ex/package.json b/contracts/zero-ex/package.json index 06530d1b7b..6934a9df0b 100644 --- a/contracts/zero-ex/package.json +++ b/contracts/zero-ex/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-zero-ex", - "version": "0.44.0", + "version": "0.48.0", "engines": { "node": ">=6.12" }, @@ -36,9 +36,9 @@ "typechain": "typechain --target=ethers-v5 --out-dir='typechain-wrappers' './foundry-artifacts/**/*.json'" }, "config": { - "publicInterfaceContracts": "IZeroEx,ZeroEx,FullMigration,InitialMigration,IFlashWallet,IERC20Transformer,IOwnableFeature,ISimpleFunctionRegistryFeature,ITransformERC20Feature,FillQuoteTransformer,PayTakerTransformer,PositiveSlippageFeeTransformer,WethTransformer,OwnableFeature,SimpleFunctionRegistryFeature,TransformERC20Feature,AffiliateFeeTransformer,MetaTransactionsFeature,LogMetadataTransformer,LiquidityProviderFeature,ILiquidityProviderFeature,NativeOrdersFeature,INativeOrdersFeature,FeeCollectorController,FeeCollector,CurveLiquidityProvider,BatchFillNativeOrdersFeature,IBatchFillNativeOrdersFeature,MultiplexFeature,IMultiplexFeature,OtcOrdersFeature,IOtcOrdersFeature,AvalancheBridgeAdapter,BSCBridgeAdapter,CeloBridgeAdapter,EthereumBridgeAdapter,FantomBridgeAdapter,OptimismBridgeAdapter,PolygonBridgeAdapter,MetaTransactionsFeatureV2", + "publicInterfaceContracts": "IZeroEx,ZeroEx,FullMigration,InitialMigration,IFlashWallet,IERC20Transformer,IOwnableFeature,ISimpleFunctionRegistryFeature,ITransformERC20Feature,FillQuoteTransformer,PayTakerTransformer,PositiveSlippageFeeTransformer,WethTransformer,OwnableFeature,SimpleFunctionRegistryFeature,TransformERC20Feature,AffiliateFeeTransformer,MetaTransactionsFeature,LogMetadataTransformer,LiquidityProviderFeature,ILiquidityProviderFeature,NativeOrdersFeature,INativeOrdersFeature,FeeCollectorController,FeeCollector,CurveLiquidityProvider,BatchFillNativeOrdersFeature,IBatchFillNativeOrdersFeature,MultiplexFeature,IMultiplexFeature,OtcOrdersFeature,IOtcOrdersFeature,AvalancheBridgeAdapter,BaseGoerliBridgeAdapter,BaseBridgeAdapter,BSCBridgeAdapter,CeloBridgeAdapter,EthereumBridgeAdapter,FantomBridgeAdapter,OptimismBridgeAdapter,PolygonBridgeAdapter,MetaTransactionsFeatureV2", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually.", - "abis": "./test/generated-artifacts/@(AbstractBridgeAdapter|AffiliateFeeTransformer|ArbitrumBridgeAdapter|AvalancheBridgeAdapter|BSCBridgeAdapter|BatchFillNativeOrdersFeature|BootstrapFeature|BridgeProtocols|CeloBridgeAdapter|CurveLiquidityProvider|ERC1155OrdersFeature|ERC165Feature|ERC721OrdersFeature|EthereumBridgeAdapter|FantomBridgeAdapter|FeeCollector|FeeCollectorController|FillQuoteTransformer|FixinCommon|FixinEIP712|FixinERC1155Spender|FixinERC721Spender|FixinProtocolFees|FixinReentrancyGuard|FixinTokenSpender|FlashWallet|FullMigration|FundRecoveryFeature|IBatchFillNativeOrdersFeature|IBootstrapFeature|IBridgeAdapter|IERC1155OrdersFeature|IERC1155Token|IERC165Feature|IERC20Bridge|IERC20Transformer|IERC721OrdersFeature|IERC721Token|IFeature|IFeeRecipient|IFlashWallet|IFundRecoveryFeature|ILiquidityProvider|ILiquidityProviderFeature|ILiquidityProviderSandbox|IMetaTransactionsFeature|IMetaTransactionsFeatureV2|IMooniswapPool|IMultiplexFeature|INativeOrdersEvents|INativeOrdersFeature|IOtcOrdersFeature|IOwnableFeature|IPancakeSwapFeature|IPropertyValidator|ISimpleFunctionRegistryFeature|IStaking|ITakerCallback|ITestSimpleFunctionRegistryFeature|ITokenSpenderFeature|ITransformERC20Feature|IUniswapFeature|IUniswapV2Pair|IUniswapV3Feature|IUniswapV3Pool|IZeroEx|InitialMigration|LibBootstrap|LibCommonRichErrors|LibERC1155OrdersStorage|LibERC20Transformer|LibERC721OrdersStorage|LibFeeCollector|LibLiquidityProviderRichErrors|LibMetaTransactionsRichErrors|LibMetaTransactionsStorage|LibMigrate|LibNFTOrder|LibNFTOrdersRichErrors|LibNativeOrder|LibNativeOrdersRichErrors|LibNativeOrdersStorage|LibOtcOrdersStorage|LibOwnableRichErrors|LibOwnableStorage|LibProxyRichErrors|LibProxyStorage|LibReentrancyGuardStorage|LibSignature|LibSignatureRichErrors|LibSimpleFunctionRegistryRichErrors|LibSimpleFunctionRegistryStorage|LibStorage|LibTransformERC20RichErrors|LibTransformERC20Storage|LibWalletRichErrors|LiquidityProviderFeature|LiquidityProviderSandbox|LogMetadataTransformer|MetaTransactionsFeature|MetaTransactionsFeatureV2|MixinAaveV2|MixinBalancer|MixinBalancerV2Batch|MixinBancorV3|MixinCompound|MixinCryptoCom|MixinCurve|MixinCurveV2|MixinDodo|MixinDodoV2|MixinGMX|MixinKyberDmm|MixinLido|MixinMakerPSM|MixinMooniswap|MixinNerve|MixinPlatypus|MixinSolidly|MixinSynthetix|MixinUniswap|MixinUniswapV2|MixinUniswapV3|MixinZeroExBridge|MooniswapLiquidityProvider|MultiplexFeature|MultiplexLiquidityProvider|MultiplexOtc|MultiplexRfq|MultiplexTransformERC20|MultiplexUniswapV2|MultiplexUniswapV3|NFTOrders|NativeOrdersCancellation|NativeOrdersFeature|NativeOrdersInfo|NativeOrdersProtocolFees|NativeOrdersSettlement|OptimismBridgeAdapter|OtcOrdersFeature|OwnableFeature|PancakeSwapFeature|PayTakerTransformer|PermissionlessTransformerDeployer|PolygonBridgeAdapter|PositiveSlippageFeeTransformer|SimpleFunctionRegistryFeature|TestCurve|TestDelegateCaller|TestFeeCollectorController|TestFeeRecipient|TestFillQuoteTransformerBridge|TestFillQuoteTransformerExchange|TestFillQuoteTransformerHost|TestFixinProtocolFees|TestFixinTokenSpender|TestFullMigration|TestInitialMigration|TestLibNativeOrder|TestLibSignature|TestLiquidityProvider|TestMetaTransactionsNativeOrdersFeature|TestMetaTransactionsTransformERC20Feature|TestMigrator|TestMintTokenERC20Transformer|TestMintableERC1155Token|TestMintableERC20Token|TestMintableERC721Token|TestMooniswap|TestNFTOrderPresigner|TestNativeOrdersFeature|TestNoEthRecipient|TestOrderSignerRegistryWithContractWallet|TestPermissionlessTransformerDeployerSuicidal|TestPermissionlessTransformerDeployerTransformer|TestPropertyValidator|TestRfqOriginRegistration|TestSimpleFunctionRegistryFeatureImpl1|TestSimpleFunctionRegistryFeatureImpl2|TestStaking|TestTokenSpenderERC20Token|TestTransformERC20|TestTransformerBase|TestTransformerDeployerTransformer|TestTransformerHost|TestUniswapV2Factory|TestUniswapV2Pool|TestUniswapV3Factory|TestUniswapV3Feature|TestUniswapV3Pool|TestWeth|TestWethTransformerHost|TransformERC20Feature|Transformer|TransformerDeployer|UniswapFeature|UniswapV3Feature|WethTransformer|ZeroEx|ZeroExOptimized).json" + "abis": "./test/generated-artifacts/@(AbstractBridgeAdapter|AffiliateFeeTransformer|ArbitrumBridgeAdapter|AvalancheBridgeAdapter|BSCBridgeAdapter|BaseBridgeAdapter|BaseGoerliBridgeAdapter|BatchFillNativeOrdersFeature|BootstrapFeature|BridgeProtocols|CeloBridgeAdapter|CurveLiquidityProvider|ERC1155OrdersFeature|ERC165Feature|ERC721OrdersFeature|EthereumBridgeAdapter|FantomBridgeAdapter|FeeCollector|FeeCollectorController|FillQuoteTransformer|FixinCommon|FixinEIP712|FixinERC1155Spender|FixinERC721Spender|FixinProtocolFees|FixinReentrancyGuard|FixinTokenSpender|FlashWallet|FullMigration|FundRecoveryFeature|IBatchFillNativeOrdersFeature|IBootstrapFeature|IBridgeAdapter|IERC1155OrdersFeature|IERC1155Token|IERC165Feature|IERC20Bridge|IERC20Transformer|IERC721OrdersFeature|IERC721Token|IFeature|IFeeRecipient|IFlashWallet|IFundRecoveryFeature|ILiquidityProvider|ILiquidityProviderFeature|ILiquidityProviderSandbox|IMetaTransactionsFeature|IMetaTransactionsFeatureV2|IMooniswapPool|IMultiplexFeature|INativeOrdersEvents|INativeOrdersFeature|IOtcOrdersFeature|IOwnableFeature|IPancakeSwapFeature|IPropertyValidator|ISimpleFunctionRegistryFeature|IStaking|ITakerCallback|ITestSimpleFunctionRegistryFeature|ITokenSpenderFeature|ITransformERC20Feature|IUniswapFeature|IUniswapV2Pair|IUniswapV3Feature|IUniswapV3Pool|IZeroEx|InitialMigration|LibBootstrap|LibCommonRichErrors|LibERC1155OrdersStorage|LibERC20Transformer|LibERC721OrdersStorage|LibFeeCollector|LibLiquidityProviderRichErrors|LibMetaTransactionsRichErrors|LibMetaTransactionsStorage|LibMigrate|LibNFTOrder|LibNFTOrdersRichErrors|LibNativeOrder|LibNativeOrdersRichErrors|LibNativeOrdersStorage|LibOtcOrdersStorage|LibOwnableRichErrors|LibOwnableStorage|LibProxyRichErrors|LibProxyStorage|LibReentrancyGuardStorage|LibSignature|LibSignatureRichErrors|LibSimpleFunctionRegistryRichErrors|LibSimpleFunctionRegistryStorage|LibStorage|LibTransformERC20RichErrors|LibTransformERC20Storage|LibWalletRichErrors|LiquidityProviderFeature|LiquidityProviderSandbox|LogMetadataTransformer|MetaTransactionsFeature|MetaTransactionsFeatureV2|MixinAaveV2|MixinBalancer|MixinBalancerV2Batch|MixinBancorV3|MixinCompound|MixinCryptoCom|MixinCurve|MixinCurveV2|MixinDodo|MixinDodoV2|MixinGMX|MixinKyberDmm|MixinLido|MixinMakerPSM|MixinMooniswap|MixinNerve|MixinPlatypus|MixinSolidly|MixinSynthetix|MixinUniswap|MixinUniswapV2|MixinUniswapV3|MixinZeroExBridge|MooniswapLiquidityProvider|MultiplexFeature|MultiplexLiquidityProvider|MultiplexOtc|MultiplexRfq|MultiplexTransformERC20|MultiplexUniswapV2|MultiplexUniswapV3|NFTOrders|NativeOrdersCancellation|NativeOrdersFeature|NativeOrdersInfo|NativeOrdersProtocolFees|NativeOrdersSettlement|OptimismBridgeAdapter|OtcOrdersFeature|OwnableFeature|PancakeSwapFeature|PayTakerTransformer|PermissionlessTransformerDeployer|PolygonBridgeAdapter|PositiveSlippageFeeTransformer|SimpleFunctionRegistryFeature|TestCurve|TestDelegateCaller|TestFeeCollectorController|TestFeeRecipient|TestFillQuoteTransformerBridge|TestFillQuoteTransformerExchange|TestFillQuoteTransformerHost|TestFixinProtocolFees|TestFixinTokenSpender|TestFullMigration|TestInitialMigration|TestLibNativeOrder|TestLibSignature|TestLiquidityProvider|TestMetaTransactionsNativeOrdersFeature|TestMetaTransactionsTransformERC20Feature|TestMigrator|TestMintTokenERC20Transformer|TestMintableERC1155Token|TestMintableERC20Token|TestMintableERC721Token|TestMooniswap|TestNFTOrderPresigner|TestNativeOrdersFeature|TestNoEthRecipient|TestOrderSignerRegistryWithContractWallet|TestPermissionlessTransformerDeployerSuicidal|TestPermissionlessTransformerDeployerTransformer|TestPropertyValidator|TestRfqOriginRegistration|TestSimpleFunctionRegistryFeatureImpl1|TestSimpleFunctionRegistryFeatureImpl2|TestStaking|TestTokenSpenderERC20Token|TestTransformERC20|TestTransformerBase|TestTransformerDeployerTransformer|TestTransformerHost|TestUniswapV2Factory|TestUniswapV2Pool|TestUniswapV3Factory|TestUniswapV3Feature|TestUniswapV3Pool|TestWeth|TestWethTransformerHost|TransformERC20Feature|Transformer|TransformerDeployer|UniswapFeature|UniswapV3Feature|WethTransformer|ZeroEx|ZeroExOptimized).json" }, "repository": { "type": "git", @@ -51,10 +51,10 @@ "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/zero-ex", "devDependencies": { "@0x/abi-gen": "^5.8.5", - "@0x/contract-addresses": "^8.7.0", + "@0x/contract-addresses": "^8.12.0", "@0x/contracts-erc20": "^3.3.57", "@0x/contracts-gen": "^2.0.50", - "@0x/contracts-test-utils": "^5.4.54", + "@0x/contracts-test-utils": "^5.4.59", "@0x/dev-utils": "^5.0.2", "@0x/order-utils": "^10.4.28", "@0x/sol-compiler": "^4.8.2", @@ -80,7 +80,7 @@ }, "dependencies": { "@0x/base-contract": "^7.0.0", - "@0x/protocol-utils": "^11.22.2", + "@0x/protocol-utils": "^11.24.1", "@0x/subproviders": "^8.0.1", "@0x/types": "^3.3.7", "@0x/typescript-typings": "^5.3.1", diff --git a/contracts/zero-ex/src/artifacts.ts b/contracts/zero-ex/src/artifacts.ts index 654429c0bc..3211f56c39 100644 --- a/contracts/zero-ex/src/artifacts.ts +++ b/contracts/zero-ex/src/artifacts.ts @@ -7,6 +7,8 @@ import { ContractArtifact } from 'ethereum-types'; import * as AffiliateFeeTransformer from '../generated-artifacts/AffiliateFeeTransformer.json'; import * as AvalancheBridgeAdapter from '../generated-artifacts/AvalancheBridgeAdapter.json'; +import * as BaseBridgeAdapter from '../generated-artifacts/BaseBridgeAdapter.json'; +import * as BaseGoerliBridgeAdapter from '../generated-artifacts/BaseGoerliBridgeAdapter.json'; import * as BatchFillNativeOrdersFeature from '../generated-artifacts/BatchFillNativeOrdersFeature.json'; import * as BSCBridgeAdapter from '../generated-artifacts/BSCBridgeAdapter.json'; import * as CeloBridgeAdapter from '../generated-artifacts/CeloBridgeAdapter.json'; @@ -79,6 +81,8 @@ export const artifacts = { OtcOrdersFeature: OtcOrdersFeature as ContractArtifact, IOtcOrdersFeature: IOtcOrdersFeature as ContractArtifact, AvalancheBridgeAdapter: AvalancheBridgeAdapter as ContractArtifact, + BaseGoerliBridgeAdapter: BaseGoerliBridgeAdapter as ContractArtifact, + BaseBridgeAdapter: BaseBridgeAdapter as ContractArtifact, BSCBridgeAdapter: BSCBridgeAdapter as ContractArtifact, CeloBridgeAdapter: CeloBridgeAdapter as ContractArtifact, EthereumBridgeAdapter: EthereumBridgeAdapter as ContractArtifact, diff --git a/contracts/zero-ex/src/wrappers.ts b/contracts/zero-ex/src/wrappers.ts index 785fbe514b..cab7ff3d91 100644 --- a/contracts/zero-ex/src/wrappers.ts +++ b/contracts/zero-ex/src/wrappers.ts @@ -6,6 +6,8 @@ export * from '../generated-wrappers/affiliate_fee_transformer'; export * from '../generated-wrappers/avalanche_bridge_adapter'; export * from '../generated-wrappers/b_s_c_bridge_adapter'; +export * from '../generated-wrappers/base_bridge_adapter'; +export * from '../generated-wrappers/base_goerli_bridge_adapter'; export * from '../generated-wrappers/batch_fill_native_orders_feature'; export * from '../generated-wrappers/celo_bridge_adapter'; export * from '../generated-wrappers/curve_liquidity_provider'; diff --git a/contracts/zero-ex/test/artifacts.ts b/contracts/zero-ex/test/artifacts.ts index ec9e2389a2..c3de614bcb 100644 --- a/contracts/zero-ex/test/artifacts.ts +++ b/contracts/zero-ex/test/artifacts.ts @@ -9,6 +9,8 @@ import * as AbstractBridgeAdapter from '../test/generated-artifacts/AbstractBrid import * as AffiliateFeeTransformer from '../test/generated-artifacts/AffiliateFeeTransformer.json'; import * as ArbitrumBridgeAdapter from '../test/generated-artifacts/ArbitrumBridgeAdapter.json'; import * as AvalancheBridgeAdapter from '../test/generated-artifacts/AvalancheBridgeAdapter.json'; +import * as BaseBridgeAdapter from '../test/generated-artifacts/BaseBridgeAdapter.json'; +import * as BaseGoerliBridgeAdapter from '../test/generated-artifacts/BaseGoerliBridgeAdapter.json'; import * as BatchFillNativeOrdersFeature from '../test/generated-artifacts/BatchFillNativeOrdersFeature.json'; import * as BootstrapFeature from '../test/generated-artifacts/BootstrapFeature.json'; import * as BridgeProtocols from '../test/generated-artifacts/BridgeProtocols.json'; @@ -319,6 +321,8 @@ export const artifacts = { ArbitrumBridgeAdapter: ArbitrumBridgeAdapter as ContractArtifact, AvalancheBridgeAdapter: AvalancheBridgeAdapter as ContractArtifact, BSCBridgeAdapter: BSCBridgeAdapter as ContractArtifact, + BaseBridgeAdapter: BaseBridgeAdapter as ContractArtifact, + BaseGoerliBridgeAdapter: BaseGoerliBridgeAdapter as ContractArtifact, BridgeProtocols: BridgeProtocols as ContractArtifact, CeloBridgeAdapter: CeloBridgeAdapter as ContractArtifact, EthereumBridgeAdapter: EthereumBridgeAdapter as ContractArtifact, diff --git a/contracts/zero-ex/test/wrappers.ts b/contracts/zero-ex/test/wrappers.ts index 0956860c25..084945b18b 100644 --- a/contracts/zero-ex/test/wrappers.ts +++ b/contracts/zero-ex/test/wrappers.ts @@ -8,6 +8,8 @@ export * from '../test/generated-wrappers/affiliate_fee_transformer'; export * from '../test/generated-wrappers/arbitrum_bridge_adapter'; export * from '../test/generated-wrappers/avalanche_bridge_adapter'; export * from '../test/generated-wrappers/b_s_c_bridge_adapter'; +export * from '../test/generated-wrappers/base_bridge_adapter'; +export * from '../test/generated-wrappers/base_goerli_bridge_adapter'; export * from '../test/generated-wrappers/batch_fill_native_orders_feature'; export * from '../test/generated-wrappers/bootstrap_feature'; export * from '../test/generated-wrappers/bridge_protocols'; diff --git a/contracts/zero-ex/tests/transformers/bridges/AvalancheBridgeAdapterTest.t.sol b/contracts/zero-ex/tests/transformers/bridges/AvalancheBridgeAdapterTest.t.sol new file mode 100644 index 0000000000..feba5de135 --- /dev/null +++ b/contracts/zero-ex/tests/transformers/bridges/AvalancheBridgeAdapterTest.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "forge-std/Test.sol"; +import "../../../contracts/src/transformers/bridges/AvalancheBridgeAdapter.sol"; +import "../../../contracts/src/transformers/bridges/BridgeProtocols.sol"; + +contract AvalancheBridgeAdapterTest is Test { + address constant WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7; + + AvalancheBridgeAdapter private adapter; + + function setUp() public { + vm.chainId(43114); + adapter = new AvalancheBridgeAdapter(IEtherToken(WAVAX)); + } + + function testSupportsUniswapV3() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.UNISWAPV3) << 128))); + } +} diff --git a/contracts/zero-ex/tests/transformers/bridges/BSCBridgeAdapterTest.t.sol b/contracts/zero-ex/tests/transformers/bridges/BSCBridgeAdapterTest.t.sol new file mode 100644 index 0000000000..f9d9867d7e --- /dev/null +++ b/contracts/zero-ex/tests/transformers/bridges/BSCBridgeAdapterTest.t.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "forge-std/Test.sol"; +import "../../../contracts/src/transformers/bridges/BSCBridgeAdapter.sol"; +import "../../../contracts/src/transformers/bridges/BridgeProtocols.sol"; + +contract BSCBridgeAdapterTest is Test { + address constant WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; + + BSCBridgeAdapter private adapter; + + function setUp() public { + vm.chainId(56); + adapter = new BSCBridgeAdapter(IEtherToken(WBNB)); + } + + function testSupportsUniswapV3() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.UNISWAPV3) << 128))); + } + + function testSupportMaverickV1() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.MAVERICKV1) << 128))); + } +} diff --git a/contracts/zero-ex/tests/transformers/bridges/BaseBridgeAdapterTest.t.sol b/contracts/zero-ex/tests/transformers/bridges/BaseBridgeAdapterTest.t.sol new file mode 100644 index 0000000000..c9a708cfbb --- /dev/null +++ b/contracts/zero-ex/tests/transformers/bridges/BaseBridgeAdapterTest.t.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "forge-std/Test.sol"; +import "../../../contracts/src/transformers/bridges/BaseBridgeAdapter.sol"; +import "../../../contracts/src/transformers/bridges/BridgeProtocols.sol"; + +contract BaseBridgeAdapterTest is Test { + address constant WETH = 0x4200000000000000000000000000000000000006; + + BaseBridgeAdapter private adapter; + + function setUp() public { + vm.chainId(8453); + adapter = new BaseBridgeAdapter(IEtherToken(WETH)); + } + + function testSupportsUniswapV3() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.UNISWAPV3) << 128))); + } + + function testSupportMaverickV1() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.MAVERICKV1) << 128))); + } + + function testSupportSolidly() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.SOLIDLY) << 128))); + } + + function testSupportVelodromeV2() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.VELODROMEV2) << 128))); + } +} diff --git a/contracts/zero-ex/tests/transformers/bridges/EthereumBridgeAdapterTest.t.sol b/contracts/zero-ex/tests/transformers/bridges/EthereumBridgeAdapterTest.t.sol new file mode 100644 index 0000000000..ea5808cb02 --- /dev/null +++ b/contracts/zero-ex/tests/transformers/bridges/EthereumBridgeAdapterTest.t.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "forge-std/Test.sol"; +import "../../../contracts/src/transformers/bridges/EthereumBridgeAdapter.sol"; +import "../../../contracts/src/transformers/bridges/BridgeProtocols.sol"; + +contract EthereumBridgeAdapterTest is Test { + address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; + + EthereumBridgeAdapter private adapter; + + function setUp() public { + vm.chainId(1); + adapter = new EthereumBridgeAdapter(IEtherToken(WETH)); + } + + function testSupportsUniswapV3() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.UNISWAPV3) << 128))); + } + + function testSupportMaverickV1() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.MAVERICKV1) << 128))); + } +} diff --git a/contracts/zero-ex/tests/transformers/bridges/OptimismBridgeAdapterTest.t.sol b/contracts/zero-ex/tests/transformers/bridges/OptimismBridgeAdapterTest.t.sol new file mode 100644 index 0000000000..d82758d7c0 --- /dev/null +++ b/contracts/zero-ex/tests/transformers/bridges/OptimismBridgeAdapterTest.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + Copyright 2023 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; +pragma experimental ABIEncoderV2; + +import "forge-std/Test.sol"; +import "../../../contracts/src/transformers/bridges/OptimismBridgeAdapter.sol"; +import "../../../contracts/src/transformers/bridges/BridgeProtocols.sol"; + +contract OptimismBridgeAdapterTest is Test { + address constant WETH = 0x4200000000000000000000000000000000000006; + + OptimismBridgeAdapter private adapter; + + function setUp() public { + vm.chainId(10); + adapter = new OptimismBridgeAdapter(IEtherToken(WETH)); + } + + function testSupportVelodromeV2() public { + assertTrue(adapter.isSupportedSource(bytes32(uint256(BridgeProtocols.VELODROMEV2) << 128))); + } +} diff --git a/contracts/zero-ex/tsconfig.json b/contracts/zero-ex/tsconfig.json index ab33e86988..7f8a163219 100644 --- a/contracts/zero-ex/tsconfig.json +++ b/contracts/zero-ex/tsconfig.json @@ -6,6 +6,8 @@ "generated-artifacts/AffiliateFeeTransformer.json", "generated-artifacts/AvalancheBridgeAdapter.json", "generated-artifacts/BSCBridgeAdapter.json", + "generated-artifacts/BaseBridgeAdapter.json", + "generated-artifacts/BaseGoerliBridgeAdapter.json", "generated-artifacts/BatchFillNativeOrdersFeature.json", "generated-artifacts/CeloBridgeAdapter.json", "generated-artifacts/CurveLiquidityProvider.json", @@ -48,6 +50,8 @@ "test/generated-artifacts/ArbitrumBridgeAdapter.json", "test/generated-artifacts/AvalancheBridgeAdapter.json", "test/generated-artifacts/BSCBridgeAdapter.json", + "test/generated-artifacts/BaseBridgeAdapter.json", + "test/generated-artifacts/BaseGoerliBridgeAdapter.json", "test/generated-artifacts/BatchFillNativeOrdersFeature.json", "test/generated-artifacts/BootstrapFeature.json", "test/generated-artifacts/BridgeProtocols.json", diff --git a/packages/contract-addresses/CHANGELOG.json b/packages/contract-addresses/CHANGELOG.json index 115a5facc9..1d43102d58 100644 --- a/packages/contract-addresses/CHANGELOG.json +++ b/packages/contract-addresses/CHANGELOG.json @@ -1,4 +1,52 @@ [ + { + "version": "8.12.0", + "changes": [ + { + "note": "Add VelodromeV2 support on Base" + } + ], + "timestamp": 1693346928 + }, + { + "version": "8.11.0", + "changes": [ + { + "note": "Add MaverickV1 support on Ethereum, BSC, and Base" + } + ], + "timestamp": 1692368658 + }, + { + "version": "8.10.0", + "changes": [ + { + "note": "Add VelodromeV2 support on Optimism" + } + ], + "timestamp": 1691617396 + }, + { + "version": "8.9.0", + "changes": [ + { + "note": "Add Uniswap V3 router v2 support in Base FillQuoteTransformer" + } + ], + "timestamp": 1689974915 + }, + { + "version": "8.8.0", + "changes": [ + { + "note": "Add Base mainnet addresses" + }, + { + "note": "Add UniswapV3 support in Avalanche and BSC FillQuoteTransformers" + } + ], + "timestamp": 1689791426 + }, { "version": "8.7.0", "changes": [ diff --git a/packages/contract-addresses/CHANGELOG.md b/packages/contract-addresses/CHANGELOG.md index 09b910ff6a..8a0a34a69f 100644 --- a/packages/contract-addresses/CHANGELOG.md +++ b/packages/contract-addresses/CHANGELOG.md @@ -6,6 +6,22 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v8.12.0 - _August 29, 2023_ + + * Add VelodromeV2 support on Base +## v8.11.0 - _August 18, 2023_ + + * Add MaverickV1 support on Ethereum, BSC, and Base +## v8.10.0 - _August 9, 2023_ + + * Add VelodromeV2 support on Optimism +## v8.9.0 - _July 21, 2023_ + + * Add Uniswap V3 router v2 support in Base FillQuoteTransformer +## v8.8.0 - _July 19, 2023_ + + * Add Base mainnet addresses + * Add UniswapV3 support in Avalanche and BSC FillQuoteTransformers ## v8.7.0 - _May 10, 2023_ * Add Trader Joe V2 MixIn to Arbitrum diff --git a/packages/contract-addresses/addresses.json b/packages/contract-addresses/addresses.json index f27f3c4326..2f03d6f541 100644 --- a/packages/contract-addresses/addresses.json +++ b/packages/contract-addresses/addresses.json @@ -18,7 +18,7 @@ "wethTransformer": "0xb2bc06a4efb20fc6553a69dbfa49b7be938034a7", "payTakerTransformer": "0xea500d073652336a58846ada15c25f2c6d2d241f", "affiliateFeeTransformer": "0x8146cbbe327364b13d0699f2ced39c637f92501a", - "fillQuoteTransformer": "0x21c3bee93fad436dedd29f971dc4fdf82f3e3a3a", + "fillQuoteTransformer": "0x2fd08c1f9fc8406c1d7e3a799a13883a7e7949f0", "positiveSlippageFeeTransformer": "0x818a4a855bfeb16c305cb65e8d4fb239a308bc48" } }, @@ -64,7 +64,7 @@ "wethTransformer": "0xac3d95668c092e895cd83a9cbafe9c7d9906471f", "payTakerTransformer": "0x7e788f3a3e39cdd1944ba111fafc5fb7e59b5e90", "affiliateFeeTransformer": "0x043300d113de0c64684ab89c56a45cd94c7ef54c", - "fillQuoteTransformer": "0x43d10801db01c28093265ef9b77d532e553fa578", + "fillQuoteTransformer": "0x6073f12fc63bcc64bd4fed5d44aa1035e37d68ee", "positiveSlippageFeeTransformer": "0x6ff35e8cbaf56d8a8f6bf9963b902a4576243030" } }, @@ -156,7 +156,7 @@ "wethTransformer": "0x9b8b52391071d71cd4ad1e61d7f273268fa34c6c", "payTakerTransformer": "0xb9a4c32547bc3cdc2ee2fb13cc1a0717dac9888f", "affiliateFeeTransformer": "0x105679f99d668001370b4621ad8648ac570c860f", - "fillQuoteTransformer": "0x886e4f97d7e06ab66dba574a7a861046dcf7ae4f", + "fillQuoteTransformer": "0x463fe1a80acb62ce1e4f0a4f7b83df674c2cce2c", "positiveSlippageFeeTransformer": "0xadbfdc58a24b6dbc16f21541800f43dd6e282250" } }, @@ -225,7 +225,7 @@ "wethTransformer": "0x02ce7af6520e2862f961f5d7eda746642865179c", "payTakerTransformer": "0xa6c3ca183a67fcb4299fb4199c12ca74874ca489", "affiliateFeeTransformer": "0x3102aea537ecb6f164550b094663c82a8c53a972", - "fillQuoteTransformer": "0xd140adb61d4e3e3978d4f32ac6b92240ff6e3a6e", + "fillQuoteTransformer": "0x521f3184ab27abde4a34e744a908b1a08dc8ef91", "positiveSlippageFeeTransformer": "0x9a4947d3fb77a7afc2c9cd6714bbae96dddde059" } }, @@ -251,5 +251,28 @@ "fillQuoteTransformer": "0x4a8815c2fc605e3b01aee52aade4d096c4e862c6", "positiveSlippageFeeTransformer": "0x20f935b037e8490d8027f2751f9452725eee01ad" } + }, + "8453": { + "zrxToken": "0x0000000000000000000000000000000000000000", + "etherToken": "0x4200000000000000000000000000000000000006", + "zeroExGovernor": "0xecc4f2a8e0fd933623b2ea4ad84bffd12cb1286c", + "zrxVault": "0x0000000000000000000000000000000000000000", + "staking": "0x0000000000000000000000000000000000000000", + "stakingProxy": "0x0000000000000000000000000000000000000000", + "erc20BridgeProxy": "0x0000000000000000000000000000000000000000", + "erc20BridgeSampler": "0x0000000000000000000000000000000000000000", + "exchangeProxyGovernor": "0xecc4f2a8e0fd933623b2ea4ad84bffd12cb1286c", + "exchangeProxy": "0xdef1c0ded9bec7f1a1670819833240f027b25eff", + "exchangeProxyTransformerDeployer": "0x58bca53ebba1aaf25f0edcd8dad6421872fe20b2", + "exchangeProxyFlashWallet": "0xdb6f1920a889355780af7570773609bd8cb1f498", + "exchangeProxyLiquidityProviderSandbox": "0x0000000000000000000000000000000000000000", + "zrxTreasury": "0x0000000000000000000000000000000000000000", + "transformers": { + "wethTransformer": "0x63186ea36e78ecbf0128e448362f1b81e9bf7412", + "payTakerTransformer": "0x5cc22a0e06ea11097c612a962e63674b90e96099", + "affiliateFeeTransformer": "0x9e52d8b32d835206d09810c310593bcc77264066", + "fillQuoteTransformer": "0x2c46d57bb5af87a13a51dd5b62ba7d3bc7e12e9c", + "positiveSlippageFeeTransformer": "0xf98a130d3b4029c70e6d93098cb82a003421341e" + } } } diff --git a/packages/contract-addresses/package.json b/packages/contract-addresses/package.json index c88e0da621..3e3d6aaeb5 100644 --- a/packages/contract-addresses/package.json +++ b/packages/contract-addresses/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-addresses", - "version": "8.7.0", + "version": "8.12.0", "engines": { "node": ">=6.12" }, diff --git a/packages/contract-addresses/src/index.ts b/packages/contract-addresses/src/index.ts index 87566204ba..c29a383d82 100644 --- a/packages/contract-addresses/src/index.ts +++ b/packages/contract-addresses/src/index.ts @@ -36,6 +36,7 @@ export enum ChainId { Celo = 42220, Optimism = 10, Arbitrum = 42161, + Base = 8453, } /** diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index 6fd50750c0..d936f4dbbd 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -1,4 +1,49 @@ [ + { + "timestamp": 1693346928, + "version": "13.23.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1692368658, + "version": "13.23.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1691617396, + "version": "13.23.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689974915, + "version": "13.23.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689791426, + "version": "13.23.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1683749017, "version": "13.23.2", diff --git a/packages/contract-wrappers/CHANGELOG.md b/packages/contract-wrappers/CHANGELOG.md index 15c893c698..93b9f3f9c3 100644 --- a/packages/contract-wrappers/CHANGELOG.md +++ b/packages/contract-wrappers/CHANGELOG.md @@ -6,6 +6,21 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v13.23.7 - _August 29, 2023_ + + * Dependencies updated +## v13.23.6 - _August 18, 2023_ + + * Dependencies updated +## v13.23.5 - _August 9, 2023_ + + * Dependencies updated +## v13.23.4 - _July 21, 2023_ + + * Dependencies updated +## v13.23.3 - _July 19, 2023_ + + * Dependencies updated ## v13.23.2 - _May 10, 2023_ * Dependencies updated diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index 4efaec9a81..76c8115884 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-wrappers", - "version": "13.23.2", + "version": "13.23.7", "engines": { "node": ">=6.12" }, @@ -59,7 +59,7 @@ "dependencies": { "@0x/assert": "^3.0.36", "@0x/base-contract": "^7.0.0", - "@0x/contract-addresses": "^8.7.0", + "@0x/contract-addresses": "^8.12.0", "@0x/json-schemas": "^6.4.4", "@0x/types": "^3.3.7", "@0x/utils": "^7.0.0", diff --git a/packages/protocol-utils/CHANGELOG.json b/packages/protocol-utils/CHANGELOG.json index 3f3c95be51..062d8b6470 100644 --- a/packages/protocol-utils/CHANGELOG.json +++ b/packages/protocol-utils/CHANGELOG.json @@ -1,4 +1,49 @@ [ + { + "timestamp": 1693346928, + "version": "11.24.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "version": "11.24.0", + "changes": [ + { + "note": "Add MaverickV1 support on Ethereum, BSC, and Base" + } + ], + "timestamp": 1692368658 + }, + { + "version": "11.23.0", + "changes": [ + { + "note": "Add VelodromeV2 support on Optimism" + } + ], + "timestamp": 1691617396 + }, + { + "timestamp": 1689974915, + "version": "11.22.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1689791426, + "version": "11.22.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1683749017, "version": "11.22.2", diff --git a/packages/protocol-utils/CHANGELOG.md b/packages/protocol-utils/CHANGELOG.md index e606922b5f..8cfc04fb90 100644 --- a/packages/protocol-utils/CHANGELOG.md +++ b/packages/protocol-utils/CHANGELOG.md @@ -6,6 +6,21 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v11.24.1 - _August 29, 2023_ + + * Dependencies updated +## v11.24.0 - _August 18, 2023_ + + * Add MaverickV1 support on Ethereum, BSC, and Base +## v11.23.0 - _August 9, 2023_ + + * Add VelodromeV2 support on Optimism +## v11.22.4 - _July 21, 2023_ + + * Dependencies updated +## v11.22.3 - _July 19, 2023_ + + * Dependencies updated ## v11.22.2 - _May 10, 2023_ * Dependencies updated diff --git a/packages/protocol-utils/package.json b/packages/protocol-utils/package.json index b14e55a128..5ff865b2d9 100644 --- a/packages/protocol-utils/package.json +++ b/packages/protocol-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/protocol-utils", - "version": "11.22.2", + "version": "11.24.1", "engines": { "node": ">=6.12" }, @@ -62,8 +62,8 @@ }, "dependencies": { "@0x/assert": "^3.0.36", - "@0x/contract-addresses": "^8.7.0", - "@0x/contract-wrappers": "^13.23.2", + "@0x/contract-addresses": "^8.12.0", + "@0x/contract-wrappers": "^13.23.7", "@0x/json-schemas": "^6.4.4", "@0x/subproviders": "^8.0.1", "@0x/utils": "^7.0.0", diff --git a/packages/protocol-utils/src/transformer_utils.ts b/packages/protocol-utils/src/transformer_utils.ts index ec875941da..0fa0b2c9cc 100644 --- a/packages/protocol-utils/src/transformer_utils.ts +++ b/packages/protocol-utils/src/transformer_utils.ts @@ -166,6 +166,8 @@ export enum BridgeProtocol { KyberElastic, Barter, TraderJoeV2, + VelodromeV2, + MaverickV1, } /**