From 077b6c7c159ebc8da08d2461c19b6b84e8086d5d Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Tue, 26 Sep 2023 23:34:31 +0800 Subject: [PATCH] rename config providers --- .../contracts/L1/libs/LibProposing.sol | 7 +- ...sol => OptimisticRollupConfigProvider.sol} | 4 +- .../L1/tiers/ValidityRollupConfigProvider.sol | 70 +++++++++++++++++++ ...rovider.sol => ZKRollupConfigProvider.sol} | 4 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 8 +-- 5 files changed, 82 insertions(+), 11 deletions(-) rename packages/protocol/contracts/L1/tiers/{OPL2ConfigProvider.sol => OptimisticRollupConfigProvider.sol} (96%) create mode 100644 packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol rename packages/protocol/contracts/L1/tiers/{ZKL2ConfigProvider.sol => ZKRollupConfigProvider.sol} (94%) diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index c0e1a941d39..1de3049667d 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -59,9 +59,10 @@ library LibProposing { internal returns (TaikoData.BlockMetadata memory meta) { - // Taiko, as a Based Rollup, enables permissionless block proposals. However, - // if the "proposer" address is set to a non-zero value, we ensure that - // only that specific address has the authority to propose blocks. + // Taiko, as a Based Rollup, enables permissionless block proposals. + // However, if the "proposer" address is set to a non-zero value, we + // ensure that only that specific address has the authority to propose + // blocks. address proposer = resolver.resolve("proposer", true); if (proposer != address(0) && msg.sender != proposer) { revert L1_UNAUTHORIZED(); diff --git a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol similarity index 96% rename from packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol rename to packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol index 036f54de5eb..20f5b405bb1 100644 --- a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol @@ -8,8 +8,8 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; -/// @title OPL2ConfigProvider -contract OPL2ConfigProvider is ITierProvider { +/// @title OptimisticRollupConfigProvider +contract OptimisticRollupConfigProvider is ITierProvider { error TIER_NOT_FOUND(); function getTier(uint16 tierId) diff --git a/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol new file mode 100644 index 00000000000..afd43d05bd0 --- /dev/null +++ b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { ITierProvider, LibTiers } from "./ITierProvider.sol"; + +/// @title ValidityRollupConfigProvider +contract ValidityRollupConfigProvider is ITierProvider { + error TIER_NOT_FOUND(); + + function getTier(uint16 tierId) + public + pure + override + returns (ITierProvider.Tier memory) + { + if (tierId == LibTiers.TIER_SGX) { + return ITierProvider.Tier({ + verifierName: "tier_sgx", + validityBond: 50_000 ether, // TKO + contestBond: 50_000 ether, // TKO + cooldownWindow: 3 hours, + provingWindow: 60 minutes + }); + } + + if (tierId == LibTiers.TIER_PSE_ZKEVM) { + return ITierProvider.Tier({ + verifierName: "tier_pse_zkevm", + validityBond: 10_000 ether, // TKO + contestBond: 10_000 ether, // TKO + cooldownWindow: 2 hours, + provingWindow: 90 minutes + }); + } + + if (tierId == LibTiers.TIER_GUARDIAN) { + return ITierProvider.Tier({ + verifierName: "tier_guardian", + validityBond: 0, + contestBond: 0, // not contestable + cooldownWindow: 1 hours, + provingWindow: 120 minutes + }); + } + + revert TIER_NOT_FOUND(); + } + + function getTierIds() + public + pure + override + returns (uint16[] memory tiers) + { + tiers = new uint16[](3); + tiers[0] = LibTiers.TIER_SGX; + tiers[1] = LibTiers.TIER_PSE_ZKEVM; + tiers[2] = LibTiers.TIER_GUARDIAN; + } + + function getMinTier(uint256 rand) public pure override returns (uint16) { + if (rand % 100 == 0) return LibTiers.TIER_PSE_ZKEVM; + else return LibTiers.TIER_SGX; + } +} diff --git a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol similarity index 94% rename from packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol rename to packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol index bdf6a14a6da..0f2ebe59a8b 100644 --- a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol @@ -8,8 +8,8 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; -/// @title ZKL2ConfigProvider -contract ZKL2ConfigProvider is ITierProvider { +/// @title ZKRollupConfigProvider +contract ZKRollupConfigProvider is ITierProvider { error TIER_NOT_FOUND(); function getTier(uint16 tierId) diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index c3d0d313ef3..fa174a09597 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -12,8 +12,8 @@ import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; -import { OPL2ConfigProvider } from - "../../contracts/L1/tiers/OPL2ConfigProvider.sol"; +import { OptimisticRollupConfigProvider } from + "../../contracts/L1/tiers/OptimisticRollupConfigProvider.sol"; import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { StringsUpgradeable as Strings } from @@ -36,7 +36,7 @@ abstract contract TaikoL1TestBase is TestBase { uint256 internal logCount; PseZkVerifier public pv; GuardianVerifier public gv; - OPL2ConfigProvider public cp; + OptimisticRollupConfigProvider public cp; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); // 1 TKO --> it is to huge. It should be in 'wei' (?). @@ -71,7 +71,7 @@ abstract contract TaikoL1TestBase is TestBase { gv = new GuardianVerifier(); gv.init(address(addressManager)); - cp = new OPL2ConfigProvider(); + cp = new OptimisticRollupConfigProvider(); registerAddress("tier_pse_zkevm", address(pv)); registerAddress("tier_guardian", address(gv));