Skip to content
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

Merge upstream #62

Open
wants to merge 778 commits into
base: op-es
Choose a base branch
from
Open

Merge upstream #62

wants to merge 778 commits into from

Conversation

blockchaindevsh
Copy link

This PR merges monorepo commit 718b9b0.

Theburaka and others added 30 commits August 26, 2024 20:59
* implement CheckMessage

* Add CheckBlock API

* Cleanup and Unit Tests

* Add Invalid Safety Type

* Use *ChainsDB instead of ChainsDB for SafetyCheckers

---------

Co-authored-by: protolambda <[email protected]>
* Implement CheckMessages API

* Make AtLeastAsSafeAs a function of SafetyLevel

* op-supervisor: checkMessages bundle message identifier and payload-hash

---------

Co-authored-by: protolambda <[email protected]>
* cannon: Fix stack patching

And add `memprofilerate=0` to envp

* Update cannon/mipsevm/program/patch.go

Co-authored-by: protolambda <[email protected]>

* cleanup argv/envp string ptrs

* nit

* fix envar name

* Update cannon/mipsevm/program/patch.go

Co-authored-by: mbaxter <[email protected]>

* align op-program arg0

---------

Co-authored-by: protolambda <[email protected]>
Co-authored-by: mbaxter <[email protected]>
To demonstrate how we can make our deployments more modular, this PR proposes archiving smart contract artifacts as tarballs that get uploaded to GCS. This  allows deployment tools to use precompiled artifacts rather than generating them on-the fly.

The archives are named after the hash of all Solidity files in the contracts-bedrock folder, including those in `lib/`, plus some additional metadata files like `foundry.toml` and `semver-lock.json`. See `calculate-checksum.sh` for details on how the algorithm works. I'm open to feedback around what should make up the checksum.

Since the atifacts are content-addressable, this PR also updates the CI pipeline to download the artifacts from GCS prior to running `pnpm monorepo`. When the Solidity codebase doesn't change, this allows the `pnpm monorepo` job to skip compiling Solidity altogether. While this won't work as well when we're actively modifying the Solidity codebase, since the hash will change, it does provide a modest speedup in CI.
…1605)

* cannon: Implement multithreaded clone fuzz test

* cannon: Add more clone evm tests

* cannon: Add evm test for GetTID syscall

* cannon: Add evm test for SysExit

* cannon: Add evm test for popping exited threads from the stack

* cannon: Fix futex wait handling, add evm test

* cannon: Add evm test for handling waiting thread

* cannon: Add test utils for defining / validating MTState expectations

* cannon: Add tests for futex wake, wake traversal

* cannon: Add test for SysYield

* cannon: Add SysOpen test, todos

* cannon: Add test for SchedQuantum preemption, fix inconsistency

* cannon: Add tests for noop, unsupported syscalls

* cannon: Remove duplicate constants

* cannon: Add tests for unsupported futex ops

* cannon: Group traversal tests, fix TestEVM_WakeupTraversalStep

* cannon: Add tests for nanosleep

* cannon: Add additional testcase for wakeup traversal

* cannon: Tweak futex wake tests

* cannon: Update mt fuzz test to use new test utils

* cannon: Rename contructor method for consistency

* cannon: Add some simple tests for ExpectedMTState util

* cannon: Add another validation test

* cannon: Move syscall lists to tests where they're used

* cannon: Add comment

* cannon: Extract some evm test helpers

* cannon: Cleanup - use require.Equalf for formatting

* cannon: Rename test util to AssertEVMReverts

* cannon: Add GetThreadStacks helper

* cannon: Add a few more traversal tests
* Shutdown sequencer before stopping p2p

* Check p2p isn't also disabled

Co-authored-by: Sebastian Stammler <[email protected]>

* Remove missed time.Sleep

* Fix up use of SetupP2P.Disabled

* Revert error check after RPC boundary

* Add comment about context for StopSequencer

* Add Config.p2pEnabled

* op-node: Make Config.P2PEnabled public

---------

Co-authored-by: Sebastian Stammler <[email protected]>
* test: fix L2 standard bridge interop tests

* test: mock factory implementation instead of proxy
…thereum-optimism#11633)

- protect txpool state vars with a mutex so they can be automically updated to avoid potential race
  condition
…ethereum-optimism#11670)

Bumps [github.com/hashicorp/raft](https://github.com/hashicorp/raft) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/hashicorp/raft/releases)
- [Changelog](https://github.com/hashicorp/raft/blob/main/CHANGELOG.md)
- [Commits](hashicorp/raft@v1.7.0...v1.7.1)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/raft
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#11511)

* Use context interrupts consistently in more places

* Fix CI lint errors

(cherry picked from commit 0410b7e)

* op-service/ctxinterrupt: address review comments

---------

Co-authored-by: protolambda <[email protected]>
* feat: add createX preinstall

* feat: change name from CreateXDeployer to CreateX
…hereum-optimism#11687)

Contexts are scoped to a specific GitHub user group, which doesn't work with the GitHub merge queue or OSS contributors. This PR updates the packaging job to use raw project-level env vars instead (which are not user-scoped), and to only run on commits to `develop`.
…#11530)

* op-program: Retry pruning L1 blocks when advancing origin to include the parent L1 origin

Add e2e test to reproduce corner case when deploying a chain at L1 genesis.

* Trim once, after any new origin is added.

* Add unit test.

* Add action test

* Review feedback.

* Improve test assertion
There is no longer any JS in the monorepo, we can remove
the `.npmrc` as its no longer used
* feat(op-program): Use `PebbleDB` for `DiskKV`

* close db

* fix `testFaultProofProgramScenario` tests

* switch to snappy compression

cockroachdb/pebble#3434

* fix tempdir

* update compat release

* defer k/v until preimage server and hinter have both exited
)

* - make immediate nonce-too-low error abort send (since it could never succeed otherwise)

- make txmgr resubmit a transaction when fee bumping fails in case it has been dropped from the mempool

- only bump fees when they really should be bumped

- set txmgr overall default send timeout of 10 minutes. It was infinite, which led to permanently
  stuck transaction in combination with the other bugs fixed in this PR.

* Update op-service/txmgr/txmgr_test.go

---------

Co-authored-by: Sebastian Stammler <[email protected]>
golangci-lint v1.60.2 seems to report a new error when performing a nil check and length != 0 on maps. We're not using this version in CI yet but fix the error to simplify the code and provide for a future upgrade.
ajsutton and others added 12 commits September 23, 2024 04:21
…ereum-optimism#12051)

Previously op-program host and cannon both logged an error message that the pre-image server couldn't be stopped after it stopped successfully.
…annon traces. (ethereum-optimism#12052)

Previously it was also running it in parallel with kona-asterisc traces, resulting in errors because there were two mt-cannon traces sharing a preimages directory.
* feat: Add ASR proxy to OPStackManager

* feat: Add AnchorStateRegistry blueprint

* feat: Add AnchorStateRegistry Implementation

* feat: Return startingAnchorInputs as bytes

The op-deployer tooling does not support structs, therefore we need to
return a more generic type for compatibility.

* rebuild snapshots

* fix: ASR initializer encoding

* handoff commit with op-deployer debugging

debugging op-deployer test
wip: literal anchor roots

* test and golang fixes

* hardcode permissioned state

* hardcode 0xdead as the starting anchor root

* chore: fix semver lock

* fix: no permissionless root, remove hash from 0xdead

* fix: use 0xdead root properly

* fix: set the override in the input contract

* Fix tests and accidental mutation of `Implementation` struct

* lint

* semver

* Update op-chain-ops/deployer/opsm/opchain.go

Co-authored-by: Maurelian <[email protected]>

* Update packages/contracts-bedrock/scripts/DeployOPChain.s.sol

---------

Co-authored-by: Matthew Slipper <[email protected]>
Co-authored-by: Matt Solomon <[email protected]>
)

Updates the todo-checker to not check for closed issues in the
main job. Will still check for closed issues in the scheduled job.
Prevents CI from randomly failing when stuff gets closed.
Updates DeployUtils to include new utils for using create and
create2.
…once to IL2ToL2CrossDomainMessenger (ethereum-optimism#12068)

* feat(L2ToL2CrossDomainMessenger): add successfulMessages and messageNonce to interface

* lint
 Conflicts:
	go.mod
	go.sum
	op-batcher/batcher/driver.go
	op-chain-ops/genesis/config.go
	op-chain-ops/genesis/genesis.go
	op-e2e/actions/l2_verifier.go
	op-e2e/opgeth/op_geth.go
	op-e2e/system/e2esys/setup.go
	op-node/node/config.go
	op-node/node/node.go
	op-node/p2p/gossip.go
	op-node/p2p/node.go
	op-node/rollup/derive/blob_data_source.go
	op-node/rollup/derive/blob_data_source_test.go
	op-node/rollup/derive/calldata_source.go
	op-node/rollup/derive/engine_queue_test.go
	op-node/rollup/derive/engine_update.go
	op-node/rollup/driver/driver.go
	op-node/rollup/engine/engine_controller.go
	op-node/rollup/types.go
	op-node/service.go
	op-program/client/driver/driver.go
	op-service/predeploys/addresses.go
	op-service/txmgr/txmgr.go
	packages/contracts-bedrock/scripts/L2Genesis.s.sol
	packages/contracts-bedrock/src/libraries/Predeploys.sol
	packages/contracts-bedrock/test/Predeploys.t.sol
@qzhodl
Copy link

qzhodl commented Oct 8, 2024

I’m a bit curious about how we picked the upstream commit 718b9b0, Was it related to a specific release version of the OP Stack here

@blockchaindevsh
Copy link
Author

I’m a bit curious about how we picked the upstream commit 718b9b0, Was it related to a specific release version of the OP Stack here

It was the tip of the upstream's develop branch at the beginning of merge.

@qzhodl
Copy link

qzhodl commented Oct 8, 2024

I’m a bit curious about how we picked the upstream commit 718b9b0, Was it related to a specific release version of the OP Stack here

It was the tip of the upstream's develop branch at the beginning of merge.

Should we pick a specific release version to merge? I noticed that op-geth follows this method in practice here

@blockchaindevsh
Copy link
Author

Should we pick a specific release version to merge? I noticed that op-geth follows this method in practice here

We'll merge with Holocene version when it's released. Before that, we'll just merge the latest code.

@qzhodl
Copy link

qzhodl commented Oct 8, 2024

Should we pick a specific release version to merge? I noticed that op-geth follows this method in practice here

We'll merge with Holocene version when it's released. Before that, we'll just merge the latest code.

The OP team releases minor versions quite frequently, as shown in the link, where both OP Stack v1.9.3 and v1.9.2 were released in September. I would suggest merging a specific release version for better code stability.

@blockchaindevsh
Copy link
Author

The OP team releases minor versions quite frequently, as shown in the link, where both OP Stack v1.9.3 and v1.9.2 were released in September. I would suggest merging a specific release version for better code stability.

We can merge a release version in a separate PR, which will be small. But based on previous experience, the code quality of develop branch is also quite good.

@qizhou
Copy link

qizhou commented Oct 9, 2024

The OP team releases minor versions quite frequently, as shown in the link, where both OP Stack v1.9.3 and v1.9.2 were released in September. I would suggest merging a specific release version for better code stability.

We can merge a release version in a separate PR, which will be small. But based on previous experience, the code quality of develop branch is also quite good.

The tests (e.g., CI) sometimes fail at develop branch (as I experienced these days) so I think the recent release may be good merge point.

@blockchaindevsh
Copy link
Author

blockchaindevsh commented Oct 9, 2024

The OP team releases minor versions quite frequently, as shown in the link, where both OP Stack v1.9.3 and v1.9.2 were released in September. I would suggest merging a specific release version for better code stability.

We can merge a release version in a separate PR, which will be small. But based on previous experience, the code quality of develop branch is also quite good.

The tests (e.g., CI) sometimes fail at develop branch (as I experienced these days) so I think the recent release may be good merge point.

When we're ready to deploy the next testnet, I'll ensure to merge with latest release version(hopefully when Holocene version is released).

As this PR is already very big, the most important thing for this PR is to ensure our own logic remains in the correct places.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.