forked from ethstorage/optimism
-
Notifications
You must be signed in to change notification settings - Fork 0
Merge upstream #77
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
Merged
Merged
Merge upstream #77
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* temp * temp * Generic type converter * happy linter * unused func remov * add encoder test * add decoder test * add missing zero * do not use precompile scripts so revert back * do not use precompile scripts so revert back * Fix struct bug * base type tests * add identifier tests * happy linter * allow struct values to be decoded * remove unused struct * support dyn field in structs * comments about limitations * harden tests
) * add conductor support for flashblocks websocket * don't close proxy connection * conductor is a server to websocket proxy * delete tests * address comments * address comments * address more comments * address more comments * send out unregistered signals instead * fix service.gp * unregister buffer * wip: address most comments * refactor file structures * address most comments; todo: add metrics * refactor:wip * minor improvements * added metrics * clean up * fix metrics * webscoket tests * rename vars * rewrote tests * test continue in readPump * address comments from Jacob * add more tests * except for rewriting the test * refactor test code * still need to refactor tests * refactor tests to use callback functions * fix linting * final path: all tests passed * add back removed method-accident
…thereum-optimism#16324) * refactor(test): improve L2Genesis test structure and documentation - consolidate test initialization into L2Genesis_TestInit contract - organize individual test function into separate contracts inheriting from TestInit - add @title and @notice tags to test contracts - ensure comment stay within 100 character limit * refactor(test): improve Predeploys test structure and documentation - consolidate test initialization into Predeploys_TestInit contract - organize individual test function into separate contract inheriting from TestInit - group tests not directly tied to a base contract function or are testing multiple functions into Predeploys_Unclassified_Test and Predeploys_Unclassified_Test - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * refactor(test): improve Preinstalls test structure and documentation - consolidate test initialization into Preinstalls_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function or are testing multiple functions into Preinstalls_Unclassified_Test - refactor test function names to follow naming convention - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * refactor(test): improve WETH98 test structure and documentation - consolidate test initialization into WETH98_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - add @title and @notice tags to test contracts - ensure comment stay within 100 character limit * refactor(test): improve DeployUtils test structure and documentation - consolidate test initialization into DeployUtils_TestInit contract - rename test contract to DeployUtils_AssertUniqueAddresses_Test to follow naming convention - add @title and @notice tags to test contracts - ensure comment stay within 100 character limit
…hereum-optimism#16276) * find last valid unsafe with binary search * modify binary search to go backwards further than target * more unit tests * remove redundant logs; add one more unit test * extract localUnsafeSearch * extract isInvalidBlock * isInvalidBlock returns also the actual L2BlockRef * remove specific check for closed context * change isInvalidBlock to verifyBlock * rename x to targetDiff * use existing mocks * extract binary search into pkg binary * replace binarySearch from sort.Search to SearchL verison * revert new mocks * correct comment * add SearchR variant and unit tests for search * Update op-service/binary/binary.go Co-authored-by: Sebastian Stammler <seb@oplabs.co> --------- Co-authored-by: Sebastian Stammler <seb@oplabs.co>
…imism#16287) * refactor(test): improve PermissionedDisputeGame test structure and documentation - consolidate test initialization into PermissionedDisputeGame_TestInit contract - rename init parameters name to avoid shadowing with the state variables - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function or are testing multiple functions into PermissionedDisputeGame_Unclassified_Test - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * refactor(test): improve SuperPermissionedDisputeGame test structure and documentation - consolidate test initialization into SuperPermissionedDisputeGame_TestInit contract - rename init parameters name to avoid shadowing with the state variables - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function or are testing multiple functions into SuperPermissionedDisputeGame_Unclassified_Test - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * refactor(test): improve SuperFaultDisputeGame test structure and documentation - consolidate test initialization into SuperFaultDisputeGame_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - change TestInit import and constants name in invariant test file - group tests not directly tied to a base contract function or are testing multiple functions into SuperFaultDisputeGame_Unclassified_Test - refactor test function names to follow naming convention - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * refactor(test): improve LibGameId test documentation - refactor contract and test function names to follow naming convention - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * refactor(test): improve LibClock test documentation - refactor contract and test function names to follow naming convention - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * fix: correct test init structure * refactor(test): improve FaultDisputeGame test structure and documentation - consolidate test initialization into FaultDisputeGame_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - change TestInit import and constants name in invariant and AnchorStateRegistry test files - group tests not directly tied to a base contract function or are testing multiple functions into FaultDisputeGame_Unclassified_Test - refactor test function names to follow naming convention - reorder test functions to match the order of definitions in the base contract - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit * fix: bump coverage to 2xlarge * refactor(test): improve DisputeGameFactory test structure and documentation - rename test initialization contract to DisputeGameFactory_TestInit contract - change TestInit contract import in several files through the tests suite - group tests not directly tied to a base contract function or are testing multiple functions into DisputeGameFactory_Unclassified_Test - add @title and @notice tags to test contracts - convert @dev tags to @notice where appropriate - ensure comment stay within 100 character limit --------- Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
ethereum-optimism#16103) * refactor(test): improve Constants test structure and documentation - rename test contract to Constants_Constants_Test to follow naming convention - add @title and @notice tags to test contract * refactor(test): improve StaticConfig test structure and documentation - consolidate test initialization into a single StaticConfig_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - refactor test function names to follow naming convention - add @title and @notice tags to all test contracts - convert @dev tags to @notice where appropriate - ensure comment lines stay within 100 character limit * refactor(test): improve DeployUtils test structure and documentation - consolidate test initialization into a single DeployUtils_TestInit contract - organize individual test functions into separate contract inheriting from TestInit - add @title and @notice tags to test contract - ensure comment lines stay within 100 character limit * refactor(test): improve GasPayingToken test structure and documentation - consolidate test initialization into a single GasPayingToken_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function into GasPayingToken_Unclassified_Test - refactor test function names to follow naming convention - add @title and @notice tags to all test contracts - convert @dev tags to @notice where appropriate - ensure comment lines stay within 100 character limit * refactor(test): improve Hashing test structure and documentation - add @title and @notice tags to all test contracts - reorder test functions to match the order of definitions in the base contract * refactor(test): improve TransientContext test structure and documentation - consolidate test initialization into a single TransientContext_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function into TransientContext_Unclassified_Test - add @title and @notice tags to all test contracts - ensure comment lines stay within 100 character limit * refactor(test): improve SafeCall test structure and documentation - consolidate test initialization into a single SafeCall_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - refactor test function names to follow naming convention - add @title and @notice tags to all test contracts - convert @dev tags to @notice where appropriate - ensure comment lines stay within 100 character limit * refactor(test): improve Blueprint test structure and documentation - consolidate test initialization into a single Blueprint_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function or are testing multiple functions into Blueprint_Unclassified_Test - refactor test function names to follow naming convention - reorder test functions to match the order of definitions in the base contract - add @title and @notice tags to all test contracts - ensure comment lines stay within 100 character limit * refactor(test): improve RLPWriter test documentation - add @title and @notice tags to all test contracts - add function-level @notice comments describing expected behavior under test - ensure comment lines stay within 100 character limit * refactor(test): improve RLPReader test documentation - add @title and @notice tags to all test contracts - add function-level @notice comments describing expected behavior under test - ensure comment lines stay within 100 character limit * refactor(test): improve Encoding test structure and documentation - consolidate test initialization into a single Encoding_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - group tests not directly tied to a base contract function or are testing multiple functions into Encoding_Unclassified_Test - add @title and @notice tags to all test contracts - convert @dev tags to @notice where appropriate - ensure comment lines stay within 100 character limit * refactor(test): improve Bytes test structure and documentation - consolidate test initialization into a single Bytes_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - add @title and @notice tags to all test contracts - ensure comment lines stay within 100 character limit * refactor(test): improve MerkleTrie test structure and documentation - consolidate test initialization into MerkleTrie_TestInit contract - change visibility of rehashOtherElements function from private to internal - add @title and @notice tags to test contracts - ensure comment stay within 100 character limit * refactor(test): revert Constants test contract name to original
* Allow arbitrary gas amounts in DeployOPChain * Update packages/contracts-bedrock/scripts/deploy/DeployOPChain.s.sol
…thereum-optimism#16357) * chore(files): relocate misplaced test files to appropriate folders - Move ExecutingMessageEmitted.t.sol → integration - Move L2Genesis.t.sol → scripts - Move Predeploy.t.sol, Preinstalls.t.sol → libraries - Move WETH98.t.sol → universal - Move DeployOwnership.t.sol → scripts - Move Initializable.t.sol → integration * chore(test): move Initializable.t.sol back to vendor/ * fix(semgrep): update WETH98 test file exclude path in rules
…ism#16344) and use them in the interop load test. # Problem The interop load test needs to spam a lot of transactions. Some of those transactions may fail due to transient errors. The load test must be able to recover from such errors and continue spamming. The `op-service/txmgr` package provides the kind of transaction inclusion guarantees that load tests need. Unfortunately, it relies on the elegant but extensive `ETHBackend` interface, which is incompatible with the `apis.EthAPI` preferred by the `op-devstack`. We need a simple API that can provide the same (or better) inclusion guarantees as `txmgr.*SimpleTxManager.Send`. As a bonus, a simple API would also compose with `txplan.Option` patterns beginning to proliferate throughout the monorepo. # Solution The `txinclude` package, supported by the `accounting` package, provides this simple API. It is not yet as featureful as `txmgr`, but it should be easy to fill in the missing pieces when needs arise. Its core interface ``` Include(context.Context, types.TxData) error ``` is simple to implement and has minimal dependencies. ## Load test changes The load test now implements `txinclude`'s simple metrics interface with a few lines of code, providing deeper insights into transaction submission behaviors than was previously practical. # Future Work ## Deeper `txplan` Integration As far as I can tell, a `WithIncluder` `txplan.Option` would require something like this: ```go // WithIncluder may cause a goroutine leak if Included is never evaluated. func WithIncluder(includer txinclude.Includer) txplan.Option { return func(tx *PlannedTx) { includedCh := make(chan *txinclude.IncludedTx) errCh := make(chan error) tx.Submitted.DependOn(&tx.Unsigned) tx.Submitted.Fn(func(ctx context.Context) (struct{}, error) { go func() { included, err := includer.Include(ctx, tx.Unsigned.Value()) errCh <- err includedCh <- included }() return struct{}{}, nil }) // NOTE: tx.Included needs to return *txinclude.IncludedTx since the // transaction may be modified by the includer before it is sent // (e.g., incrementing the nonce). tx.Included.DependOn(&tx.Submitted) tx.Included.Fn(func(_ context.Context) (*txinclude.IncludedTx, error) { return <-includedCh, <-errCh }) } ``` This is a suboptimal solution. A proper `txplan`<>`txinclude` integration shouldn't be too challenging (it will likely mean removing the `PlannedTx.Submitted` field), but it is hairy enough to be left to another PR. ## Implement Missing `txmgr` Features Three features that likely belong in the `Persistent` `Includer` implementation are fee bumps, per-transaction budgeting, and ordering guarantees. Fee bumps would probably require extending the `EL` interface to include `EstimateGas`. Per-transaction budgeting could be implemented by returning an error if `EstimateGas` goes beyond what a single transaction should spend on gas. Ordering guarantees could be implemented by extending the `Includer` interface in a backward-compatible way: ```go // Include includes a transaction in a blockchain. // tx and others are guaranteed to be included in the order they // are listed by the caller. Include(ctx context.Context, tx, others ...tx.Data) (*IncludedTx, error) ``` ## Merge `EthAPI` and `ETHBackend` Currently, the codebase is bifurcated into code that speaks `EthAPI` and code that speaks variations of `txmgr.ETHBackend` (see the multiple `WaitForBlock` implementations). Because the `txinclude.EL` interface supports both, this is a first step towards a fuller solution that pays off the tech debt entirely.
…optimism#16356) making them suitable for use as a runbook.
…eum-optimism#16268) * op-acceptance-tests: Add test for single chain upgrade process * Remove redundant TODO. * Set interop timestamp again after all chains are added. * Follow option pattern * Add DSL method. * op-acceptance-tests: Verify CrossL2Inbox is still not present the block after activation
…ethereum-optimism#16165) * op-acceptance-tests: check errors for interop features on pre-interop network * use ctx from t
…eum-optimism#16262) * opd: Add just recipes for deployment and verification purposes * add comments to justfile * Apply suggestions from code review * add default locator with optional tag argument * add --l1-contracts-release flag * Add SUPERCHAIN_PROXY_ADMIN defaults
…ism#16377) * more tests for struct decoding * bindingWrapper * Fix tests * Typo * fix var name * comments * port all existing bindings and tests
…reum-optimism#16289) * Prevent ErrOutOfScope from bubbling up from Dependencies on CrossSafeUpdates * indentation Co-authored-by: Sebastian Stammler <seb@oplabs.co> * unit test --------- Co-authored-by: Sebastian Stammler <seb@oplabs.co>
…ethereum-optimism#16341) * cannon: Go impl now returns EAGAIN error when writing to a EventFd file descriptor * cannon: Solidity impl now returns EAGAIN error when writing to a EventFd file descriptor * cannon: Update tests. * contracts: Update expected mipsVersion * contracts: Update version of StandardValidator.sol * cannon: Switch to using v1 as a flag. * cannon: Fix error return method for unknown file descriptors. * cannon: Fix registers used to return error values for sys calls (ethereum-optimism#16346) * cannon: Use 100 for event fd instead of -1. Plus other review feedback. * cannon: Add eventfd2 syscall go program tests (ethereum-optimism#16370) * cannon: Update expected file descriptor --------- Co-authored-by: mbaxter <meredith@oplabs.co>
* op-interop-mon * renames * Add Updaters * Build fixes and remove dripper references * Don't Stop on Start * Use Enqueue pattern on Finder * basic fixes * Runtime improvements * Fix broken ExecutingMessage extraction * Track Jobs by pointer ; Job Thread Safety ; Metric Collection * Metric Collection ; Terminal State Transition Tracking ; General Improvements * Refactor Job Management ; Address Comments * use sources.EthClient and manual Block-Walking * refactor finder * seenBlocks init moved to constructor (so we don't need to Start the component in unit tests) * local processBlocks helper reintroduced for easier unit testing * sentinel error for no contiguous blocks added, walkback handled by parent function * next block set properly when walkback completes * minor logging improvements * add unit tests for finder covering * start / stop * processBlock * walkback with reorg example * add arch diagram to readme * remove unused field * spell * update block buffer --------- Co-authored-by: geoknee <georgeknee@googlemail.com>
…timism#16374) * op-interop-mon: add to op-stack-go docker build pipeline * add op-interop-mon to docker-bake.hcl
…imism#16384) * Enforce non-block flag for eventfd syscalls * Run semver-lock * Update StandardValidator mipsVersion
Updates op-acceptor to v0.4.1
…eum-optimism#16283) * op-acceptance-tests: op-roposer smoke test for super devstack * review comments * do not use Escape
…imism#16348) Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>
…#16333) * devstack proposer config * Helper for deploying fast game type * Fix L1 permission and add preset for deploying additional game type * Add time related presets * prepare presets for withdrawal in test * bindings and proof helpers Co-authored-by: serpixel <5087962+serpixel@users.noreply.github.com> * add full withdrawal test * typo * minimize duplication * fix(op-acceptance-tests): reduce eth amount and add followup comments * correctly resolve merge conflict * more tolerable about L2 deposit * Add comments about fastgametype absolute prestate * dedup l1PAO funding at deployer * fix rebase conflict * L1PAO key is unique * rebase and simplify contract pattern --------- Co-authored-by: serpixel <5087962+serpixel@users.noreply.github.com>
* add op-interop-mon to CI build matrix * add op-interop-mon to additional jobs
…ereum-optimism#16819) * cleanup assertions for optimism portal, opcm, asr and ethlockbox * fix ci * fixes * fixes * add comment explaining checkAnchorStateRegistryProxy check
Conflicts:
.circleci/config.yml
.semgrep/rules/sol-rules.yaml
go.mod
go.sum
kurtosis-devnet/optimism-package-trampoline/kurtosis.yml
kurtosis-devnet/simple.yaml
op-chain-ops/genesis/config.go
op-e2e/actions/helpers/l2_sequencer.go
op-e2e/config/init.go
op-node/config/config.go
op-node/node/node.go
op-node/p2p/gossip.go
op-node/rollup/driver/driver.go
op-node/rollup/types.go
ops/docker/op-stack-go/Dockerfile.dockerignore
packages/contracts-bedrock/scripts/L2Genesis.s.sol
packages/contracts-bedrock/snapshots/semver-lock.json
packages/contracts-bedrock/src/L1/OptimismPortal2.sol
packages/contracts-bedrock/src/libraries/Predeploys.sol
packages/contracts-bedrock/test/L1/StandardValidator.t.sol
packages/contracts-bedrock/test/L2/L2Genesis.t.sol
packages/contracts-bedrock/test/universal/Specs.t.sol
deleted by us: packages/contracts-bedrock/test/L1/StandardValidator.t.sol
deleted by us: packages/contracts-bedrock/test/L2/L2Genesis.t.sol
deleted by us: packages/contracts-bedrock/test/universal/Specs.t.sol
a5586f5 to
5f7ce7f
Compare
|
|
qzhodl
approved these changes
Aug 4, 2025
qizhou
approved these changes
Aug 6, 2025
This was referenced Aug 9, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pr merges upstream up to the commit e8e4ab9.
The conflict in CI is left to @syntrust .
Our own e2e test has passed.
TODO: make go test pass