diff --git a/packages/protocol/contracts/mainnet/MainnetSgxVerifier.sol b/packages/protocol/contracts/mainnet/MainnetSgxVerifier.sol new file mode 100644 index 0000000000..cf69666c0b --- /dev/null +++ b/packages/protocol/contracts/mainnet/MainnetSgxVerifier.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../verifiers/SgxVerifier.sol"; +import "./LibRollupAddressCache.sol"; + +/// @title MainnetSgxVerifier +/// @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 {SgxVerifier}. +/// @custom:security-contact security@taiko.xyz +contract MainnetSgxVerifier is SgxVerifier { + 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/contracts/L1/tiers/TierRouter.sol b/packages/protocol/contracts/mainnet/MainnetTierRouter.sol similarity index 59% rename from packages/protocol/contracts/L1/tiers/TierRouter.sol rename to packages/protocol/contracts/mainnet/MainnetTierRouter.sol index aa4c68033c..795bd7bd35 100644 --- a/packages/protocol/contracts/L1/tiers/TierRouter.sol +++ b/packages/protocol/contracts/mainnet/MainnetTierRouter.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import "./ITierRouter.sol"; +import "../L1/tiers/ITierRouter.sol"; -/// @title TierRouter +/// @title MainnetTierRouter /// @dev Labeled in AddressResolver as "tier_router" /// @custom:security-contact security@taiko.xyz -contract TierRouter is ITierRouter { +contract MainnetTierRouter is ITierRouter { /// @inheritdoc ITierRouter function getProvider(uint256 /*_blockId*/ ) external pure returns (address) { - return 0x4cffe56C947E26D07C14020499776DB3e9AE3a23; + return 0x4cffe56C947E26D07C14020499776DB3e9AE3a23; // TierProviderV2 } } diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 12f0a9b3ff..e586d20346 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -20,7 +20,7 @@ import "../contracts/mainnet/MainnetSignalService.sol"; import "../contracts/automata-attestation/AutomataDcapV3Attestation.sol"; import "../contracts/automata-attestation/utils/SigVerifyLib.sol"; import "../contracts/automata-attestation/lib/PEMCertChainLib.sol"; -import "../contracts/verifiers/SgxVerifier.sol"; +import "../contracts/mainnet/MainnetSgxVerifier.sol"; import "../contracts/team/proving/ProverSet.sol"; import "../test/common/erc20/FreeMintERC20.sol"; import "../test/common/erc20/MayFailFreeMintERC20.sol"; @@ -299,6 +299,12 @@ contract DeployOnL1 is DeployCapability { registerTo: rollupAddressManager }); + deployProxy({ + name: "mainnet_tier_sgx", + impl: address(new MainnetSgxVerifier()), + data: abi.encodeCall(SgxVerifier.init, (owner, rollupAddressManager)) + }); + deployProxy({ name: "tier_sgx", impl: address(new SgxVerifier()),