Skip to content

Commit a8d8ca2

Browse files
committed
Update TaikoWrapper.sol
1 parent 2f4a20e commit a8d8ca2

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

Diff for: packages/protocol/contracts/layer1/forced-inclusion/TaikoWrapper.sol

+35-25
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,15 @@ contract TaikoWrapper is EssentialContract, IProposeBatch {
3737
/// @dev Event emitted when a forced inclusion is processed.
3838
event ForcedInclusionProcessed(IForcedInclusionStore.ForcedInclusion);
3939

40-
/// @dev Error thrown when the forced inclusion params are invalid.
41-
error InvalidForcedInclusionParams();
42-
/// @dev Error thrown when the oldest forced inclusion is due.
40+
error NoBlocks();
41+
error InvalidBlockTxs();
42+
error InvalidBlobHashesSize();
43+
error InvalidBlobHash();
44+
error InvalidBlobByteOffset();
45+
error InvalidBlobByteSize();
4346
error OldestForcedInclusionDue();
4447

45-
uint16 public constant MIN_FORCED_TXS_PER_FORCED_INCLUSION = 512;
48+
uint16 public constant MIN_TXS_PER_FORCED_INCLUSION = 512;
4649

4750
uint256[50] private __gap;
4851

@@ -70,30 +73,37 @@ contract TaikoWrapper is EssentialContract, IProposeBatch {
7073
if (bytesX.length == 0) {
7174
require(!store.isOldestForcedInclusionDue(), OldestForcedInclusionDue());
7275
} else {
73-
IForcedInclusionStore.ForcedInclusion memory inclusion =
74-
store.consumeOldestForcedInclusion(msg.sender);
75-
76-
ITaikoInbox.BatchParams memory params = abi.decode(bytesX, (ITaikoInbox.BatchParams));
77-
78-
uint256 numBlocks = params.blocks.length;
79-
require(numBlocks != 0, InvalidForcedInclusionParams());
80-
for (uint256 i; i < numBlocks; ++i) {
81-
require(
82-
params.blocks[i].numTransactions >= MIN_FORCED_TXS_PER_FORCED_INCLUSION,
83-
InvalidForcedInclusionParams()
84-
);
85-
}
86-
87-
params.blobParams.blobHashes = new bytes32[](1);
88-
params.blobParams.blobHashes[0] = inclusion.blobHash;
89-
params.blobParams.byteOffset = inclusion.blobByteOffset;
90-
params.blobParams.byteSize = inclusion.blobByteSize;
91-
92-
inbox.proposeBatch(abi.encode(params), "");
93-
emit ForcedInclusionProcessed(inclusion);
76+
_validateForcedInclusionParams(store, bytesX);
77+
inbox.proposeBatch(bytesX, "");
9478
}
9579

9680
// Propose the normal batch after the potential forced inclusion batch.
9781
return inbox.proposeBatch(bytesY, _txList);
9882
}
83+
84+
function _validateForcedInclusionParams(
85+
IForcedInclusionStore _store,
86+
bytes memory _bytesX
87+
)
88+
internal
89+
{
90+
IForcedInclusionStore.ForcedInclusion memory inclusion =
91+
_store.consumeOldestForcedInclusion(msg.sender);
92+
93+
ITaikoInbox.BatchParams memory p = abi.decode(_bytesX, (ITaikoInbox.BatchParams));
94+
95+
uint256 numBlocks = p.blocks.length;
96+
require(numBlocks != 0, NoBlocks());
97+
98+
for (uint256 i; i < numBlocks; ++i) {
99+
require(p.blocks[i].numTransactions >= MIN_TXS_PER_FORCED_INCLUSION, InvalidBlockTxs());
100+
}
101+
102+
require(p.blobParams.blobHashes.length == 1, InvalidBlobHashesSize());
103+
require(p.blobParams.blobHashes[0] == inclusion.blobHash, InvalidBlobHash());
104+
require(p.blobParams.byteOffset == inclusion.blobByteOffset, InvalidBlobByteOffset());
105+
require(p.blobParams.byteSize == inclusion.blobByteSize, InvalidBlobByteSize());
106+
107+
emit ForcedInclusionProcessed(inclusion);
108+
}
99109
}

0 commit comments

Comments
 (0)