From 8ed6524cbbed653fd2401b816c10c2dfb4806e36 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Mon, 20 Jun 2022 10:34:07 +0530 Subject: [PATCH 01/13] insta simulation dex connector --- .../connectors/dexSimulation/events.sol | 11 ++++ .../connectors/dexSimulation/helpers.sol | 15 +++++ .../connectors/dexSimulation/interfaces.sol | 11 ++++ .../polygon/connectors/dexSimulation/main.sol | 55 +++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 contracts/polygon/connectors/dexSimulation/events.sol create mode 100644 contracts/polygon/connectors/dexSimulation/helpers.sol create mode 100644 contracts/polygon/connectors/dexSimulation/interfaces.sol create mode 100644 contracts/polygon/connectors/dexSimulation/main.sol diff --git a/contracts/polygon/connectors/dexSimulation/events.sol b/contracts/polygon/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/polygon/connectors/dexSimulation/helpers.sol b/contracts/polygon/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..dc5f34f1 --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x49c8AA422207Dc2709FCdc21CeAD0943578a21e8; +} diff --git a/contracts/polygon/connectors/dexSimulation/interfaces.sol b/contracts/polygon/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..c355c22d --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -0,0 +1,55 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + if (sellToken == maticAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: sellAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulation is InstaDexSimulationResolver { + string public name = "InstaDexSimulation-v1"; +} From 38f14ddecd4d8f30deb0aaf05c7bd79acbfa71df Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Mon, 20 Jun 2022 10:38:59 +0530 Subject: [PATCH 02/13] comments --- contracts/polygon/connectors/dexSimulation/main.sol | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index c355c22d..cdc8af0e 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -11,6 +11,14 @@ import { Events } from "./events.sol"; import "./helpers.sol"; abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + */ function swap( address sellToken, address buyToken, From 824d057ee785df981bee68e743518f0aaa2a92e6 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Mon, 20 Jun 2022 15:42:03 +0530 Subject: [PATCH 03/13] added getId --- contracts/polygon/connectors/dexSimulation/main.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index cdc8af0e..70c80d92 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -24,12 +24,15 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { address buyToken, uint256 sellAmount, uint256 buyAmount, - uint256 setId + uint256 setId, + uint256 getId ) external payable returns (string memory _eventName, bytes memory _eventParam) { + sellAmount = getUint(getId, buyAmount); + if (sellToken == maticAddr) { sellAmount = sellAmount == uint256(-1) ? address(this).balance From d7a0fdb684c6672497e1e79940b8df11b10ca36d Mon Sep 17 00:00:00 2001 From: 0xPradyuman <63545809+pradyuman-verma@users.noreply.github.com> Date: Mon, 20 Jun 2022 16:12:37 +0530 Subject: [PATCH 04/13] Update contracts/polygon/connectors/dexSimulation/main.sol Co-authored-by: Thrilok kumar --- contracts/polygon/connectors/dexSimulation/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index 70c80d92..b2f0a7bb 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -32,7 +32,7 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { returns (string memory _eventName, bytes memory _eventParam) { sellAmount = getUint(getId, buyAmount); - + uint256 nativeAmount if (sellToken == maticAddr) { sellAmount = sellAmount == uint256(-1) ? address(this).balance From c28ac06738d374ab9c1ebc10e734f44fa7cd9dd4 Mon Sep 17 00:00:00 2001 From: 0xPradyuman <63545809+pradyuman-verma@users.noreply.github.com> Date: Mon, 20 Jun 2022 16:12:41 +0530 Subject: [PATCH 05/13] Update contracts/polygon/connectors/dexSimulation/main.sol Co-authored-by: Thrilok kumar --- contracts/polygon/connectors/dexSimulation/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index b2f0a7bb..cbb251f6 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -47,7 +47,7 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { approve(tokenContract, address(dexSimulation), sellAmount); } - InstaDexSimulation(dexSimulation).swap{ value: sellAmount }( + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( sellToken, buyToken, sellAmount, From 00d0760119b5f909fbfe3074111f220fcf3d1979 Mon Sep 17 00:00:00 2001 From: 0xPradyuman <63545809+pradyuman-verma@users.noreply.github.com> Date: Mon, 20 Jun 2022 16:12:48 +0530 Subject: [PATCH 06/13] Update contracts/polygon/connectors/dexSimulation/main.sol Co-authored-by: Thrilok kumar --- contracts/polygon/connectors/dexSimulation/main.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index cbb251f6..e83dac7e 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -37,6 +37,7 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { sellAmount = sellAmount == uint256(-1) ? address(this).balance : sellAmount; + nativeAmount = sellAmount; } else { TokenInterface tokenContract = TokenInterface(sellToken); From b2e3acd15cf4eb9a6727f148fe4c1f0f5bea3c4b Mon Sep 17 00:00:00 2001 From: 0xPradyuman <63545809+pradyuman-verma@users.noreply.github.com> Date: Mon, 20 Jun 2022 16:12:54 +0530 Subject: [PATCH 07/13] Update contracts/polygon/connectors/dexSimulation/main.sol Co-authored-by: Thrilok kumar --- contracts/polygon/connectors/dexSimulation/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index e83dac7e..5e13104b 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -63,5 +63,5 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { } contract ConnectV2InstaDexSimulation is InstaDexSimulationResolver { - string public name = "InstaDexSimulation-v1"; + string public name = "Instadapp-DEX-Simulation-v1"; } From f26d346b870eff8cb1107863bfa182c184d39deb Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Mon, 20 Jun 2022 16:14:19 +0530 Subject: [PATCH 08/13] comments fiz --- contracts/polygon/connectors/dexSimulation/main.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index 5e13104b..c26c6872 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -18,6 +18,7 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { * @param sellAmount The sell token amount * @param buyAmount The buy token amount * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. */ function swap( address sellToken, From 50248d402e704180a0dc25194cef093f02556768 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Mon, 20 Jun 2022 16:18:47 +0530 Subject: [PATCH 09/13] fixes --- contracts/polygon/connectors/dexSimulation/main.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index c26c6872..5303d0aa 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -33,7 +33,8 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { returns (string memory _eventName, bytes memory _eventParam) { sellAmount = getUint(getId, buyAmount); - uint256 nativeAmount + uint256 nativeAmount; + if (sellToken == maticAddr) { sellAmount = sellAmount == uint256(-1) ? address(this).balance From d042290248a01125ec5df46d3bec6bc9a37eca0c Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Mon, 20 Jun 2022 16:20:58 +0530 Subject: [PATCH 10/13] name fix --- contracts/polygon/connectors/dexSimulation/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index 5303d0aa..a006c1e7 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -64,6 +64,6 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { } } -contract ConnectV2InstaDexSimulation is InstaDexSimulationResolver { +contract ConnectV2InstaDexSimulationPolygon is InstaDexSimulationResolver { string public name = "Instadapp-DEX-Simulation-v1"; } From c7fd106eae12ed303384d98a0f84ac6a1bc75b69 Mon Sep 17 00:00:00 2001 From: 0xPradyuman <63545809+pradyuman-verma@users.noreply.github.com> Date: Thu, 7 Jul 2022 16:44:17 +0530 Subject: [PATCH 11/13] Update contracts/polygon/connectors/dexSimulation/main.sol --- contracts/polygon/connectors/dexSimulation/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol index a006c1e7..98a578f1 100644 --- a/contracts/polygon/connectors/dexSimulation/main.sol +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -32,7 +32,7 @@ abstract contract InstaDexSimulationResolver is Events, Helpers { payable returns (string memory _eventName, bytes memory _eventParam) { - sellAmount = getUint(getId, buyAmount); + sellAmount = getUint(getId, sellAmount); uint256 nativeAmount; if (sellToken == maticAddr) { From ff39015e5063d29dd3a8c9c7ba7955985714aff5 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Sun, 10 Jul 2022 23:06:25 +0530 Subject: [PATCH 12/13] added on side chain Signed-off-by: pradyuman-verma --- .../connectors/dexSimulation/events.sol | 11 +++ .../connectors/dexSimulation/helpers.sol | 15 ++++ .../connectors/dexSimulation/interfaces.sol | 11 +++ .../connectors/dexSimulation/main.sol | 69 +++++++++++++++++++ .../connectors/dexSimulation/events.sol | 11 +++ .../connectors/dexSimulation/helpers.sol | 15 ++++ .../connectors/dexSimulation/interfaces.sol | 11 +++ .../connectors/dexSimulation/main.sol | 69 +++++++++++++++++++ .../connectors/dexSimulation/events.sol | 11 +++ .../connectors/dexSimulation/helpers.sol | 15 ++++ .../connectors/dexSimulation/interfaces.sol | 11 +++ .../fantom/connectors/dexSimulation/main.sol | 69 +++++++++++++++++++ .../connectors/dexSimulation/events.sol | 11 +++ .../connectors/dexSimulation/helpers.sol | 15 ++++ .../connectors/dexSimulation/interfaces.sol | 11 +++ .../connectors/dexSimulation/main.sol | 69 +++++++++++++++++++ 16 files changed, 424 insertions(+) create mode 100644 contracts/arbitrum/connectors/dexSimulation/events.sol create mode 100644 contracts/arbitrum/connectors/dexSimulation/helpers.sol create mode 100644 contracts/arbitrum/connectors/dexSimulation/interfaces.sol create mode 100644 contracts/arbitrum/connectors/dexSimulation/main.sol create mode 100644 contracts/avalanche/connectors/dexSimulation/events.sol create mode 100644 contracts/avalanche/connectors/dexSimulation/helpers.sol create mode 100644 contracts/avalanche/connectors/dexSimulation/interfaces.sol create mode 100644 contracts/avalanche/connectors/dexSimulation/main.sol create mode 100644 contracts/fantom/connectors/dexSimulation/events.sol create mode 100644 contracts/fantom/connectors/dexSimulation/helpers.sol create mode 100644 contracts/fantom/connectors/dexSimulation/interfaces.sol create mode 100644 contracts/fantom/connectors/dexSimulation/main.sol create mode 100644 contracts/optimism/connectors/dexSimulation/events.sol create mode 100644 contracts/optimism/connectors/dexSimulation/helpers.sol create mode 100644 contracts/optimism/connectors/dexSimulation/interfaces.sol create mode 100644 contracts/optimism/connectors/dexSimulation/main.sol diff --git a/contracts/arbitrum/connectors/dexSimulation/events.sol b/contracts/arbitrum/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/arbitrum/connectors/dexSimulation/helpers.sol b/contracts/arbitrum/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..65c56bcf --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0xa5044f8FfA8FbDdd0781cEDe502F1C493BB6978A; +} diff --git a/contracts/arbitrum/connectors/dexSimulation/interfaces.sol b/contracts/arbitrum/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/arbitrum/connectors/dexSimulation/main.sol b/contracts/arbitrum/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..4b65de7e --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ethAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationArbitrum is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/avalanche/connectors/dexSimulation/events.sol b/contracts/avalanche/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/avalanche/connectors/dexSimulation/helpers.sol b/contracts/avalanche/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..6d65ff2c --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x266b527deb47eBe327D1933da310ef13Fe76D213; +} diff --git a/contracts/avalanche/connectors/dexSimulation/interfaces.sol b/contracts/avalanche/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/avalanche/connectors/dexSimulation/main.sol b/contracts/avalanche/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..6631a066 --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == avaxAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationAvalanche is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/fantom/connectors/dexSimulation/events.sol b/contracts/fantom/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/fantom/connectors/dexSimulation/helpers.sol b/contracts/fantom/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..d607ad86 --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0xbD07728E20c49F0Fa22c82915955fbeA5E203a6a; +} diff --git a/contracts/fantom/connectors/dexSimulation/interfaces.sol b/contracts/fantom/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/fantom/connectors/dexSimulation/main.sol b/contracts/fantom/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..2536c69e --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ftmAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationFantom is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/optimism/connectors/dexSimulation/events.sol b/contracts/optimism/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/optimism/connectors/dexSimulation/helpers.sol b/contracts/optimism/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..13eb5c92 --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x718365C3d1aA4c5CcE869E16bE3f6A96EC65200b; +} diff --git a/contracts/optimism/connectors/dexSimulation/interfaces.sol b/contracts/optimism/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/optimism/connectors/dexSimulation/main.sol b/contracts/optimism/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..0603811b --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ethAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationOptimism is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} From 9112e025a50969ec8611312b4063a67aba61b910 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Sun, 10 Jul 2022 23:41:48 +0530 Subject: [PATCH 13/13] mainnet connector Signed-off-by: pradyuman-verma --- .../connectors/dexSimulation/events.sol | 11 +++ .../connectors/dexSimulation/helpers.sol | 15 ++++ .../connectors/dexSimulation/interfaces.sol | 11 +++ .../mainnet/connectors/dexSimulation/main.sol | 69 +++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 contracts/mainnet/connectors/dexSimulation/events.sol create mode 100644 contracts/mainnet/connectors/dexSimulation/helpers.sol create mode 100644 contracts/mainnet/connectors/dexSimulation/interfaces.sol create mode 100644 contracts/mainnet/connectors/dexSimulation/main.sol diff --git a/contracts/mainnet/connectors/dexSimulation/events.sol b/contracts/mainnet/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/mainnet/connectors/dexSimulation/helpers.sol b/contracts/mainnet/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..3501e000 --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x49B159E897b7701769B1E66061C8dcCd7240c461; +} diff --git a/contracts/mainnet/connectors/dexSimulation/interfaces.sol b/contracts/mainnet/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/mainnet/connectors/dexSimulation/main.sol b/contracts/mainnet/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..d16cdaa1 --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ethAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulation is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +}