Skip to content

Commit 97e9a61

Browse files
authored
Merge upstream 1.14.0 (#51)
**Description** merges upstream op-batcher/v.1.14.0 release tag. Includes various fixes primarily for DA batcher tests and kurtosis-devnet. **Tests** No new tests added (on our end). `fakeSyncStatus` used for batcher tests has been updated (in merge commit) **Additional context** New commits that may be of interest: [fix(kt-devnet): Update config, endpoints and justfile](5a6533d) Kurtosis was upgraded from 1.6.0 to 1.8.1. This version has a bug where the `--` used by `eigenda-devnet-add-tx-fuzzer` and `eigenda-devnet-restart-batcher` no longer works as intended; * `eigenda-devnet-add-tx-fuzzer` has been updated with a `--cmd` workaround. * `eigenda-devnet-restart-batcher` has been updated to utilize `kurtosis service update` The `github.com/ethpandaops/optimism-package` was updated. As a result, `kurtosis-devnet/eigenda.yaml` has been updated to the new format. Multiple container names have also changed. **Metadata** Ref: https://linear.app/eigenlabs/issue/DAINT-630/rebase-on-top-of-batcherv1140
2 parents 34e5ce8 + 5a6533d commit 97e9a61

File tree

2,001 files changed

+129333
-115568
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,001 files changed

+129333
-115568
lines changed

.cursor/rules/solidity-styles.mdc

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
description:
3+
globs: *.sol
4+
alwaysApply: false
5+
---
6+
# Optimism Solidity Style Guide
7+
8+
Applies to Solidity files.
9+
10+
## Comments
11+
- Use triple-slash solidity natspec comment style
12+
- Always use `@notice` instead of `@dev`
13+
- Use a line-length of 100 characters
14+
- Custom tags:
15+
- `@custom:proxied`: Add to a contract whenever it's meant to live behind a proxy
16+
- `@custom:upgradeable`: Add to a contract whenever it's meant to be inherited by an upgradeable contract
17+
- `@custom:semver`: Add to `version` variable which indicate the contracts semver
18+
- `@custom:legacy`: Add to an event or function when it only exists for legacy support
19+
- `@custom:network-specific`: Add to state variables which vary between OP Chains
20+
21+
## Errors
22+
- When adding new errors, always use custom Solidity errors
23+
- Custom errors should take the format `ContractName_ErrorDescription`
24+
25+
## Naming Conventions
26+
- Function parameters should be prefixed with an underscore
27+
- Function return arguments should be suffixed with an underscore
28+
- Event parameters should NOT be prefixed with an underscore
29+
- Immutable variables:
30+
- Should be in `SCREAMING_SNAKE_CASE`
31+
- Should be `internal`
32+
- Should have a hand-written getter function
33+
- Spacers must be named `spacer_<slot>_<offset>_<length>` and be `private`
34+
35+
## Upgradeability
36+
- Contracts should be built assuming upgradeability by default
37+
- Extend OpenZeppelin's `Initializable` or base contract
38+
- Use the `ReinitializableBase` contract
39+
- Include an `initialize` function with the `reinitializer(initValue())` modifier
40+
- If including an `upgrade` function, use the `reinitializer(initValue())` modifier
41+
- In the constructor:
42+
- Call `_disableInitializers()`
43+
- Set any immutables (though generally avoid immutables)
44+
45+
## Versioning
46+
- All non-library/non-abstract contracts must inherit `ISemver` and expose `version()`
47+
- Production-ready contracts must have version `1.0.0` or greater
48+
- Version increments:
49+
- `patch`: changes that don't modify bytecode (comments)
50+
- `minor`: changes that modify bytecode OR expand ABI without breaking existing interface
51+
- `major`: changes that break existing interface OR modify security model
52+
53+
## Dependencies
54+
- Prefer OpenZeppelin's Upgradeable contracts for basic functionality
55+
56+
## State Changes
57+
- All state changing functions should emit a corresponding event
58+
59+
## Testing
60+
- Tests should be written using Foundry
61+
- For testing reverts with low-level calls, use the `revertsAsExpected` pattern
62+
- Test function naming: `[method]_[functionName]_[reason]_[status]`
63+
- `method`: `test`, `testFuzz`, or `testDiff`
64+
- `status`: `succeeds`, `reverts`, `works`, `fails`, or `benchmark`
65+
- Test contract naming:
66+
- `TargetContract_Init`: for basic setup contracts
67+
- `TargetContract_FunctionName_Test`: for happy path tests
68+
- `TargetContract_FunctionName_TestFail`: for sad path tests
69+
- `TargetContract_Harness`: for harness contracts

.github/CODEOWNERS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
/op-proposer @ethereum-optimism/op-stack @ethereum-optimism/go-reviewers
1111
/op-wheel @ethereum-optimism/op-stack @ethereum-optimism/go-reviewers
1212
/ops-bedrock @ethereum-optimism/op-stack @ethereum-optimism/go-reviewers
13+
/op-devstack @ethereum-optimism/op-stack @ethereum-optimism/go-reviewers
1314

1415
# Expert areas
1516
/op-node/rollup @ethereum-optimism/consensus @ethereum-optimism/go-reviewers
@@ -33,7 +34,7 @@
3334
/docker-bake.hcl @ethereum-optimism/monorepo-ops-reviewers
3435

3536
# Contracts
36-
/packages/contracts-bedrock @ethereum-optimism/contract-reviewers
37+
/packages/contracts-bedrock @ethereum-optimism/contract-reviewers #[min:2]
3738

3839
# Security docs
3940
/docs @ethereum-optimism/evm-safety

.semgrep/rules/sol-rules.yaml

Lines changed: 88 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ rules:
4545
- pattern: vm.expectRevert()
4646
paths:
4747
exclude:
48-
- packages/contracts-bedrock/test/dispute/WETH98.t.sol
48+
- packages/contracts-bedrock/test/universal/WETH98.t.sol
4949

5050
- id: sol-safety-natspec-semver-match
5151
languages: [generic]
@@ -123,7 +123,7 @@ rules:
123123
- packages/contracts-bedrock/interfaces
124124
- packages/contracts-bedrock/scripts/libraries/Solarray.sol
125125
- packages/contracts-bedrock/src/universal/WETH98.sol
126-
- packages/contracts-bedrock/src/L2/SuperchainWETH.sol
126+
- packages/contracts-bedrock/src/L2/SuperchainETHBridge.sol
127127
- packages/contracts-bedrock/src/governance/GovernanceToken.sol
128128

129129
- id: sol-style-return-arg-fmt
@@ -165,10 +165,6 @@ rules:
165165
exclude:
166166
- packages/contracts-bedrock/src/libraries/Bytes.sol
167167
- packages/contracts-bedrock/src/legacy/LegacyMintableERC20.sol
168-
- packages/contracts-bedrock/src/cannon/MIPS.sol
169-
- packages/contracts-bedrock/src/cannon/MIPS2.sol
170-
- packages/contracts-bedrock/src/cannon/libraries/MIPSMemory.sol
171-
- packages/contracts-bedrock/src/cannon/libraries/MIPSInstructions.sol
172168

173169
- id: sol-style-malformed-revert
174170
languages: [solidity]
@@ -182,9 +178,6 @@ rules:
182178
- pattern-not-regex: string\.concat\(\"(\w+:\s[^"]*)\"\,.+\)
183179
- pattern-not-regex: \"([a-zA-Z0-9\s]+-[a-zA-Z0-9\s]+)\"
184180
- pattern-not-regex: \"([a-zA-Z0-9\s]+-[a-zA-Z0-9\s]+-[a-zA-Z0-9\s]+)\"
185-
paths:
186-
exclude:
187-
- packages/contracts-bedrock/src/cannon/libraries/MIPSInstructions.sol
188181

189182
- id: sol-style-use-abi-encodecall
190183
languages: [solidity]
@@ -222,6 +215,36 @@ rules:
222215
exclude:
223216
- packages/contracts-bedrock/test
224217

218+
- id: sol-style-error-format
219+
languages: [generic]
220+
severity: ERROR
221+
message: Error formatting is incorrect - must follow pattern ContractName_ErrorName with exactly one underscore
222+
pattern-either:
223+
- pattern-regex: contract\s+(\w+)\s*\{[^}]*error\s+(?!(\1_[^_]\w*))\w+[^;]*;
224+
- pattern-regex: \berror\s+(?!([A-Z][a-zA-Z0-9]*_[^_][a-zA-Z0-9]*))[a-zA-Z0-9]+\s*\([^)]*\)\s*;
225+
paths:
226+
include:
227+
- packages/contracts-bedrock/src
228+
exclude:
229+
- packages/contracts-bedrock/src/safe/LivenessModule.sol
230+
- packages/contracts-bedrock/src/libraries/rlp/RLPErrors.sol
231+
- packages/contracts-bedrock/src/libraries/errors/CommonErrors.sol
232+
- packages/contracts-bedrock/src/libraries/TransientContext.sol
233+
- packages/contracts-bedrock/src/libraries/L1BlockErrors.sol
234+
- packages/contracts-bedrock/src/libraries/Blueprint.sol
235+
- packages/contracts-bedrock/src/dispute/lib/Errors.sol
236+
- packages/contracts-bedrock/src/dispute/SuperFaultDisputeGame.sol
237+
- packages/contracts-bedrock/src/cannon/libraries/MIPS64Instructions.sol
238+
- packages/contracts-bedrock/src/cannon/libraries/CannonErrors.sol
239+
- packages/contracts-bedrock/src/L2/SuperchainETHBridge.sol
240+
- packages/contracts-bedrock/src/L2/SuperchainTokenBridge.sol
241+
- packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol
242+
- packages/contracts-bedrock/src/L2/L2StandardBridgeInterop.sol
243+
- packages/contracts-bedrock/src/L2/CrossL2Inbox.sol
244+
- packages/contracts-bedrock/src/L1/ResourceMetering.sol
245+
- packages/contracts-bedrock/src/L1/OPContractsManager.sol
246+
- packages/contracts-bedrock/src/L1/DataAvailabilityChallenge.sol
247+
225248
- id: sol-safety-use-disable-initializer
226249
languages: [solidity]
227250
severity: ERROR
@@ -284,3 +307,59 @@ rules:
284307
function upgrade(...) external reinitializer(...) {
285308
...
286309
}
310+
311+
- id: sol-safety-no-immutable-variables
312+
languages: [solidity]
313+
severity: ERROR
314+
message: Immutable variables are not allowed in this codebase
315+
pattern-regex: |
316+
(?:\bimmutable\b\s+\w+\s+\w+|\b\w+\s+\bimmutable\b\s+\w+)(?:\s*=\s*[^;]+)?\s*;
317+
paths:
318+
include:
319+
- packages/contracts-bedrock/src
320+
exclude:
321+
- packages/contracts-bedrock/src/L1/OPContractsManager.sol
322+
- packages/contracts-bedrock/src/L1/OptimismPortal2.sol
323+
- packages/contracts-bedrock/src/L2/FeeVault.sol
324+
- packages/contracts-bedrock/src/L2/OptimismMintableERC721.sol
325+
- packages/contracts-bedrock/src/L2/OptimismMintableERC721Factory.sol
326+
- packages/contracts-bedrock/src/cannon/MIPS64.sol
327+
- packages/contracts-bedrock/src/cannon/PreimageOracle.sol
328+
- packages/contracts-bedrock/src/dispute/AnchorStateRegistry.sol
329+
- packages/contracts-bedrock/src/dispute/DelayedWETH.sol
330+
- packages/contracts-bedrock/src/dispute/FaultDisputeGame.sol
331+
- packages/contracts-bedrock/src/dispute/PermissionedDisputeGame.sol
332+
- packages/contracts-bedrock/src/dispute/SuperFaultDisputeGame.sol
333+
- packages/contracts-bedrock/src/dispute/SuperPermissionedDisputeGame.sol
334+
- packages/contracts-bedrock/src/governance/MintManager.sol
335+
- packages/contracts-bedrock/src/periphery/TransferOnion.sol
336+
- packages/contracts-bedrock/src/periphery/faucet/Faucet.sol
337+
- packages/contracts-bedrock/src/periphery/faucet/authmodules/AdminFaucetAuthModule.sol
338+
- packages/contracts-bedrock/src/safe/DeputyGuardianModule.sol
339+
- packages/contracts-bedrock/src/safe/DeputyPauseModule.sol
340+
- packages/contracts-bedrock/src/safe/LivenessGuard.sol
341+
- packages/contracts-bedrock/src/safe/LivenessModule.sol
342+
- packages/contracts-bedrock/src/universal/OptimismMintableERC20.sol
343+
- packages/contracts-bedrock/src/universal/ReinitializableBase.sol
344+
345+
- id: sol-style-use-process-run
346+
languages: [solidity]
347+
severity: ERROR
348+
message: Use Process.run instead of vm.ffi or vm.tryFfi
349+
pattern-either:
350+
- pattern: |
351+
vm.ffi(...);
352+
- pattern: |
353+
vm.tryFfi(...);
354+
paths:
355+
exclude:
356+
- packages/contracts-bedrock/scripts/libraries/Process.sol
357+
358+
- id: sol-style-vm-env-only-in-config-sol
359+
languages: [solidity]
360+
severity: ERROR
361+
message: vm.env* should only be used in Config.sol
362+
pattern-regex: vm.env
363+
paths:
364+
exclude:
365+
- packages/contracts-bedrock/scripts/libraries/Config.sol
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
contract SemgrepTest__sol_safety_no_immutable_variables {
2+
// ok: sol-safety-no-immutable-variables
3+
uint256 public normalVar;
4+
5+
// ok: sol-safety-no-immutable-variables
6+
address public normalAddress;
7+
8+
// ok: sol-safety-no-immutable-variables
9+
string public normalString;
10+
11+
// ok: sol-safety-no-immutable-variables
12+
bool public normalBool;
13+
14+
// ruleid: sol-safety-no-immutable-variables
15+
uint256 immutable invalidImmutable1;
16+
17+
// ruleid: sol-safety-no-immutable-variables
18+
bytes32 immutable invalidImmutable3 = "test";
19+
20+
// ok: sol-safety-no-immutable-variables
21+
uint256 constant constantVar = 1;
22+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// ruleid: sol-style-error-format
2+
contract SemgrepTest__sol_style_error_format__bad1 {
3+
// ruleid: sol-style-error-format
4+
error BadError();
5+
}
6+
7+
// ruleid: sol-style-error-format
8+
contract SemgrepTest__sol_style_error_format__bad2 {
9+
error SemgrepTest__sol_style_error_format__bad2___BadError();
10+
}
11+
12+
// ok: sol-style-error-format
13+
contract SemgrepTest__sol_style_error_format__good {
14+
error SemgrepTest__sol_style_error_format__good_GoodError();
15+
}

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
{
22
"editorconfig.generateAuto": false,
3-
"files.trimTrailingWhitespace": true
3+
"files.trimTrailingWhitespace": true,
4+
"openInGitHub.defaultBranch": "develop",
5+
"openInGitHub.alwaysUseDefaultBranch": false,
6+
"openInGitHub.excludeCurrentRevision": true
47
}

0 commit comments

Comments
 (0)