From 36a5da584eef5cf4a5ff6010629f31dafb777c6b Mon Sep 17 00:00:00 2001 From: gavin Date: Mon, 4 Nov 2024 15:36:35 +0800 Subject: [PATCH] Revert "feat(protocol): add `lastProposedIn` to slotB (#18379)" This reverts commit 96b380a452f1055da960146b4bf1e94c1842da73. --- .../protocol/contracts/layer1/based/ITaikoL1.sol | 4 ---- .../contracts/layer1/based/LibProposing.sol | 1 - .../protocol/contracts/layer1/based/TaikoData.sol | 4 +++- .../protocol/contracts/layer1/based/TaikoL1.sol | 10 ++++------ .../contracts/layer1/provers/ProverSet.sol | 15 --------------- .../protocol/test/layer1/based/MockTaikoL1.sol | 2 -- 6 files changed, 7 insertions(+), 29 deletions(-) diff --git a/packages/protocol/contracts/layer1/based/ITaikoL1.sol b/packages/protocol/contracts/layer1/based/ITaikoL1.sol index a3d1d02e660..217810625eb 100644 --- a/packages/protocol/contracts/layer1/based/ITaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/ITaikoL1.sol @@ -87,10 +87,6 @@ interface ITaikoL1 { view returns (TaikoData.TransitionState memory); - /// @notice Retrieves the ID of the L1 block where the most recent L2 block was proposed. - /// @return The ID of the Li block where the most recent block was proposed. - function lastProposedIn() external view returns (uint56); - /// @notice Gets the configuration of the TaikoL1 contract. /// @return Config struct containing configuration parameters. function getConfig() external pure returns (TaikoData.Config memory); diff --git a/packages/protocol/contracts/layer1/based/LibProposing.sol b/packages/protocol/contracts/layer1/based/LibProposing.sol index 81f8c199fe1..d812bdd12d7 100644 --- a/packages/protocol/contracts/layer1/based/LibProposing.sol +++ b/packages/protocol/contracts/layer1/based/LibProposing.sol @@ -278,7 +278,6 @@ library LibProposing { unchecked { ++_state.slotB.numBlocks; } - _state.slotB.lastProposedIn = uint56(block.number); LibBonds.debitBond(_state, _resolver, local.params.proposer, meta_.id, _config.livenessBond); diff --git a/packages/protocol/contracts/layer1/based/TaikoData.sol b/packages/protocol/contracts/layer1/based/TaikoData.sol index 893e6c7cb3c..f9a2a59cb7c 100644 --- a/packages/protocol/contracts/layer1/based/TaikoData.sol +++ b/packages/protocol/contracts/layer1/based/TaikoData.sol @@ -191,7 +191,9 @@ library TaikoData { uint64 numBlocks; uint64 lastVerifiedBlockId; bool provingPaused; - uint56 lastProposedIn; + uint8 __reservedB1; + uint16 __reservedB2; + uint32 __reservedB3; uint64 lastUnpausedAt; } diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol index 0a1175e5fce..e2ef740c32e 100644 --- a/packages/protocol/contracts/layer1/based/TaikoL1.sol +++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol @@ -58,6 +58,10 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { /// @notice This function shall be called by previously deployed contracts. function init2() external onlyOwner reinitializer(2) { + // reset some previously used slots for future reuse + state.slotB.__reservedB1 = 0; + state.slotB.__reservedB2 = 0; + state.slotB.__reservedB3 = 0; state.__reserve1 = 0; } @@ -283,12 +287,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents { return state.slotB.lastUnpausedAt; } - /// @notice Retrieves the ID of the L1 block where the most recent L2 block was proposed. - /// @return The ID of the Li block where the most recent block was proposed. - function lastProposedIn() external view returns (uint56) { - return state.slotB.lastProposedIn; - } - /// @inheritdoc ITaikoL1 function getConfig() public pure virtual returns (TaikoData.Config memory) { return TaikoData.Config({ diff --git a/packages/protocol/contracts/layer1/provers/ProverSet.sol b/packages/protocol/contracts/layer1/provers/ProverSet.sol index d557aba553c..e3c2ae97019 100644 --- a/packages/protocol/contracts/layer1/provers/ProverSet.sol +++ b/packages/protocol/contracts/layer1/provers/ProverSet.sol @@ -31,7 +31,6 @@ contract ProverSet is EssentialContract, IERC1271 { error INVALID_STATUS(); error INVALID_BOND_TOKEN(); error PERMISSION_DENIED(); - error NOT_FIRST_PROPOSAL(); modifier onlyAuthorized() { require( @@ -94,20 +93,6 @@ contract ProverSet is EssentialContract, IERC1271 { LibAddress.sendEtherAndVerify(admin, _amount); } - /// @notice Proposes a block only when it is the first block proposal in the current L1 block. - function proposeBlockV2Conditionally( - bytes calldata _params, - bytes calldata _txList - ) - external - onlyProver - { - ITaikoL1 taiko = ITaikoL1(taikoL1()); - // Ensure this block is the first block proposed in the current L1 block. - require(taiko.lastProposedIn() != block.number, NOT_FIRST_PROPOSAL()); - taiko.proposeBlockV2(_params, _txList); - } - /// @notice Propose a Taiko block. function proposeBlockV2(bytes calldata _params, bytes calldata _txList) external onlyProver { ITaikoL1(taikoL1()).proposeBlockV2(_params, _txList); diff --git a/packages/protocol/test/layer1/based/MockTaikoL1.sol b/packages/protocol/test/layer1/based/MockTaikoL1.sol index 82e50637655..1da3e305670 100644 --- a/packages/protocol/test/layer1/based/MockTaikoL1.sol +++ b/packages/protocol/test/layer1/based/MockTaikoL1.sol @@ -62,7 +62,5 @@ contract MockTaikoL1 is ITaikoL1 { returns (TaikoData.TransitionState memory) { } - function lastProposedIn() external view returns (uint56) { } - function getConfig() external pure virtual returns (TaikoData.Config memory) { } }