From 8a2a3e8958e38882bdcf42318df99b1ff0afe51a Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Wed, 17 Jul 2024 09:34:39 +0800 Subject: [PATCH 1/3] add MainnetGuardianProver --- .../contracts/mainnet/MainnetGuardianProver.sol | 17 +++++++++++++++++ packages/protocol/script/DeployOnL1.s.sol | 7 +++++++ 2 files changed, 24 insertions(+) create mode 100644 packages/protocol/contracts/mainnet/MainnetGuardianProver.sol diff --git a/packages/protocol/contracts/mainnet/MainnetGuardianProver.sol b/packages/protocol/contracts/mainnet/MainnetGuardianProver.sol new file mode 100644 index 0000000000..7d8849cb28 --- /dev/null +++ b/packages/protocol/contracts/mainnet/MainnetGuardianProver.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../L1/provers/GuardianProver.sol"; +import "./LibRollupAddressCache.sol"; + +/// @title MainnetGuardianProver +/// @dev This contract shall be deployed to replace its parent contract on Ethereum for Taiko +/// mainnet to reduce gas cost. +/// @notice See the documentation in {GuardianProver}. +/// @custom:security-contact security@taiko.xyz +contract MainnetGuardianProver is GuardianProver { + function _getAddress(uint64 _chainId, bytes32 _name) internal view override returns (address) { + (bool found, address addr) = LibRollupAddressCache.getAddress(_chainId, _name); + return found ? addr : super._getAddress(_chainId, _name); + } +} diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index e586d20346..f5acb8c928 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -17,6 +17,7 @@ import "../contracts/mainnet/MainnetERC20Vault.sol"; import "../contracts/mainnet/MainnetERC1155Vault.sol"; import "../contracts/mainnet/MainnetERC721Vault.sol"; import "../contracts/mainnet/MainnetSignalService.sol"; +import "../contracts/mainnet/MainnetGuardianProver.sol"; import "../contracts/automata-attestation/AutomataDcapV3Attestation.sol"; import "../contracts/automata-attestation/utils/SigVerifyLib.sol"; import "../contracts/automata-attestation/lib/PEMCertChainLib.sol"; @@ -312,6 +313,12 @@ contract DeployOnL1 is DeployCapability { registerTo: rollupAddressManager }); + deployProxy({ + name: "mainnet_guardian_prover_minority", + impl: new MainnetGuardianProver(), + data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager)) + }); + address guardianProverImpl = address(new GuardianProver()); address guardianProverMinority = deployProxy({ From 9168aeb432e1f4e01868a1a7f6031ee3f8f8d711 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Wed, 17 Jul 2024 09:35:14 +0800 Subject: [PATCH 2/3] Update DeployOnL1.s.sol --- packages/protocol/script/DeployOnL1.s.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index f5acb8c928..eb9d2f2ea8 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -315,7 +315,7 @@ contract DeployOnL1 is DeployCapability { deployProxy({ name: "mainnet_guardian_prover_minority", - impl: new MainnetGuardianProver(), + impl: address(new MainnetGuardianProver()), data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager)) }); From 686758b7f655ac461374b9020e0dddd2a2186108 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Wed, 17 Jul 2024 09:41:52 +0800 Subject: [PATCH 3/3] Update LibRollupAddressCache.sol --- packages/protocol/contracts/mainnet/LibRollupAddressCache.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/protocol/contracts/mainnet/LibRollupAddressCache.sol b/packages/protocol/contracts/mainnet/LibRollupAddressCache.sol index d25324fb8b..7591512c06 100644 --- a/packages/protocol/contracts/mainnet/LibRollupAddressCache.sol +++ b/packages/protocol/contracts/mainnet/LibRollupAddressCache.sol @@ -43,6 +43,9 @@ library LibRollupAddressCache { if (_name == LibStrings.B_AUTOMATA_DCAP_ATTESTATION) { return (true, 0x8d7C954960a36a7596d7eA4945dDf891967ca8A3); } + if (_name == LibStrings.B_CHAIN_WATCHDOG) { + return (true, address(0)); + } } return (false, address(0)); }