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
417e5dd9
Unverified
Commit
417e5dd9
authored
Feb 14, 2023
by
mergify[bot]
Committed by
GitHub
Feb 14, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into sc/opn-expose-gasused
parents
90473ad6
c1153b27
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
77 additions
and
23 deletions
+77
-23
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
+8
-2
L2OutputOracle.t.sol
...ges/contracts-bedrock/contracts/test/L2OutputOracle.t.sol
+34
-0
012-L2OutputOracleImpl.ts
packages/contracts-bedrock/deploy/012-L2OutputOracleImpl.ts
+13
-0
package.json
packages/contracts-bedrock/package.json
+1
-1
No files found.
op-bindings/bindings/l2outputoracle.go
View file @
417e5dd9
This diff is collapsed.
Click to expand it.
packages/contracts-bedrock/.gas-snapshot
View file @
417e5dd9
...
@@ -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 @
417e5dd9
...
@@ -73,7 +73,7 @@ contract L2OutputOracle is Initializable, Semver {
...
@@ -73,7 +73,7 @@ contract L2OutputOracle is Initializable, Semver {
event OutputsDeleted(uint256 indexed prevNextOutputIndex, uint256 indexed newNextOutputIndex);
event OutputsDeleted(uint256 indexed prevNextOutputIndex, uint256 indexed newNextOutputIndex);
/**
/**
* @custom:semver 1.
0
.0
* @custom:semver 1.
1
.0
*
*
* @param _submissionInterval Interval in blocks at which checkpoints must be submitted.
* @param _submissionInterval Interval in blocks at which checkpoints must be submitted.
* @param _l2BlockTime The time per L2 block, in seconds.
* @param _l2BlockTime The time per L2 block, in seconds.
...
@@ -89,7 +89,13 @@ contract L2OutputOracle is Initializable, Semver {
...
@@ -89,7 +89,13 @@ contract L2OutputOracle is Initializable, Semver {
uint256 _startingTimestamp,
uint256 _startingTimestamp,
address _proposer,
address _proposer,
address _challenger
address _challenger
) Semver(1, 0, 0) {
) Semver(1, 1, 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 @
417e5dd9
...
@@ -44,6 +44,40 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
...
@@ -44,6 +44,40 @@ 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/deploy/012-L2OutputOracleImpl.ts
View file @
417e5dd9
...
@@ -5,6 +5,19 @@ import '@nomiclabs/hardhat-ethers'
...
@@ -5,6 +5,19 @@ import '@nomiclabs/hardhat-ethers'
import
{
assertContractVariable
,
deploy
}
from
'
../src/deploy-utils
'
import
{
assertContractVariable
,
deploy
}
from
'
../src/deploy-utils
'
const
deployFn
:
DeployFunction
=
async
(
hre
)
=>
{
const
deployFn
:
DeployFunction
=
async
(
hre
)
=>
{
if
(
hre
.
deployConfig
.
l2BlockTime
===
0
)
{
throw
new
Error
(
'
L2OutputOracle deployment: l2BlockTime must be greater than 0
'
)
}
else
if
(
hre
.
deployConfig
.
l2OutputOracleSubmissionInterval
<=
hre
.
deployConfig
.
l2BlockTime
)
{
throw
new
Error
(
'
L2OutputOracle deployment: submissionInterval must be greater than the l2BlockTime
'
)
}
await
deploy
({
await
deploy
({
hre
,
hre
,
name
:
'
L2OutputOracle
'
,
name
:
'
L2OutputOracle
'
,
...
...
packages/contracts-bedrock/package.json
View file @
417e5dd9
...
@@ -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