Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
43591702
Commit
43591702
authored
Feb 14, 2023
by
clabby
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add creation time check for `SUBMISSION_INTERVAL` > `L2_BLOCK_TIME` in the `L2OutputOracle`
parent
eac9b3ae
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
21 deletions
+56
-21
l2outputoracle.go
op-bindings/bindings/l2outputoracle.go
+1
-1
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+20
-19
L2OutputOracle.sol
packages/contracts-bedrock/contracts/L1/L2OutputOracle.sol
+3
-0
L2OutputOracle.t.sol
...ges/contracts-bedrock/contracts/test/L2OutputOracle.t.sol
+31
-0
package.json
packages/contracts-bedrock/package.json
+1
-1
No files found.
op-bindings/bindings/l2outputoracle.go
View file @
43591702
This diff is collapsed.
Click to expand it.
packages/contracts-bedrock/.gas-snapshot
View file @
43591702
...
@@ -139,29 +139,30 @@ L2ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (
...
@@ -139,29 +139,30 @@ L2ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (
L2ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16148)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16148)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17637)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17637)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 168905)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 168905)
L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37184)
L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37206)
L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70717)
L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70767)
L2OutputOracleTest:test_constructor_succeeds() (gas: 33760)
L2OutputOracleTest:test_constructor_l2BlockTimeZero_reverts() (gas: 45786)
L2OutputOracleTest:test_deleteL2Outputs_afterLatest_reverts() (gas: 211900)
L2OutputOracleTest:test_constructor_succeeds() (gas: 33695)
L2OutputOracleTest:test_deleteL2Outputs_afterLatest_reverts() (gas: 211855)
L2OutputOracleTest:test_deleteL2Outputs_ifNotChallenger_reverts() (gas: 18883)
L2OutputOracleTest:test_deleteL2Outputs_ifNotChallenger_reverts() (gas: 18883)
L2OutputOracleTest:test_deleteL2Outputs_nonExistent_reverts() (gas: 107292)
L2OutputOracleTest:test_deleteL2Outputs_nonExistent_reverts() (gas: 107292)
L2OutputOracleTest:test_deleteOutputs_multipleOutputs_succeeds() (gas: 3021
21
)
L2OutputOracleTest:test_deleteOutputs_multipleOutputs_succeeds() (gas: 3021
43
)
L2OutputOracleTest:test_deleteOutputs_singleOutput_succeeds() (gas: 180
656
)
L2OutputOracleTest:test_deleteOutputs_singleOutput_succeeds() (gas: 180
700
)
L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 267
182
)
L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 267
226
)
L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExis_reverts() (gas: 179
14
)
L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExis_reverts() (gas: 179
36
)
L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 960
86
)
L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 960
42
)
L2OutputOracleTest:test_getL2OutputIndexAfter_sameBlock_succeeds() (gas: 9
5994
)
L2OutputOracleTest:test_getL2OutputIndexAfter_sameBlock_succeeds() (gas: 9
6016
)
L2OutputOracleTest:test_getL2Output_succeeds() (gas: 101
699
)
L2OutputOracleTest:test_getL2Output_succeeds() (gas: 101
721
)
L2OutputOracleTest:test_latestBlockNumber_succeeds() (gas: 969
83
)
L2OutputOracleTest:test_latestBlockNumber_succeeds() (gas: 969
60
)
L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 174
68
)
L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 174
90
)
L2OutputOracleTest:test_proposeL2Output_emptyOutput_reverts() (gas: 26
688
)
L2OutputOracleTest:test_proposeL2Output_emptyOutput_reverts() (gas: 26
710
)
L2OutputOracleTest:test_proposeL2Output_futureTimetamp_reverts() (gas: 286
46
)
L2OutputOracleTest:test_proposeL2Output_futureTimetamp_reverts() (gas: 286
90
)
L2OutputOracleTest:test_proposeL2Output_notProposer_reverts() (gas: 25
782
)
L2OutputOracleTest:test_proposeL2Output_notProposer_reverts() (gas: 25
826
)
L2OutputOracleTest:test_proposeL2Output_proposeAnotherOutput_succeeds() (gas: 1010
27
)
L2OutputOracleTest:test_proposeL2Output_proposeAnotherOutput_succeeds() (gas: 1010
49
)
L2OutputOracleTest:test_proposeL2Output_unexpectedBlockNumber_reverts() (gas: 28402)
L2OutputOracleTest:test_proposeL2Output_unexpectedBlockNumber_reverts() (gas: 28402)
L2OutputOracleTest:test_proposeL2Output_unmatchedBlockhash_reverts() (gas: 294
46
)
L2OutputOracleTest:test_proposeL2Output_unmatchedBlockhash_reverts() (gas: 294
02
)
L2OutputOracleTest:test_proposeL2Output_wrongFork_reverts() (gas: 29005)
L2OutputOracleTest:test_proposeL2Output_wrongFork_reverts() (gas: 29005)
L2OutputOracleTest:test_proposeWithBlockhashAndHeight_succeeds() (gas: 95
296
)
L2OutputOracleTest:test_proposeWithBlockhashAndHeight_succeeds() (gas: 95
318
)
L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 26093)
L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 26093)
L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15149)
L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15149)
L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20131)
L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20131)
...
...
packages/contracts-bedrock/contracts/L1/L2OutputOracle.sol
View file @
43591702
...
@@ -90,6 +90,9 @@ contract L2OutputOracle is Initializable, Semver {
...
@@ -90,6 +90,9 @@ contract L2OutputOracle is Initializable, Semver {
address _proposer,
address _proposer,
address _challenger
address _challenger
) Semver(1, 0, 0) {
) Semver(1, 0, 0) {
require(_l2BlockTime > 0, "L2OutputOracle: L2 block time must be greater than 0");
require(_submissionInterval > _l2BlockTime, "L2OutputOracle: submission interval must be greater than L2 block time");
SUBMISSION_INTERVAL = _submissionInterval;
SUBMISSION_INTERVAL = _submissionInterval;
L2_BLOCK_TIME = _l2BlockTime;
L2_BLOCK_TIME = _l2BlockTime;
PROPOSER = _proposer;
PROPOSER = _proposer;
...
...
packages/contracts-bedrock/contracts/test/L2OutputOracle.t.sol
View file @
43591702
...
@@ -44,6 +44,37 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
...
@@ -44,6 +44,37 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
);
);
}
}
function test_constructor_l2BlockTimeZero_reverts() external {
vm.expectRevert("L2OutputOracle: L2 block time must be greater than 0");
new L2OutputOracle(
submissionInterval,
0,
startingBlockNumber,
block.timestamp,
proposer,
owner
);
}
function testFuzz_constructor_submissionIntervalLteL2BlockTime_reverts(uint256 _submissionInterval, uint256 _l2BlockTime) external {
// Bound the _l2blockTime to be in the range of [1, type(uint256).max]
_l2BlockTime = bound(_l2BlockTime, 1, type(uint256).max);
// Roll the block number to _l2blockTime (the starting L2 timestamp must be less than or equal to the current time)
vm.roll(_l2BlockTime);
// Bound _submissionInterval to be less than or equal to _l2BlockTime
_submissionInterval = bound(_submissionInterval, 0, _l2BlockTime);
vm.expectRevert("L2OutputOracle: submission interval must be greater than L2 block time");
new L2OutputOracle(
_submissionInterval,
_l2BlockTime,
startingBlockNumber,
block.timestamp,
proposer,
owner
);
}
/****************
/****************
* Getter Tests *
* Getter Tests *
****************/
****************/
...
...
packages/contracts-bedrock/package.json
View file @
43591702
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
"build:forge"
:
"forge build"
,
"build:forge"
:
"forge build"
,
"build:with-metadata"
:
"FOUNDRY_PROFILE=echidna yarn build:forge"
,
"build:with-metadata"
:
"FOUNDRY_PROFILE=echidna yarn build:forge"
,
"build:differential"
:
"tsc scripts/differential-testing.ts --outDir dist --moduleResolution node --esModuleInterop"
,
"build:differential"
:
"tsc scripts/differential-testing.ts --outDir dist --moduleResolution node --esModuleInterop"
,
"build:fuzz"
:
"
go build -o test-case-generator test-case-generator/cmd/fuzz.go
"
,
"build:fuzz"
:
"
(cd test-case-generator && go build ./cmd/fuzz.go)
"
,
"prebuild"
:
"yarn ts-node scripts/verify-foundry-install.ts"
,
"prebuild"
:
"yarn ts-node scripts/verify-foundry-install.ts"
,
"build"
:
"hardhat compile && yarn autogen:artifacts && yarn build:ts && yarn typechain"
,
"build"
:
"hardhat compile && yarn autogen:artifacts && yarn build:ts && yarn typechain"
,
"build:ts"
:
"tsc -p tsconfig.build.json"
,
"build:ts"
:
"tsc -p tsconfig.build.json"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment