diff --git a/.env.example b/.env.example index ec03052..de38a67 100644 --- a/.env.example +++ b/.env.example @@ -17,31 +17,31 @@ ARBITRUM_OUTBOX= ARBITRUM_ROOTS_SLOT= #Linea Envs -LINEA_CHAIN_ID= -LINEA_ROLLUP= -LINEA_STATE_ROOT_HASHES_SLOT= -LINEA_L2_MESSAGE_SERVICE= +LINEA_CHAIN_ID=59141 +LINEA_ROLLUP=0xB218f8A4Bc926cF1cA7b3423c154a0D627Bdb7E5 +LINEA_STATE_ROOT_HASHES_SLOT=282 +LINEA_L2_MESSAGE_SERVICE=0x971e727e956690b9957be6d51Ec16E73AcAC83A7 # Scroll Envs -SCROLL_CHAIN_ID= -SCROLL_CHAIN_SEPOLIA= -SCROLL_FINALIZED_STATE_ROOT_SLOT= -L1_SCROLL_MESSENGER= -L2_SCROLL_MESSENGER= +SCROLL_CHAIN_ID=534351 +SCROLL_CHAIN=0x2D567EcE699Eabe5afCd141eDB7A4f2D0D6ce8a0 +SCROLL_FINALIZED_STATE_ROOT_SLOT=158 +L1_SCROLL_MESSENGER=0x50c7d3e7f7c656493D1D76aaa1a836CedfCBB16A +L2_SCROLL_MESSENGER=0xBa50f5340FB9F3Bd074bD638c9BE13eCB36E603d # Optimism Envs -OPTIMISM_CHAIN_ID= -OPTIMISM_ANCHOR_GAME_SLOT= -OPTIMISM_ANCHOR_STATE_REGISTRY= -OPTIMISM_L1_CROSS_DOMAIN_MESSENGER_PROXY= -OPTIMISM_L2_CROSS_DOMAIN_MESSENGER= +OPTIMISM_CHAIN_ID=11155420 +OPTIMISM_ANCHOR_GAME_SLOT=2 +OPTIMISM_ANCHOR_STATE_REGISTRY=0xa1Cec548926eb5d69aa3B7B57d371EdBdD03e64b +OPTIMISM_L1_CROSS_DOMAIN_MESSENGER_PROXY=0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef +OPTIMISM_L2_CROSS_DOMAIN_MESSENGER=0x4200000000000000000000000000000000000007 # ZkSync Envs -ZKSYNC_CHAIN_ID= -ZKSYNC_DIAMOND= -ZKSYNC_GATEWAY_ZK_CHAIN= -ZKSYNC_L2_LOGS_ROOT_HASH_SLOT= -ZKSYNC_GATEWAY_CHAIN_ID= +ZKSYNC_CHAIN_ID=300 +ZKSYNC_DIAMOND=0x9A6DE0f62Aa270A8bCB1e2610078650D539B1Ef9 +ZKSYNC_GATEWAY_ZK_CHAIN=0xFFDbb7B7F35A8b81618F64d95BCc878297759744 +ZKSYNC_L2_LOGS_ROOT_HASH_SLOT=15 +ZKSYNC_GATEWAY_CHAIN_ID=32657 diff --git a/deployments/arbitrum-sepolia.json b/deployments/arbitrum-sepolia.json index daffab6..c82d85b 100644 --- a/deployments/arbitrum-sepolia.json +++ b/deployments/arbitrum-sepolia.json @@ -1,9 +1,9 @@ { "contracts": { - "broadcaster": "0x2e6f2Cb4bf4E4D2166F83958442a180825B94248", - "receiver": "0x712535fE2e24df51917DB5438EB3dA90437F70AF", "buffer": "0x0000000048C4Ed10cF14A02B9E0AbDDA5227b071", - "pusher": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88" + "pusher": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88", + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059" }, "copies": { "ethereum-sepolia": { diff --git a/deployments/arbitrum.json b/deployments/arbitrum.json new file mode 100644 index 0000000..1981624 --- /dev/null +++ b/deployments/arbitrum.json @@ -0,0 +1,26 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88", + "buffer": "0x0000000048C4Ed10cF14A02B9E0AbDDA5227b071", + "broadcaster-oracle": "0xBf8d2e6961b5725e3A4499BF1A2A1CcAB219DC51", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "provers": { + "ethereum": { + "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", + "prover": "0xFc8992F8dFf4e14573E6588dCc92dcDEa583DeBE" + } + }, + "copies": { + "ethereum": { + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" + } + } +} \ No newline at end of file diff --git a/deployments/base.json b/deployments/base.json new file mode 100644 index 0000000..494f2ee --- /dev/null +++ b/deployments/base.json @@ -0,0 +1,26 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0xcBF1db810c116e21fbf957530b73768924Fb2D02", + "buffer": "0xeB69db5269d89EBF0324e06926BE4200CF7E77f8", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + } + }, + "provers": { + "ethereum": { + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0xE91c715Fbef1CD5bd79f0fCbda3bA499031f3329" + } + } +} \ No newline at end of file diff --git a/deployments/ethereum-sepolia.json b/deployments/ethereum-sepolia.json index 4d46a91..ad4d626 100644 --- a/deployments/ethereum-sepolia.json +++ b/deployments/ethereum-sepolia.json @@ -1,7 +1,7 @@ { "contracts": { - "broadcaster": "0x2e6f2Cb4bf4E4D2166F83958442a180825B94248", - "receiver": "0x712535fE2e24df51917DB5438EB3dA90437F70AF" + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059" }, "pushers": { "arbitrum-sepolia": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88", diff --git a/deployments/ethereum.json b/deployments/ethereum.json new file mode 100644 index 0000000..9531393 --- /dev/null +++ b/deployments/ethereum.json @@ -0,0 +1,43 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88", + "broadcaster-oracle": "0xBf8d2e6961b5725e3A4499BF1A2A1CcAB219DC51", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "provers": { + "arbitrum": { + "pointer": "0xC70F25F1C275A1803c511c898c660ee28E08D148", + "prover": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD" + }, + "linea": { + "pointer": "0x70eD7E966C589928e3320c30CF1aD86d49E175d3", + "prover": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30" + }, + "scroll": { + "pointer": "0x749a05534A0D023df7238205F6B8146978b23332", + "prover": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70" + }, + "optimism": { + "pointer": "0xfBB590FAA27E8e51411511f6aC2B868FDF18d607", + "prover": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98" + }, + "zksync": { + "pointer": "0xd7CB2eC1D83B93E92785116cF73a8e6F29079831", + "prover": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + }, + "base": { + "pointer": "0x8645f22Bc5d6b9531a76E20d3eD749A55117F47C", + "prover": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" + } + }, + "pushers": { + "linea": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "scroll": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", + "zksync": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", + "optimism": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", + "base": "0xcBF1db810c116e21fbf957530b73768924Fb2D02" + } +} \ No newline at end of file diff --git a/deployments/linea-sepolia.json b/deployments/linea-sepolia.json index 7040372..9df4655 100644 --- a/deployments/linea-sepolia.json +++ b/deployments/linea-sepolia.json @@ -1,9 +1,9 @@ { "contracts": { - "broadcaster": "0x2e6f2Cb4bf4E4D2166F83958442a180825B94248", - "receiver": "0x712535fE2e24df51917DB5438EB3dA90437F70AF", "buffer": "0xCd455Df9F48Af8C86427fE3F86787D95330F65AA", - "pusher": "0x2aC21Fcfd6905eF13FA9bc0F874f3524029cB443" + "pusher": "0x2aC21Fcfd6905eF13FA9bc0F874f3524029cB443", + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059" }, "copies": { "ethereum-sepolia": { diff --git a/deployments/linea.json b/deployments/linea.json new file mode 100644 index 0000000..76fa377 --- /dev/null +++ b/deployments/linea.json @@ -0,0 +1,26 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" + } + }, + "provers": { + "ethereum": { + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0xc96707EF3F543aE9f81aAa81f92b11F3A6F825Dc" + } + } +} \ No newline at end of file diff --git a/deployments/optimism-sepolia.json b/deployments/optimism-sepolia.json index b187d66..1435d73 100644 --- a/deployments/optimism-sepolia.json +++ b/deployments/optimism-sepolia.json @@ -1,9 +1,9 @@ { "contracts": { - "broadcaster": "0x2e6f2Cb4bf4E4D2166F83958442a180825B94248", - "receiver": "0x712535fE2e24df51917DB5438EB3dA90437F70AF", "buffer": "0xaC0a6EB6407b9C13c3B374219B2f91fda4DF47C5", - "pusher": "0x2c4ded0d5883646AEAD86a6C748c871afa819125" + "pusher": "0x2c4ded0d5883646AEAD86a6C748c871afa819125", + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059" }, "copies": { "ethereum-sepolia": { diff --git a/deployments/optimism.json b/deployments/optimism.json new file mode 100644 index 0000000..ee16246 --- /dev/null +++ b/deployments/optimism.json @@ -0,0 +1,26 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", + "buffer": "0x9F9F7687eBfaFABA830f741006Fd6D739f76f6A6", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" + } + }, + "provers": { + "ethereum": { + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0x0Adf8FefA84B09ebD31E7eDA9c381D4ADB44ca1d" + } + } +} \ No newline at end of file diff --git a/deployments/scroll-sepolia.json b/deployments/scroll-sepolia.json index 13ece6a..dfb667a 100644 --- a/deployments/scroll-sepolia.json +++ b/deployments/scroll-sepolia.json @@ -1,9 +1,9 @@ { "contracts": { - "broadcaster": "0x2e6f2Cb4bf4E4D2166F83958442a180825B94248", - "receiver": "0x712535fE2e24df51917DB5438EB3dA90437F70AF", "buffer": "0x12e91f63cC0F43434141396AC0E9f5b1A0e103D6", - "pusher": "0xF99b4E792aCaBa74cb2d1A5D3fDBDFfe630C0a8e" + "pusher": "0xF99b4E792aCaBa74cb2d1A5D3fDBDFfe630C0a8e", + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059" }, "copies": { "ethereum-sepolia": { diff --git a/deployments/scroll.json b/deployments/scroll.json new file mode 100644 index 0000000..9979ca1 --- /dev/null +++ b/deployments/scroll.json @@ -0,0 +1,26 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", + "buffer": "0x58b67c85CeCAa0e2c4476Ed1Be03970EFbce298c", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" + } + }, + "provers": { + "ethereum": { + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0xe8cBb8F5B085ECE491673E6d1239081b77f0Ca9a" + } + } +} \ No newline at end of file diff --git a/deployments/zksync-sepolia.json b/deployments/zksync-sepolia.json index 4b1760d..161c29d 100644 --- a/deployments/zksync-sepolia.json +++ b/deployments/zksync-sepolia.json @@ -1,9 +1,9 @@ { "contracts": { - "broadcaster": "0x5483634580acDB4f0134E09025732DF9784e46e3", - "receiver": "0x712535fE2e24df51917DB5438EB3dA90437F70AF", "buffer": "0x4309FcAA812F729A2c6Fc9b67094296389eC919c", - "pusher": "0xc69281Edb758A5dDD7A13e12b4F3d81b14Bd983B" + "pusher": "0xc69281Edb758A5dDD7A13e12b4F3d81b14Bd983B", + "broadcaster": "0xE07Fe9bE1615fE5b3eCdbE07aDe090eDFEf65e80", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059" }, "copies": { "ethereum-sepolia": { diff --git a/deployments/zksync.json b/deployments/zksync.json new file mode 100644 index 0000000..8b179e7 --- /dev/null +++ b/deployments/zksync.json @@ -0,0 +1,26 @@ +{ + "contracts": { + "broadcaster": "0xE07Fe9bE1615fE5b3eCdbE07aDe090eDFEf65e80", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", + "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" + } + }, + "provers": { + "ethereum": { + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0x0C413Eb0681c91e677BA6D4a8bBC0989a7962bd6" + } + } +} \ No newline at end of file diff --git a/scripts/deployment/DeployBase.s.sol b/scripts/deployment/DeployBase.s.sol index 3e76fb7..13b9e52 100644 --- a/scripts/deployment/DeployBase.s.sol +++ b/scripts/deployment/DeployBase.s.sol @@ -26,6 +26,15 @@ contract DeployBase is Script { if (chainId == 534351) return "scroll-sepolia"; if (chainId == 11155420) return "optimism-sepolia"; if (chainId == 300) return "zksync-sepolia"; + + if (chainId == 1) return "ethereum"; + if (chainId == 42161) return "arbitrum"; + if (chainId == 59144) return "linea"; + if (chainId == 534352) return "scroll"; + if (chainId == 10) return "optimism"; + if (chainId == 324) return "zksync"; + if (chainId == 8453) return "base"; + revert InvalidChainId(chainId); } diff --git a/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol b/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol index 2301e23..68e6c0c 100644 --- a/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol +++ b/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol @@ -12,8 +12,11 @@ import {DeployBase} from "../DeployBase.s.sol"; contract DeployBuffers is DeployBase { function run() public { string memory chainType = vm.envString("CHAIN_TYPE"); - string memory parentChain = vm.envString("PARENT_CHAIN"); - string memory childChain = vm.envString("CHILD_CHAIN"); + + uint256 parentChainId = vm.envUint("PARENT_CHAIN_ID"); + uint256 childChainId = vm.envUint("CHILD_CHAIN_ID"); + string memory parentChain = _chainName(parentChainId); + string memory childChain = _chainName(childChainId); address pusherAddress = _getPusherAddress(parentChain, childChain); if (pusherAddress == address(0)) { @@ -38,7 +41,10 @@ contract DeployBuffers is DeployBase { buffer = address(new LineaBuffer(messenger, pusherAddress)); } else if (keccak256(bytes(chainType)) == keccak256(bytes("scroll"))) { buffer = address(new ScrollBuffer(messenger, pusherAddress)); - } else if (keccak256(bytes(chainType)) == keccak256(bytes("optimism"))) { + } else if ( + keccak256(bytes(chainType)) == keccak256(bytes("optimism")) + || keccak256(bytes(chainType)) == keccak256(bytes("base")) + ) { buffer = address(new OptimismBuffer(messenger, pusherAddress)); } else { revert("Invalid chain type"); diff --git a/scripts/deployment/block-hash-pusher/DeployPushers.s.sol b/scripts/deployment/block-hash-pusher/DeployPushers.s.sol index fe8fc44..b92ee86 100644 --- a/scripts/deployment/block-hash-pusher/DeployPushers.s.sol +++ b/scripts/deployment/block-hash-pusher/DeployPushers.s.sol @@ -15,33 +15,46 @@ contract DeployPushers is DeployBase { address l1ScrollMessenger = vm.envAddress("L1_SCROLL_MESSENGER"); address zkSyncDiamond = vm.envAddress("ZKSYNC_DIAMOND"); address opL1CrossDomainMessengerProxy = vm.envAddress("OPTIMISM_L1_CROSS_DOMAIN_MESSENGER_PROXY"); + address baseL1CrossDomainMessengerProxy = vm.envAddress("BASE_L1_CROSS_DOMAIN_MESSENGER_PROXY"); uint256 lineaChainId = vm.envUint("LINEA_CHAIN_ID"); uint256 scrollChainId = vm.envUint("SCROLL_CHAIN_ID"); uint256 zksyncChainId = vm.envUint("ZKSYNC_CHAIN_ID"); uint256 optimismChainId = vm.envUint("OPTIMISM_CHAIN_ID"); + uint256 baseChainId = vm.envUint("BASE_CHAIN_ID"); + + string memory lineaName = _chainName(lineaChainId); + string memory scrollName = _chainName(scrollChainId); + string memory zksyncName = _chainName(zksyncChainId); + string memory optimismName = _chainName(optimismChainId); + string memory baseName = _chainName(baseChainId); vm.startBroadcast(); - if (!_isPusherDeployed("linea-sepolia")) { + if (!_isPusherDeployed(lineaName)) { LineaPusher lineaPusher = new LineaPusher(lineaRollup); - _writePusher("linea-sepolia", address(lineaPusher)); + _writePusher(lineaName, address(lineaPusher)); _writeContractAtChain(lineaChainId, "pusher", address(lineaPusher)); } - if (!_isPusherDeployed("scroll-sepolia")) { + if (!_isPusherDeployed(scrollName)) { ScrollPusher scrollPusher = new ScrollPusher(l1ScrollMessenger); - _writePusher("scroll-sepolia", address(scrollPusher)); + _writePusher(scrollName, address(scrollPusher)); _writeContractAtChain(scrollChainId, "pusher", address(scrollPusher)); } - if (!_isPusherDeployed("zksync-sepolia")) { + if (!_isPusherDeployed(zksyncName)) { ZkSyncPusher zksyncPusher = new ZkSyncPusher(zkSyncDiamond); - _writePusher("zksync-sepolia", address(zksyncPusher)); + _writePusher(zksyncName, address(zksyncPusher)); _writeContractAtChain(zksyncChainId, "pusher", address(zksyncPusher)); } - if (!_isPusherDeployed("optimism-sepolia")) { + if (!_isPusherDeployed(optimismName)) { OptimismPusher optimismPusher = new OptimismPusher(opL1CrossDomainMessengerProxy); - _writePusher("optimism-sepolia", address(optimismPusher)); + _writePusher(optimismName, address(optimismPusher)); _writeContractAtChain(optimismChainId, "pusher", address(optimismPusher)); } + if (!_isPusherDeployed(baseName)) { + OptimismPusher basePusher = new OptimismPusher(baseL1CrossDomainMessengerProxy); + _writePusher(baseName, address(basePusher)); + _writeContractAtChain(baseChainId, "pusher", address(basePusher)); + } vm.stopBroadcast(); } } diff --git a/scripts/deployment/block-hash-pusher/deploy-buffers.sh b/scripts/deployment/block-hash-pusher/deploy-buffers.sh index 957e6d2..c58dd6e 100755 --- a/scripts/deployment/block-hash-pusher/deploy-buffers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-buffers.sh @@ -1,11 +1,14 @@ #!/usr/bin/env bash -CHAIN_TYPE=$CHAIN_TYPE \ -PARENT_CHAIN=$PARENT_CHAIN \ -CHILD_CHAIN=$CHILD_CHAIN \ -MESSENGER=$MESSENGER \ +if [ "$VERIFIER" = "etherscan" ]; then + VERIFY_FLAGS="--verify --verifier etherscan --etherscan-api-key $ETHERSCAN_API_KEY" +else + VERIFY_FLAGS="--verify --verifier-url $VERIFIER_URL" +fi + forge script scripts/deployment/block-hash-pusher/DeployBuffers.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/block-hash-pusher/deploy-pushers.sh b/scripts/deployment/block-hash-pusher/deploy-pushers.sh index 6530217..d970d57 100755 --- a/scripts/deployment/block-hash-pusher/deploy-pushers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-pushers.sh @@ -1,7 +1,14 @@ #!/usr/bin/env bash +if [ "$VERIFIER" = "etherscan" ]; then + VERIFY_FLAGS="--verify --verifier etherscan --etherscan-api-key $ETHERSCAN_API_KEY" +else + VERIFY_FLAGS="--verify --verifier-url $VERIFIER_URL" +fi + forge script scripts/deployment/block-hash-pusher/DeployPushers.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/deploy-protocol.sh b/scripts/deployment/deploy-protocol.sh index 01ae3ef..39badab 100755 --- a/scripts/deployment/deploy-protocol.sh +++ b/scripts/deployment/deploy-protocol.sh @@ -1,7 +1,14 @@ #!/usr/bin/env bash +if [ "$VERIFIER" = "etherscan" ]; then + VERIFY_FLAGS="--verify --verifier etherscan --etherscan-api-key $ETHERSCAN_API_KEY" +else + VERIFY_FLAGS="--verify --verifier-url $VERIFIER_URL" +fi + CHAIN_TYPE=$CHAIN_TYPE forge script scripts/deployment/DeployProtocol.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/deploy.sh b/scripts/deployment/deploy.sh index 11fdb4d..3269541 100644 --- a/scripts/deployment/deploy.sh +++ b/scripts/deployment/deploy.sh @@ -8,67 +8,81 @@ set +a # ======================================================================================== # Deploy Broadcaster and Receiver contracts # ======================================================================================== -chmod +x scripts/deployment/deploy-protocol.sh echo "Deploying Broadcaster and Receiver contracts on Ethereum..." CHAIN_TYPE="ethereum" \ RPC_URL="$ETHEREUM_RPC_URL" \ -./scripts/deployment/deploy-protocol.sh +bash scripts/deployment/deploy-protocol.sh echo "Deploying Broadcaster and Receiver contracts on Arbitrum..." CHAIN_TYPE="arbitrum" \ RPC_URL="$ARBITRUM_RPC_URL" \ -./scripts/deployment/deploy-protocol.sh +bash scripts/deployment/deploy-protocol.sh echo "Deploying Broadcaster and Receiver contracts on Linea..." CHAIN_TYPE="linea" \ RPC_URL="$LINEA_RPC_URL" \ -./scripts/deployment/deploy-protocol.sh +bash scripts/deployment/deploy-protocol.sh echo "Deploying Broadcaster and Receiver contracts on Scroll..." CHAIN_TYPE="scroll" \ RPC_URL="$SCROLL_RPC_URL" \ -./scripts/deployment/deploy-protocol.sh +bash scripts/deployment/deploy-protocol.sh echo "Deploying Broadcaster and Receiver contracts on Optimism..." CHAIN_TYPE="optimism" \ RPC_URL="$OPTIMISM_RPC_URL" \ -./scripts/deployment/deploy-protocol.sh +bash scripts/deployment/deploy-protocol.sh + +echo "Deploying Broadcaster and Receiver contracts on Base..." +CHAIN_TYPE="base" \ +RPC_URL="$BASE_RPC_URL" \ +bash scripts/deployment/deploy-protocol.sh echo "Deploying Broadcaster and Receiver contracts on ZkSync..." CHAIN_TYPE="zksync" \ RPC_URL="$ZKSYNC_RPC_URL" \ -./scripts/deployment/deploy-protocol.sh +bash scripts/deployment/deploy-protocol.sh # ======================================================================================== # Deploy ParentToChildProver contracts # ======================================================================================== -chmod +x scripts/deployment/provers/deploy-parent-provers.sh # Ethereum echo "Deploying ParentToChildProver contracts on Ethereum..." -RPC_URL="$ETHEREUM_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh +CHAIN_TYPE="ethereum" \ +RPC_URL="$ETHEREUM_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh # Arbitrum echo "Deploying ParentToChildProver contracts on Arbitrum..." -RPC_URL="$ARBITRUM_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh +CHAIN_TYPE="arbitrum" \ +RPC_URL="$ARBITRUM_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh # Linea echo "Deploying ParentToChildProver contracts on Linea..." -RPC_URL="$LINEA_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh +CHAIN_TYPE="linea" \ +RPC_URL="$LINEA_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh # Scroll echo "Deploying ParentToChildProver contracts on Scroll..." -RPC_URL="$SCROLL_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh +CHAIN_TYPE="scroll" \ +RPC_URL="$SCROLL_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh # Optimism echo "Deploying ParentToChildProver contracts on Optimism..." -RPC_URL="$OPTIMISM_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh +CHAIN_TYPE="optimism" \ +RPC_URL="$OPTIMISM_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh + +# Base +echo "Deploying ParentToChildProver contracts on Base..." +CHAIN_TYPE="base" \ +RPC_URL="$BASE_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh # ZkSync echo "Deploying ParentToChildProver contracts on ZkSync..." -RPC_URL="$ZKSYNC_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh +CHAIN_TYPE="zksync" \ +RPC_URL="$ZKSYNC_RPC_URL" bash scripts/deployment/provers/deploy-parent-provers.sh # ======================================================================================== @@ -78,52 +92,58 @@ RPC_URL="$ZKSYNC_RPC_URL" ./scripts/deployment/provers/deploy-parent-provers.sh # Ethereum echo "Deploying Pushers contracts on Ethereum..." -RPC_URL="$ETHEREUM_RPC_URL" ./scripts/deployment/block-hash-pusher/deploy-pushers.sh +RPC_URL="$ETHEREUM_RPC_URL" bash scripts/deployment/block-hash-pusher/deploy-pushers.sh # ======================================================================================== # Deploy Buffers contracts # ======================================================================================== -chmod +x scripts/deployment/block-hash-pusher/deploy-buffers.sh # Ethereum # Linea echo "Deploying Buffer contract for Linea..." CHAIN_TYPE="linea" \ -PARENT_CHAIN="ethereum-sepolia" \ -CHILD_CHAIN="linea-sepolia" \ +PARENT_CHAIN_ID="$ETHEREUM_CHAIN_ID" \ +CHILD_CHAIN_ID="$LINEA_CHAIN_ID" \ MESSENGER="$LINEA_L2_MESSAGE_SERVICE" \ -RPC_URL="$LINEA_RPC_URL" ./scripts/deployment/block-hash-pusher/deploy-buffers.sh +RPC_URL="$LINEA_RPC_URL" bash scripts/deployment/block-hash-pusher/deploy-buffers.sh # Scroll echo "Deploying Buffer contract for Scroll..." CHAIN_TYPE="scroll" \ -PARENT_CHAIN="ethereum-sepolia" \ -CHILD_CHAIN="scroll-sepolia" \ +PARENT_CHAIN_ID="$ETHEREUM_CHAIN_ID" \ +CHILD_CHAIN_ID="$SCROLL_CHAIN_ID" \ MESSENGER="$L2_SCROLL_MESSENGER" \ -RPC_URL="$SCROLL_RPC_URL" ./scripts/deployment/block-hash-pusher/deploy-buffers.sh +RPC_URL="$SCROLL_RPC_URL" bash scripts/deployment/block-hash-pusher/deploy-buffers.sh # ZkSync echo "Deploying Buffer contract for ZkSync..." CHAIN_TYPE="zksync" \ -PARENT_CHAIN="ethereum-sepolia" \ -CHILD_CHAIN="zksync-sepolia" \ +PARENT_CHAIN_ID="$ETHEREUM_CHAIN_ID" \ +CHILD_CHAIN_ID="$ZKSYNC_CHAIN_ID" \ MESSENGER=0x0000000000000000000000000000000000000000 \ -RPC_URL="$ZKSYNC_RPC_URL" ./scripts/deployment/block-hash-pusher/deploy-buffers.sh +RPC_URL="$ZKSYNC_RPC_URL" bash scripts/deployment/block-hash-pusher/deploy-buffers.sh # Optimism echo "Deploying Buffer contract for Optimism..." CHAIN_TYPE="optimism" \ -PARENT_CHAIN="ethereum-sepolia" \ -CHILD_CHAIN="optimism-sepolia" \ +PARENT_CHAIN_ID="$ETHEREUM_CHAIN_ID" \ +CHILD_CHAIN_ID="$OPTIMISM_CHAIN_ID" \ MESSENGER="$OPTIMISM_L2_CROSS_DOMAIN_MESSENGER" \ -RPC_URL="$OPTIMISM_RPC_URL" ./scripts/deployment/block-hash-pusher/deploy-buffers.sh +RPC_URL="$OPTIMISM_RPC_URL" bash scripts/deployment/block-hash-pusher/deploy-buffers.sh + +# Base +echo "Deploying Buffer contract for Base..." +CHAIN_TYPE="base" \ +PARENT_CHAIN_ID="$ETHEREUM_CHAIN_ID" \ +CHILD_CHAIN_ID="$BASE_CHAIN_ID" \ +MESSENGER="$BASE_L2_CROSS_DOMAIN_MESSENGER" \ +RPC_URL="$BASE_RPC_URL" bash scripts/deployment/block-hash-pusher/deploy-buffers.sh # ======================================================================================== # Deploy ChildToParentProver contracts # ======================================================================================== -chmod +x scripts/deployment/provers/deploy-child-provers.sh # Ethereum echo "Deploying ChildToParentProver contracts ..." -./scripts/deployment/provers/deploy-child-provers.sh +bash scripts/deployment/provers/deploy-child-provers.sh \ No newline at end of file diff --git a/scripts/deployment/provers/DeployArbitrumChildToParent.s.sol b/scripts/deployment/provers/DeployArbitrumChildToParent.s.sol index 4c0f064..bd7ef97 100644 --- a/scripts/deployment/provers/DeployArbitrumChildToParent.s.sol +++ b/scripts/deployment/provers/DeployArbitrumChildToParent.s.sol @@ -44,7 +44,7 @@ contract DeployArbitrumChildToParent is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { diff --git a/scripts/deployment/provers/DeployArbitrumParentToChild.s.sol b/scripts/deployment/provers/DeployArbitrumParentToChild.s.sol index 83c9988..487207a 100644 --- a/scripts/deployment/provers/DeployArbitrumParentToChild.s.sol +++ b/scripts/deployment/provers/DeployArbitrumParentToChild.s.sol @@ -47,7 +47,7 @@ contract DeployArbitrumParentToChild is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { diff --git a/scripts/deployment/provers/DeployLineaChildToParent.s.sol b/scripts/deployment/provers/DeployLineaChildToParent.s.sol index dfa6087..93f7b93 100644 --- a/scripts/deployment/provers/DeployLineaChildToParent.s.sol +++ b/scripts/deployment/provers/DeployLineaChildToParent.s.sol @@ -45,7 +45,7 @@ contract DeployLineaChildToParent is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployLineaParentToChild.s.sol b/scripts/deployment/provers/DeployLineaParentToChild.s.sol index 397f918..505505f 100644 --- a/scripts/deployment/provers/DeployLineaParentToChild.s.sol +++ b/scripts/deployment/provers/DeployLineaParentToChild.s.sol @@ -45,7 +45,7 @@ contract DeployLineaParentToChild is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployOptimismChildToParent.s.sol b/scripts/deployment/provers/DeployOptimismChildToParent.s.sol index 26a6897..5a3f2da 100644 --- a/scripts/deployment/provers/DeployOptimismChildToParent.s.sol +++ b/scripts/deployment/provers/DeployOptimismChildToParent.s.sol @@ -45,7 +45,7 @@ contract DeployOptimismChildToParent is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployOptimismParentToChild.s.sol b/scripts/deployment/provers/DeployOptimismParentToChild.s.sol index 120b507..79f2972 100644 --- a/scripts/deployment/provers/DeployOptimismParentToChild.s.sol +++ b/scripts/deployment/provers/DeployOptimismParentToChild.s.sol @@ -47,7 +47,7 @@ contract DeployOptimismParentToChild is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployScrollChildToParent.s.sol b/scripts/deployment/provers/DeployScrollChildToParent.s.sol index 0117818..acfcf4f 100644 --- a/scripts/deployment/provers/DeployScrollChildToParent.s.sol +++ b/scripts/deployment/provers/DeployScrollChildToParent.s.sol @@ -45,7 +45,7 @@ contract DeployScrollChildToParent is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployScrollParentToChild.s.sol b/scripts/deployment/provers/DeployScrollParentToChild.s.sol index 56078a4..612fd70 100644 --- a/scripts/deployment/provers/DeployScrollParentToChild.s.sol +++ b/scripts/deployment/provers/DeployScrollParentToChild.s.sol @@ -47,7 +47,7 @@ contract DeployArbitrumParentToChild is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployZkSyncChildToParent.s.sol b/scripts/deployment/provers/DeployZkSyncChildToParent.s.sol index b109455..e88b20c 100644 --- a/scripts/deployment/provers/DeployZkSyncChildToParent.s.sol +++ b/scripts/deployment/provers/DeployZkSyncChildToParent.s.sol @@ -45,7 +45,7 @@ contract DeployZkSyncChildToParent is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/DeployZkSyncParentToChild.s.sol b/scripts/deployment/provers/DeployZkSyncParentToChild.s.sol index 6044a5c..997a415 100644 --- a/scripts/deployment/provers/DeployZkSyncParentToChild.s.sol +++ b/scripts/deployment/provers/DeployZkSyncParentToChild.s.sol @@ -50,7 +50,7 @@ contract DeployZkSyncParentToChild is DeployBase { if (block.chainid == homeChainId) { bytes memory pointerCreationCode = abi.encodePacked(type(StateProverPointer).creationCode, abi.encode(owner)); - pointer = _deploy(pointerCreationCode, bytes32(targetChainId)); + pointer = _deploy(pointerCreationCode, keccak256(abi.encode(targetChainId))); if (pointer != address(0)) { if (StateProverPointer(pointer).implementationAddress() == address(0)) { // This will only work if `msg.sender` is the owner of the pointer. diff --git a/scripts/deployment/provers/deploy-child-provers.sh b/scripts/deployment/provers/deploy-child-provers.sh index 2cb11ec..a430811 100755 --- a/scripts/deployment/provers/deploy-child-provers.sh +++ b/scripts/deployment/provers/deploy-child-provers.sh @@ -1,36 +1,54 @@ #!/usr/bin/env bash +if [ "$VERIFIER" = "etherscan" ]; then + VERIFY_FLAGS="--verify --verifier etherscan --etherscan-api-key $ETHERSCAN_API_KEY" +else + VERIFY_FLAGS="--verify --verifier-url $VERIFIER_URL" +fi HOME_CHAIN_ID=$ARBITRUM_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ forge script scripts/deployment/provers/DeployArbitrumChildToParent.s.sol \ --rpc-url "$ARBITRUM_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS HOME_CHAIN_ID=$LINEA_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ forge script scripts/deployment/provers/DeployLineaChildToParent.s.sol \ --rpc-url "$LINEA_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS HOME_CHAIN_ID=$SCROLL_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ forge script scripts/deployment/provers/DeployScrollChildToParent.s.sol \ --rpc-url "$SCROLL_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS HOME_CHAIN_ID=$OPTIMISM_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ forge script scripts/deployment/provers/DeployOptimismChildToParent.s.sol \ --rpc-url "$OPTIMISM_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS + +HOME_CHAIN_ID=$BASE_CHAIN_ID \ +TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ +forge script scripts/deployment/provers/DeployOptimismChildToParent.s.sol \ + --rpc-url "$BASE_RPC_URL" \ + --private-key "$DEPLOYER_PRIVATE_KEY" \ + --broadcast \ + $VERIFY_FLAGS HOME_CHAIN_ID=$ZKSYNC_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ forge script scripts/deployment/provers/DeployZkSyncChildToParent.s.sol \ --rpc-url "$ZKSYNC_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast \ No newline at end of file + --broadcast \ + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/provers/deploy-parent-provers.sh b/scripts/deployment/provers/deploy-parent-provers.sh index e553ead..d053840 100755 --- a/scripts/deployment/provers/deploy-parent-provers.sh +++ b/scripts/deployment/provers/deploy-parent-provers.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash +if [ "$VERIFIER" = "etherscan" ]; then + VERIFY_FLAGS="--verify --verifier etherscan --etherscan-api-key $ETHERSCAN_API_KEY" +else + VERIFY_FLAGS="--verify --verifier-url $VERIFIER_URL" +fi + OUTBOX=$ARBITRUM_OUTBOX \ ROOTS_SLOT=$ARBITRUM_ROOTS_SLOT \ HOME_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -7,7 +13,8 @@ TARGET_CHAIN_ID=$ARBITRUM_CHAIN_ID \ forge script scripts/deployment/provers/DeployArbitrumParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS ROLLUP=$LINEA_ROLLUP \ @@ -17,17 +24,19 @@ TARGET_CHAIN_ID=$LINEA_CHAIN_ID \ forge script scripts/deployment/provers/DeployLineaParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS -SCROLL_CHAIN=$SCROLL_CHAIN_SEPOLIA \ +SCROLL_CHAIN=$SCROLL_CHAIN \ FINALIZED_STATE_ROOTS_SLOT=$SCROLL_FINALIZED_STATE_ROOT_SLOT \ HOME_CHAIN_ID=$ETHEREUM_CHAIN_ID \ TARGET_CHAIN_ID=$SCROLL_CHAIN_ID \ forge script scripts/deployment/provers/DeployScrollParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS ANCHOR_STATE_REGISTRY=$OPTIMISM_ANCHOR_STATE_REGISTRY \ @@ -37,7 +46,18 @@ TARGET_CHAIN_ID=$OPTIMISM_CHAIN_ID \ forge script scripts/deployment/provers/DeployOptimismParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS + +ANCHOR_STATE_REGISTRY=$BASE_ANCHOR_STATE_REGISTRY \ +ANCHOR_GAME_SLOT=$BASE_ANCHOR_GAME_SLOT \ +HOME_CHAIN_ID=$ETHEREUM_CHAIN_ID \ +TARGET_CHAIN_ID=$BASE_CHAIN_ID \ +forge script scripts/deployment/provers/DeployOptimismParentToChild.s.sol \ + --rpc-url "$RPC_URL" \ + --private-key "$DEPLOYER_PRIVATE_KEY" \ + --broadcast \ + $VERIFY_FLAGS GATEWAY_ZK_CHAIN=$ZKSYNC_GATEWAY_ZK_CHAIN \ L2_LOGS_ROOT_HASH_SLOT=$ZKSYNC_L2_LOGS_ROOT_HASH_SLOT \ @@ -48,7 +68,8 @@ TARGET_CHAIN_ID=$ZKSYNC_CHAIN_ID \ forge script scripts/deployment/provers/DeployZkSyncParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + $VERIFY_FLAGS