Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(protocol): support backward-compatible batch-proof verification #17968

Merged
merged 112 commits into from
Aug 29, 2024
Merged
Show file tree
Hide file tree
Changes from 110 commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
abc509f
refactor (#17951)
dantaik Aug 20, 2024
9893214
temp revert
dantaik Aug 20, 2024
7d46f8a
Merge branch 'main' into refactor_tiers
dantaik Aug 20, 2024
070b539
make LibRollupAddressCache backward compatible
dantaik Aug 21, 2024
8113502
rename
dantaik Aug 21, 2024
487540b
Revert "rename"
dantaik Aug 21, 2024
6cd4ce9
rename
dantaik Aug 21, 2024
8995911
AddressCache
dantaik Aug 21, 2024
55474f0
AddressCache
dantaik Aug 21, 2024
82b94ac
more
dantaik Aug 21, 2024
6c92b2e
forge fmt & update contract layout table
dantaik Aug 21, 2024
61f042a
restore some changes
dantaik Aug 22, 2024
e352489
Update DevnetTierProvider.sol
dantaik Aug 22, 2024
e979665
f
dantaik Aug 22, 2024
b1069ed
Update TierProviderV2.sol
dantaik Aug 22, 2024
278d604
Update HeklaTierProvider.sol
dantaik Aug 22, 2024
108a988
Update TierProviderV2.sol
dantaik Aug 22, 2024
ab46dfe
more
dantaik Aug 22, 2024
896318c
Update LibStrings.sol
dantaik Aug 22, 2024
3e7f123
Update LibStrings.sol
dantaik Aug 22, 2024
e5d4f07
more
dantaik Aug 22, 2024
1691c1e
Update AddressResolver.t.sol
dantaik Aug 22, 2024
4225407
Update TierProviderBase.sol
dantaik Aug 22, 2024
e5dd9a5
feat(protocol): add ComposeVerifier (#17961)
dantaik Aug 22, 2024
d916381
Update AddressCache.sol
dantaik Aug 22, 2024
5331c15
Update AddressCache.sol
dantaik Aug 22, 2024
87d4c03
Update ZkAnyVerifier.sol
dantaik Aug 22, 2024
5260425
Merge branch 'main' into refactor_tiers
dantaik Aug 22, 2024
873a3ee
Update ComposeVerifier.sol
dantaik Aug 22, 2024
0d2a158
Update packages/protocol/contracts/verifiers/compose/TeeAnyVerifier.sol
dantaik Aug 22, 2024
e1c55bf
Update TierProviderBase.sol
dantaik Aug 23, 2024
c2321d5
Update SgxVerifier.sol
dantaik Aug 23, 2024
0113687
Update TierProviderBase.sol
dantaik Aug 23, 2024
09f8121
Update TierProviderBase.sol
dantaik Aug 23, 2024
b6a5f3d
Update SgxVerifier.t.sol
dantaik Aug 23, 2024
583c48c
Update ITierProvider.sol
dantaik Aug 23, 2024
194410b
Update TaikoL1.sol
dantaik Aug 23, 2024
0a29e54
Update TaikoL1.sol
dantaik Aug 23, 2024
9cdd624
more
dantaik Aug 23, 2024
f0decc3
Update LibProposing.sol
dantaik Aug 23, 2024
5eeffcb
x
dantaik Aug 23, 2024
888d61a
more
dantaik Aug 23, 2024
657e5ef
x
dantaik Aug 23, 2024
ffb2ce5
more
dantaik Aug 23, 2024
8485a27
more
dantaik Aug 23, 2024
977bcc6
Merge branch 'main' into refactor_propose_prove_block
dantaik Aug 25, 2024
45b74e1
Merge branch 'refactor_tiers' into refactor_propose_prove_block
dantaik Aug 25, 2024
0c45d91
temp
dantaik Aug 25, 2024
874bf74
more
dantaik Aug 25, 2024
e12ad75
more
dantaik Aug 25, 2024
6b42956
more
dantaik Aug 25, 2024
5fe2fa0
Update LibProving.sol
dantaik Aug 25, 2024
40548f3
Update ComposeVerifeir.t.sol
dantaik Aug 25, 2024
ad32d39
Update LibProving.sol
dantaik Aug 25, 2024
31b2248
Update LibProving.sol
dantaik Aug 25, 2024
ee36e28
Update LibProving.sol
dantaik Aug 25, 2024
3f30832
Merge branch 'main' into refactor_tiers
dantaik Aug 25, 2024
0457258
Merge branch 'refactor_tiers' into refactor_propose_prove_block
dantaik Aug 25, 2024
b11ac06
Update SgxVerifier.sol
dantaik Aug 25, 2024
12cc4e9
Update SgxVerifier.sol
dantaik Aug 25, 2024
dcd7ce3
Update Risc0Verifier.sol
dantaik Aug 25, 2024
f206780
delete
dantaik Aug 25, 2024
fc1e6c2
Update Risc0Verifier.sol
dantaik Aug 25, 2024
9dfd5ed
Merge branch 'refactor_tiers' into refactor_propose_prove_block
dantaik Aug 25, 2024
e48ebf9
Update SgxVerifier.sol
dantaik Aug 25, 2024
e78005f
fix
dantaik Aug 26, 2024
951ed1f
Update LibProving.sol
dantaik Aug 26, 2024
d7c0268
fix
dantaik Aug 26, 2024
fcaf689
Revert "delete"
dantaik Aug 26, 2024
ae801f6
Merge branch 'main' into refactor_tiers
dantaik Aug 26, 2024
98554bd
Update ComposeVerifier.sol
dantaik Aug 26, 2024
6bc568c
fix
dantaik Aug 26, 2024
50c4609
fix
dantaik Aug 26, 2024
1fb232a
Update ComposeVerifier.sol
dantaik Aug 26, 2024
8d9b9ce
Update ComposeVerifier.sol
dantaik Aug 27, 2024
e572c8a
Revert "Update ComposeVerifier.sol"
dantaik Aug 27, 2024
7303da1
Merge branch 'main' into refactor_tiers
dantaik Aug 27, 2024
9f64da6
more
dantaik Aug 27, 2024
5827a48
more
dantaik Aug 27, 2024
270cffe
more
dantaik Aug 27, 2024
8938c20
forge fmt & update contract layout table
dantaik Aug 27, 2024
3bae22d
more
dantaik Aug 27, 2024
51336e7
Update ComposeVerifeir.t.sol
dantaik Aug 27, 2024
ad4a99f
Merge branch 'refactor_tiers' into refactor_propose_prove_block
dantaik Aug 27, 2024
822983b
Update ComposeVerifier.sol
dantaik Aug 27, 2024
98063b7
Update ComposeVerifier.sol
dantaik Aug 27, 2024
38bddc5
more
dantaik Aug 27, 2024
3c76b93
Update ComposeVerifeir.t.sol
dantaik Aug 27, 2024
0aef930
fix
dantaik Aug 27, 2024
f82de8a
Update LibProving.sol
dantaik Aug 27, 2024
699edd4
Merge branch 'main' into refactor_tiers
adaki2004 Aug 27, 2024
94564b6
Update packages/protocol/contracts/L1/tiers/ITierProvider.sol
dantaik Aug 28, 2024
18ff421
more
dantaik Aug 28, 2024
c6ce77d
Merge branch 'refactor_tiers' into refactor_propose_prove_block
dantaik Aug 28, 2024
70635e3
Merge branch 'main' into refactor_propose_prove_block
dantaik Aug 28, 2024
1c349f7
fix
dantaik Aug 28, 2024
aa1dbdc
more
dantaik Aug 28, 2024
90972ef
Update gen-layouts.sh
dantaik Aug 28, 2024
a88a8e8
forge fmt & update contract layout table
dantaik Aug 28, 2024
7813c4c
comment
dantaik Aug 28, 2024
cdb7b90
Merge branch 'main' into refactor_propose_prove_block
dantaik Aug 28, 2024
03a360d
Update MainnetZkAndTeeVerifier.sol
dantaik Aug 28, 2024
9744d28
comments
dantaik Aug 28, 2024
13652c4
fix
dantaik Aug 28, 2024
af4226f
Update TaikoData.sol
dantaik Aug 28, 2024
baf1ff7
more
dantaik Aug 28, 2024
e9ddc56
Update SgxVerifier.sol
dantaik Aug 28, 2024
43cf921
Update gen-layouts.sh
dantaik Aug 28, 2024
e4e8eca
forge fmt & update contract layout table
dantaik Aug 28, 2024
2761c07
Merge branch 'main' into refactor_propose_prove_block
dantaik Aug 29, 2024
596c7a2
forge fmt & update contract layout table
dantaik Aug 29, 2024
7e5f888
Merge branch 'main' into refactor_propose_prove_block
dantaik Aug 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions packages/protocol/contract_layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,25 @@
| __gap | uint256[50] | 251 | 0 | 1600 | contracts/verifiers/compose/ZkAnyVerifier.sol:ZkAnyVerifier |
| __gap | uint256[50] | 301 | 0 | 1600 | contracts/verifiers/compose/ZkAnyVerifier.sol:ZkAnyVerifier |

## ZkAndTeeVerifier
| Name | Type | Slot | Offset | Bytes | Contract |
|----------------|-------------|------|--------|-------|-------------------------------------------------------------------|
| _initialized | uint8 | 0 | 0 | 1 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| _initializing | bool | 0 | 1 | 1 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[50] | 1 | 0 | 1600 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| _owner | address | 51 | 0 | 20 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[49] | 52 | 0 | 1568 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| _pendingOwner | address | 101 | 0 | 20 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[49] | 102 | 0 | 1568 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| addressManager | address | 151 | 0 | 20 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[49] | 152 | 0 | 1568 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __reentry | uint8 | 201 | 0 | 1 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __paused | uint8 | 201 | 1 | 1 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[49] | 202 | 0 | 1568 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[50] | 251 | 0 | 1600 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |
| __gap | uint256[50] | 301 | 0 | 1600 | contracts/verifiers/compose/ZkAndTeeVerifier.sol:ZkAndTeeVerifier |

## HeklaTaikoL1
| Name | Type | Slot | Offset | Bytes | Contract |
|----------------|------------------------|------|--------|-------|-----------------------------------------------|
Expand Down Expand Up @@ -834,6 +853,63 @@
| addressRegistered | mapping(address => bool) | 253 | 0 | 32 | contracts/mainnet/rollup/verifiers/MainnetSgxVerifier.sol:MainnetSgxVerifier |
| __gap | uint256[47] | 254 | 0 | 1504 | contracts/mainnet/rollup/verifiers/MainnetSgxVerifier.sol:MainnetSgxVerifier |

## MainnetTeeAnyVerifier
| Name | Type | Slot | Offset | Bytes | Contract |
|----------------|-------------|------|--------|-------|------------------------------------------------------------------------------------|
| _initialized | uint8 | 0 | 0 | 1 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| _initializing | bool | 0 | 1 | 1 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[50] | 1 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| _owner | address | 51 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[49] | 52 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| _pendingOwner | address | 101 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[49] | 102 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| addressManager | address | 151 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[49] | 152 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __reentry | uint8 | 201 | 0 | 1 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __paused | uint8 | 201 | 1 | 1 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[49] | 202 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[50] | 251 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |
| __gap | uint256[50] | 301 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetTeeAnyVerifier.sol:MainnetTeeAnyVerifier |

## MainnetZkAnyVerifier
| Name | Type | Slot | Offset | Bytes | Contract |
|----------------|-------------|------|--------|-------|----------------------------------------------------------------------------------|
| _initialized | uint8 | 0 | 0 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| _initializing | bool | 0 | 1 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[50] | 1 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| _owner | address | 51 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[49] | 52 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| _pendingOwner | address | 101 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[49] | 102 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| addressManager | address | 151 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[49] | 152 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __reentry | uint8 | 201 | 0 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __paused | uint8 | 201 | 1 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[49] | 202 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[50] | 251 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |
| __gap | uint256[50] | 301 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetZkAnyVerifier.sol:MainnetZkAnyVerifier |

## MainnetZkAndTeeVerifier
| Name | Type | Slot | Offset | Bytes | Contract |
|----------------|-------------|------|--------|-------|----------------------------------------------------------------------------------------|
| _initialized | uint8 | 0 | 0 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| _initializing | bool | 0 | 1 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[50] | 1 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| _owner | address | 51 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[49] | 52 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| _pendingOwner | address | 101 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[49] | 102 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| addressManager | address | 151 | 0 | 20 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[49] | 152 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __reentry | uint8 | 201 | 0 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __paused | uint8 | 201 | 1 | 1 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[49] | 202 | 0 | 1568 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[50] | 251 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |
| __gap | uint256[50] | 301 | 0 | 1600 | contracts/mainnet/rollup/verifiers/MainnetZkAndTeeVerifier.sol:MainnetZkAndTeeVerifier |

## MainnetSharedAddressManager
| Name | Type | Slot | Offset | Bytes | Contract |
|----------------|-------------------------------------------------|------|--------|-------|--------------------------------------------------------------------------------------|
Expand Down
13 changes: 10 additions & 3 deletions packages/protocol/contracts/L1/ITaikoL1.sol
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,18 @@ interface ITaikoL1 {
/// TaikoData.TierProof) tuple.
function proveBlock(uint64 _blockId, bytes calldata _input) external;

/// @notice Proves or contests multiple block transitions.
/// @notice Proves or contests multiple block transitions (version 2)
/// @param _blockIds The indices of the blocks to prove.
/// @param _inputArr An list of abi-encoded (TaikoData.BlockMetadata, TaikoData.Transition,
/// @param _inputs An list of abi-encoded (TaikoData.BlockMetadata, TaikoData.Transition,
/// TaikoData.TierProof) tuples.
function proveBlocks(uint64[] calldata _blockIds, bytes[] calldata _inputArr) external;
/// @param _batchProof An abi-encoded TaikoData.TierProof that contains the batch/aggregated
/// proof for the given blocks.
function proveBlocks(
uint64[] calldata _blockIds,
bytes[] calldata _inputs,
bytes calldata _batchProof
)
external;

/// @notice Verifies up to a certain number of blocks.
/// @param _maxBlocksToVerify Max number of blocks to verify.
Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/contracts/L1/TaikoData.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pragma solidity 0.8.24;
/// protocol.
/// @custom:security-contact [email protected]
library TaikoData {
/// @dev Struct that represneds L2 basefee configurations
/// @dev Struct that represents L2 basefee configurations
struct BaseFeeConfig {
uint8 adjustmentQuotient;
uint8 sharingPctg;
Expand Down
71 changes: 13 additions & 58 deletions packages/protocol/contracts/L1/TaikoL1.sol
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,9 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
returns (TaikoData.BlockMetadata memory meta_, TaikoData.EthDeposit[] memory deposits_)
{
TaikoData.Config memory config = getConfig();

(meta_,, deposits_) = LibProposing.proposeBlock(state, config, this, _params, _txList);
(meta_,) = LibProposing.proposeBlock(state, config, this, _params, _txList);
if (meta_.id >= config.ontakeForkHeight) revert L1_FORK_ERROR();

if (LibUtils.shouldVerifyBlocks(config, meta_.id, true) && !state.slotB.provingPaused) {
LibVerifying.verifyBlocks(state, config, this, config.maxBlocksToVerify);
}
deposits_ = new TaikoData.EthDeposit[](0);
}

function proposeBlockV2(
Expand All @@ -96,9 +92,11 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
whenNotPaused
nonReentrant
emitEventForClient
returns (TaikoData.BlockMetadataV2 memory)
returns (TaikoData.BlockMetadataV2 memory meta_)
{
return _proposeBlock(_params, _txList, getConfig());
TaikoData.Config memory config = getConfig();
(, meta_) = LibProposing.proposeBlock(state, config, this, _params, _txList);
if (meta_.id < config.ontakeForkHeight) revert L1_FORK_ERROR();
}

/// @inheritdoc ITaikoL1
Expand All @@ -113,15 +111,10 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
emitEventForClient
returns (TaikoData.BlockMetadataV2[] memory metaArr_)
{
if (_paramsArr.length == 0 || _paramsArr.length != _txListArr.length) {
revert L1_INVALID_PARAMS();
}

metaArr_ = new TaikoData.BlockMetadataV2[](_paramsArr.length);
TaikoData.Config memory config = getConfig();

for (uint256 i; i < _paramsArr.length; ++i) {
metaArr_[i] = _proposeBlock(_paramsArr[i], _txListArr[i], config);
(, metaArr_) = LibProposing.proposeBlocks(state, config, this, _paramsArr, _txListArr);
for (uint256 i; i < metaArr_.length; ++i) {
if (metaArr_[i].id < config.ontakeForkHeight) revert L1_FORK_ERROR();
}
}

Expand All @@ -136,30 +129,22 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
nonReentrant
emitEventForClient
{
TaikoData.Config memory config = getConfig();
_proveBlock(_blockId, _input, config);
LibProving.proveBlock(state, getConfig(), this, _blockId, _input);
}

/// @inheritdoc ITaikoL1
function proveBlocks(
uint64[] calldata _blockIds,
bytes[] calldata _inputArr
bytes[] calldata _inputs,
bytes calldata _batchProof
)
external
whenNotPaused
whenProvingNotPaused
nonReentrant
emitEventForClient
{
if (_blockIds.length == 0 || _blockIds.length != _inputArr.length) {
revert L1_INVALID_PARAMS();
}

TaikoData.Config memory config = getConfig();

for (uint256 i; i < _blockIds.length; ++i) {
_proveBlock(_blockIds[i], _inputArr[i], config);
}
LibProving.proveBlocks(state, getConfig(), this, _blockIds, _inputs, _batchProof);
}

/// @inheritdoc ITaikoL1
Expand Down Expand Up @@ -315,36 +300,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
});
}

function _proposeBlock(
bytes calldata _params,
bytes calldata _txList,
TaikoData.Config memory _config
)
internal
returns (TaikoData.BlockMetadataV2 memory meta_)
{
(, meta_,) = LibProposing.proposeBlock(state, _config, this, _params, _txList);
if (meta_.id < _config.ontakeForkHeight) revert L1_FORK_ERROR();

if (LibUtils.shouldVerifyBlocks(_config, meta_.id, true) && !state.slotB.provingPaused) {
LibVerifying.verifyBlocks(state, _config, this, _config.maxBlocksToVerify);
}
}

function _proveBlock(
uint64 _blockId,
bytes calldata _input,
TaikoData.Config memory _config
)
internal
{
LibProving.proveBlock(state, _config, this, _blockId, _input);

if (LibUtils.shouldVerifyBlocks(_config, _blockId, false)) {
LibVerifying.verifyBlocks(state, _config, this, _config.maxBlocksToVerify);
}
}

/// @dev chain_pauser is supposed to be a cold wallet.
function _authorizePause(
address,
Expand Down
19 changes: 19 additions & 0 deletions packages/protocol/contracts/L1/libs/LibData.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
pragma solidity 0.8.24;

import "../TaikoData.sol";
import "../../verifiers/IVerifier.sol";

/// @title LibData
/// @notice A library that offers helper functions.
Expand Down Expand Up @@ -103,4 +104,22 @@ library LibData {
verifiedTransitionId: _v2.verifiedTransitionId
});
}

function verifierContextV2toV1(
IVerifier.ContextV2 memory _v2
)
internal
pure
returns (IVerifier.Context memory)
{
return IVerifier.Context({
metaHash: _v2.metaHash,
blobHash: _v2.blobHash,
prover: _v2.prover,
blockId: _v2.blockId,
isContesting: _v2.isContesting,
blobUsed: _v2.blobUsed,
msgSender: _v2.msgSender
});
}
}
Loading
Loading