Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: added Wormhole adapter #37

Merged
merged 4 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ RPC_ZKEVM=https://polygon-zkevm.drpc.org
RPC_ZKEVM_TESTNET=https://rpc.public.zkevm-test.net
RPC_SCROLL=https://rpc.scroll.io
RPC_SCROLL_TESTNET=https://sepolia-rpc.scroll.io
RPC_CELO=https://forno.celo.org
RPC_CELO_ALFAJORES=https://alfajores-forno.celo-testnet.org

# Etherscan verification
ETHERSCAN_API_KEY_MAINNET=
Expand All @@ -44,3 +46,4 @@ ETHERSCAN_API_KEY_BASE=
ETHERSCAN_API_KEY_GNOSIS=
ETHERSCAN_API_KEY_ZKEVM=
ETHERSCAN_API_KEY_SCROLL=
ETHERSCAN_API_KEY_CELO=
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ deploy-scroll-adapters:
deploy-zkevm-adapters:
$(call deploy_fn,Adapters/DeployZkEVMAdapter,ethereum zkevm)

deploy-wormhole-adapters:
$(call deploy_fn,Adapters/DeployWormholeAdapter,ethereum celo)

## Set sender bridge dapters. Only eth pol avax are needed as other networks will only receive
set-ccf-sender-adapters:
$(call deploy_fn,CCC/Set_CCF_Sender_Adapters,ethereum)
Expand Down Expand Up @@ -169,6 +172,9 @@ deploy-same-chain-adapters-test:
deploy-scroll-adapters-test:
$(call deploy_fn,Adapters/DeployScrollAdapter,ethereum scroll)

deploy-wormhole-adapters-test:
$(call deploy_fn,Adapters/DeployWormholeAdapter,ethereum celo)

## Set sender bridge dapters. Only eth pol avax are needed as other networks will only receive
set-ccf-sender-adapters-test:
$(call deploy_fn,CCC/Set_CCF_Sender_Adapters,ethereum)
Expand Down
50 changes: 26 additions & 24 deletions README.md

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions deployments/cc/mainnet/celo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"arbAdapter": "0x0000000000000000000000000000000000000000",
"baseAdapter": "0x0000000000000000000000000000000000000000",
"ccipAdapter": "0x0000000000000000000000000000000000000000",
"chainId": 42220,
"clEmergencyOracle": "0x91b21900E91CD302EBeD05E45D8f270ddAED944d",
"create3Factory": "0x0000000000000000000000000000000000000000",
"crossChainController": "0x4A5f4b29C0407E5Feb323305e121f563c7bC4d79",
"crossChainControllerImpl": "0x96F68837877fd0414B55050c9e794AECdBcfCA59",
"emergencyRegistry": "0x0000000000000000000000000000000000000000",
"gnosisAdapter": "0x0000000000000000000000000000000000000000",
"guardian": "0xEAF6183bAb3eFD3bF856Ac5C058431C8592394d6",
"hlAdapter": "0x2e649f6b54B07E210b31c9cC2eB8a0d5997c3D4A",
"lzAdapter": "0xcB1F67533DAD738E1930404bE9D4F844752773DA",
"metisAdapter": "0x0000000000000000000000000000000000000000",
"mockDestination": "0x0000000000000000000000000000000000000000",
"opAdapter": "0x0000000000000000000000000000000000000000",
"owner": "0xEAF6183bAb3eFD3bF856Ac5C058431C8592394d6",
"polAdapter": "0x0000000000000000000000000000000000000000",
"proxyAdmin": "0x01d678F1bbE148C96e7501F1Ac41661904F84F61",
"proxyFactory": "0xb172a90A7C238969CE9B27cc19D13b60A91e7F00",
"sameChainAdapter": "0x0000000000000000000000000000000000000000",
"scrollAdapter": "0x0000000000000000000000000000000000000000",
"wormholeAdapter": "0x9fE056F44510F970d724adA16903ba5D75CC4742",
"zkevmAdapter": "0x0000000000000000000000000000000000000000"
}
26 changes: 26 additions & 0 deletions deployments/cc/mainnet/pre_prod_celo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"arbAdapter": "0x0000000000000000000000000000000000000000",
"baseAdapter": "0x0000000000000000000000000000000000000000",
"ccipAdapter": "0x0000000000000000000000000000000000000000",
"chainId": 42220,
"clEmergencyOracle": "0x91b21900E91CD302EBeD05E45D8f270ddAED944d",
"create3Factory": "0x0000000000000000000000000000000000000000",
"crossChainController": "0x4A5f4b29C0407E5Feb323305e121f563c7bC4d79",
"crossChainControllerImpl": "0x96F68837877fd0414B55050c9e794AECdBcfCA59",
"emergencyRegistry": "0x0000000000000000000000000000000000000000",
"gnosisAdapter": "0x0000000000000000000000000000000000000000",
"guardian": "0xEAF6183bAb3eFD3bF856Ac5C058431C8592394d6",
"hlAdapter": "0x889c0cc3283DB588A34E89Ad1E8F25B0fc827b4b",
"lzAdapter": "0x4A4c73d563395ad827511F70097d4Ef82E653805",
"metisAdapter": "0x0000000000000000000000000000000000000000",
"mockDestination": "0x0000000000000000000000000000000000000000",
"opAdapter": "0x0000000000000000000000000000000000000000",
"owner": "0xEAF6183bAb3eFD3bF856Ac5C058431C8592394d6",
"polAdapter": "0x0000000000000000000000000000000000000000",
"proxyAdmin": "0x01d678F1bbE148C96e7501F1Ac41661904F84F61",
"proxyFactory": "0xb172a90A7C238969CE9B27cc19D13b60A91e7F00",
"sameChainAdapter": "0x0000000000000000000000000000000000000000",
"scrollAdapter": "0x0000000000000000000000000000000000000000",
"wormholeAdapter": "0x7b62461a3570c6AC8a9f8330421576e417B71EE7",
"zkevmAdapter": "0x0000000000000000000000000000000000000000"
}
1 change: 1 addition & 0 deletions deployments/cc/mainnet/pre_prod_eth.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@
"proxyFactory": "0xB4e496f70602fE2AC6Ae511D028BA4D194773B29",
"sameChainAdapter": "0x0000000000000000000000000000000000000000",
"scrollAdapter": "0xb174AD8852d384AC58eaFC61ee87386dbDdc3e19",
"wormholeAdapter": "0x0000000000000000000000000000000000000000",
"zkevmAdapter": "0x0000000000000000000000000000000000000000"
}
26 changes: 26 additions & 0 deletions deployments/cc/testnet/celo_alfajores.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"arbAdapter": "0x0000000000000000000000000000000000000000",
"baseAdapter": "0x0000000000000000000000000000000000000000",
"ccipAdapter": "0x0000000000000000000000000000000000000000",
"chainId": 44787,
"clEmergencyOracle": "0x0000000000000000000000000000000000000000",
"create3Factory": "0x0000000000000000000000000000000000000000",
"crossChainController": "0xd922F548973426f86A296bDe2a69B006D6c4cb33",
"crossChainControllerImpl": "0x9F9da8017944081FDAB582f6d510001632c34632",
"emergencyRegistry": "0x0000000000000000000000000000000000000000",
"gnosisAdapter": "0x0000000000000000000000000000000000000000",
"guardian": "0x6D603081563784dB3f83ef1F65Cc389D94365Ac9",
"hlAdapter": "0x0000000000000000000000000000000000000000",
"lzAdapter": "0x0000000000000000000000000000000000000000",
"metisAdapter": "0x0000000000000000000000000000000000000000",
"mockDestination": "0x6AF9623B157bd3B267D36A601184D0415364A9e2",
"opAdapter": "0x0000000000000000000000000000000000000000",
"owner": "0x6D603081563784dB3f83ef1F65Cc389D94365Ac9",
"polAdapter": "0x0000000000000000000000000000000000000000",
"proxyAdmin": "0xD048e9C3e3916b7246B24Cc69f5eD479190e759E",
"proxyFactory": "0x319D156eA750b20D5370ef7b348B6fF1ab5D0256",
"sameChainAdapter": "0x0000000000000000000000000000000000000000",
"scrollAdapter": "0x0000000000000000000000000000000000000000",
"wormholeAdapter": "0x18536013913f763bc199A5b20c1d170b6058373e",
"zkevmAdapter": "0x0000000000000000000000000000000000000000"
}
3 changes: 2 additions & 1 deletion deployments/cc/testnet/sep.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@
"proxyFactory": "0x3Bad08c7b17D77cE12A2e1438Db2353b58F7c4a2",
"sameChainAdapter": "0x537C3126cf7D93415B69B401B9d4F65cEda9C410",
"scrollAdapter": "0xba62183cc12d68ca9Cf9a8b2ed64107fAd1F1d2f",
"wormholeAdapter": "0x42D8D601cB91df86367229d04D8cf3556464c5c7",
"zkevmAdapter": "0x0000000000000000000000000000000000000000"
}
}
17 changes: 17 additions & 0 deletions docs/networks/celo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ zkevm="${RPC_ZKEVM}"
zkevm-testnet="${RPC_ZKEVM_TESTNET}"
scroll="${RPC_SCROLL}"
scroll-testnet="${RPC_SCROLL_TESTNET}"
celo="${RPC_CELO}"
celo-testnet="${RPC_CELO_ALFAJORES}"

[etherscan]
ethereum={key="${ETHERSCAN_API_KEY_MAINNET}", chain=1 }
Expand All @@ -65,5 +67,7 @@ zkevm={key="${ETHERSCAN_API_KEY_ZKEVM}",chain=1101}
zkevm-testnet={key="${ETHERSCAN_API_KEY_ZKEVM}",chain=1442}
scroll={key="${ETHERSCAN_API_KEY_SCROLL}", chain=534352, utl='https://api.scrollscan.com/api/'}
scroll-testnet={key="${ETHERSCAN_API_KEY_SCROLL}", chain=534351, url='https://api-sepolia.scrollscan.com/api/'}
celo={key="${ETHERSCAN_API_KEY_CELO}", chain=42220, utl='https://api.celoscan.io/api'}
celo-testnet={key="${ETHERSCAN_API_KEY_CELO}", chain=44787, url='https://api-alfajores.celoscan.io/api'}

# See more config options https://github.com/gakonst/foundry/tree/master/config
139 changes: 139 additions & 0 deletions scripts/Adapters/DeployWormholeAdapter.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import {WormholeAdapter, IWormholeAdapter, IBaseAdapter} from '../../src/contracts/adapters/wormhole/WormholeAdapter.sol';
import './BaseAdapterScript.sol';
import {WormholeAdapterTestnet} from '../contract_extensions/WormholeAdapter.sol';

abstract contract BaseWormholeAdapter is BaseAdapterScript {
function WORMHOLE_RELAYER() public view virtual returns (address);

function isTestNet() public view virtual returns (bool) {
return false;
}

/// @dev for now we will need to deploy one adapter for every path (one remote network) because of the refunding on
/// destination ccc
function DESTINATION_CCC() public view virtual returns (address);

function _deployAdapter(
DeployerHelpers.Addresses memory addresses,
IBaseAdapter.TrustedRemotesConfig[] memory trustedRemotes
) internal override {
if (isTestNet()) {
addresses.wormholeAdapter = address(
new WormholeAdapterTestnet(
addresses.crossChainController,
WORMHOLE_RELAYER(),
DESTINATION_CCC(),
GET_BASE_GAS_LIMIT(),
trustedRemotes
)
);
} else {
addresses.wormholeAdapter = address(
new WormholeAdapter(
addresses.crossChainController,
WORMHOLE_RELAYER(),
DESTINATION_CCC(),
GET_BASE_GAS_LIMIT(),
trustedRemotes
)
);
}
}
}

contract Ethereum is BaseWormholeAdapter {
function WORMHOLE_RELAYER() public pure override returns (address) {
return 0x27428DD2d3DD32A4D7f7C497eAaa23130d894911;
}

function TRANSACTION_NETWORK() public pure override returns (uint256) {
return ChainIds.ETHEREUM;
}

function DESTINATION_CCC() public view override returns (address) {
DeployerHelpers.Addresses memory destinationAddresses = _getAddresses(ChainIds.CELO);
return destinationAddresses.crossChainController;
}

function REMOTE_NETWORKS() public pure override returns (uint256[] memory) {
uint256[] memory remoteNetworks = new uint256[](0);

return remoteNetworks;
}
}

contract Ethereum_testnet is BaseWormholeAdapter {
function WORMHOLE_RELAYER() public pure override returns (address) {
return 0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470;
}

function TRANSACTION_NETWORK() public pure override returns (uint256) {
return TestNetChainIds.ETHEREUM_SEPOLIA;
}

function DESTINATION_CCC() public view override returns (address) {
DeployerHelpers.Addresses memory destinationAddresses = _getAddresses(
TestNetChainIds.CELO_ALFAJORES
);
return destinationAddresses.crossChainController;
}

function isTestNet() public pure override returns (bool) {
return true;
}

function REMOTE_NETWORKS() public pure override returns (uint256[] memory) {
uint256[] memory remoteNetworks = new uint256[](0);

return remoteNetworks;
}
}

contract Celo is BaseWormholeAdapter {
function WORMHOLE_RELAYER() public pure override returns (address) {
return 0x27428DD2d3DD32A4D7f7C497eAaa23130d894911;
}

function TRANSACTION_NETWORK() public pure override returns (uint256) {
return ChainIds.CELO;
}

function DESTINATION_CCC() public pure override returns (address) {
return address(0);
}

function REMOTE_NETWORKS() public pure override returns (uint256[] memory) {
uint256[] memory remoteNetworks = new uint256[](1);
remoteNetworks[0] = ChainIds.ETHEREUM;

return remoteNetworks;
}
}

contract Celo_testnet is BaseWormholeAdapter {
function WORMHOLE_RELAYER() public pure override returns (address) {
return 0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84;
}

function TRANSACTION_NETWORK() public pure override returns (uint256) {
return TestNetChainIds.CELO_ALFAJORES;
}

function DESTINATION_CCC() public pure override returns (address) {
return address(0);
}

function isTestNet() public pure override returns (bool) {
return true;
}

function REMOTE_NETWORKS() public pure override returns (uint256[] memory) {
uint256[] memory remoteNetworks = new uint256[](1);
remoteNetworks[0] = TestNetChainIds.ETHEREUM_SEPOLIA;

return remoteNetworks;
}
}
9 changes: 8 additions & 1 deletion scripts/BaseScript.sol
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ library DeployerHelpers {
address proxyFactory;
address sameChainAdapter;
address scrollAdapter;
address wormholeAdapter;
address zkevmAdapter;
}

Expand All @@ -64,6 +65,8 @@ library DeployerHelpers {
return './deployments/cc/mainnet/gnosis.json';
} else if (chainId == ChainIds.SCROLL) {
return './deployments/cc/mainnet/scroll.json';
} else if (chainId == ChainIds.CELO) {
return './deployments/cc/mainnet/celo.json';
}
if (chainId == TestNetChainIds.ETHEREUM_SEPOLIA) {
return './deployments/cc/testnet/sep.json';
Expand All @@ -87,6 +90,8 @@ library DeployerHelpers {
return './deployments/cc/testnet/gno_chiado.json';
} else if (chainId == TestNetChainIds.SCROLL_SEPOLIA) {
return './deployments/cc/testnet/scroll_sepolia.json';
} else if (chainId == TestNetChainIds.CELO_ALFAJORES) {
return './deployments/cc/testnet/celo_alfajores.json';
} else {
revert('chain id is not supported');
}
Expand Down Expand Up @@ -121,7 +126,8 @@ library DeployerHelpers {
baseAdapter: abi.decode(persistedJson.parseRaw('.baseAdapter'), (address)),
zkevmAdapter: abi.decode(persistedJson.parseRaw('.zkevmAdapter'), (address)),
gnosisAdapter: abi.decode(persistedJson.parseRaw('.gnosisAdapter'), (address)),
scrollAdapter: abi.decode(persistedJson.parseRaw('.scrollAdapter'), (address))
scrollAdapter: abi.decode(persistedJson.parseRaw('.scrollAdapter'), (address)),
wormholeAdapter: abi.decode(persistedJson.parseRaw('.wormholeAdapter'), (address))
});

return addresses;
Expand Down Expand Up @@ -151,6 +157,7 @@ library DeployerHelpers {
json.serialize('proxyFactory', addresses.proxyFactory);
json.serialize('sameChainAdapter', addresses.sameChainAdapter);
json.serialize('scrollAdapter', addresses.scrollAdapter);
json.serialize('wormholeAdapter', addresses.wormholeAdapter);
json = json.serialize('zkevmAdapter', addresses.zkevmAdapter);
vm.writeJson(json, path);
}
Expand Down
10 changes: 10 additions & 0 deletions scripts/CCC/Deploy_CCC.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,16 @@ contract Scroll is BaseCCCNetworkDeployment {
}
}

contract Celo is BaseCCCNetworkDeployment {
function CL_EMERGENCY_ORACLE() public pure override returns (address) {
return 0x91b21900E91CD302EBeD05E45D8f270ddAED944d;
}

function TRANSACTION_NETWORK() public pure override returns (uint256) {
return ChainIds.CELO;
}
}

contract Ethereum_testnet is BaseCCCNetworkDeployment {
function TRANSACTION_NETWORK() public pure override returns (uint256) {
return TestNetChainIds.ETHEREUM_SEPOLIA;
Expand Down
Loading
Loading