From d61af90b54fba27ee5db074ad0c34c82c6642022 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sat, 18 Nov 2023 18:49:01 +0300 Subject: [PATCH] feat(protocol): move prover assignment verification to hook (#15208) Co-authored-by: Daniel Wang Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> Co-authored-by: David Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> Co-authored-by: adaki2004 Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> Co-authored-by: Brecht Devos Co-authored-by: Jeffery Walsh --- packages/Unknown.pdf | Bin 0 -> 239226 bytes packages/protocol/contracts/L1/TaikoData.sol | 15 +- .../protocol/contracts/L1/TaikoErrors.sol | 9 +- .../protocol/contracts/L1/TaikoEvents.sol | 2 - packages/protocol/contracts/L1/TaikoL1.sol | 34 +--- packages/protocol/contracts/L1/TaikoToken.sol | 3 +- .../contracts/L1/gov/TaikoGovernor.sol | 2 +- .../contracts/L1/hooks/AssignmentHook.sol | 171 ++++++++++++++++++ .../protocol/contracts/L1/hooks/IHook.sol | 20 ++ .../contracts/L1/libs/LibDepositing.sol | 2 +- .../contracts/L1/libs/LibProposing.sol | 163 ++++------------- .../protocol/contracts/L1/libs/LibProving.sol | 27 ++- .../contracts/L1/libs/LibTaikoToken.sol | 89 --------- .../contracts/L1/libs/LibVerifying.sol | 7 +- .../contracts/L1/provers/GuardianProver.sol | 1 - .../L1/verifiers/GuardianVerifier.sol | 1 - .../contracts/L1/verifiers/PseZkVerifier.sol | 4 +- .../L1/verifiers/SgxAndZkVerifier.sol | 1 - .../contracts/L1/verifiers/SgxVerifier.sol | 1 - packages/protocol/contracts/L2/TaikoL2.sol | 8 +- .../L2/TaikoL2EIP1559Configurable.sol | 1 - packages/protocol/contracts/bridge/Bridge.sol | 3 +- .../contracts/common/AddressManager.sol | 7 +- .../contracts/common/EssentialContract.sol | 19 ++ .../protocol/contracts/common/Proxied.sol | 23 --- .../protocol/contracts/libs/LibAddress.sol | 6 +- .../contracts/signal/SignalService.sol | 7 +- .../contracts/team/TimeLockTokenPool.sol | 6 +- .../contracts/tokenvault/BaseVault.sol | 1 + .../contracts/tokenvault/BridgedERC1155.sol | 1 - .../contracts/tokenvault/BridgedERC20.sol | 1 - .../contracts/tokenvault/BridgedERC721.sol | 1 - .../contracts/tokenvault/ERC1155Vault.sol | 4 - .../contracts/tokenvault/ERC20Vault.sol | 3 - .../contracts/tokenvault/ERC721Vault.sol | 3 - .../protocol/genesis/GenerateGenesis.g.sol | 4 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 7 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 31 ++-- packages/protocol/test/L2/Lib1559Math.t.sol | 2 - packages/protocol/test/L2/TaikoL2.t.sol | 4 +- 40 files changed, 331 insertions(+), 363 deletions(-) create mode 100644 packages/Unknown.pdf create mode 100644 packages/protocol/contracts/L1/hooks/AssignmentHook.sol create mode 100644 packages/protocol/contracts/L1/hooks/IHook.sol delete mode 100644 packages/protocol/contracts/L1/libs/LibTaikoToken.sol delete mode 100644 packages/protocol/contracts/common/Proxied.sol diff --git a/packages/Unknown.pdf b/packages/Unknown.pdf new file mode 100644 index 0000000000000000000000000000000000000000..39fa9b1ef667857fbfd22fe00754814909ac0dac GIT binary patch literal 239226 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 QQi*! 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 IZ57D>06cd#r~m)} literal 0 HcmV?d00001 diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 8a50cd168f7..b46ba0553de 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -69,25 +69,20 @@ library TaikoData { bytes data; } - struct ProverAssignment { - address prover; - address feeToken; - TierFee[] tierFees; - uint64 expiry; - uint64 maxBlockId; - uint64 maxProposedIn; - bytes32 metaHash; - bytes signature; + struct HookCall { + address hook; + bytes data; } struct BlockParams { - ProverAssignment assignment; + address assignedProver; bytes32 extraData; bytes32 blobHash; uint24 txListByteOffset; uint24 txListByteSize; bool cacheBlobForReuse; bytes32 parentMetaHash; + HookCall[] hookCalls; } /// @dev Struct containing data only required for proving a block diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index d9e82323950..58c155dc4f2 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -15,10 +15,6 @@ abstract contract TaikoErrors { // `L1/libs/*.sol`. error L1_ALREADY_CONTESTED(); error L1_ALREADY_PROVED(); - error L1_ASSIGNMENT_EXPIRED(); - error L1_ASSIGNMENT_INVALID_SIG(); - error L1_ASSIGNMENT_INVALID_PARAMS(); - error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOB_FOR_DA_DISABLED(); error L1_BLOB_NOT_FOUND(); @@ -33,13 +29,16 @@ abstract contract TaikoErrors { error L1_INVALID_PARAM(); error L1_INVALID_PAUSE_STATUS(); error L1_INVALID_PROOF(); + error L1_INVALID_PROVER(); error L1_INVALID_TIER(); error L1_INVALID_TRANSITION(); + error L1_LIVENESS_BOND_NOT_RECEIVED(); error L1_NOT_ASSIGNED_PROVER(); error L1_PROPOSER_NOT_EOA(); error L1_PROVING_PAUSED(); - error L1_TIER_NOT_FOUND(); + error L1_RECEIVE_DISABLED(); error L1_TOO_MANY_BLOCKS(); + error L1_TOO_MANY_TIERS(); error L1_TRANSITION_ID_ZERO(); error L1_TRANSITION_NOT_FOUND(); error L1_TXLIST_OFFSET_SIZE(); diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index fa2a7e5818e..bad23df0b40 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -19,7 +19,6 @@ abstract contract TaikoEvents { /// @param blockId The ID of the proposed block. /// @param assignedProver The block's assigned prover. /// @param livenessBond The bond in Taiko token from the assigned prover. - /// @param proverFee The fee paid to the assigned prover. /// @param meta The block metadata containing information about the proposed /// block. /// @param depositsProcessed Ether deposits processed. @@ -27,7 +26,6 @@ abstract contract TaikoEvents { uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, - uint256 proverFee, TaikoData.BlockMetadata meta, TaikoData.EthDeposit[] depositsProcessed ); diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 1438e580b3b..a1db1f116f1 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -6,20 +6,13 @@ pragma solidity ^0.8.20; -import "../common/AddressResolver.sol"; import "../common/EssentialContract.sol"; -import "../common/ICrossChainSync.sol"; -import "../common/Proxied.sol"; import "./libs/LibDepositing.sol"; import "./libs/LibProposing.sol"; import "./libs/LibProving.sol"; -import "./libs/LibTaikoToken.sol"; -import "./libs/LibUtils.sol"; import "./libs/LibVerifying.sol"; -import "./TaikoData.sol"; import "./TaikoErrors.sol"; import "./TaikoEvents.sol"; -import "./tiers/ITierProvider.sol"; /// @title TaikoL1 /// @dev Labeled in AddressResolver as "taiko" @@ -29,15 +22,14 @@ import "./tiers/ITierProvider.sol"; /// deployed on L1, it can also be deployed on L2s to create L3s ("inception /// layers"). The contract also handles the deposit and withdrawal of Taiko /// tokens and Ether. +/// This contract doesn't hold any Ether. Ether deposited to L2 are held by the Bridge contract. contract TaikoL1 is EssentialContract, ICrossChainSync, ITierProvider, TaikoEvents, TaikoErrors { TaikoData.State public state; uint256[100] private __gap; - error L1_TOO_MANY_TIERS(); - - /// @dev Fallback function to receive Ether and deposit to Layer 2. + /// @dev Fallback function to receive Ether from Hooks receive() external payable { - depositEtherToL2(address(0)); + if (!_inNonReentrant()) revert L1_RECEIVE_DISABLED(); } /// @notice Initializes the rollup. @@ -67,8 +59,10 @@ contract TaikoL1 is EssentialContract, ICrossChainSync, ITierProvider, TaikoEven ) { TaikoData.Config memory config = getConfig(); + (meta, depositsProcessed) = LibProposing.proposeBlock(state, config, AddressResolver(this), params, txList); + if (!state.slotB.provingPaused && config.maxBlocksToVerifyPerProposal > 0) { LibVerifying.verifyBlocks( state, config, AddressResolver(this), config.maxBlocksToVerifyPerProposal @@ -82,6 +76,8 @@ contract TaikoL1 is EssentialContract, ICrossChainSync, ITierProvider, TaikoEven /// @param input An abi-encoded (BlockMetadata, Transition, TierProof) /// tuple. function proveBlock(uint64 blockId, bytes calldata input) external nonReentrant whenNotPaused { + if (state.slotB.provingPaused) revert L1_PROVING_PAUSED(); + ( TaikoData.BlockMetadata memory meta, TaikoData.Transition memory tran, @@ -91,8 +87,10 @@ contract TaikoL1 is EssentialContract, ICrossChainSync, ITierProvider, TaikoEven if (blockId != meta.id) revert L1_INVALID_BLOCK_ID(); TaikoData.Config memory config = getConfig(); + uint8 maxBlocksToVerify = LibProving.proveBlock(state, config, AddressResolver(this), meta, tran, proof); + if (maxBlocksToVerify > 0) { LibVerifying.verifyBlocks(state, config, AddressResolver(this), maxBlocksToVerify); } @@ -113,22 +111,10 @@ contract TaikoL1 is EssentialContract, ICrossChainSync, ITierProvider, TaikoEven LibProving.pauseProving(state, pause); } - /// @notice Deposit Taiko token to this contract - /// @param amount Amount of Taiko token to deposit. - function depositTaikoToken(uint256 amount) external whenNotPaused { - LibTaikoToken.depositTaikoToken(state, AddressResolver(this), amount); - } - - /// @notice Withdraw Taiko token from this contract - /// @param amount Amount of Taiko token to withdraw. - function withdrawTaikoToken(uint256 amount) external whenNotPaused { - LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); - } - /// @notice Deposits Ether to Layer 2. /// @param recipient Address of the recipient for the deposited Ether on /// Layer 2. - function depositEtherToL2(address recipient) public payable whenNotPaused { + function depositEtherToL2(address recipient) external payable whenNotPaused { LibDepositing.depositEtherToL2(state, getConfig(), AddressResolver(this), recipient); } diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index 0a13aacdb16..92148356dea 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -6,13 +6,12 @@ pragma solidity ^0.8.20; +import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; -import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; import "../common/EssentialContract.sol"; -import "../common/Proxied.sol"; /// @title TaikoToken /// @dev Labeled in AddressResolver as "taiko_token" diff --git a/packages/protocol/contracts/L1/gov/TaikoGovernor.sol b/packages/protocol/contracts/L1/gov/TaikoGovernor.sol index b4e80e9939b..626ba9a6f38 100644 --- a/packages/protocol/contracts/L1/gov/TaikoGovernor.sol +++ b/packages/protocol/contracts/L1/gov/TaikoGovernor.sol @@ -19,7 +19,7 @@ contract TaikoGovernor is IVotes _token, TimelockController _timelock ) - Governor("MyGovernor") + Governor("TaikoGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) GovernorTimelockControl(_timelock) diff --git a/packages/protocol/contracts/L1/hooks/AssignmentHook.sol b/packages/protocol/contracts/L1/hooks/AssignmentHook.sol new file mode 100644 index 00000000000..b3e312c158f --- /dev/null +++ b/packages/protocol/contracts/L1/hooks/AssignmentHook.sol @@ -0,0 +1,171 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; +import "../../common/EssentialContract.sol"; +import "../../libs/LibAddress.sol"; +import "../TaikoData.sol"; +import "../TaikoToken.sol"; +import "./IHook.sol"; + +/// @title AssignmentHook +/// A hook that handles prover assignment varification and fee processing. +contract AssignmentHook is EssentialContract, IHook { + using LibAddress for address; + + struct ProverAssignment { + address feeToken; + uint64 expiry; + uint64 maxBlockId; + uint64 maxProposedIn; + bytes32 metaHash; + TaikoData.TierFee[] tierFees; + bytes signature; + } + + struct Input { + ProverAssignment assignment; + uint256 tip; + } + + // Max gas paying the prover. This should be large enough to prevent the + // worst cases, usually block proposer shall be aware the risks and only + // choose provers that cannot consume too much gas when receiving Ether. + uint256 public constant MAX_GAS_PAYING_PROVER = 200_000; + + event BlockAssigned( + address indexed assignedProver, TaikoData.BlockMetadata meta, ProverAssignment assignment + ); + + error HOOK_ASSIGNMENT_EXPIRED(); + error HOOK_ASSIGNMENT_INVALID_SIG(); + error HOOK_ASSIGNMENT_INSUFFICIENT_FEE(); + error HOOK_TIER_NOT_FOUND(); + + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + function onBlockProposed( + TaikoData.Block memory blk, + TaikoData.BlockMetadata memory meta, + bytes memory data + ) + external + payable + nonReentrant + onlyFromNamed("taiko") + { + Input memory input = abi.decode(data, (Input)); + ProverAssignment memory assignment = input.assignment; + + // Check assignment validity + if ( + block.timestamp > assignment.expiry + || assignment.metaHash != 0 && blk.metaHash != assignment.metaHash + || assignment.maxBlockId != 0 && meta.id > assignment.maxBlockId + || assignment.maxProposedIn != 0 && block.number > assignment.maxProposedIn + ) { + revert HOOK_ASSIGNMENT_EXPIRED(); + } + + // Hash the assignment with the blobHash, this hash will be signed by + // the prover, therefore, we add a string as a prefix. + bytes32 hash = hashAssignment(assignment, msg.sender, meta.blobHash); + + if (!blk.assignedProver.isValidSignature(hash, assignment.signature)) { + revert HOOK_ASSIGNMENT_INVALID_SIG(); + } + + // Send the liveness bond to the Taiko contract + TaikoToken tko = TaikoToken(resolve("taiko_token", false)); + tko.transferFrom(blk.assignedProver, msg.sender, blk.livenessBond); + + // Find the prover fee using the minimal tier + uint256 proverFee = _getProverFee(assignment.tierFees, meta.minTier); + + // The proposer irrevocably pays a fee to the assigned prover, either in + // Ether or ERC20 tokens. + uint256 refund; + if (assignment.feeToken == address(0)) { + if (msg.value < proverFee + input.tip) { + revert HOOK_ASSIGNMENT_INSUFFICIENT_FEE(); + } + + unchecked { + refund = msg.value - proverFee - input.tip; + } + + // Paying Ether + blk.assignedProver.sendEther(proverFee, MAX_GAS_PAYING_PROVER); + } else { + if (msg.value < input.tip) { + revert HOOK_ASSIGNMENT_INSUFFICIENT_FEE(); + } + unchecked { + refund = msg.value - input.tip; + } + // Paying ERC20 tokens + ERC20Upgradeable(assignment.feeToken).transferFrom( + msg.sender, blk.assignedProver, proverFee + ); + } + + // block.coinbase can be address(0) in tests + if (input.tip != 0 && block.coinbase != address(0)) { + address(block.coinbase).sendEther(input.tip); + } + + if (refund != 0) { + msg.sender.sendEther(refund); + } + + emit BlockAssigned(blk.assignedProver, meta, assignment); + } + + function hashAssignment( + ProverAssignment memory assignment, + address taikoAddress, + bytes32 blobHash + ) + public + pure + returns (bytes32) + { + return keccak256( + abi.encode( + "PROVER_ASSIGNMENT", + taikoAddress, + blobHash, + assignment.feeToken, + assignment.expiry, + assignment.maxBlockId, + assignment.maxProposedIn, + assignment.tierFees + ) + ); + } + + function _getProverFee( + TaikoData.TierFee[] memory tierFees, + uint16 tierId + ) + private + pure + returns (uint256) + { + for (uint256 i; i < tierFees.length; ++i) { + if (tierFees[i].tier == tierId) return tierFees[i].fee; + } + revert HOOK_TIER_NOT_FOUND(); + } +} + +/// @title ProxiedAssignmentHook +/// @notice Proxied version of the parent contract. +contract ProxiedAssignmentHook is Proxied, AssignmentHook { } diff --git a/packages/protocol/contracts/L1/hooks/IHook.sol b/packages/protocol/contracts/L1/hooks/IHook.sol new file mode 100644 index 00000000000..abe4539c6a2 --- /dev/null +++ b/packages/protocol/contracts/L1/hooks/IHook.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import "../TaikoData.sol"; + +/// @title IHook Interface +interface IHook { + function onBlockProposed( + TaikoData.Block memory blk, + TaikoData.BlockMetadata memory meta, + bytes memory data + ) + external + payable; +} diff --git a/packages/protocol/contracts/L1/libs/LibDepositing.sol b/packages/protocol/contracts/L1/libs/LibDepositing.sol index 487fb9b9c01..4eb8b4f4cef 100644 --- a/packages/protocol/contracts/L1/libs/LibDepositing.sol +++ b/packages/protocol/contracts/L1/libs/LibDepositing.sol @@ -9,8 +9,8 @@ pragma solidity ^0.8.20; import "../../common/AddressResolver.sol"; import "../../libs/LibAddress.sol"; import "../../libs/LibMath.sol"; - import "../TaikoData.sol"; +import "../TaikoToken.sol"; /// @title LibDepositing /// @notice A library for handling Ether deposits in the Taiko protocol. diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 8875f29fda0..d187e7d8f0c 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -7,13 +7,13 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../common/AddressResolver.sol"; import "../../4844/IBlobHashReader.sol"; +import "../../common/AddressResolver.sol"; import "../../libs/LibAddress.sol"; +import "../hooks/IHook.sol"; import "../tiers/ITierProvider.sol"; import "../TaikoData.sol"; import "./LibDepositing.sol"; -import "./LibTaikoToken.sol"; /// @title LibProposing /// @notice A library for handling block proposals in the Taiko protocol. @@ -24,17 +24,11 @@ library LibProposing { // field element has 32 bytes. uint256 public constant MAX_BYTES_PER_BLOB = 4096 * 32; - // Max gas paying the prover. This should be large enough to prevent the - // worst cases, usually block proposer shall be aware the risks and only - // choose provers that cannot consume too much gas when receiving Ether. - uint256 public constant MAX_GAS_PAYING_PROVER = 200_000; - // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockProposed( uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, - uint256 proverFee, TaikoData.BlockMetadata meta, TaikoData.EthDeposit[] depositsProcessed ); @@ -42,16 +36,13 @@ library LibProposing { event BlobCached(bytes32 blobHash); // Warning: Any errors defined here must also be defined in TaikoErrors.sol. - error L1_ASSIGNMENT_EXPIRED(); - error L1_ASSIGNMENT_INVALID_SIG(); - error L1_ASSIGNMENT_INVALID_PARAMS(); - error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_BLOB_FOR_DA_DISABLED(); error L1_BLOB_NOT_FOUND(); error L1_BLOB_NOT_REUSEABLE(); error L1_INVALID_PARAM(); + error L1_INVALID_PROVER(); + error L1_LIVENESS_BOND_NOT_RECEIVED(); error L1_PROPOSER_NOT_EOA(); - error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); error L1_TXLIST_OFFSET(); error L1_TXLIST_SIZE(); @@ -74,6 +65,10 @@ library LibProposing { { TaikoData.BlockParams memory params = abi.decode(data, (TaikoData.BlockParams)); + if (params.assignedProver == address(0)) { + revert L1_INVALID_PROVER(); + } + // 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 @@ -229,32 +224,45 @@ library LibProposing { // verification. // Prover can charge ERC20/NFT as fees; msg.value can be zero. Taiko // doesn't mandate Ether as the only proofing fee. - blk.assignedProver = params.assignment.prover; - - // The assigned prover burns Taiko tokens, referred to as the - // "liveness bond." This bond remains non-refundable to the - // assigned prover under two conditions: if the block's verification - // transition is not the initial one or if it was generated and - // validated by different provers. Instead, a portion of the assignment - // bond serves as a reward for the actual prover. - LibTaikoToken.debitTaikoToken(state, resolver, blk.assignedProver, config.livenessBond); + blk.assignedProver = params.assignedProver; // Increment the counter (cursor) by 1. unchecked { ++state.slotB.numBlocks; } - // Validate the prover assignment, then charge Ether or ERC20 as the - // prover fee based on the block's minTier. - uint256 proverFee = _payProverFeeAndTip( - meta.minTier, meta.blobHash, blk.blockId, blk.metaHash, params.assignment - ); + { + TaikoToken tko = TaikoToken(resolver.resolve("taiko_token", false)); + uint256 tkoBalance = tko.balanceOf(address(this)); + + // Run all hooks. + // Note that address(this).balance has been updated with msg.value, + // prior to any code in this function has been executed. + for (uint256 i; i < params.hookCalls.length; ++i) { + // When a hook is called, all ether in this contract will be send to the hook. + // If the ether sent to the hook is not used entirely, the hook shall send the Ether + // back to this contract for the next hook to use. + // Proposers shall choose use extra hooks wisely. + IHook(params.hookCalls[i].hook).onBlockProposed{ value: address(this).balance }( + blk, meta, params.hookCalls[i].data + ); + } + // Refund Ether + if (address(this).balance != 0) { + msg.sender.sendEther(address(this).balance); + } + + // Check that after hooks, the Taiko Token balance of this contract + // have increased by at least config.livenessBond + if (tko.balanceOf(address(this)) < tkoBalance + config.livenessBond) { + revert L1_LIVENESS_BOND_NOT_RECEIVED(); + } + } emit BlockProposed({ blockId: blk.blockId, assignedProver: blk.assignedProver, livenessBond: config.livenessBond, - proverFee: proverFee, meta: meta, depositsProcessed: depositsProcessed }); @@ -272,91 +280,6 @@ library LibProposing { return state.reusableBlobs[blobHash] + config.blobExpiry > block.timestamp; } - function hashAssignment( - TaikoData.ProverAssignment memory assignment, - address taikoAddress, - bytes32 blobHash - ) - internal - pure - returns (bytes32) - { - return keccak256( - abi.encode( - "PROVER_ASSIGNMENT", - taikoAddress, - blobHash, - assignment.feeToken, - assignment.expiry, - assignment.maxBlockId, - assignment.maxProposedIn, - assignment.tierFees - ) - ); - } - - function _payProverFeeAndTip( - uint16 minTier, - bytes32 blobHash, - uint64 blockId, - bytes32 metaHash, - TaikoData.ProverAssignment memory assignment - ) - private - returns (uint256 proverFee) - { - if (blobHash == 0 || assignment.prover == address(0)) { - revert L1_ASSIGNMENT_INVALID_PARAMS(); - } - - // Check assignment validity - if ( - block.timestamp > assignment.expiry - || assignment.metaHash != 0 && metaHash != assignment.metaHash - || assignment.maxBlockId != 0 && blockId > assignment.maxBlockId - || assignment.maxProposedIn != 0 && block.number > assignment.maxProposedIn - ) { - revert L1_ASSIGNMENT_EXPIRED(); - } - - // Hash the assignment with the blobHash, this hash will be signed by - // the prover, therefore, we add a string as a prefix. - bytes32 hash = hashAssignment(assignment, address(this), blobHash); - - if (!assignment.prover.isValidSignature(hash, assignment.signature)) { - revert L1_ASSIGNMENT_INVALID_SIG(); - } - - // Find the prover fee using the minimal tier - proverFee = _getProverFee(assignment.tierFees, minTier); - - // The proposer irrevocably pays a fee to the assigned prover, either in - // Ether or ERC20 tokens. - uint256 tip; - if (assignment.feeToken == address(0)) { - if (msg.value < proverFee) revert L1_ASSIGNMENT_INSUFFICIENT_FEE(); - - unchecked { - tip = msg.value - proverFee; - } - - // Paying Ether - assignment.prover.sendEther(proverFee, MAX_GAS_PAYING_PROVER); - } else { - tip = msg.value; - - // Paying ERC20 tokens - ERC20Upgradeable(assignment.feeToken).transferFrom( - msg.sender, assignment.prover, proverFee - ); - } - - // block.coinbase can be address(0) in tests - if (tip != 0 && block.coinbase != address(0)) { - address(block.coinbase).sendEther(tip); - } - } - function _isProposerPermitted( TaikoData.SlotB memory slotB, AddressResolver resolver @@ -376,18 +299,4 @@ library LibProposing { address proposer = resolver.resolve("proposer", true); return proposer == address(0) || msg.sender == proposer; } - - function _getProverFee( - TaikoData.TierFee[] memory tierFees, - uint16 tierId - ) - private - pure - returns (uint256) - { - for (uint256 i; i < tierFees.length; ++i) { - if (tierFees[i].tier == tierId) return tierFees[i].fee; - } - revert L1_TIER_NOT_FOUND(); - } } diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 5e3ad4d23e6..0326c8332b3 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -10,7 +10,7 @@ import "../../common/AddressResolver.sol"; import "../tiers/ITierProvider.sol"; import "../verifiers/IVerifier.sol"; import "../TaikoData.sol"; -import "./LibTaikoToken.sol"; +import "../TaikoToken.sol"; import "./LibUtils.sol"; /// @title LibProving @@ -206,6 +206,8 @@ library LibProving { } } + TaikoToken tko = TaikoToken(resolver.resolve("taiko_token", false)); + if (tier.contestBond == 0) { assert(tier.validityBond == 0); // When contestBond is zero for the current tier, it signifies @@ -227,7 +229,7 @@ library LibProving { blk.livenessBond > 0 && proof.data.length == 32 && bytes32(proof.data) == RETURN_LIVENESS_BOND ) { - LibTaikoToken.creditTaikoToken(state, blk.assignedProver, blk.livenessBond); + tko.transfer(blk.assignedProver, blk.livenessBond); blk.livenessBond = 0; } @@ -237,9 +239,7 @@ library LibProving { if (ts.contester != address(0)) { // At this point we know that the contester was right - LibTaikoToken.creditTaikoToken( - state, ts.contester, ts.validityBond / 4 + ts.contestBond - ); + tko.transfer(ts.contester, ts.validityBond / 4 + ts.contestBond); ts.contester = address(0); ts.validityBond = 0; } @@ -278,7 +278,7 @@ library LibProving { if (ts.contester != address(0)) revert L1_ALREADY_CONTESTED(); // Burn the contest bond from the prover. - LibTaikoToken.debitTaikoToken(state, resolver, msg.sender, tier.contestBond); + tko.transferFrom(msg.sender, address(this), tier.contestBond); // We retain the contest bond within the transition, just in // case this configuration is altered to a different value @@ -367,7 +367,7 @@ library LibProving { // Mint the reward and the validity bond and return it to // the previous prover. - LibTaikoToken.creditTaikoToken(state, ts.prover, reward + ts.validityBond); + tko.transfer(ts.prover, reward + ts.validityBond); } else { // In the event that the contester is the winner, half of // the validity bond is designated as the reward, to be @@ -378,11 +378,11 @@ library LibProving { // for the tier-0 transition. Consequently, we only grant a // reward to the contester if it is not a zero-address. if (ts.contester != address(0)) { - LibTaikoToken.creditTaikoToken(state, ts.contester, reward + ts.contestBond); + tko.transfer(ts.contester, reward + ts.contestBond); } else { // The prover is also the contester, so the reward is // sent to him. - LibTaikoToken.creditTaikoToken(state, msg.sender, reward); + tko.transfer(msg.sender, reward); } // Given that the contester emerges as the winner, the @@ -396,11 +396,11 @@ library LibProving { // Reward this prover. // In theory, the reward can also be zero for certain tiers if // their validity bonds are set to zero. - LibTaikoToken.creditTaikoToken(state, msg.sender, reward); + tko.transfer(msg.sender, reward); } // Burn the validity bond from the prover. - LibTaikoToken.debitTaikoToken(state, resolver, msg.sender, tier.validityBond); + tko.transferFrom(msg.sender, address(this), tier.validityBond); // Regardless of whether the previous prover or the contester // emerges as the winner, we consistently erase the contest history @@ -423,9 +423,8 @@ library LibProving { } function pauseProving(TaikoData.State storage state, bool pause) internal { - if (state.slotB.provingPaused == pause) { - revert L1_INVALID_PAUSE_STATUS(); - } + if (state.slotB.provingPaused == pause) revert L1_INVALID_PAUSE_STATUS(); + state.slotB.provingPaused = pause; emit ProvingPaused(pause); } diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol deleted file mode 100644 index 1bc96856664..00000000000 --- a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import "../../common/AddressResolver.sol"; -import "../TaikoData.sol"; -import "../TaikoToken.sol"; - -library LibTaikoToken { - event TokenDeposited(uint256 amount); - event TokenWithdrawn(uint256 amount); - event TokenCredited(address to, uint256 amount); - event TokenDebited(address from, uint256 amount); - - error L1_INSUFFICIENT_TOKEN(); - error L1_INVALID_ADDRESS(); - error L1_INVALID_AMOUNT(); - - function depositTaikoToken( - TaikoData.State storage state, - AddressResolver resolver, - uint256 amount - ) - external - { - if (amount == 0) revert L1_INVALID_AMOUNT(); - TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( - msg.sender, address(this), amount - ); - unchecked { - state.tokenBalances[msg.sender] += amount; - } - emit TokenDeposited(amount); - } - - function withdrawTaikoToken( - TaikoData.State storage state, - AddressResolver resolver, - uint256 amount - ) - external - { - if (amount == 0) revert L1_INVALID_AMOUNT(); - if (state.tokenBalances[msg.sender] < amount) { - revert L1_INSUFFICIENT_TOKEN(); - } - // Unchecked is safe per above check - unchecked { - state.tokenBalances[msg.sender] -= amount; - } - - TaikoToken(resolver.resolve("taiko_token", false)).transfer(msg.sender, amount); - - emit TokenWithdrawn(amount); - } - - function creditTaikoToken(TaikoData.State storage state, address to, uint256 amount) internal { - if (amount == 0 || to == address(0)) return; - unchecked { - state.tokenBalances[to] += amount; - } - emit TokenCredited(to, amount); - } - - function debitTaikoToken( - TaikoData.State storage state, - AddressResolver resolver, - address from, - uint256 amount - ) - internal - { - if (amount == 0) return; - if (state.tokenBalances[from] < amount) { - TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( - from, address(this), amount - ); - } else { - unchecked { - state.tokenBalances[from] -= amount; - } - } - emit TokenDebited(from, amount); - } -} diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 97769f3db21..516b1047d30 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -10,7 +10,7 @@ import "../../common/AddressResolver.sol"; import "../../signal/ISignalService.sol"; import "../tiers/ITierProvider.sol"; import "../TaikoData.sol"; -import "./LibTaikoToken.sol"; +import "../TaikoToken.sol"; import "./LibUtils.sol"; /// @title LibVerifying @@ -105,8 +105,6 @@ library LibVerifying { // Retrieve the latest verified block and the associated transition used // for its verification. TaikoData.SlotB memory b = state.slotB; - if (b.provingPaused) return; - uint64 blockId = b.lastVerifiedBlockId; uint64 slot = blockId % config.blockRingBufferSize; @@ -195,7 +193,8 @@ library LibVerifying { bondToReturn -= blk.livenessBond / 2; } - LibTaikoToken.creditTaikoToken(state, ts.prover, bondToReturn); + TaikoToken tko = TaikoToken(resolver.resolve("taiko_token", false)); + tko.transfer(ts.prover, bondToReturn); // Note: We exclusively address the bonds linked to the // transition used for verification. While there may exist diff --git a/packages/protocol/contracts/L1/provers/GuardianProver.sol b/packages/protocol/contracts/L1/provers/GuardianProver.sol index 9d55317fb75..f0ed23b4d04 100644 --- a/packages/protocol/contracts/L1/provers/GuardianProver.sol +++ b/packages/protocol/contracts/L1/provers/GuardianProver.sol @@ -7,7 +7,6 @@ pragma solidity ^0.8.20; import "../../common/EssentialContract.sol"; -import "../../common/Proxied.sol"; import "../tiers/ITierProvider.sol"; import "../TaikoData.sol"; diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index 7e5370e474b..1ecdbf3d820 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -7,7 +7,6 @@ pragma solidity ^0.8.20; import "../../common/EssentialContract.sol"; -import "../../common/Proxied.sol"; import "../TaikoData.sol"; import "./IVerifier.sol"; diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index bf92c784c79..10fb1a2bbd5 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -6,10 +6,8 @@ pragma solidity ^0.8.20; -import "../../common/EssentialContract.sol"; import "../../4844/Lib4844.sol"; -import "../../common/Proxied.sol"; -import "../../common/Proxied.sol"; +import "../../common/EssentialContract.sol"; import "../../thirdparty/LibBytesUtils.sol"; import "../TaikoData.sol"; import "./IVerifier.sol"; diff --git a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol index 3a1c6f16e3b..9972a3f5a29 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol @@ -8,7 +8,6 @@ pragma solidity ^0.8.20; import "../../common/EssentialContract.sol"; import "../../thirdparty/LibBytesUtils.sol"; -import "../../common/Proxied.sol"; import "../TaikoData.sol"; import "./IVerifier.sol"; diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol index a47afbf9fee..a21334d6b17 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -8,7 +8,6 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol"; import "../../common/EssentialContract.sol"; -import "../../common/Proxied.sol"; import "../../thirdparty/LibBytesUtils.sol"; import "../TaikoData.sol"; import "./IVerifier.sol"; diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index d4536463b5d..f441a3f9138 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -7,10 +7,10 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; +import "../common/EssentialContract.sol"; import "../common/ICrossChainSync.sol"; -import "../signal/ISignalService.sol"; -import "../common/Proxied.sol"; import "../libs/LibMath.sol"; +import "../signal/ISignalService.sol"; import "./Lib1559Math.sol"; import "./TaikoL2Signer.sol"; @@ -20,7 +20,7 @@ import "./TaikoL2Signer.sol"; /// It is used to anchor the latest L1 block details to L2 for cross-layer /// communication, manage EIP-1559 parameters for gas pricing, and store /// verified L1 block information. -contract TaikoL2 is Ownable2StepUpgradeable, TaikoL2Signer, ICrossChainSync { +contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { using LibMath for uint256; struct Config { @@ -55,7 +55,7 @@ contract TaikoL2 is Ownable2StepUpgradeable, TaikoL2Signer, ICrossChainSync { /// @param _signalService Address of the {ISignalService} contract. /// @param _gasExcess The initial gasExcess. function init(address _signalService, uint64 _gasExcess) external initializer { - Ownable2StepUpgradeable.__Ownable2Step_init(); + EssentialContract._init(address(0)); if (_signalService == address(0)) revert L2_INVALID_PARAM(); signalService = _signalService; diff --git a/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol b/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol index b9b7ae6c2db..3eec0d12fcb 100644 --- a/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol +++ b/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol @@ -7,7 +7,6 @@ pragma solidity ^0.8.20; import "./TaikoL2.sol"; -import "../common/Proxied.sol"; /// @title TaikoL2EIP1559Configurable /// @notice Taiko L2 with a setter to change EIP-1559 configurations and states. diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index 2b933ec3f88..75c51bb85d1 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -6,9 +6,8 @@ pragma solidity ^0.8.20; import "../common/EssentialContract.sol"; -import "../common/Proxied.sol"; -import "../signal/ISignalService.sol"; import "../libs/LibAddress.sol"; +import "../signal/ISignalService.sol"; import "./IBridge.sol"; /// @title Bridge diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index 0601489d4ae..647ca57e35b 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -7,7 +7,6 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; -import "./Proxied.sol"; /// @title IAddressManager /// @notice Specifies methods to manage address mappings for given chainId-name @@ -63,4 +62,8 @@ contract AddressManager is Ownable2StepUpgradeable, IAddressManager { /// @title ProxiedAddressManager /// @notice Proxied version of the parent contract. -contract ProxiedAddressManager is Proxied, AddressManager { } +contract ProxiedAddressManager is AddressManager { + constructor() { + _disableInitializers(); + } +} diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index 42199349b9c..6f5f84d3223 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -6,6 +6,7 @@ pragma solidity ^0.8.20; +import "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; import "./AddressResolver.sol"; @@ -67,4 +68,22 @@ abstract contract EssentialContract is Ownable2StepUpgradeable, AddressResolver _reentry = _FALSE; _paused = _FALSE; } + + function _inNonReentrant() internal view returns (bool) { + return _reentry == _TRUE; + } +} + +/// @title Proxied +/// @dev Extends OpenZeppelin's Initializable for upgradeable contracts. +/// Intended as the base class for contracts used with +/// TransparentUpgradeableProxy. +/// +/// @dev For each chain, deploy Proxied contracts with unique deployers to +/// ensure distinct contract addresses. +abstract contract Proxied is Initializable { + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } } diff --git a/packages/protocol/contracts/common/Proxied.sol b/packages/protocol/contracts/common/Proxied.sol deleted file mode 100644 index a09d3ea5e0c..00000000000 --- a/packages/protocol/contracts/common/Proxied.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; - -/// @title Proxied -/// @dev Extends OpenZeppelin's Initializable for upgradeable contracts. -/// Intended as the base class for contracts used with -/// TransparentUpgradeableProxy. -/// -/// @dev For each chain, deploy Proxied contracts with unique deployers to -/// ensure distinct contract addresses. -abstract contract Proxied is Initializable { - /// @custom:oz-upgrades-unsafe-allow constructor - constructor() { - _disableInitializers(); - } -} diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index e71e1e9946c..e89d9dd269a 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.20; -import "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol"; +import "lib/openzeppelin-contracts/contracts/utils/Address.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1271Upgradeable.sol"; @@ -51,7 +51,7 @@ library LibAddress { view returns (bool result) { - if (!AddressUpgradeable.isContract(addr)) return false; + if (!Address.isContract(addr)) return false; try IERC165Upgradeable(addr).supportsInterface(interfaceId) returns (bool _result) { result = _result; @@ -67,7 +67,7 @@ library LibAddress { view returns (bool valid) { - if (AddressUpgradeable.isContract(addr)) { + if (Address.isContract(addr)) { return IERC1271Upgradeable(addr).isValidSignature(hash, sig) == EIP1271_MAGICVALUE; } else { return ECDSAUpgradeable.recover(hash, sig) == addr; diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 5750bbf5e66..f812459d794 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -6,13 +6,10 @@ pragma solidity ^0.8.20; -import "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol"; - +import "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"; import "../common/AuthorizableContract.sol"; import "../common/ICrossChainSync.sol"; -import "../common/Proxied.sol"; import "../thirdparty/LibSecureMerkleTrie.sol"; - import "./ISignalService.sol"; /// @title SignalService @@ -26,7 +23,7 @@ import "./ISignalService.sol"; /// Note: SignalService should not authorize Bridges or other Bridgable /// applications. contract SignalService is AuthorizableContract, ISignalService { - using SafeCastUpgradeable for uint256; + using SafeCast for uint256; // storageProof represents ABI-encoded tuple of (key, value, and proof) // returned from the eth_getProof() API. diff --git a/packages/protocol/contracts/team/TimeLockTokenPool.sol b/packages/protocol/contracts/team/TimeLockTokenPool.sol index 0e30f41a5a3..1bfdec7747d 100644 --- a/packages/protocol/contracts/team/TimeLockTokenPool.sol +++ b/packages/protocol/contracts/team/TimeLockTokenPool.sol @@ -10,7 +10,7 @@ import "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgr import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol"; -import "../common/Proxied.sol"; +import "../common/EssentialContract.sol"; /// @title TimeLockTokenPool /// Contract for managing Taiko tokens allocated to different roles and @@ -27,7 +27,7 @@ import "../common/Proxied.sol"; /// - investors /// - team members, advisors, etc. /// - grant program grantees -contract TimeLockTokenPool is Ownable2StepUpgradeable { +contract TimeLockTokenPool is EssentialContract { using SafeERC20Upgradeable for ERC20Upgradeable; struct Grant { @@ -78,7 +78,7 @@ contract TimeLockTokenPool is Ownable2StepUpgradeable { error TOO_MANY(); function init(address _taikoToken, address _sharedVault) external initializer { - Ownable2StepUpgradeable.__Ownable2Step_init(); + EssentialContract._init(address(0)); if (_taikoToken == address(0)) revert INVALID_PARAM(); taikoToken = _taikoToken; diff --git a/packages/protocol/contracts/tokenvault/BaseVault.sol b/packages/protocol/contracts/tokenvault/BaseVault.sol index eb7486d95b1..9f762a02766 100644 --- a/packages/protocol/contracts/tokenvault/BaseVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseVault.sol @@ -8,6 +8,7 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; import "../bridge/IBridge.sol"; import "../common/EssentialContract.sol"; +import "../libs/LibAddress.sol"; abstract contract BaseVault is EssentialContract, IRecallableSender, IERC165Upgradeable { error VAULT_PERMISSION_DENIED(); diff --git a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol index 0ba5f55d229..3de84eb5f57 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol @@ -12,7 +12,6 @@ import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol"; import "../common/EssentialContract.sol"; -import "../common/Proxied.sol"; /// @title BridgedERC1155 /// @notice Contract for bridging ERC1155 tokens across different chains. diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index c692bbe1745..88aa50461b3 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -11,7 +11,6 @@ import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; import "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import "../common/EssentialContract.sol"; -import "../common/Proxied.sol"; import "./IMintableERC20.sol"; /// @title BridgedERC20 diff --git a/packages/protocol/contracts/tokenvault/BridgedERC721.sol b/packages/protocol/contracts/tokenvault/BridgedERC721.sol index 20287b97c6d..82ad8670987 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC721.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC721.sol @@ -9,7 +9,6 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol"; import "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import "../common/EssentialContract.sol"; -import "../common/Proxied.sol"; /// @title BridgedERC721 /// @notice Contract for bridging ERC721 tokens across different chains. diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index 3bb71c3922f..a2e3b996371 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -7,15 +7,11 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol"; - -import "../common/Proxied.sol"; import "../bridge/IBridge.sol"; import "../libs/LibAddress.sol"; - import "./BaseNFTVault.sol"; import "./BridgedERC1155.sol"; diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index e05958504c3..e4db98439a1 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -7,12 +7,9 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol"; -import "../common/Proxied.sol"; import "../bridge/IBridge.sol"; -import "../libs/LibAddress.sol"; import "./BridgedERC20.sol"; import "./IMintableERC20.sol"; import "./BaseVault.sol"; diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 07f326f4f5b..8eefa3e9f79 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -7,13 +7,10 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol"; import "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol"; import "../bridge/IBridge.sol"; -import "../libs/LibAddress.sol"; -import "../common/Proxied.sol"; import "./BaseNFTVault.sol"; import "./BridgedERC721.sol"; diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index 49aed95bde1..ff503f41f3f 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -1,12 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +import "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "forge-std/console2.sol"; import "forge-std/StdJson.sol"; import "forge-std/Test.sol"; - -import "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - import "../contracts/common/AddressManager.sol"; import "../contracts/common/AddressResolver.sol"; import "../contracts/common/EssentialContract.sol"; diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index fa562e73375..901dfe7bbcd 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "forge-std/console2.sol"; - import "../../contracts/common/AddressManager.sol"; import "../../contracts/L1/libs/LibUtils.sol"; import "../../contracts/L1/libs/LibProposing.sol"; @@ -762,7 +761,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // This is a very weird test (code?) issue here. // If this line is uncommented, // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are onsgoing with foundry team + // Current investigations are ongoing with foundry team giveEthAndTko(Bob, 1e7 ether, 100 ether); console2.log("Bob balance:", tko.balanceOf(Bob)); // Bob @@ -794,6 +793,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { proof.tier = LibTiers.TIER_GUARDIAN; proof.data = bytes.concat(keccak256("RETURN_LIVENESS_BOND")); + uint256 balanceBeforeReimbursement = tko.balanceOf(Bob); + vm.prank(David, David); gp.approve(meta, tran, proof); vm.prank(Emma, Emma); @@ -804,7 +805,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // // Credited back the bond (not transferred to the user // wallet, // // but in-contract account credited only.) - assertEq(L1.getTaikoTokenBalance(Bob), 1 ether); + assertEq(tko.balanceOf(Bob) - balanceBeforeReimbursement, 1 ether); } else { // Prove as guardian proveBlock( diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 0cd05baae6b..a7d1ef19958 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -21,6 +21,7 @@ import "../../contracts/L1/provers/GuardianProver.sol"; import "../../contracts/signal/SignalService.sol"; import "../../contracts/common/AddressResolver.sol"; import "../../contracts/L1/tiers/ITierProvider.sol"; +import "../../contracts/L1/hooks/AssignmentHook.sol"; contract MockVerifier { fallback(bytes calldata) external returns (bytes memory) { @@ -32,6 +33,7 @@ contract MockVerifier { // shared logics and data. abstract contract TaikoL1TestBase is TaikoTest { AddressManager public addressManager; + AssignmentHook public assignmentHook; TaikoToken public tko; SignalService public ss; TaikoL1 public L1; @@ -86,6 +88,9 @@ abstract contract TaikoL1TestBase is TaikoTest { bridge = new Bridge(); bridge.init(address(addressManager)); + assignmentHook = new AssignmentHook(); + assignmentHook.init(address(addressManager)); + registerAddress("taiko", address(L1)); registerAddress("tier_pse_zkevm", address(pv)); registerAddress("tier_sgx", address(sv)); @@ -140,8 +145,7 @@ abstract contract TaikoL1TestBase is TaikoTest { // anyways uint256 msgValue = 2 ether; - TaikoData.ProverAssignment memory assignment = TaikoData.ProverAssignment({ - prover: prover, + AssignmentHook.ProverAssignment memory assignment = AssignmentHook.ProverAssignment({ feeToken: address(0), tierFees: tierFees, expiry: uint64(block.timestamp + 60 minutes), @@ -151,9 +155,8 @@ abstract contract TaikoL1TestBase is TaikoTest { signature: new bytes(0) }); - bytes memory txList = new bytes(txListSize); - - assignment.signature = _signAssignment(prover, assignment, address(L1), keccak256(txList)); + assignment.signature = + _signAssignment(prover, assignment, address(L1), keccak256(new bytes(txListSize))); (, TaikoData.SlotB memory b) = L1.getStateVariables(); @@ -168,9 +171,14 @@ abstract contract TaikoL1TestBase is TaikoTest { meta.difficulty = bytes32(_difficulty); meta.gasLimit = gasLimit; + TaikoData.HookCall[] memory hookcalls = new TaikoData.HookCall[](1); + + hookcalls[0] = TaikoData.HookCall(address(assignmentHook), abi.encode(assignment)); + vm.prank(proposer, proposer); (meta, depositsProcessed) = L1.proposeBlock{ value: msgValue }( - abi.encode(TaikoData.BlockParams(assignment, 0, 0, 0, 0, false, 0)), txList + abi.encode(TaikoData.BlockParams(prover, 0, 0, 0, 0, false, 0, hookcalls)), + new bytes(txListSize) ); } @@ -295,7 +303,7 @@ abstract contract TaikoL1TestBase is TaikoTest { function _signAssignment( address signer, - TaikoData.ProverAssignment memory assignment, + AssignmentHook.ProverAssignment memory assignment, address taikoAddr, bytes32 blobHash ) @@ -303,7 +311,6 @@ abstract contract TaikoL1TestBase is TaikoTest { view returns (bytes memory signature) { - bytes32 digest = LibProposing.hashAssignment(assignment, taikoAddr, blobHash); uint256 signerPrivateKey; // In the test suite these are the 3 which acts as provers @@ -315,7 +322,9 @@ abstract contract TaikoL1TestBase is TaikoTest { signerPrivateKey = 0x3; } - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPrivateKey, digest); + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + signerPrivateKey, assignmentHook.hashAssignment(assignment, taikoAddr, blobHash) + ); signature = abi.encodePacked(r, s, v); } @@ -346,12 +355,12 @@ abstract contract TaikoL1TestBase is TaikoTest { function giveEthAndTko(address to, uint256 amountTko, uint256 amountEth) internal { vm.deal(to, amountEth); - console2.log("TKO balance this:", tko.balanceOf(address(this))); - console2.log(amountTko); tko.transfer(to, amountTko); vm.prank(to, to); tko.approve(address(L1), amountTko); + vm.prank(to, to); + tko.approve(address(assignmentHook), amountTko); console2.log("TKO balance:", to, tko.balanceOf(to)); console2.log("ETH balance:", to, to.balance); diff --git a/packages/protocol/test/L2/Lib1559Math.t.sol b/packages/protocol/test/L2/Lib1559Math.t.sol index 6bd46238f77..1f9bef46627 100644 --- a/packages/protocol/test/L2/Lib1559Math.t.sol +++ b/packages/protocol/test/L2/Lib1559Math.t.sol @@ -2,11 +2,9 @@ pragma solidity ^0.8.20; import "forge-std/console2.sol"; - import "../../contracts/L2/Lib1559Math.sol"; import "../../contracts/thirdparty/LibFixedPointMath.sol"; import "../../contracts/libs/LibMath.sol"; - import "../TestBase.sol"; contract TestLib1559Math is TaikoTest { diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index 145683f5c29..3a27c7d580c 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; import "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; -import "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol"; +import "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"; import "forge-std/console2.sol"; import "../../contracts/common/AddressManager.sol"; import "../../contracts/signal/SignalService.sol"; @@ -17,7 +17,7 @@ contract SkipBasefeeCheckL2 is TaikoL2EIP1559Configurable { } contract TestTaikoL2 is TaikoTest { - using SafeCastUpgradeable for uint256; + using SafeCast for uint256; // Initial salt for semi-random generation uint256 salt = 2_195_684_615_435_261_315_311;