From ac12bae395d0d697f03fbdd9090ddb19561b18c3 Mon Sep 17 00:00:00 2001 From: chrismaree Date: Thu, 3 Mar 2022 17:24:20 -0500 Subject: [PATCH 1/6] fix for optimism Signed-off-by: chrismaree --- contracts/chain-adapters/Optimism_Adapter.sol | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/contracts/chain-adapters/Optimism_Adapter.sol b/contracts/chain-adapters/Optimism_Adapter.sol index ad3cfa012..612e31e9e 100644 --- a/contracts/chain-adapters/Optimism_Adapter.sol +++ b/contracts/chain-adapters/Optimism_Adapter.sol @@ -72,8 +72,12 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { l1Weth.withdraw(amount); l1StandardBridge.depositETHTo{ value: amount }(to, l2GasLimit, ""); } else { - IERC20(l1Token).safeIncreaseAllowance(address(l1StandardBridge), amount); - l1StandardBridge.depositERC20To(l1Token, l2Token, to, amount, l2GasLimit, ""); + IL1StandardBridge _l1StandardBridge = l1StandardBridge; + if (l1Token == 0x6B175474E89094C44Da98b954EedeAC495271d0F) + _l1StandardBridge = IL1StandardBridge(0x10E6593CDda8c58a1d0f14C5164B376352a55f2F); + + IERC20(l1Token).safeIncreaseAllowance(address(_l1StandardBridge), amount); + _l1StandardBridge.depositERC20To(l1Token, l2Token, to, amount, l2GasLimit, ""); } emit TokensRelayed(l1Token, l2Token, amount, to); } From e6ef50708f4147497248ff49d5df870b1fb56d37 Mon Sep 17 00:00:00 2001 From: chrismaree Date: Thu, 3 Mar 2022 17:27:33 -0500 Subject: [PATCH 2/6] nit Signed-off-by: chrismaree --- contracts/chain-adapters/Optimism_Adapter.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contracts/chain-adapters/Optimism_Adapter.sol b/contracts/chain-adapters/Optimism_Adapter.sol index 612e31e9e..6b292f5c2 100644 --- a/contracts/chain-adapters/Optimism_Adapter.sol +++ b/contracts/chain-adapters/Optimism_Adapter.sol @@ -73,6 +73,9 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { l1StandardBridge.depositETHTo{ value: amount }(to, l2GasLimit, ""); } else { IL1StandardBridge _l1StandardBridge = l1StandardBridge; + + // Check if the L1 token requires a custom bridge. If so, use that bridge over the standard bridge. + // 1. Dai if (l1Token == 0x6B175474E89094C44Da98b954EedeAC495271d0F) _l1StandardBridge = IL1StandardBridge(0x10E6593CDda8c58a1d0f14C5164B376352a55f2F); From 136be99983ed29ac1fd882e236f6ee7287a32a73 Mon Sep 17 00:00:00 2001 From: chrismaree Date: Thu, 3 Mar 2022 17:57:43 -0500 Subject: [PATCH 3/6] nit Signed-off-by: chrismaree --- contracts/chain-adapters/Optimism_Adapter.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contracts/chain-adapters/Optimism_Adapter.sol b/contracts/chain-adapters/Optimism_Adapter.sol index 6b292f5c2..ac4f33281 100644 --- a/contracts/chain-adapters/Optimism_Adapter.sol +++ b/contracts/chain-adapters/Optimism_Adapter.sol @@ -75,9 +75,12 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { IL1StandardBridge _l1StandardBridge = l1StandardBridge; // Check if the L1 token requires a custom bridge. If so, use that bridge over the standard bridge. - // 1. Dai + // 1. DAI if (l1Token == 0x6B175474E89094C44Da98b954EedeAC495271d0F) _l1StandardBridge = IL1StandardBridge(0x10E6593CDda8c58a1d0f14C5164B376352a55f2F); + // 2. SNX + if (l1Token == 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F) + _l1StandardBridge = IL1StandardBridge(0xCd9D4988C0AE61887B075bA77f08cbFAd2b65068); IERC20(l1Token).safeIncreaseAllowance(address(_l1StandardBridge), amount); _l1StandardBridge.depositERC20To(l1Token, l2Token, to, amount, l2GasLimit, ""); From c33f72f10c18973d9e7fce60039a7bfef8972f92 Mon Sep 17 00:00:00 2001 From: chrismaree Date: Fri, 4 Mar 2022 10:22:44 -0500 Subject: [PATCH 4/6] nit Signed-off-by: chrismaree --- contracts/chain-adapters/Optimism_Adapter.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contracts/chain-adapters/Optimism_Adapter.sol b/contracts/chain-adapters/Optimism_Adapter.sol index ac4f33281..cccc3db29 100644 --- a/contracts/chain-adapters/Optimism_Adapter.sol +++ b/contracts/chain-adapters/Optimism_Adapter.sol @@ -74,7 +74,10 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { } else { IL1StandardBridge _l1StandardBridge = l1StandardBridge; - // Check if the L1 token requires a custom bridge. If so, use that bridge over the standard bridge. + // Check if the L1 token requires a custom bridge. If so, use that bridge over the standard bridge. This is + // required as Optimism uses custom bridges for non-standard tokens. In the event we want to support a new + // token that is not supported by Optimism, we can add a new custom bridge for it and re-deploy the adapter. + // Full list of OP custom tokens can be found here: https://github.com/ethereum-optimism/ethereum-optimism.github.io/blob/master/optimism.tokenlist.json // 1. DAI if (l1Token == 0x6B175474E89094C44Da98b954EedeAC495271d0F) _l1StandardBridge = IL1StandardBridge(0x10E6593CDda8c58a1d0f14C5164B376352a55f2F); From acbb6ba019fa6abd426f37b2ee7c6b2d07748d02 Mon Sep 17 00:00:00 2001 From: chrismaree Date: Mon, 7 Mar 2022 09:18:43 -0500 Subject: [PATCH 5/6] nit Signed-off-by: chrismaree --- contracts/chain-adapters/Optimism_Adapter.sol | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/contracts/chain-adapters/Optimism_Adapter.sol b/contracts/chain-adapters/Optimism_Adapter.sol index cccc3db29..6aac76291 100644 --- a/contracts/chain-adapters/Optimism_Adapter.sol +++ b/contracts/chain-adapters/Optimism_Adapter.sol @@ -27,6 +27,11 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { IL1StandardBridge public immutable l1StandardBridge; + address public immutable dai = 0x6B175474E89094C44Da98b954EedeAC495271d0F; + address public immutable daiOptimismBridge = 0x10E6593CDda8c58a1d0f14C5164B376352a55f2F; + address public immutable snx = 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F; + address public immutable snxOptimismBridge = 0xCd9D4988C0AE61887B075bA77f08cbFAd2b65068; + event L2GasLimitSet(uint32 newGasLimit); /** @@ -78,12 +83,8 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { // required as Optimism uses custom bridges for non-standard tokens. In the event we want to support a new // token that is not supported by Optimism, we can add a new custom bridge for it and re-deploy the adapter. // Full list of OP custom tokens can be found here: https://github.com/ethereum-optimism/ethereum-optimism.github.io/blob/master/optimism.tokenlist.json - // 1. DAI - if (l1Token == 0x6B175474E89094C44Da98b954EedeAC495271d0F) - _l1StandardBridge = IL1StandardBridge(0x10E6593CDda8c58a1d0f14C5164B376352a55f2F); - // 2. SNX - if (l1Token == 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F) - _l1StandardBridge = IL1StandardBridge(0xCd9D4988C0AE61887B075bA77f08cbFAd2b65068); + if (l1Token == dai) _l1StandardBridge = IL1StandardBridge(daiOptimismBridge); // 1. DAI + if (l1Token == snx) _l1StandardBridge = IL1StandardBridge(snxOptimismBridge); // 2. SNX IERC20(l1Token).safeIncreaseAllowance(address(_l1StandardBridge), amount); _l1StandardBridge.depositERC20To(l1Token, l2Token, to, amount, l2GasLimit, ""); From 0744e6c0e498e6c513ec9b8d9173b4941ba49172 Mon Sep 17 00:00:00 2001 From: chrismaree Date: Mon, 7 Mar 2022 09:21:18 -0500 Subject: [PATCH 6/6] nit Signed-off-by: chrismaree --- contracts/chain-adapters/Optimism_Adapter.sol | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/contracts/chain-adapters/Optimism_Adapter.sol b/contracts/chain-adapters/Optimism_Adapter.sol index 6aac76291..a3cfb7a8a 100644 --- a/contracts/chain-adapters/Optimism_Adapter.sol +++ b/contracts/chain-adapters/Optimism_Adapter.sol @@ -27,6 +27,11 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { IL1StandardBridge public immutable l1StandardBridge; + // Optimism has the ability to support "custom" bridges. These bridges are not supported by the canonical bridge + // and so we need to store the address of the custom token and the associated bridge. In the event we want to + // support a new token that is not supported by Optimism, we can add a new custom bridge for it and re-deploy the + // adapter. A full list of custom optimism tokens and their associated bridges can be found here: + // https://github.com/ethereum-optimism/ethereum-optimism.github.io/blob/master/optimism.tokenlist.json address public immutable dai = 0x6B175474E89094C44Da98b954EedeAC495271d0F; address public immutable daiOptimismBridge = 0x10E6593CDda8c58a1d0f14C5164B376352a55f2F; address public immutable snx = 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F; @@ -79,10 +84,7 @@ contract Optimism_Adapter is CrossDomainEnabled, AdapterInterface { } else { IL1StandardBridge _l1StandardBridge = l1StandardBridge; - // Check if the L1 token requires a custom bridge. If so, use that bridge over the standard bridge. This is - // required as Optimism uses custom bridges for non-standard tokens. In the event we want to support a new - // token that is not supported by Optimism, we can add a new custom bridge for it and re-deploy the adapter. - // Full list of OP custom tokens can be found here: https://github.com/ethereum-optimism/ethereum-optimism.github.io/blob/master/optimism.tokenlist.json + // Check if the L1 token requires a custom bridge. If so, use that bridge over the standard bridge. if (l1Token == dai) _l1StandardBridge = IL1StandardBridge(daiOptimismBridge); // 1. DAI if (l1Token == snx) _l1StandardBridge = IL1StandardBridge(snxOptimismBridge); // 2. SNX