From 2f03c6a379d3b224fae61dbff140d6f44a4cec34 Mon Sep 17 00:00:00 2001 From: Luiz Date: Tue, 24 Mar 2026 10:38:53 -0300 Subject: [PATCH 1/8] mainnet contracts --- .env.example | 38 +++++++++---------- deployments/arbitrum-sepolia.json | 6 +-- deployments/arbitrum.json | 25 ++++++++++++ deployments/ethereum-sepolia.json | 9 ++++- deployments/ethereum.json | 38 +++++++++++++++++++ deployments/linea-sepolia.json | 6 +-- deployments/linea.json | 21 ++++++++++ deployments/optimism-sepolia.json | 6 +-- deployments/optimism.json | 21 ++++++++++ deployments/scroll-sepolia.json | 6 +-- deployments/scroll.json | 21 ++++++++++ deployments/zksync-sepolia.json | 6 +-- deployments/zksync.json | 21 ++++++++++ scripts/deployment/DeployBase.s.sol | 8 ++++ .../block-hash-pusher/DeployPushers.s.sol | 21 ++++++---- .../provers/deploy-parent-provers.sh | 2 +- 16 files changed, 210 insertions(+), 45 deletions(-) create mode 100644 deployments/arbitrum.json create mode 100644 deployments/ethereum.json create mode 100644 deployments/linea.json create mode 100644 deployments/optimism.json create mode 100644 deployments/scroll.json create mode 100644 deployments/zksync.json 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..2c1eff6 --- /dev/null +++ b/deployments/arbitrum.json @@ -0,0 +1,25 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/deployments/ethereum-sepolia.json b/deployments/ethereum-sepolia.json index 4d46a91..e3e3c76 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", @@ -31,5 +31,10 @@ "pointer": "0x7cac647e088b7361953f37C0C3BaA092748b8E7F", "prover": "0xf5e56d9d93267631f69dB9388d38e9c487830bD4" } + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD" + } } } \ No newline at end of file diff --git a/deployments/ethereum.json b/deployments/ethereum.json new file mode 100644 index 0000000..0dc0e8c --- /dev/null +++ b/deployments/ethereum.json @@ -0,0 +1,38 @@ +{ + "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" + } + }, + "pushers": { + "linea": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "scroll": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", + "zksync": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", + "optimism": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D" + } +} \ 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..8c11a64 --- /dev/null +++ b/deployments/linea.json @@ -0,0 +1,21 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + } + }, + "provers": { + "ethereum": { + "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", + "prover": "0xAB641d3C1BF883A1900BBdDeD6FD22B28843c3eC" + } + } +} \ 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..9496476 --- /dev/null +++ b/deployments/optimism.json @@ -0,0 +1,21 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + } + }, + "provers": { + "ethereum": { + "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", + "prover": "0xeFBD41f759C7e149BF897Ee1C50d7bf4d02FdADD" + } + } +} \ 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..880e07d --- /dev/null +++ b/deployments/scroll.json @@ -0,0 +1,21 @@ +{ + "contracts": { + "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + } + }, + "provers": { + "ethereum": { + "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", + "prover": "0x1ceFb5c01b2c5809104B2A687Ef8a1bE28Dc47be" + } + } +} \ 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..18c04e1 --- /dev/null +++ b/deployments/zksync.json @@ -0,0 +1,21 @@ +{ + "contracts": { + "broadcaster": "0xE07Fe9bE1615fE5b3eCdbE07aDe090eDFEf65e80", + "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", + "pusher": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12" + }, + "copies": { + "ethereum": { + "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", + "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98" + } + }, + "provers": { + "ethereum": { + "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", + "prover": "0x9224694981A19E51935859B334Ad6eF905e6356d" + } + } +} \ No newline at end of file diff --git a/scripts/deployment/DeployBase.s.sol b/scripts/deployment/DeployBase.s.sol index 3e76fb7..1fed1c0 100644 --- a/scripts/deployment/DeployBase.s.sol +++ b/scripts/deployment/DeployBase.s.sol @@ -26,6 +26,14 @@ 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"; + revert InvalidChainId(chainId); } diff --git a/scripts/deployment/block-hash-pusher/DeployPushers.s.sol b/scripts/deployment/block-hash-pusher/DeployPushers.s.sol index fe8fc44..cc6025b 100644 --- a/scripts/deployment/block-hash-pusher/DeployPushers.s.sol +++ b/scripts/deployment/block-hash-pusher/DeployPushers.s.sol @@ -21,25 +21,30 @@ contract DeployPushers is DeployBase { uint256 zksyncChainId = vm.envUint("ZKSYNC_CHAIN_ID"); uint256 optimismChainId = vm.envUint("OPTIMISM_CHAIN_ID"); + string memory lineaName = _chainName(lineaChainId); + string memory scrollName = _chainName(scrollChainId); + string memory zksyncName = _chainName(zksyncChainId); + string memory optimismName = _chainName(optimismChainId); + 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)); } vm.stopBroadcast(); diff --git a/scripts/deployment/provers/deploy-parent-provers.sh b/scripts/deployment/provers/deploy-parent-provers.sh index e553ead..6ecede4 100755 --- a/scripts/deployment/provers/deploy-parent-provers.sh +++ b/scripts/deployment/provers/deploy-parent-provers.sh @@ -20,7 +20,7 @@ forge script scripts/deployment/provers/DeployLineaParentToChild.s.sol \ --broadcast -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 \ From 7bb0419e0242f75c5f232bc37d1271beb3e26bd1 Mon Sep 17 00:00:00 2001 From: Luiz Date: Tue, 24 Mar 2026 10:52:16 -0300 Subject: [PATCH 2/8] modularize scripts for mainnet --- .../block-hash-pusher/DeployBuffers.s.sol | 7 +++++-- .../block-hash-pusher/deploy-buffers.sh | 4 ---- scripts/deployment/deploy.sh | 16 ++++++++-------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol b/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol index 2301e23..89c28d7 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)) { diff --git a/scripts/deployment/block-hash-pusher/deploy-buffers.sh b/scripts/deployment/block-hash-pusher/deploy-buffers.sh index 957e6d2..242111e 100755 --- a/scripts/deployment/block-hash-pusher/deploy-buffers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-buffers.sh @@ -1,9 +1,5 @@ #!/usr/bin/env bash -CHAIN_TYPE=$CHAIN_TYPE \ -PARENT_CHAIN=$PARENT_CHAIN \ -CHILD_CHAIN=$CHILD_CHAIN \ -MESSENGER=$MESSENGER \ forge script scripts/deployment/block-hash-pusher/DeployBuffers.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ diff --git a/scripts/deployment/deploy.sh b/scripts/deployment/deploy.sh index 11fdb4d..a9c2ee3 100644 --- a/scripts/deployment/deploy.sh +++ b/scripts/deployment/deploy.sh @@ -90,32 +90,32 @@ chmod +x scripts/deployment/block-hash-pusher/deploy-buffers.sh # 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 # 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 # 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 # 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 From 2c2c8c32dd9126fdedec2d93d8c1f2312b6beb6c Mon Sep 17 00:00:00 2001 From: Luiz Date: Tue, 24 Mar 2026 14:35:08 -0300 Subject: [PATCH 3/8] up --- deployments/linea.json | 3 ++- deployments/optimism.json | 3 ++- deployments/scroll.json | 3 ++- deployments/zksync.json | 3 ++- .../block-hash-pusher/deploy-buffers.sh | 5 +++- .../block-hash-pusher/deploy-pushers.sh | 5 +++- scripts/deployment/deploy-protocol.sh | 5 +++- .../provers/deploy-child-provers.sh | 25 +++++++++++++++---- .../provers/deploy-parent-provers.sh | 25 +++++++++++++++---- 9 files changed, 60 insertions(+), 17 deletions(-) diff --git a/deployments/linea.json b/deployments/linea.json index 8c11a64..b9daf8a 100644 --- a/deployments/linea.json +++ b/deployments/linea.json @@ -2,7 +2,8 @@ "contracts": { "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", - "pusher": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b" + "pusher": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b" }, "copies": { "ethereum": { diff --git a/deployments/optimism.json b/deployments/optimism.json index 9496476..47f7562 100644 --- a/deployments/optimism.json +++ b/deployments/optimism.json @@ -2,7 +2,8 @@ "contracts": { "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", - "pusher": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D" + "pusher": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", + "buffer": "0x9F9F7687eBfaFABA830f741006Fd6D739f76f6A6" }, "copies": { "ethereum": { diff --git a/deployments/scroll.json b/deployments/scroll.json index 880e07d..de5fa57 100644 --- a/deployments/scroll.json +++ b/deployments/scroll.json @@ -2,7 +2,8 @@ "contracts": { "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", - "pusher": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04" + "pusher": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", + "buffer": "0x58b67c85CeCAa0e2c4476Ed1Be03970EFbce298c" }, "copies": { "ethereum": { diff --git a/deployments/zksync.json b/deployments/zksync.json index 18c04e1..db12437 100644 --- a/deployments/zksync.json +++ b/deployments/zksync.json @@ -2,7 +2,8 @@ "contracts": { "broadcaster": "0xE07Fe9bE1615fE5b3eCdbE07aDe090eDFEf65e80", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", - "pusher": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12" + "pusher": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", + "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b" }, "copies": { "ethereum": { diff --git a/scripts/deployment/block-hash-pusher/deploy-buffers.sh b/scripts/deployment/block-hash-pusher/deploy-buffers.sh index 242111e..34df04c 100755 --- a/scripts/deployment/block-hash-pusher/deploy-buffers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-buffers.sh @@ -3,5 +3,8 @@ forge script scripts/deployment/block-hash-pusher/DeployBuffers.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + --verify \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY \ 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..f661991 100755 --- a/scripts/deployment/block-hash-pusher/deploy-pushers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-pushers.sh @@ -3,5 +3,8 @@ forge script scripts/deployment/block-hash-pusher/DeployPushers.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + --verify \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY \ No newline at end of file diff --git a/scripts/deployment/deploy-protocol.sh b/scripts/deployment/deploy-protocol.sh index 01ae3ef..8935a12 100755 --- a/scripts/deployment/deploy-protocol.sh +++ b/scripts/deployment/deploy-protocol.sh @@ -3,5 +3,8 @@ CHAIN_TYPE=$CHAIN_TYPE forge script scripts/deployment/DeployProtocol.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ - --broadcast + --broadcast \ + --verify \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY \ No newline at end of file diff --git a/scripts/deployment/provers/deploy-child-provers.sh b/scripts/deployment/provers/deploy-child-provers.sh index 2cb11ec..b5de209 100755 --- a/scripts/deployment/provers/deploy-child-provers.sh +++ b/scripts/deployment/provers/deploy-child-provers.sh @@ -5,32 +5,47 @@ 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY \ 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 6ecede4..18f05df 100755 --- a/scripts/deployment/provers/deploy-parent-provers.sh +++ b/scripts/deployment/provers/deploy-parent-provers.sh @@ -7,7 +7,10 @@ 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY ROLLUP=$LINEA_ROLLUP \ @@ -17,7 +20,10 @@ 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY SCROLL_CHAIN=$SCROLL_CHAIN \ @@ -27,7 +33,10 @@ 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY ANCHOR_STATE_REGISTRY=$OPTIMISM_ANCHOR_STATE_REGISTRY \ @@ -37,7 +46,10 @@ 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY GATEWAY_ZK_CHAIN=$ZKSYNC_GATEWAY_ZK_CHAIN \ L2_LOGS_ROOT_HASH_SLOT=$ZKSYNC_L2_LOGS_ROOT_HASH_SLOT \ @@ -48,7 +60,10 @@ 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 \ + --verifier $VERIFIER \ + --etherscan-api-key $ETHERSCAN_API_KEY From 627c2ef822d93a2b84b39f2f998bbccef27c14e9 Mon Sep 17 00:00:00 2001 From: Luiz Date: Tue, 24 Mar 2026 14:59:25 -0300 Subject: [PATCH 4/8] change salt --- scripts/deployment/provers/DeployArbitrumChildToParent.s.sol | 2 +- scripts/deployment/provers/DeployArbitrumParentToChild.s.sol | 2 +- scripts/deployment/provers/DeployLineaChildToParent.s.sol | 2 +- scripts/deployment/provers/DeployLineaParentToChild.s.sol | 2 +- scripts/deployment/provers/DeployOptimismChildToParent.s.sol | 2 +- scripts/deployment/provers/DeployOptimismParentToChild.s.sol | 2 +- scripts/deployment/provers/DeployScrollChildToParent.s.sol | 2 +- scripts/deployment/provers/DeployScrollParentToChild.s.sol | 2 +- scripts/deployment/provers/DeployZkSyncChildToParent.s.sol | 2 +- scripts/deployment/provers/DeployZkSyncParentToChild.s.sol | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) 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. From d7fdcf32ab35decdb18ec97d04b8d8b652f2bfcf Mon Sep 17 00:00:00 2001 From: Luiz Date: Tue, 24 Mar 2026 18:28:22 -0300 Subject: [PATCH 5/8] update mainnet --- deployments/linea.json | 4 +- deployments/optimism.json | 8 ++-- deployments/scroll.json | 4 +- deployments/zksync.json | 4 +- .../block-hash-pusher/deploy-buffers.sh | 9 ++-- scripts/deployment/deploy-protocol.sh | 12 +++-- scripts/deployment/deploy.sh | 46 ++++++++++--------- .../provers/deploy-child-provers.sh | 24 ++++------ .../provers/deploy-parent-provers.sh | 25 ++++------ 9 files changed, 68 insertions(+), 68 deletions(-) diff --git a/deployments/linea.json b/deployments/linea.json index b9daf8a..4d4bb59 100644 --- a/deployments/linea.json +++ b/deployments/linea.json @@ -15,8 +15,8 @@ }, "provers": { "ethereum": { - "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", - "prover": "0xAB641d3C1BF883A1900BBdDeD6FD22B28843c3eC" + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0xc96707EF3F543aE9f81aAa81f92b11F3A6F825Dc" } } } \ No newline at end of file diff --git a/deployments/optimism.json b/deployments/optimism.json index 47f7562..12cf929 100644 --- a/deployments/optimism.json +++ b/deployments/optimism.json @@ -9,14 +9,14 @@ "ethereum": { "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", - "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", - "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70" } }, "provers": { "ethereum": { - "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", - "prover": "0xeFBD41f759C7e149BF897Ee1C50d7bf4d02FdADD" + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0x0Adf8FefA84B09ebD31E7eDA9c381D4ADB44ca1d" } } } \ No newline at end of file diff --git a/deployments/scroll.json b/deployments/scroll.json index de5fa57..8526990 100644 --- a/deployments/scroll.json +++ b/deployments/scroll.json @@ -15,8 +15,8 @@ }, "provers": { "ethereum": { - "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", - "prover": "0x1ceFb5c01b2c5809104B2A687Ef8a1bE28Dc47be" + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0xe8cBb8F5B085ECE491673E6d1239081b77f0Ca9a" } } } \ No newline at end of file diff --git a/deployments/zksync.json b/deployments/zksync.json index db12437..55d890e 100644 --- a/deployments/zksync.json +++ b/deployments/zksync.json @@ -15,8 +15,8 @@ }, "provers": { "ethereum": { - "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", - "prover": "0x9224694981A19E51935859B334Ad6eF905e6356d" + "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", + "prover": "0x0C413Eb0681c91e677BA6D4a8bBC0989a7962bd6" } } } \ No newline at end of file diff --git a/scripts/deployment/block-hash-pusher/deploy-buffers.sh b/scripts/deployment/block-hash-pusher/deploy-buffers.sh index 34df04c..30f6b73 100755 --- a/scripts/deployment/block-hash-pusher/deploy-buffers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-buffers.sh @@ -1,10 +1,13 @@ #!/usr/bin/env bash +VERIFY_FLAGS="" +if [ "$CHAIN_TYPE" != "zksync" ]; then + VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +fi + forge script scripts/deployment/block-hash-pusher/DeployBuffers.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/deploy-protocol.sh b/scripts/deployment/deploy-protocol.sh index 8935a12..96b2332 100755 --- a/scripts/deployment/deploy-protocol.sh +++ b/scripts/deployment/deploy-protocol.sh @@ -1,10 +1,16 @@ #!/usr/bin/env bash +VERIFY_FLAGS="" +if [ "$CHAIN_TYPE" = "zksync" ]; then + unset ETHERSCAN_API_KEY + unset VERIFIER +else + VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +fi + CHAIN_TYPE=$CHAIN_TYPE forge script scripts/deployment/DeployProtocol.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/deploy.sh b/scripts/deployment/deploy.sh index a9c2ee3..533540c 100644 --- a/scripts/deployment/deploy.sh +++ b/scripts/deployment/deploy.sh @@ -8,67 +8,71 @@ 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 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 # 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,12 +82,11 @@ 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 @@ -93,7 +96,7 @@ CHAIN_TYPE="linea" \ 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..." @@ -101,7 +104,7 @@ CHAIN_TYPE="scroll" \ 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..." @@ -109,7 +112,7 @@ CHAIN_TYPE="zksync" \ 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..." @@ -117,13 +120,12 @@ CHAIN_TYPE="optimism" \ 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 # ======================================================================================== # 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/deploy-child-provers.sh b/scripts/deployment/provers/deploy-child-provers.sh index b5de209..ab64b04 100755 --- a/scripts/deployment/provers/deploy-child-provers.sh +++ b/scripts/deployment/provers/deploy-child-provers.sh @@ -1,4 +1,8 @@ #!/usr/bin/env bash +VERIFY_FLAGS="" +if [ "$CHAIN_TYPE" != "zksync" ]; then + VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +fi HOME_CHAIN_ID=$ARBITRUM_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -6,9 +10,7 @@ forge script scripts/deployment/provers/DeployArbitrumChildToParent.s.sol \ --rpc-url "$ARBITRUM_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS HOME_CHAIN_ID=$LINEA_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -16,9 +18,7 @@ forge script scripts/deployment/provers/DeployLineaChildToParent.s.sol \ --rpc-url "$LINEA_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS HOME_CHAIN_ID=$SCROLL_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -26,9 +26,7 @@ forge script scripts/deployment/provers/DeployScrollChildToParent.s.sol \ --rpc-url "$SCROLL_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS HOME_CHAIN_ID=$OPTIMISM_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -36,9 +34,7 @@ forge script scripts/deployment/provers/DeployOptimismChildToParent.s.sol \ --rpc-url "$OPTIMISM_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS HOME_CHAIN_ID=$ZKSYNC_CHAIN_ID \ TARGET_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -46,6 +42,4 @@ forge script scripts/deployment/provers/DeployZkSyncChildToParent.s.sol \ --rpc-url "$ZKSYNC_RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY \ No newline at end of file + $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 18f05df..f5e2706 100755 --- a/scripts/deployment/provers/deploy-parent-provers.sh +++ b/scripts/deployment/provers/deploy-parent-provers.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash +VERIFY_FLAGS="" +if [ "$CHAIN_TYPE" != "zksync" ]; then + VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +fi + OUTBOX=$ARBITRUM_OUTBOX \ ROOTS_SLOT=$ARBITRUM_ROOTS_SLOT \ HOME_CHAIN_ID=$ETHEREUM_CHAIN_ID \ @@ -8,9 +13,7 @@ forge script scripts/deployment/provers/DeployArbitrumParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS ROLLUP=$LINEA_ROLLUP \ @@ -21,9 +24,7 @@ forge script scripts/deployment/provers/DeployLineaParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS SCROLL_CHAIN=$SCROLL_CHAIN \ @@ -34,9 +35,7 @@ forge script scripts/deployment/provers/DeployScrollParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS ANCHOR_STATE_REGISTRY=$OPTIMISM_ANCHOR_STATE_REGISTRY \ @@ -47,9 +46,7 @@ forge script scripts/deployment/provers/DeployOptimismParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS GATEWAY_ZK_CHAIN=$ZKSYNC_GATEWAY_ZK_CHAIN \ L2_LOGS_ROOT_HASH_SLOT=$ZKSYNC_L2_LOGS_ROOT_HASH_SLOT \ @@ -61,9 +58,7 @@ forge script scripts/deployment/provers/DeployZkSyncParentToChild.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$DEPLOYER_PRIVATE_KEY" \ --broadcast \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS From be18414fcf5728dd5d60242ea6a91e9bda2eff13 Mon Sep 17 00:00:00 2001 From: Luiz Date: Tue, 24 Mar 2026 20:13:17 -0300 Subject: [PATCH 6/8] add mainnet deployments --- deployments/linea.json | 5 ++++- deployments/optimism.json | 5 ++++- deployments/scroll.json | 5 ++++- deployments/zksync.json | 5 ++++- scripts/deployment/block-hash-pusher/deploy-buffers.sh | 7 ++++--- scripts/deployment/block-hash-pusher/deploy-pushers.sh | 10 +++++++--- scripts/deployment/deploy-protocol.sh | 8 +++----- scripts/deployment/provers/deploy-child-provers.sh | 7 ++++--- scripts/deployment/provers/deploy-parent-provers.sh | 7 ++++--- 9 files changed, 38 insertions(+), 21 deletions(-) diff --git a/deployments/linea.json b/deployments/linea.json index 4d4bb59..06bf3be 100644 --- a/deployments/linea.json +++ b/deployments/linea.json @@ -3,7 +3,10 @@ "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", "pusher": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", - "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b" + "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" }, "copies": { "ethereum": { diff --git a/deployments/optimism.json b/deployments/optimism.json index 12cf929..efc1de9 100644 --- a/deployments/optimism.json +++ b/deployments/optimism.json @@ -3,7 +3,10 @@ "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", "pusher": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", - "buffer": "0x9F9F7687eBfaFABA830f741006Fd6D739f76f6A6" + "buffer": "0x9F9F7687eBfaFABA830f741006Fd6D739f76f6A6", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" }, "copies": { "ethereum": { diff --git a/deployments/scroll.json b/deployments/scroll.json index 8526990..56dab2e 100644 --- a/deployments/scroll.json +++ b/deployments/scroll.json @@ -3,7 +3,10 @@ "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", "pusher": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", - "buffer": "0x58b67c85CeCAa0e2c4476Ed1Be03970EFbce298c" + "buffer": "0x58b67c85CeCAa0e2c4476Ed1Be03970EFbce298c", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" }, "copies": { "ethereum": { diff --git a/deployments/zksync.json b/deployments/zksync.json index 55d890e..856d279 100644 --- a/deployments/zksync.json +++ b/deployments/zksync.json @@ -3,7 +3,10 @@ "broadcaster": "0xE07Fe9bE1615fE5b3eCdbE07aDe090eDFEf65e80", "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", "pusher": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", - "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b" + "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", + "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", + "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", + "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" }, "copies": { "ethereum": { diff --git a/scripts/deployment/block-hash-pusher/deploy-buffers.sh b/scripts/deployment/block-hash-pusher/deploy-buffers.sh index 30f6b73..c58dd6e 100755 --- a/scripts/deployment/block-hash-pusher/deploy-buffers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-buffers.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash -VERIFY_FLAGS="" -if [ "$CHAIN_TYPE" != "zksync" ]; then - VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +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 \ diff --git a/scripts/deployment/block-hash-pusher/deploy-pushers.sh b/scripts/deployment/block-hash-pusher/deploy-pushers.sh index f661991..d970d57 100755 --- a/scripts/deployment/block-hash-pusher/deploy-pushers.sh +++ b/scripts/deployment/block-hash-pusher/deploy-pushers.sh @@ -1,10 +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 \ - --verify \ - --verifier $VERIFIER \ - --etherscan-api-key $ETHERSCAN_API_KEY + $VERIFY_FLAGS \ No newline at end of file diff --git a/scripts/deployment/deploy-protocol.sh b/scripts/deployment/deploy-protocol.sh index 96b2332..39badab 100755 --- a/scripts/deployment/deploy-protocol.sh +++ b/scripts/deployment/deploy-protocol.sh @@ -1,11 +1,9 @@ #!/usr/bin/env bash -VERIFY_FLAGS="" -if [ "$CHAIN_TYPE" = "zksync" ]; then - unset ETHERSCAN_API_KEY - unset VERIFIER +if [ "$VERIFIER" = "etherscan" ]; then + VERIFY_FLAGS="--verify --verifier etherscan --etherscan-api-key $ETHERSCAN_API_KEY" else - VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" + VERIFY_FLAGS="--verify --verifier-url $VERIFIER_URL" fi CHAIN_TYPE=$CHAIN_TYPE forge script scripts/deployment/DeployProtocol.s.sol \ diff --git a/scripts/deployment/provers/deploy-child-provers.sh b/scripts/deployment/provers/deploy-child-provers.sh index ab64b04..682e699 100755 --- a/scripts/deployment/provers/deploy-child-provers.sh +++ b/scripts/deployment/provers/deploy-child-provers.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash -VERIFY_FLAGS="" -if [ "$CHAIN_TYPE" != "zksync" ]; then - VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +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 \ diff --git a/scripts/deployment/provers/deploy-parent-provers.sh b/scripts/deployment/provers/deploy-parent-provers.sh index f5e2706..61d68b6 100755 --- a/scripts/deployment/provers/deploy-parent-provers.sh +++ b/scripts/deployment/provers/deploy-parent-provers.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash -VERIFY_FLAGS="" -if [ "$CHAIN_TYPE" != "zksync" ]; then - VERIFY_FLAGS="--verify --verifier $VERIFIER --etherscan-api-key $ETHERSCAN_API_KEY" +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 \ From 6536f6fab86c40ae7c9a6cf0b532c9f75125ecd2 Mon Sep 17 00:00:00 2001 From: Luiz Date: Wed, 25 Mar 2026 13:22:48 -0300 Subject: [PATCH 7/8] remove wrong copy --- deployments/ethereum-sepolia.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/deployments/ethereum-sepolia.json b/deployments/ethereum-sepolia.json index e3e3c76..ad4d626 100644 --- a/deployments/ethereum-sepolia.json +++ b/deployments/ethereum-sepolia.json @@ -31,10 +31,5 @@ "pointer": "0x7cac647e088b7361953f37C0C3BaA092748b8E7F", "prover": "0xf5e56d9d93267631f69dB9388d38e9c487830bD4" } - }, - "copies": { - "ethereum": { - "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD" - } } } \ No newline at end of file From f279fb48ab49644b33579b3d6b9a687c852780c0 Mon Sep 17 00:00:00 2001 From: Luiz Date: Wed, 1 Apr 2026 17:23:54 -0300 Subject: [PATCH 8/8] add Base Deployments --- deployments/arbitrum.json | 3 ++- deployments/base.json | 26 +++++++++++++++++++ deployments/ethereum.json | 7 ++++- deployments/linea.json | 3 ++- deployments/optimism.json | 3 ++- deployments/scroll.json | 3 ++- deployments/zksync.json | 3 ++- scripts/deployment/DeployBase.s.sol | 1 + .../block-hash-pusher/DeployBuffers.s.sol | 5 +++- .../block-hash-pusher/DeployPushers.s.sol | 8 ++++++ scripts/deployment/deploy.sh | 18 +++++++++++++ .../provers/deploy-child-provers.sh | 8 ++++++ .../provers/deploy-parent-provers.sh | 10 +++++++ 13 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 deployments/base.json diff --git a/deployments/arbitrum.json b/deployments/arbitrum.json index 2c1eff6..1981624 100644 --- a/deployments/arbitrum.json +++ b/deployments/arbitrum.json @@ -19,7 +19,8 @@ "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", - "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + "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.json b/deployments/ethereum.json index 0dc0e8c..9531393 100644 --- a/deployments/ethereum.json +++ b/deployments/ethereum.json @@ -27,12 +27,17 @@ "zksync": { "pointer": "0xd7CB2eC1D83B93E92785116cF73a8e6F29079831", "prover": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + }, + "base": { + "pointer": "0x8645f22Bc5d6b9531a76E20d3eD749A55117F47C", + "prover": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" } }, "pushers": { "linea": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", "scroll": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", "zksync": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", - "optimism": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D" + "optimism": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", + "base": "0xcBF1db810c116e21fbf957530b73768924Fb2D02" } } \ No newline at end of file diff --git a/deployments/linea.json b/deployments/linea.json index 06bf3be..76fa377 100644 --- a/deployments/linea.json +++ b/deployments/linea.json @@ -13,7 +13,8 @@ "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", - "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" } }, "provers": { diff --git a/deployments/optimism.json b/deployments/optimism.json index efc1de9..ee16246 100644 --- a/deployments/optimism.json +++ b/deployments/optimism.json @@ -13,7 +13,8 @@ "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", - "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70" + "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" } }, "provers": { diff --git a/deployments/scroll.json b/deployments/scroll.json index 56dab2e..9979ca1 100644 --- a/deployments/scroll.json +++ b/deployments/scroll.json @@ -13,7 +13,8 @@ "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", - "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" + "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" } }, "provers": { diff --git a/deployments/zksync.json b/deployments/zksync.json index 856d279..8b179e7 100644 --- a/deployments/zksync.json +++ b/deployments/zksync.json @@ -13,7 +13,8 @@ "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", - "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98" + "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", + "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" } }, "provers": { diff --git a/scripts/deployment/DeployBase.s.sol b/scripts/deployment/DeployBase.s.sol index 1fed1c0..13b9e52 100644 --- a/scripts/deployment/DeployBase.s.sol +++ b/scripts/deployment/DeployBase.s.sol @@ -33,6 +33,7 @@ contract DeployBase is Script { 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 89c28d7..68e6c0c 100644 --- a/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol +++ b/scripts/deployment/block-hash-pusher/DeployBuffers.s.sol @@ -41,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 cc6025b..b92ee86 100644 --- a/scripts/deployment/block-hash-pusher/DeployPushers.s.sol +++ b/scripts/deployment/block-hash-pusher/DeployPushers.s.sol @@ -15,16 +15,19 @@ 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(lineaName)) { @@ -47,6 +50,11 @@ contract DeployPushers is DeployBase { _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/deploy.sh b/scripts/deployment/deploy.sh index 533540c..3269541 100644 --- a/scripts/deployment/deploy.sh +++ b/scripts/deployment/deploy.sh @@ -34,6 +34,11 @@ CHAIN_TYPE="optimism" \ RPC_URL="$OPTIMISM_RPC_URL" \ 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" \ @@ -69,6 +74,11 @@ echo "Deploying ParentToChildProver contracts on Optimism..." 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..." CHAIN_TYPE="zksync" \ @@ -122,6 +132,14 @@ CHILD_CHAIN_ID="$OPTIMISM_CHAIN_ID" \ MESSENGER="$OPTIMISM_L2_CROSS_DOMAIN_MESSENGER" \ 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 # ======================================================================================== diff --git a/scripts/deployment/provers/deploy-child-provers.sh b/scripts/deployment/provers/deploy-child-provers.sh index 682e699..a430811 100755 --- a/scripts/deployment/provers/deploy-child-provers.sh +++ b/scripts/deployment/provers/deploy-child-provers.sh @@ -37,6 +37,14 @@ forge script scripts/deployment/provers/DeployOptimismChildToParent.s.sol \ --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 \ diff --git a/scripts/deployment/provers/deploy-parent-provers.sh b/scripts/deployment/provers/deploy-parent-provers.sh index 61d68b6..d053840 100755 --- a/scripts/deployment/provers/deploy-parent-provers.sh +++ b/scripts/deployment/provers/deploy-parent-provers.sh @@ -49,6 +49,16 @@ forge script scripts/deployment/provers/DeployOptimismParentToChild.s.sol \ --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 \ CHILD_CHAIN_ID=$ZKSYNC_CHAIN_ID \