-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
ovmCREATE and ovmCREATE2 fixes #186
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! 👍
Just a few questions about what the desired functionality is.
return false; | ||
} | ||
function createNewContract(address _newOvmContractAddress, bytes memory _ovmInitcode) internal { | ||
require(safetyChecker.isBytecodeSafe(_ovmInitcode), "Contract init (creation) code is not safe"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will we still need to return the address it would have been deployed to in this case? If so, this will not do that, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yep, it will revert if the code is not safe. Even though this differs from evm CREATE/CREATE2, which always returns the address it would have been deployed to, I think it's worth it for ease of developer debugging. If my bytecode is failing to deploy, it would be ideal as a dev to know that it's because I forgot to transpile it first, not because of some OVM bug.
// Contract runtime bytecode is not safe. | ||
return false; | ||
} | ||
require(safetyChecker.isBytecodeSafe(codeContractBytecode), "Contract runtime (deployed) bytecode is not safe"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will we still need to return the address it would have been deployed to in this case? If so, this will not do that, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see above^ 😊
* contracts: Add gas input to precompile pre-images (#186) Also update the cannon evm tests to use the new precompile preimage scheme. --------- Co-authored-by: Adrian Sutton <[email protected]> * op-challenger: Support uploading data in new format. (#188) * op-program: Add required gas to precompile oracle key (#176) * op-challenger: Support multiple versions of the preimage oracle contract --------- Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: inphi <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]>
…eum-optimism#252) * contracts: Add gas input to precompile pre-images (ethereum-optimism#186) Also update the cannon evm tests to use the new precompile preimage scheme. --------- Co-authored-by: Adrian Sutton <[email protected]> * op-challenger: Support uploading data in new format. (ethereum-optimism#188) * op-program: Add required gas to precompile oracle key (ethereum-optimism#176) * op-challenger: Support multiple versions of the preimage oracle contract --------- Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: inphi <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]>
…mission (#1) * make an rpc server an into a cliapp service (#11197) * Add buffered caching of L1 block refs to the confDepth-aware fetcher (#11142) * Add buffered caching of L1 block refs to the confDepth-aware fetcher * Refactor l1 head buffer into helper structs * Fix linting errors * Move L1 block caching from confDepth into an event-driven L1Tracker * Fix l1HeadBuffer locking * Better handle non-shallow reorgs * Improve test naming * Explicitly rewind cache when old head received * op-conductor: Adds connection test to conductor addServer* apis (#11210) * op-e2e: use util for RPC dial, and ensure op-node is on localhost RPC (#11209) * dependabot(npm): bump typedoc from 0.25.7 to 0.26.5 (#11216) Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.25.7 to 0.26.5. - [Release notes](https://github.com/TypeStrong/TypeDoc/releases) - [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.25.7...v0.26.5) --- updated-dependencies: - dependency-name: typedoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump eslint-plugin-jsdoc from 48.7.0 to 48.8.3 (#11213) Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 48.7.0 to 48.8.3. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v48.7.0...v48.8.3) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump mocha from 10.6.0 to 10.7.0 (#11214) Bumps [mocha](https://github.com/mochajs/mocha) from 10.6.0 to 10.7.0. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.6.0...v10.7.0) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump typescript from 5.5.3 to 5.5.4 (#11215) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.3...v5.5.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development 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> * dependabot(npm): bump @types/node from 20.11.17 to 20.14.12 (#11220) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.11.17 to 20.14.12. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * contracts-bedrock: speed up ci (#11203) Tests for `contracts-bedrock` should no longer depend on the JS monorepo. This should speed up the tests by removing a step that blocks it from running. * Update README.md (#11222) Update README * deps: remove ts-mocha (#11202) `ts-mocha` appears to be unused so this commit removes it * deps: remove wait-on (#11201) The `wait-on` dep is not used anywhere in the monorepo, so this commit removes it. The following command only shows the `package.json` and lockfile: ```bash git grep -rin wait-on ``` We should remove all unused deps * op-node: set genesis l1 start block to value from SystemConfig contract (#11181) * set genesis l1 start block to value from SystemConfig * always retrieve genesis l1StartBlock from SystemConfig.startBlock() * use contract-bedrock abi instead of large bindings file * fix startBlock contract call * use single func call instead of importing full SystemConfig abi * use vars instead of hardcoded flag strings * Fix CONTRIBUTING.md (#11224) * cannon: fix fuzz test script (#11226) * op-node: Extract contract binding for SystemConfig (#11227) * deps: remove depcheck (#11230) Remove another unused dependency. `depcheck` was previously used when the monorepo had active typescript development in it. Right now it has not typescript development in it and is no longer used as part of CI. We should remove every dependency that is not used. * op-dispute-mon: fix the path and add example (#11233) * fix the path and add example * Update README.md * Update README.md * avoid passing factory address (#11236) * op-service: use binary search instead of walkback for checkRecentTxs (#11232) * use binary search instead of walkback for checkRecentTxs * account for multiple txs from same sender in same block * use recursion if reorg detected * limit condition to return false * Delete chain-mon in favor of monitorism (#11239) * Delete chain-mon * Delete chain-mon from other places. --------- Co-authored-by: Kevin Kz <[email protected]> * dependabot(gomod): bump github.com/onsi/gomega from 1.31.1 to 1.34.0 (#11242) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.31.1 to 1.34.0. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.31.1...v1.34.0) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump github.com/urfave/cli/v2 from 2.27.1 to 2.27.3 (#11243) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.27.1 to 2.27.3. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.27.1...v2.27.3) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 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> * docs(typo): README.md, pausability-lemmas.md (#11241) * chore: add `help` target to Makefile to display the usage of all targets (#11221) Co-authored-by: Mark Tyneway <[email protected]> * op-node: genesis generation (#11249) Better logging in the genesis generation when creating L2 genesis. Using the `startBlock()` method depends on the L1 contracts being initialized. * [op-dispute-mon] Track the latest proposed L2 block number from games w/ a valid root claim (#11238) We'd like to know the latest valid block number associated with a valid dispute game. This would be the equivalent of getting the latest block number from `L2OutputOracle` in pre-FDG. We could look into the `AnchorStateRegistry`, but this does not give us quick enough feedback to know if we are keeping up with "proposing" correct root hashes for the most recent L2 blocks, as dispute games resolves approximately 3.5 days (assuming happy path). There can be many dispute games at any given time, and they may be valid or invalid. This metric captures only valid block numbers from dispute games that we "agree" with. * deps: remove more deps (#11250) Removes more dead deps from the monorepo that are no longer used. Every dep is a liability. We should only have deps that we actively use. Soon we will be able to remove all JS from the monorepo, removing all of these deps. * deps: remove more js deps (#11254) This commit removes more js deps. We are very close to removing all js from the monorepo. We should only have deps in our codebase that we actively use. Otherwise its a security liability. * Update Kontrol Proofs (`0.1.247` to `0.1.316`) (#10953) * Remove `Kontrol-Deploy.json` * Remove `DeploymentSummaryFaultProofs` contracts * Revert "Remove `DeploymentSummaryFaultProofs` contracts" This reverts commit 192ac49acc76f98476caef40fa7af6bfb527282d. * pausability-lemmas.md: update `copy-memory-to-memory` rule * KontrolDeployment: add full deployment logic * DeploymentSummary: sync with full deployment logic * DeploymentSummaryFaultProofs: sync with full deployment logic * Bump Kontrol from `0.1.247` to `0.1.313` * run-kontrol.sh: update `kontrol prove` options * make-sumary-deployment.sh: remove logic manipulating `Deploy.s.sol` * Track `snapshots/state-diff/Kontrol-31337.json` * `kontrol/README.md`: update * OptimismPortalKontrol: remove `encodeWithSelector` from `expectRevert` * run-kontrol.sh: set booster max recursion limit to `100` * Kontrol-31337.json: update with non-fault-proofs deployment * package.json: change order of evaluation for `snapshots` job Both `pnpm kontrol-summary-fp` and `pnpm kontrol-summary` save the state updates to `snapshots/state-diff/Kontrol-31337.json`. In order to correctly test the non-fault-proof deployment setting `pnpm kontrol-summary` has to be run last. * Bump Kontrol from `0.1.313` to `0.1.316` * Update `DeploymentSummaryFaultProofs` * ops-bedrock: Beacon-chain devnet with Dencun + Ecotone upgrade (#9117) * ops-bedrock: beacon-chain devnet with fork to L1 Dencun and L2 Ecotone ops-bedrock: clean up file names, drop unused stateviz ops-bedrock: dockerfile for lighthouse from source ops-bedrock: devnet validator keystores ops-bedrock: dev chain config generate genesis.ssz, work in progress devnet setup lighthouse CLI tweaks ops-bedrock: more CLI tweaks devnet: fix validator keys loading ops-bedrock: cleanup L1 geth setup and jwt-secret usage ops-bedrock: fix L1 engine API endpoint op-chain-ops: insert dev L1 contracts devnet fixes more fixes schedule L2 Delta and Ecotone forks op-chain-ops: fix lint ops-bedrock: docker-compose config comments about special options ops-bedrock: adjust beacon node log level Co-authored-by: Sebastian Stammler <[email protected]> * devnet: Add eth2-testnet-genesis installation step * op-e2e: fix pre-Ecotone tests * ops-bedrock: Fix entrypoint scripts * op-e2e: Fix TestPreEcotone * op-e2e: Fix hardfork validation tests * op-e2e: Enable L1 Cancun at genesis for Ecotone system configs * ci: use eth2-testnet-genesis tag v0.10.0 * op-e2e: use <fork>SystemConfig instead of manipulating fields * op-e2e/actions: process beacon block root for Cancun L1s * op-e2e/actions: fix TestBlockTimeBatchType * op-e2e: add beacon endpoint to L1 setup * op-e2e/actions: fix more tests... * op-e2e/actions: fix manual setting of delta offset * op-e2e/actions: set blob source in plasma tests * devnet: sleep at start of tests * ops-bedrock: remove fetch-all-sidecars for l1 lh from docker-compose * op-e2e: fix Makefile go test flags * op-chain-ops: Add 4788 deployer address to L1 genesis creation * op-e2e: remove outdated TODO code * ci: read eth2-testnet-genesis version from json * fix l1 genesis & cci config * rename beacon-data/deposit_contract_block.txt * cci: dump l1-bn and l1-vs logs * few improvements * Move to op-e2e devnet withdrawals test * set l1 block time to 6s in devnet template * fix game resolve helper, to handle resolve race condition * lower da windows * devnet: bump plasma windows to 16 * fix: adjust plasma test params for smaller challenge window sizes * bump lighthouse, remove src Dockerfile * revert devnet python script commenting out the test isn't run from this script any more anyways that was just temporary while debugging * remove deprecated options ligthouse deprecated http-allow-sync-stalled docker-compose deprecated the version tag * retry start block fetching in L2 genesis cmd * add CL to devnet L1 startup step * ignore receipt for resolveClaim call in FinalizeWithdrawal * forward tx trace as custom error type, use in withdrawal test * return receipt in SendTx --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: tchardin <[email protected]> * cannon: delete unnecessary part in makefile (#11194) * add dependence check in makefile * Update Makefile * Update Makefile * docs(typo): `CrossL2Inbox.sol` (#11125) * docs(typo): `CrossL2Inbox.sol` `if{"f" => ""}` * docs(crossL2Inbox): sync semver-lock * monorepo: remove `devnet-tasks` (#11257) Now `make devnet-test` runs go based devnet tests rather than the legacy hardhat based ones. ```make devnet-test: pre-devnet ## Runs tests on the local devnet make -C op-e2e test-devnet ``` This removes `devnet-tasks` from the monorepo, allowing us to delete many dead dependencies. * .github: remove old mergify config (#11258) * remove changeset (#11259) * feat(cross-l2-inbox): add CrossL2Inbox to predeploy addresses and abi_loader (#11267) * dependabot(gomod): bump github.com/holiman/uint256 from 1.3.0 to 1.3.1 (#11268) Bumps [github.com/holiman/uint256](https://github.com/holiman/uint256) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/holiman/uint256/releases) - [Commits](https://github.com/holiman/uint256/compare/v1.3.0...v1.3.1) --- updated-dependencies: - dependency-name: github.com/holiman/uint256 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> * cannon: add test dependence in Makefile (#11264) * add test dependence in Makefile * Update cannon/Makefile Co-authored-by: mbaxter <[email protected]> --------- Co-authored-by: mbaxter <[email protected]> * op-chain-ops: remove dead code (#11261) This code was used as part of the migration from the legacy system to bedrock for op mainnet. It is no longer needed and exists in the optimism-legacy repo if it is needed. The state transition that represented the migration to bedrock can be reproduced using the optimism legacy repo. Since this code is no longer used, we can delete it here. * MIPS2.sol MT-FPVM Implementation (#11036) * cannon: MIPS2 MT-FPVM contract Add a smart contract implementing the multi-threaded Cannon * Update packages/contracts-bedrock/src/cannon/libraries/MIPSSyscalls.sol Co-authored-by: mbaxter <[email protected]> * cannon: Use common constant for BRK_START * cannon: Define new constant FUTEX_EMPTY_ADDR * cannon: Add SYS_ERROR_SIGNAL constant, fix futex wait ret val * dedup syscall handling; rename timeout * fix sys_clone bug * use handler functions in onWaitComplete * fix nits * fix ETIMEDOUT constant * remove leftover console import * traverse right if left is empty on futex_wake syscall * Update packages/contracts-bedrock/test/cannon/MIPS2.t.sol Co-authored-by: mbaxter <[email protected]> * fix traverseRight updates at popThread * exit syscall is exit_group if last thread * simplify wakeup logic; traverse fully before any other operation * remove dup logic for wakeup traversal end * fuzz thread.exited in wakeup tests * update semver-lock; abi snapshots * implement unused syscalls * rebase; fix clone args * update semver-lock * handle munmap * add comment on unimplemented syscalls * add mising snapshots --------- Co-authored-by: mbaxter <[email protected]> * cleanup: rm more js (#11260) * deps: pull js together Puts all js in the single package where it is used * deps: move linting config * nx: remove config * changesets: remove * npmignore: remove * npmrc: remove workspace * ci: cleanup * check-changed: remove nx dep * build: attempt fix * ci: cleanup * cannon: Fix exitCode for invalid cloneargs in MIPS2 contract (#11275) * mt-cannon: Implement mips logic (#11188) * cannon: Copy over singlethreaded impls as a starting point * cannon: Update mips property access to work with MTState * cannon: Add new syscall constants * mt-cannon: Implement clone syscall * mt-cannon: Implement remaining new syscalls * mt-cannon: Implement thread traversal changes to mipsStep() * mt-cannon: Add logger, log when max steps reached * mt-cannon: Implement onWaitComplete() * mt-cannon: Implement thread manipulation methods Also, use slices of pointers for the thread stacks * mt-cannon: Move thread traversal fns to mips.go * mt-cannon: Fix issue where wakeup traversal never stops * mt-cannon: Fix issue where we can end up popping an empty stack * mt-cannon: Move thread definitions to new thread.go file * cannon: Add compile-time type checks for FPVM(State) impls * mt-cannon: Add new threaded StackTracker * mt-cannon: Update proof generation to include thread proof * mt-cannon: Move FPVM compile-time type check * cannon: Run common vm tests across all FPVM impls * cannon: Cut OpenMIPS clone test * cannon: Cleanup - fix some discrepancies, clarify constant * cannon: Disable mem profiling in op-program instead of patch.go * cannon: Consolidate calls to program.PatchGo * cannon: Disable program.PatchGo in MTCannon tests * mt-cannon: Add multithreaded program test * cannon: Only run sleep check for single-threaded cannon * op-program: Update profiling before dependency init fns are called * mt-cannon: Track stack on thread clone, handled popped threads * mt-cannon: Panic if unrecognized syscall is executed * mt-cannon: Panic if unexpected flags are passed to SysClone * mt-cannon: Add some tests for EncodeThreadProof() * mt-cannon: Add some more tests around threadProof edge cases * mt-cannon: Minimize logging * cannon: Update go version in cannon/example/multithreaded/go.mod Co-authored-by: Inphi <[email protected]> * mt-cannon: Rework clone behavior based on feedback * mt-cannon: Rework wakeup logic * mt-cannon: Cleanup - simplify clone, refine logging * Revert "cannon: Cut OpenMIPS clone test" This reverts commit d876d6a44ffc01672a019d5b2411e7d3eab08439. * mt-cannon: Skip open-mips clone test add todos * mt-cannon: Handle munmap syscall * mt-cannon: Exit if the last thread exits * cannon: Clarify skip comment * cannon: Add some todos * cannon: Add guard around logging --------- Co-authored-by: Inphi <[email protected]> * contracts-bedrock docker fix (#11278) * contracts-bedrock docker fix * lockfile update for pnpm workspace * op-chain-ops: Organize deploy-config, improve check-logging (#11189) * op-chain-ops: Organize deploy-config, improve check-logging * op-chain-ops: fix DAChallengeProxy check * op-chain-ops: add godocs * dependabot(gomod): bump github.com/onsi/gomega from 1.34.0 to 1.34.1 (#11279) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.34.0 to 1.34.1. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.34.0...v1.34.1) --- updated-dependencies: - dependency-name: github.com/onsi/gomega 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> * feat(opsm): scaffold OP Stack Manager and tests (#11274) * init scaffolding of OPSM contract and tests * add chainIdToBatchInboxAddress * chore: address semgrep findings * test: add auth spec * update functions sig, semver lock, snapshots * semver lock update after installing correct foundry version * udpates based on style guide * snapshots * op-program: delete redundant code (#11263) * delete redundant code * delete * op-challenger: fix the wrong variable name and some additional fix (#11179) * fix from differential-testing * fix from L2Genesis * fix variable name * Update metrics.go * docs: broken links in op-preimage (#11296) * cannon: Fix onchain clone flags (#11293) * cannon: Fix onchain clone flags * cannon: Bump contract versions * cannon: Run pre-commit * op-node/derive: linter fix (#11265) * linter fix * use sentinel error * fix format * op-challenger: Add subcommand to continuously run trace providers (#11294) * op-challenger: Add subcommand to continuously run trace providers * op-challenger: Remove duplicate invalid recording. * ops: fix build (#11299) * ops: fix build Migrates to a different `pnpm build` command that broke as part of removing JS from the monorepo. * ops: use frozen lockfile * reduce scope of `expandedOwners` (#11301) * fix comment (#11303) * op-batcher: Add dynamic blob/calldata selection (#11219) * op-batcher: Implement dynamic blob/calldata selection * op-batcher: Improve logging in dynamic eth-da channel config * op-batcher: Rename field ChannelConfig.MultiFrameTx to UseBlobs * op-e2e: Add Batcher AutoDA test * lint * contracts-bedrock: fix `SentMessage` event (#11305) * contracts-bedrock: fix `SentMessage` event The bytecode emitted from `SentMessage(bytes) anonymous` abi encoded the `relayMessage` call, breaking the ability to put calldata directly into the event data. This uses yul to not abi encode the log as `bytes` and instead place the calldata directly into the event data. The fact that there is no abi decoding done in the test shows that this is correct. Previously the abi decoding done in the test was not correct, we want the exact data in the log to be the calldata. * snapshots: update * semver-lock: regenerate * feat: introduce SuperchainWETH and ETHLiquidity (#11042) Introduces the SuperchainWETH and ETHLiquidity contracts. More information about these contracts can be found in the OP Stack Specs repository. * contracts-bedrock: fix CrossL2Inbox (#11320) * contracts-bedrock: fix cross l2 inbox Updates the `CrossL2Inbox` per the latest specs proposal in https://github.com/ethereum-optimism/specs/pull/254 This reduces the cost of sending cross chain messages by emitting the message hash as part of the event rather than the full message itself. * semver-lock: fix * contracts-bedrock: port custom gas token to portal2 (#10780) * contracts-bedrock: port custom gas token to portal2 Ports the custom gas token feature to `OptimismPortal2`. This will enable fault proofs to run on custom gas token chains. * lint: fix * tests: update * tests: update * Add task to capture a section of sepolia running fjord for compatibility tests. (#11326) * Cannon: optimize the example (#11302) * optimize the example Use better-suited examples and make sure to add the required flag L2outputroot. * fix path * update * replace network * update comment * op-node: optimize case to handle proposer requests (#11262) * op-node: optimize case to handle proposer requests * op-e2e: modify withdrawals test to trigger BlockRefWithStatus finalized hot-path * fix(ci-builder-foundry-bump): Updating ci-builder. (#11325) * Snapshots go scripts (#11338) * contracts-bedrock: Go version of generate-invariant-docs * contracts-bedrock: Go version of generate-snapshots * devnet: Update expired docs link (#11329) * delete expired docs link * use the official doc * doc: update style guide (#11290) * doc: update style guide * apply suggestion from code review Co-authored-by: Maurelian <[email protected]> * Update packages/contracts-bedrock/STYLE_GUIDE.md --------- Co-authored-by: Maurelian <[email protected]> * Add Granite and Holocene fork references (#11339) * fix: set default forge gas limit (#11342) * chain-spec: Fix next fork (#11341) * fix: add missing assume condition (#11344) * contracts-bedrock: remove typescript (#11340) * contracts-bedrock: remove typescript Moves to using Go from typescript, new code is autogenerated by claude. Can confirm that both work as expected. The `check-test-names` is not running in CI, it fails for both the Go and Typescript scripts. Maybe claude will be able to get the script to pass. * Update check-spacers.go Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * Update packages/contracts-bedrock/scripts/checks/check-test-names.go Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * contracts-bedrock: fix build * scripts: rename * scripts: rename * scripts: fixes --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * Reduce ChannelTimeout to 50 in Granite (#11343) * Reduce ChannelTimeout to 50 in Granite * Capture granite genesis files. * Update snapshots. * Update op-geth dependency and resolve TODOs. * update op-geth dependency to rc.1 * fix TestGetRollupConfig --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: SuperchainWETH fuzz testing chain ID error (#11352) Minor fix to fuzz testing for SuperchainWETH and related contracts. Recipient chain ID cannot be the same as the sending chain ID. Contracts throw an error when this is the case, causing fuzz tests to fail. * Apply error variable lint in op-node/p2p (#11354) * op-chain-ops: remove etherscan package (#11345) The `etherscan` package isn't maintained or used in the monorepo, so it should be deleted. * fix op-geth dependency (#11356) * dependabot(gomod): bump golang.org/x/sync from 0.7.0 to 0.8.0 (#11358) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.7.0 to 0.8.0. - [Commits](https://github.com/golang/sync/compare/v0.7.0...v0.8.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump golang.org/x/time from 0.5.0 to 0.6.0 (#11357) Bumps [golang.org/x/time](https://github.com/golang/time) from 0.5.0 to 0.6.0. - [Commits](https://github.com/golang/time/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: golang.org/x/time dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: bump ci builder `0.50.0` (#11334) * ci: bump ci builder `0.50.0` Bumps the `ci-builder` image with an updated version of foundry. Foundry update: https://github.com/ethereum-optimism/optimism/pull/11325 Docker build: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/60263/workflows/154fd94a-4029-4e2f-8bce-4ea4c6d25897 * contracts-bedrock: fix tests after new foundry version * contracts-bedrock: comment why skip * test: better comments * gas-snapshot: regenerate * snapshots: update * snapshots: update * fix(ctb): Align expected ptr in `Bytes.slice` test An update to `forge-std` causes `bound` to set the free memory pointer at an unaligned offset. This commit updates the test such that the expected pointer is correctly aligned, without an assumption on the starting ptr's alignment. --------- Co-authored-by: clabby <[email protected]> * op-challenger: Modify run_trace to run a block prior to the safe head (#11349) * op-challenger: Add metric to report memory used in the cannon VM (#11350) * op-challenger: Add metric to report memory used in the cannon VM * op-challenger: Remove config override. * op-proposer: retry failed output proposals (#11291) * op-proposer: add retries to output proposal * op-proposer: proposeOutput returns err to help trigger retry * op-proposer: use retry.Do for FetchOutput, add unit tests * op-proposer: improve output fetching retry impl * op-proposer: move done signal check into inner loop --------- Co-authored-by: Sebastian Stammler <[email protected]> * op-challenger: Fix prestate loading for asterisc in run-trace (#11363) * feat(challenger): `AsteriscKona` trace type (#11140) * feat(challenger): `AsteriscKona` trace type Adds support for the new `asterisc-kona` game type in the `op-challenger` * feat: add `kona-host` `--l2-chain-id` flag * op-challenger: Separate oracle server executor (#11348) * fix(op-challenger): run trace cmd * fix(op-challenger): lints --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: refcell <[email protected]> * op-e2e: Fix GraniteSystemConfig (#11361) * update sepolia-devnet-0 deploy-config (#11371) * cannon: move example test programs into testdata directory to prevent Go tool noise (#11379) * op-node: abort block publishing if conductor commit fails (#11380) * Fix devnet-up when op-program/bin is missing prestate-proof.json (#11383) * contracts-bedrock: migrate to just (#11276) * contracts-bedrock: migrate to just Move away from `pnpm` for contracts scripts and towards `just`. `just` was made for this, since we are moving away from JS it makes no sense to keep `pnpm` around which is native to the JS ecosystem. * ci: install just * ops: cleanup, docs * ci: install just * justfile: update * ci: fix install * snapshots: update * contracts-bedrock: remove pnpm/node, cleanup dockerfile * slither ci: no longer need for workaround (TM) * ts-linting: remove * kontrol: regenerate snapshots * safecall: update test * test: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * readme: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Maurelian <[email protected]> * versions: use latest * ci: fix * CONTRIBUTING: update * ci: fix * lint: fix --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: Matt Solomon <[email protected]> Co-authored-by: Maurelian <[email protected]> * op-proposer, op-batcher: Wait for sync in Start rather than loop. (#11192) Ensures that if it fails, the process exits with an error, rather than just exiting the runloop and continuing on in a zombie mode that doesn't do anything but doesn't exit. * contracts-bedrock: improve `CrossL2Inbox` devex (#11322) * contracts-bedrock: improve `CrossL2Inbox` devex Improve the `CrossL2Inbox` devex by creating an alternative entrypoint. This design was not considered previously because there was a "top level call" restriction, aka the "only EOA" invariant. This was to allow for static analysis of transactions, keeping resource usage lower for validating transactions when building blocks or at the mempool layer. Since 3074/7702 render the enforcement of only eoa impossible, we decided to op/acc and lean into the approach of allowing subcalls to trigger `ExecutingMessage` events. This new interface allows another contract to be the entrypoint, the idea is that the user sends the `Identifier` and the serialized log (message) to whatever contract that they want and then pass it to `CrossL2Inbox.validateMessage` which then emits the event that consensus validates. This allows the calling smart contract to be aware of the schema for the log and deserialize it however they see fit. Since the serialized logs are done with the following algorithm: ```go msg := make([]byte, 0) for _, topic := range log.Topics { msg = append(msg, topic.Bytes()...) } msg = append(msg, log.Data...) ``` It is very easy to use `abi.decode` to decode a log, given that solidity was used to `emit` it. The topics are `bytes32` and then the data is abi encoded given the schema of the event itself. Unused parts like `topic[0]` (hash of the event name) can be dropped when decoding if they are not required. * ctb: fix typo * remove nonReentrant and add tests for validateMessage, rename ENTERED_SLOT preimage * add natspec for _checkIdentifier and update that of validateMessage * update version and semver-lock file * check all topics in crossl2inbox test, run pnpm snapshots * tests: fix --------- Co-authored-by: Michael Amadi <[email protected]> * Revert "Fix devnet-up when op-program/bin is missing prestate-proof.json (#11383)" (#11393) This reverts commit 2491a3732fe97c9eec9baf615a010e8f7a42f738. make cannon-prestate doesn't declare all transitive dependencies properly so can fail to build when there are changes. * devnet/e2e: run L1 Deneb and L2 Fjord by default (#11359) * devnet/e2e: run L1 Deneb and L2 Fjord by default * op-e2e: fix TestPostUnsafePayload * op-e2e: Fix TestGasPriceOracleFeeUpdates * op-e2e/actions: fix some tests The L2EngineAPI test needs more fixing * tests: fixes to support Ecotone/Fjord in more tests * op-e2e: one more fix --------- Co-authored-by: Sebastian Stammler <[email protected]> * feat(predeploys): add L2toL2CDM to predeploy addresses.go (#11403) * contracts-bedrock: debug tests (#11397) * contracts-bedrock: debug tests See why the tests are flaking and cannot be reproduced locally. Also modularize/cleanup CI along the way * typo: fix * debug: remove * just: update name * ci: better error help * ci: fix typo * contracts-bedrock: abstract * ci: run with foundry profile ci * ci: better solc warnings check (#11231) * ci: better solc warnings check Use `forge build --force` to force a build so that the warning check can be observed. CI should fail on this commit * contracts-bedrock: fix warnings Fix the failed solc build See the failed workflow here: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/59631/workflows/b93bc600-e772-4ba9-98ed-a0b6f48683c7/jobs/2512271 * foundry: add ignored error code * repo: migrate away from pnpm (#11395) Migrate to just from pnpm. This is continued tech debt cleanup away from `pnpm` and typescript that is no longer used. * Run cannon-prestate if devnet cannon prestate files are missing (#11399) * Fix devnet-up when op-program/bin is missing prestate-proof.json * Fix cannon-prestate to always run * Add prestate.json * ci: update geth tool to v1.14.7 (#11410) * ci: update geth tool to v1.14.7 * ci: temporarily disable L1 geth version check, so L1 geth can be updated * ops-bedrock: explicit hash state.scheme on geth * Add RV reviews (#11422) * Add RV reviews * Fix naming of trust audit to match convention * Update to Geth 1.14.7 (#11382) * chore: update to support geth v1.14.7 * Update geth * Fix "private key curve is not secp256k1" error * Temporarily quiet noisy logs * signature test * Add comments about S256 curve override fix * Update geth * go.mod: update to op-geth v1.101407.0-rc.1 * op-e2e: fix L1/L2 miner settings * Also update devnet L1 base image * ci: bump ci-builder in circleci --------- Co-authored-by: Danyal Prout <[email protected]> Co-authored-by: protolambda <[email protected]> Co-authored-by: Sebastian Stammler <[email protected]> * cannon: Undo changes to memprofile patching (#11420) * fix: update contracts README diagram (#11406) * fix(ctb): remove linked libraries from scripts and tests (#11426) * add additional address to exclude * chore: make public library methods internal * remove another public lib method * remove additional public lib methods * remove hardcoded assumption now that we know it's lib linking * style: forge fmt * add rationale to comment (#11429) * ci: manage versions in versions.json (#11415) * ci: manage versions in versions.json and optimize archive downloads to directly extract * ci: also pin just version * cannon: Add support for --type mt to enable multithreaded cannon (#11411) * cannon: Add support for --type mt to enable multithreaded cannon * cannon: Rename vm type to cannon-mt * dependabot(gomod): bump golang.org/x/crypto from 0.25.0 to 0.26.0 (#11373) * dependabot(gomod): bump golang.org/x/crypto from 0.25.0 to 0.26.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.25.0 to 0.26.0. - [Commits](https://github.com/golang/crypto/compare/v0.25.0...v0.26.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * deps: update --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Tyneway <[email protected]> * op-supervisor: Include executing message info when storing logs. (#11369) * Rebase: op-supervisor: Include executing message info when storing logs. Takes from aj/parse-exec-msg and makes the following updates: - uses upstream ABI definitions for identifier hash - removes the core recording functionality for the moment - fixes up inconsistent typing and merge conflicts due to rearranged packages * Incorporate new ABI format * remove trailing newline in contract --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: minor error in contracts readme (#11432) * Don't recheck terminal type for color (#11412) Not necessary as it's checked further up the call tree. Without this --log.color doesn't work when intended. * maint: further clean up contract scripts organization (#11434) Scripts within contracts-bedrock are all over the place. Relatively minor PR that moves things around into a cleaner folder structure. Scripts themselves are unchanged. * op-e2e: Test Granite EVM rules in op-program (#11391) * op-geth: update to support new precompile-overrides function (#11443) * op-geth: update to support new precompile-overrides function * op-program: ensure no accidental precompile overrides * go.mod: update op-geth for new precompile override functionality * op-challenger: Do not resolve games in selective mode (#11430) * dependabot(gomod): bump github.com/urfave/cli/v2 from 2.27.3 to 2.27.4 (#11450) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.27.3 to 2.27.4. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.27.3...v2.27.4) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 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> * dependabot(docker): bump ethereum/client-go in /ops-bedrock (#11448) Bumps ethereum/client-go from v1.14.7 to v1.14.8. --- updated-dependencies: - dependency-name: ethereum/client-go dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat: introduce OptimismSuperchainERC20 (#11256) * feat: introduce OptimismSuperchainERC20 * fix: contract fixes * feat: add snapshots and semver * test: add supports interface tests * test: add invariant test * feat: add parameters to the RelayERC20 event * fix: typo * fix: from param description * fix: event signature and interface pragma * feat: add initializer * feat: use unstructured storage and OZ v5 * feat: update superchain erc20 interfaces * fix: adapt storage to ERC7201 * test: add initializable OZ v5 test * fix: invariant docs * fix: ERC165 implementation * test: improve superc20 invariant (#11) * fix: gas snapshot --------- Co-authored-by: 0xng <[email protected]> Co-authored-by: Disco <[email protected]> * op-node: Fix p2p data races (#11353) * Fix data races around p2p records Fixes https://github.com/ethereum-optimism/optimism/issues/11328 * Remove some constructor boilerplate * Add data race fixes for op-node/p2p tests * Include book locking for record deletion * Add missing read locks * Move locks into wrappers * Remove ping service trace parameter from public API * I came in search of data races and I found refactors * op-challenger: Fix run-trace disputed block selection (#11437) * op-challenger: Fix run-trace disputed block selection Previously it assumed the safe head at SafeL1 was before the safe head at HeadL1 in the sync status, but that is not guaranteed. As a result it could select an L2 block to check that was unsafe at the specified L1 head. * op-challenger: Update vm-runner to handle the case where op-node hasn't processed all finalized L1 blocks yet * contracts-bedrock: migrate interop portal to fp (#11051) * contracts-bedrock: migrate interop portal to fp Utilize fault proofs in the interop portal. This is useful for removing the `L2OutputOracle` from the codebase. We will need to deploy the interop devnet using the permissioned dispute game after this change, so we want to ensure that the deploy script can set that up easily. * ctb: migrate interop to fp portal * snapshots: regenerate * lint: fix * contracts-bedrock: always enable fault proofs with interop * interop: support fault proofs * deploy script: only deploy correct contracts * contracts-bedrock: cleanup deploy * contracts-bedrock: fix deploy The deploy script is very coupled to unit tests * portal2: reduce codesize * lint: fix * snapshots: update * snapshots: update * semver-lock: regenerate * deploy script: update * tests: update excludes * summary: update * op-wheel: harden against missing safe/finalized heads (#11460) * op-bedrock: Add detail to the documentation to clarify any confusion. (#11457) * Add detail to the documentation to clarify any confusion. * fix format * op-chain-ops: artifacts FS, improve artifacts metadata (#11445) * op-chain-ops: artifacts FS, improve artifacts metadata * ci: include artifacts as Go e2e test pre-requisite * op-chain-ops: move full artifacts test, update testdata * ci: fix artifacts workspace copy * op-node: remove MaxSequencerDrift hardcode (#11459) * go: update superchain import * op-node: read MaxSequencerDrift from superchain configs * go: update superchain import to point to main commit * op-chain-ops/script: turn any Go struct/interface into a precompile with ABI encoding/decoding (#11444) * op-chain-ops/script: turn any Go struct/interface into a precompile with ABI encoding/decoding * op-chain-ops: add more comments about precompile auto ABI code * op-service: capture inherited log attributes (#11470) * op-service: capture inherited log attributes * op-service/testlog: reverse Attrs traversal order * devnet: enable span batches and use blobs for non-plasma (#11477) * op-node,op-batcher: implement span channel out block count limit (#11416) * op-node: implement span channel out block count limit * op-batcher: add max-blocks-per-span-batch flag * op-e2e: test MaxBlocksPerSpanBatch in system test * op-e2e: use span batches in 4844 test * address Axel's review * Update README.md (#11474) Corrected a typo in the sentence: "`op-geth` embeds upstream geth’s version inside its own version..." * feat: update Sepolia Drippie config to latest (#10810) * fix: makefile build command (#11466) Build command inside of the root-level makefile was calling build-ts which no longer exists. Adds a new command to build contracts-bedrock and replaces that inside of the root build command. * op-node: attempt recovery from odd forkchoice states (#11462) * op-node: attempt recovery from odd forkchoice states * op-node: adjust recovery heuristic to express distance in number of sequence windows * op-e2e: Disable proposer in dispute game tests (#11431) The games being tested are created manually and the automated proposals at best waste time and can interfere with tsts like TestHighestActedL1BlockMetric which expects the challenger to acton all games. * deploy-config: Update OP Sepolia absolute prestate (#11394) * txmgr: add rpc api getters/setters (#10897) * Add txmgr rpc api * Update mock TxManager * Use parameterized tests to remove redundant code * Add txmgr.cfgLock to protect values configurable at runtime * txmgr: use generic API() method on interface to allow custom rpc apis * txmgr: re-generate mocks * txmgr: use atomics for Config vals that can be modified via rpc * txmgr: use pointer for SimpleTxManager.cfg * txmgr: remove extraneous code * txmgr: cleanup ctx input arg in rpc methods * Feature/rv compute (#11015) * Add dummy tests for passing and failing * Updating passing along return errors and a duplicate call to clean_docker * Fixing logging * Update to latest kontrol version supporting error codes * Remove trap for testing * Add install-kontrol and run local with enforced version requiresments * Drop on failure trap and test * The cleanup steps may be altering the return results. We're not running docker, not needed here * Test with traps re-added after finding issue was with using find * Formatting, now test with passing test * Update run-kontrol.sh Revert debug set to original header * Increase CPU workers to 16 for kaas runners * Update config.yml * Remove dummy proofs * run-kontrol.sh: set `max_workers` to 16 * run-kontrol.sh: execute all tests with `script` option * run-kontrol.sh: match tests more precisely * run-kontrol.sh: add back `break_every_step` variable * versions.json: bump Kontrol from 0.1.247 to 0.1.258 * IGnore vscode configuration files * Move on regardless of docker removal, container is started with automatic removal on stop, we just want to make sure it happens for redundancy * Extract content of Results to upload to kaas * Call into RV Workflow to run symbolic tests * Updating circleCI to latest credentials setup/secret references. Set context to proper env. Remove unused inputs * Reverting unecessary change * Add RV context * Removing comma from end of json block * Set the specific branch name to run on, do not assume develop. * Temporary when conditional to always run * Revert test when conditional * Supress extraction of outputs * Accept Suggestion for comment line in packages/contracts-bedrock/test/kontrol/scripts/run-kontrol.sh Co-authored-by: Matt Solomon <[email protected]> * Supress tar file creation output * Dropping -verbose in tar command. Reduce output on exeutions * run-kontrol.sh: Update Temporarily unexecuted tests list * run-kontrol.sh: Update Temporarily unexecuted tests list v2 * Update documentation noting changes / usage / flow / secrets for utilizing kaas * run-kontrol.sh: Fetch the xml file if it exists from the build env and make available for posting to summary * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * kontrol/README.md: Update instructions for clarity and usage * .github/workflows: Adding a new workflow to trigger on updates to depoloyment_status from third party * Force push to test * Remove if check for environment. * status-test: This looks like the wrong trigger * Update slack notification workflow with template * proof-runner-notification.yml: Slack notifications on failure, and webhook URL * Replace Link with provided target_url from commit status * Update payload variables per slack workflow variable requirements. --------- Co-authored-by: Juan C <[email protected]> Co-authored-by: Matt Solomon <[email protected]> * repo: rename plasma --> altDA (#11370) * update superchain-registry import * replace all plasma with altda * replace plasma with altda in filenames * contracts: update snapshots * go: update superchain import * go: update superchain import after rebase * go: run mod tidy * op-batcher: fix altda env vars passed in devnet docker-compose * go: update superchain import * go: use main commit for superchain import * ci: remove proof runner workflow (#11486) The 'on: status' trigger is too broad and causes this job to trigger for all commits. Instead KaaS (Kontrol as a Service) will post the resulting status to slack directly, instead of through github * Added Stop API in the conductor (#11463) * add stop api in the conductor * add tests * fix test cases * fix conductor stop api test * re-trigger ci tests * op-chain-ops/script: ConsolePrecompile with console2 ABI (#11446) v2 * op-challenger: Extract RegistrationTask to dedeuplicate registration code between different game types. (#11413) * feat: add cgo_test tags to fuzz tests (#11489) * getting-started: modernize (#11436) Make the getting started script modern by adding recent hardfork config and also make the script runnable from any directory. * op-e2e: Add forge clean to README.md troubleshooting section (#11471) * op-e2e: Add forge clean to README.md troubleshooting section * Update op-e2e/README.md Co-authored-by: Matt Solomon <[email protected]> --------- Co-authored-by: Matt Solomon <[email protected]> * fix run-kontrol.sh path (#11495) * Prevent reiniting preimage uploads. (#190) * fix: require minimum split depth of 2 FDGs with a split depth below 2 can trigger bugs in clock extension. Since we don't expect to have a split depth anywhere near 0 or 1 this is a low impact bug and doesn't have an impact on production but should be prevented anyway. * fix: correct check for max game depth Modifies the FDG constructor to correctly check that the splitDepth +1 is gte the max game depth. Means that the splitDepth is now limited to be 1 smaller than it was before. Fine in prod but avoids a bug in the trace ancestor lookup logic. * fix: have MIPS revert on add/sub overflow/underflow (#230) Updates MIPSInstructions so that it correctly reverts on calls to add, addi, and sub that overflow/underflow. Additionally includes tests that demonstrates that the unchecked versions of the same opcodes allow for overflow/underflow. * fix: correct implementation of srav (#245) Existing implementation of SRAV had a bug where it would perform a shift with all bytes of the rs register when the spec says it should only be using the lower 5 bits of the register. Updates the implementation to reflect this, updates the existing test to use the same test vector as provided in the open mips tests, and adds fuzz tests that shows srav works as expected with rs values that have more than the lower 5 bits set. * fix: have DelayedWETH use call instead of transfer (#228) Updates DelayedWETH to use call instead of transfer because transfer only sends along 2300 gas which will cause the transfer to fail if the owner contract uses lots of gas in the fallback function. Adds tests that demonstrate that the function now works appropriately under any reasonable amount of gas usage. In theory this means the recovery function can be reentered but this isn't an issue because the function is authenticated and is recovering all of the ETH in the contract anyway. * fix: make state.exited be zero or one (#246) Modifies the MIPS contracts to enforce that state.exited is either exactly zero or one and cannot have any other value. * fix: have mips step check register offset instead of overwrite (#238) Existing step logic wrote the register offset into memory but the compiler should already be doing this when the struct is defined. Instead of writing directly into memory, this change verifies that the memory at that location has the expected value which will catch any cases where the compiler's memory allocation mechanism changes in the future. * Add gas input to precompile pre-images (#186) (#252) * contracts: Add gas input to precompile pre-images (#186) Also update the cannon evm tests to use the new precompile preimage scheme. --------- Co-authored-by: Adrian Sutton <[email protected]> * op-challenger: Support uploading data in new format. (#188) * op-program: Add required gas to precompile oracle key (#176) * op-challenger: Support multiple versions of the preimage oracle contract --------- Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: inphi <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: correctly verify mips instruction encoding (#237) A lot of instructions in the MIPS spec require that certain fields be set to zero. Most of the time this isn't actually a problem but this can cause side-effects in a few cases. A buggy compiler could create an issue if it ever spit out non-compliant instructions. This PR implements those zero value enforcement checks for all instructions that we implement. * fix: localdata size check (#271) * Prevent reiniting preimage uploads. (#190) * fix(ctb): PreimageOracle `loadLocalData` length check * fixes * fix: bump preimage oracle semver * chore: snapshots * fix: gas snapshot * revert: gas snapshot changes --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: clabby <[email protected]> * fix(ctb): Perform correct clock validation in FDG constructor (#231) * Prevent reiniting preimage uploads. (#190) * fix(ctb): Perform correct clock validation in FDG constructor Fixes the clock extension / max clock duration check in the `FaultDisputeGame` constructor to account for the worst-case clock extension. * fix: add semver-lock * fix: add kontrol * gas snapshot * fix: gas snapshot and semver-lock --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: refcell <[email protected]> * fix: no squeezing unfinalized proposals (#257) * fix: no squeezing unfinalized proposals Updates the PreimageOracle to correctly revert if a proposal has not actually been finalized. This fixes a bug because the timestamp is not set until after a proposal is finalized but all other conditions in the squeeze function are met even before addLeaves is called with the finalize boolean set. * fix: ci checks * fix: semver lock --------- Co-authored-by: refcell <[email protected]> * fix: Choose min block in FDG local inputs * fix: correct clock extension for step (#258) When the FDG is about to execute a step, we must add an additional clock extension equal to the PreimageOracle challenge period. This gives the PreimageOracle time to elapse. * op-e2e: Fix preimage upload to use new ABI. (#274) * fix(ci): `fp-staging` ci fix (#278) * Revert "fix: have MIPS revert on add/sub overflow/underflow (#230)" (#279) This reverts commit 864e59a821e87f9dd00ae97f85add93fa3857597. * Revert "fix: correctly verify mips instruction encoding (#237)" (#281) This reverts commit 59e02fb3ece7fc249223054944a0b1ff437aa64f. * cannon: Limit mmap allocations (#285) * cannon: Basic memory protections Add memory protections against high memory allocations to the VM. This prevents large allocations from causing the `heap` to overflow and wrap into low memory, which could overwrite code and cause arbitrary code execution. --------- Co-authored-by: inphi <[email protected]> * Add e2e test for starting trace extension one block too late (#268) * feat: create deploy script for fp updates (#292) Creates a deploy script to deploy the implementations for the FaultDisputeGame and PermissionedDisputeGame contracts being updated as part of Granite. Based on the original FPACOPS script with modifications to remove actions that are not necessary for an upgrade. * fix(ctb): Set Anchor State (#280) Allow the `DeputyGuardian` to set the Anchor State for brick prevention. --------- Co-authored-by: clabby <[email protected]> Co-authored-by: refcell <[email protected]> * feat: contract versions for fp fixes (#295) * fix: use existing ASR for FPACOPS2 (#297) FPACOPS2 deployed a new AnchorStateRegistry proxy when the actual script needed to just deploy a new implementation. * op-chain-ops: Go forge scripts runner (#11447) * op-chain-ops: Go forge scripts runner * fix lint * op-chain-ops: encapsulate forge script tests in testdata * op-proposer: ensure uniform proposal interval across restarts (#11417) * op-proposer: ensure uniform proposal interval across restarts closes https://github.com/ethereum-optimism/optimism/issues/11193 * move DGF query logic into FetchDGFOutput * merge loopL2OO and loopDGF * tweak comments * Apply suggestions from code review Co-authored-by: Sebastian Stammler <[email protected]> * return err instead of defaulting to sending a proposak flatten out control flow, remove shouldPropose var * defer l.Log.Info("loop returning") * improve error handling and logging * fix logging syntax error * make DGFContract interface harmonize how network contexts are constructed * modify test for new DGF behavior * fix bugs in test code * remove OutputRetryInterval flag * handle gameCount = 0 * finish removing OutputRetryInterval * driver waits one proposal interval for the first ever proposal * do not create mock unecessarily * do not create mockL2OOContract unecessarily * wrap and return errors instead of logging and returning * op-proposer: Switch to modern binding style for dispute game factory (#11472) --------- Co-authored-by: Sebastian Stammler <[email protected]> Co-authored-by: Adrian Sutton <[email protected]> * Add Base cantina/spearbit audits * Update op-geth dependency to 1.14.8 base (#11494) * Update op-geth dependency to 1.14.8 base * go.mod: update op-geth to v1.101408.0-rc.1 --------- Co-authored-by: protolambda <[email protected]> * op-chain-ops: automatic ABI bindings from Go struct (#11497) * op-node: cleanup driver, closer to removing stepping (#11464) * op-node: cleanup driver, closer to removing stepping * op-node: add comment about event Drain error * op-node: fix lint * op-node: handle drain errors * fix: wrong MaxSequencerDrift comment (#11505) * feat: ensure proper closing of gzip and file writers/readers to prevent resource leaks (#11475) * add gzipCloser struct * add Close method * fix OpenDecompressed func * fix CompressByFileType func * knit * Apply suggestions from code review close both even if one fails Co-authored-by: Adrian Sutton <[email protected]> * fix WriteCloser Close method * fix name for more general * fix writercloser name for more geneeral * add construction function for WrappedCloser * using construction func * seperate wrapped closer struct to wrapped_closer.go --------- Co-authored-by: Adrian Sutton <[email protected]> * add regression test (#11519) * refactor: using slices.Contains (#11521) * Change to `latest` in getting started config (#11524) * feat: add fork activation based on env variables - getting started script update (#11500) * feat: add configurable fork times for each update * remove granite for now * add granite if env var is defined * add granite if env var is defined * fix if else * fix if else * add debug step * fix l2name * remove debug step * dependabot(gomod): bump github.com/prometheus/client_golang (#11483) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.19.1 to 1.20.0. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.19.1...v1.20.0) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Interop: Add new role for dependency set management (#11407) * add role based auth for dependency related setters with tests * support systemConfig initialize, rename foundation multisig to dependency manager * use dependency manager role only, update SystemConfigInterop and Specs tests * rebase to current develop head, run pre-pr script * use constant hash with comments over computing at compile time, update semver-lock * use dependencyManager() fn internally, import directly not indirectly in SystemConfigInterop * op-chain-ops: forge script cheatcodes (#11465) * op-chain-ops: forge script cheatcodes, work in progress incl prank cheatcodes incl env var handling incl serialize utils incl some json/toml utils incl go.mod: tidy * op-chain-ops: fix state dumping * op-chain-ops: remove debug print line * txmgr: rename Get|SetPriorityFee to Get|SetMinPriorityFee (#11526) * txmgr: add tx-type metric (#11523) * ctb: `rc` version FP contracts (#11525) * ctb: `rc` version FP contracts * bump deputy guardian module * Add missing GOMODCACHE caching when building op-stack-go services (#11512) * chore: clarify contracts release process (#11529) * chore: clarify contracts release process * Update packages/contracts-bedrock/VERSIONING.md Co-authored-by: Inphi <[email protected]> --------- Co-authored-by: Inphi <[email protected]> * Add optimistic Granite mainnet activation (#11531) * use copy of config.L1Deployments (#11532) * fix: slice init len (#11520) * Upgrade bbolt via raft (#11507) * deploy-config: Update mainnet prestate for granite HF (#11533) * Add Interop Start timestamp to CrossL2Inbox (#11398) * add interop start timestamp to CrossL2Inbox with tests * change to function, add assertions, update tests * correct the preimage of interop start storage slot * rename custome error * require id timestamp must be > interopStartTime not >=, update tests to use realistic interopStartTime (non-zero) * bump CrossL2Inbox semver, run just semver-lock & just snapshots * add natspec for setInteropStart * update semver lock * dependabot(gomod): bump github.com/prometheus/client_golang (#11540) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.0 to 1.20.1. - [Release notes](https://github.com/prometheus/client_golang/releases) …
…mission (#1) * make an rpc server an into a cliapp service (#11197) * Add buffered caching of L1 block refs to the confDepth-aware fetcher (#11142) * Add buffered caching of L1 block refs to the confDepth-aware fetcher * Refactor l1 head buffer into helper structs * Fix linting errors * Move L1 block caching from confDepth into an event-driven L1Tracker * Fix l1HeadBuffer locking * Better handle non-shallow reorgs * Improve test naming * Explicitly rewind cache when old head received * op-conductor: Adds connection test to conductor addServer* apis (#11210) * op-e2e: use util for RPC dial, and ensure op-node is on localhost RPC (#11209) * dependabot(npm): bump typedoc from 0.25.7 to 0.26.5 (#11216) Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.25.7 to 0.26.5. - [Release notes](https://github.com/TypeStrong/TypeDoc/releases) - [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.25.7...v0.26.5) --- updated-dependencies: - dependency-name: typedoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump eslint-plugin-jsdoc from 48.7.0 to 48.8.3 (#11213) Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 48.7.0 to 48.8.3. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v48.7.0...v48.8.3) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump mocha from 10.6.0 to 10.7.0 (#11214) Bumps [mocha](https://github.com/mochajs/mocha) from 10.6.0 to 10.7.0. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.6.0...v10.7.0) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump typescript from 5.5.3 to 5.5.4 (#11215) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.3...v5.5.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development 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> * dependabot(npm): bump @types/node from 20.11.17 to 20.14.12 (#11220) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.11.17 to 20.14.12. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * contracts-bedrock: speed up ci (#11203) Tests for `contracts-bedrock` should no longer depend on the JS monorepo. This should speed up the tests by removing a step that blocks it from running. * Update README.md (#11222) Update README * deps: remove ts-mocha (#11202) `ts-mocha` appears to be unused so this commit removes it * deps: remove wait-on (#11201) The `wait-on` dep is not used anywhere in the monorepo, so this commit removes it. The following command only shows the `package.json` and lockfile: ```bash git grep -rin wait-on ``` We should remove all unused deps * op-node: set genesis l1 start block to value from SystemConfig contract (#11181) * set genesis l1 start block to value from SystemConfig * always retrieve genesis l1StartBlock from SystemConfig.startBlock() * use contract-bedrock abi instead of large bindings file * fix startBlock contract call * use single func call instead of importing full SystemConfig abi * use vars instead of hardcoded flag strings * Fix CONTRIBUTING.md (#11224) * cannon: fix fuzz test script (#11226) * op-node: Extract contract binding for SystemConfig (#11227) * deps: remove depcheck (#11230) Remove another unused dependency. `depcheck` was previously used when the monorepo had active typescript development in it. Right now it has not typescript development in it and is no longer used as part of CI. We should remove every dependency that is not used. * op-dispute-mon: fix the path and add example (#11233) * fix the path and add example * Update README.md * Update README.md * avoid passing factory address (#11236) * op-service: use binary search instead of walkback for checkRecentTxs (#11232) * use binary search instead of walkback for checkRecentTxs * account for multiple txs from same sender in same block * use recursion if reorg detected * limit condition to return false * Delete chain-mon in favor of monitorism (#11239) * Delete chain-mon * Delete chain-mon from other places. --------- Co-authored-by: Kevin Kz <[email protected]> * dependabot(gomod): bump github.com/onsi/gomega from 1.31.1 to 1.34.0 (#11242) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.31.1 to 1.34.0. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.31.1...v1.34.0) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump github.com/urfave/cli/v2 from 2.27.1 to 2.27.3 (#11243) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.27.1 to 2.27.3. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.27.1...v2.27.3) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 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> * docs(typo): README.md, pausability-lemmas.md (#11241) * chore: add `help` target to Makefile to display the usage of all targets (#11221) Co-authored-by: Mark Tyneway <[email protected]> * op-node: genesis generation (#11249) Better logging in the genesis generation when creating L2 genesis. Using the `startBlock()` method depends on the L1 contracts being initialized. * [op-dispute-mon] Track the latest proposed L2 block number from games w/ a valid root claim (#11238) We'd like to know the latest valid block number associated with a valid dispute game. This would be the equivalent of getting the latest block number from `L2OutputOracle` in pre-FDG. We could look into the `AnchorStateRegistry`, but this does not give us quick enough feedback to know if we are keeping up with "proposing" correct root hashes for the most recent L2 blocks, as dispute games resolves approximately 3.5 days (assuming happy path). There can be many dispute games at any given time, and they may be valid or invalid. This metric captures only valid block numbers from dispute games that we "agree" with. * deps: remove more deps (#11250) Removes more dead deps from the monorepo that are no longer used. Every dep is a liability. We should only have deps that we actively use. Soon we will be able to remove all JS from the monorepo, removing all of these deps. * deps: remove more js deps (#11254) This commit removes more js deps. We are very close to removing all js from the monorepo. We should only have deps in our codebase that we actively use. Otherwise its a security liability. * Update Kontrol Proofs (`0.1.247` to `0.1.316`) (#10953) * Remove `Kontrol-Deploy.json` * Remove `DeploymentSummaryFaultProofs` contracts * Revert "Remove `DeploymentSummaryFaultProofs` contracts" This reverts commit 192ac49acc76f98476caef40fa7af6bfb527282d. * pausability-lemmas.md: update `copy-memory-to-memory` rule * KontrolDeployment: add full deployment logic * DeploymentSummary: sync with full deployment logic * DeploymentSummaryFaultProofs: sync with full deployment logic * Bump Kontrol from `0.1.247` to `0.1.313` * run-kontrol.sh: update `kontrol prove` options * make-sumary-deployment.sh: remove logic manipulating `Deploy.s.sol` * Track `snapshots/state-diff/Kontrol-31337.json` * `kontrol/README.md`: update * OptimismPortalKontrol: remove `encodeWithSelector` from `expectRevert` * run-kontrol.sh: set booster max recursion limit to `100` * Kontrol-31337.json: update with non-fault-proofs deployment * package.json: change order of evaluation for `snapshots` job Both `pnpm kontrol-summary-fp` and `pnpm kontrol-summary` save the state updates to `snapshots/state-diff/Kontrol-31337.json`. In order to correctly test the non-fault-proof deployment setting `pnpm kontrol-summary` has to be run last. * Bump Kontrol from `0.1.313` to `0.1.316` * Update `DeploymentSummaryFaultProofs` * ops-bedrock: Beacon-chain devnet with Dencun + Ecotone upgrade (#9117) * ops-bedrock: beacon-chain devnet with fork to L1 Dencun and L2 Ecotone ops-bedrock: clean up file names, drop unused stateviz ops-bedrock: dockerfile for lighthouse from source ops-bedrock: devnet validator keystores ops-bedrock: dev chain config generate genesis.ssz, work in progress devnet setup lighthouse CLI tweaks ops-bedrock: more CLI tweaks devnet: fix validator keys loading ops-bedrock: cleanup L1 geth setup and jwt-secret usage ops-bedrock: fix L1 engine API endpoint op-chain-ops: insert dev L1 contracts devnet fixes more fixes schedule L2 Delta and Ecotone forks op-chain-ops: fix lint ops-bedrock: docker-compose config comments about special options ops-bedrock: adjust beacon node log level Co-authored-by: Sebastian Stammler <[email protected]> * devnet: Add eth2-testnet-genesis installation step * op-e2e: fix pre-Ecotone tests * ops-bedrock: Fix entrypoint scripts * op-e2e: Fix TestPreEcotone * op-e2e: Fix hardfork validation tests * op-e2e: Enable L1 Cancun at genesis for Ecotone system configs * ci: use eth2-testnet-genesis tag v0.10.0 * op-e2e: use <fork>SystemConfig instead of manipulating fields * op-e2e/actions: process beacon block root for Cancun L1s * op-e2e/actions: fix TestBlockTimeBatchType * op-e2e: add beacon endpoint to L1 setup * op-e2e/actions: fix more tests... * op-e2e/actions: fix manual setting of delta offset * op-e2e/actions: set blob source in plasma tests * devnet: sleep at start of tests * ops-bedrock: remove fetch-all-sidecars for l1 lh from docker-compose * op-e2e: fix Makefile go test flags * op-chain-ops: Add 4788 deployer address to L1 genesis creation * op-e2e: remove outdated TODO code * ci: read eth2-testnet-genesis version from json * fix l1 genesis & cci config * rename beacon-data/deposit_contract_block.txt * cci: dump l1-bn and l1-vs logs * few improvements * Move to op-e2e devnet withdrawals test * set l1 block time to 6s in devnet template * fix game resolve helper, to handle resolve race condition * lower da windows * devnet: bump plasma windows to 16 * fix: adjust plasma test params for smaller challenge window sizes * bump lighthouse, remove src Dockerfile * revert devnet python script commenting out the test isn't run from this script any more anyways that was just temporary while debugging * remove deprecated options ligthouse deprecated http-allow-sync-stalled docker-compose deprecated the version tag * retry start block fetching in L2 genesis cmd * add CL to devnet L1 startup step * ignore receipt for resolveClaim call in FinalizeWithdrawal * forward tx trace as custom error type, use in withdrawal test * return receipt in SendTx --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: tchardin <[email protected]> * cannon: delete unnecessary part in makefile (#11194) * add dependence check in makefile * Update Makefile * Update Makefile * docs(typo): `CrossL2Inbox.sol` (#11125) * docs(typo): `CrossL2Inbox.sol` `if{"f" => ""}` * docs(crossL2Inbox): sync semver-lock * monorepo: remove `devnet-tasks` (#11257) Now `make devnet-test` runs go based devnet tests rather than the legacy hardhat based ones. ```make devnet-test: pre-devnet ## Runs tests on the local devnet make -C op-e2e test-devnet ``` This removes `devnet-tasks` from the monorepo, allowing us to delete many dead dependencies. * .github: remove old mergify config (#11258) * remove changeset (#11259) * feat(cross-l2-inbox): add CrossL2Inbox to predeploy addresses and abi_loader (#11267) * dependabot(gomod): bump github.com/holiman/uint256 from 1.3.0 to 1.3.1 (#11268) Bumps [github.com/holiman/uint256](https://github.com/holiman/uint256) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/holiman/uint256/releases) - [Commits](https://github.com/holiman/uint256/compare/v1.3.0...v1.3.1) --- updated-dependencies: - dependency-name: github.com/holiman/uint256 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> * cannon: add test dependence in Makefile (#11264) * add test dependence in Makefile * Update cannon/Makefile Co-authored-by: mbaxter <[email protected]> --------- Co-authored-by: mbaxter <[email protected]> * op-chain-ops: remove dead code (#11261) This code was used as part of the migration from the legacy system to bedrock for op mainnet. It is no longer needed and exists in the optimism-legacy repo if it is needed. The state transition that represented the migration to bedrock can be reproduced using the optimism legacy repo. Since this code is no longer used, we can delete it here. * MIPS2.sol MT-FPVM Implementation (#11036) * cannon: MIPS2 MT-FPVM contract Add a smart contract implementing the multi-threaded Cannon * Update packages/contracts-bedrock/src/cannon/libraries/MIPSSyscalls.sol Co-authored-by: mbaxter <[email protected]> * cannon: Use common constant for BRK_START * cannon: Define new constant FUTEX_EMPTY_ADDR * cannon: Add SYS_ERROR_SIGNAL constant, fix futex wait ret val * dedup syscall handling; rename timeout * fix sys_clone bug * use handler functions in onWaitComplete * fix nits * fix ETIMEDOUT constant * remove leftover console import * traverse right if left is empty on futex_wake syscall * Update packages/contracts-bedrock/test/cannon/MIPS2.t.sol Co-authored-by: mbaxter <[email protected]> * fix traverseRight updates at popThread * exit syscall is exit_group if last thread * simplify wakeup logic; traverse fully before any other operation * remove dup logic for wakeup traversal end * fuzz thread.exited in wakeup tests * update semver-lock; abi snapshots * implement unused syscalls * rebase; fix clone args * update semver-lock * handle munmap * add comment on unimplemented syscalls * add mising snapshots --------- Co-authored-by: mbaxter <[email protected]> * cleanup: rm more js (#11260) * deps: pull js together Puts all js in the single package where it is used * deps: move linting config * nx: remove config * changesets: remove * npmignore: remove * npmrc: remove workspace * ci: cleanup * check-changed: remove nx dep * build: attempt fix * ci: cleanup * cannon: Fix exitCode for invalid cloneargs in MIPS2 contract (#11275) * mt-cannon: Implement mips logic (#11188) * cannon: Copy over singlethreaded impls as a starting point * cannon: Update mips property access to work with MTState * cannon: Add new syscall constants * mt-cannon: Implement clone syscall * mt-cannon: Implement remaining new syscalls * mt-cannon: Implement thread traversal changes to mipsStep() * mt-cannon: Add logger, log when max steps reached * mt-cannon: Implement onWaitComplete() * mt-cannon: Implement thread manipulation methods Also, use slices of pointers for the thread stacks * mt-cannon: Move thread traversal fns to mips.go * mt-cannon: Fix issue where wakeup traversal never stops * mt-cannon: Fix issue where we can end up popping an empty stack * mt-cannon: Move thread definitions to new thread.go file * cannon: Add compile-time type checks for FPVM(State) impls * mt-cannon: Add new threaded StackTracker * mt-cannon: Update proof generation to include thread proof * mt-cannon: Move FPVM compile-time type check * cannon: Run common vm tests across all FPVM impls * cannon: Cut OpenMIPS clone test * cannon: Cleanup - fix some discrepancies, clarify constant * cannon: Disable mem profiling in op-program instead of patch.go * cannon: Consolidate calls to program.PatchGo * cannon: Disable program.PatchGo in MTCannon tests * mt-cannon: Add multithreaded program test * cannon: Only run sleep check for single-threaded cannon * op-program: Update profiling before dependency init fns are called * mt-cannon: Track stack on thread clone, handled popped threads * mt-cannon: Panic if unrecognized syscall is executed * mt-cannon: Panic if unexpected flags are passed to SysClone * mt-cannon: Add some tests for EncodeThreadProof() * mt-cannon: Add some more tests around threadProof edge cases * mt-cannon: Minimize logging * cannon: Update go version in cannon/example/multithreaded/go.mod Co-authored-by: Inphi <[email protected]> * mt-cannon: Rework clone behavior based on feedback * mt-cannon: Rework wakeup logic * mt-cannon: Cleanup - simplify clone, refine logging * Revert "cannon: Cut OpenMIPS clone test" This reverts commit d876d6a44ffc01672a019d5b2411e7d3eab08439. * mt-cannon: Skip open-mips clone test add todos * mt-cannon: Handle munmap syscall * mt-cannon: Exit if the last thread exits * cannon: Clarify skip comment * cannon: Add some todos * cannon: Add guard around logging --------- Co-authored-by: Inphi <[email protected]> * contracts-bedrock docker fix (#11278) * contracts-bedrock docker fix * lockfile update for pnpm workspace * op-chain-ops: Organize deploy-config, improve check-logging (#11189) * op-chain-ops: Organize deploy-config, improve check-logging * op-chain-ops: fix DAChallengeProxy check * op-chain-ops: add godocs * dependabot(gomod): bump github.com/onsi/gomega from 1.34.0 to 1.34.1 (#11279) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.34.0 to 1.34.1. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.34.0...v1.34.1) --- updated-dependencies: - dependency-name: github.com/onsi/gomega 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> * feat(opsm): scaffold OP Stack Manager and tests (#11274) * init scaffolding of OPSM contract and tests * add chainIdToBatchInboxAddress * chore: address semgrep findings * test: add auth spec * update functions sig, semver lock, snapshots * semver lock update after installing correct foundry version * udpates based on style guide * snapshots * op-program: delete redundant code (#11263) * delete redundant code * delete * op-challenger: fix the wrong variable name and some additional fix (#11179) * fix from differential-testing * fix from L2Genesis * fix variable name * Update metrics.go * docs: broken links in op-preimage (#11296) * cannon: Fix onchain clone flags (#11293) * cannon: Fix onchain clone flags * cannon: Bump contract versions * cannon: Run pre-commit * op-node/derive: linter fix (#11265) * linter fix * use sentinel error * fix format * op-challenger: Add subcommand to continuously run trace providers (#11294) * op-challenger: Add subcommand to continuously run trace providers * op-challenger: Remove duplicate invalid recording. * ops: fix build (#11299) * ops: fix build Migrates to a different `pnpm build` command that broke as part of removing JS from the monorepo. * ops: use frozen lockfile * reduce scope of `expandedOwners` (#11301) * fix comment (#11303) * op-batcher: Add dynamic blob/calldata selection (#11219) * op-batcher: Implement dynamic blob/calldata selection * op-batcher: Improve logging in dynamic eth-da channel config * op-batcher: Rename field ChannelConfig.MultiFrameTx to UseBlobs * op-e2e: Add Batcher AutoDA test * lint * contracts-bedrock: fix `SentMessage` event (#11305) * contracts-bedrock: fix `SentMessage` event The bytecode emitted from `SentMessage(bytes) anonymous` abi encoded the `relayMessage` call, breaking the ability to put calldata directly into the event data. This uses yul to not abi encode the log as `bytes` and instead place the calldata directly into the event data. The fact that there is no abi decoding done in the test shows that this is correct. Previously the abi decoding done in the test was not correct, we want the exact data in the log to be the calldata. * snapshots: update * semver-lock: regenerate * feat: introduce SuperchainWETH and ETHLiquidity (#11042) Introduces the SuperchainWETH and ETHLiquidity contracts. More information about these contracts can be found in the OP Stack Specs repository. * contracts-bedrock: fix CrossL2Inbox (#11320) * contracts-bedrock: fix cross l2 inbox Updates the `CrossL2Inbox` per the latest specs proposal in https://github.com/ethereum-optimism/specs/pull/254 This reduces the cost of sending cross chain messages by emitting the message hash as part of the event rather than the full message itself. * semver-lock: fix * contracts-bedrock: port custom gas token to portal2 (#10780) * contracts-bedrock: port custom gas token to portal2 Ports the custom gas token feature to `OptimismPortal2`. This will enable fault proofs to run on custom gas token chains. * lint: fix * tests: update * tests: update * Add task to capture a section of sepolia running fjord for compatibility tests. (#11326) * Cannon: optimize the example (#11302) * optimize the example Use better-suited examples and make sure to add the required flag L2outputroot. * fix path * update * replace network * update comment * op-node: optimize case to handle proposer requests (#11262) * op-node: optimize case to handle proposer requests * op-e2e: modify withdrawals test to trigger BlockRefWithStatus finalized hot-path * fix(ci-builder-foundry-bump): Updating ci-builder. (#11325) * Snapshots go scripts (#11338) * contracts-bedrock: Go version of generate-invariant-docs * contracts-bedrock: Go version of generate-snapshots * devnet: Update expired docs link (#11329) * delete expired docs link * use the official doc * doc: update style guide (#11290) * doc: update style guide * apply suggestion from code review Co-authored-by: Maurelian <[email protected]> * Update packages/contracts-bedrock/STYLE_GUIDE.md --------- Co-authored-by: Maurelian <[email protected]> * Add Granite and Holocene fork references (#11339) * fix: set default forge gas limit (#11342) * chain-spec: Fix next fork (#11341) * fix: add missing assume condition (#11344) * contracts-bedrock: remove typescript (#11340) * contracts-bedrock: remove typescript Moves to using Go from typescript, new code is autogenerated by claude. Can confirm that both work as expected. The `check-test-names` is not running in CI, it fails for both the Go and Typescript scripts. Maybe claude will be able to get the script to pass. * Update check-spacers.go Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * Update packages/contracts-bedrock/scripts/checks/check-test-names.go Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * contracts-bedrock: fix build * scripts: rename * scripts: rename * scripts: fixes --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * Reduce ChannelTimeout to 50 in Granite (#11343) * Reduce ChannelTimeout to 50 in Granite * Capture granite genesis files. * Update snapshots. * Update op-geth dependency and resolve TODOs. * update op-geth dependency to rc.1 * fix TestGetRollupConfig --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: SuperchainWETH fuzz testing chain ID error (#11352) Minor fix to fuzz testing for SuperchainWETH and related contracts. Recipient chain ID cannot be the same as the sending chain ID. Contracts throw an error when this is the case, causing fuzz tests to fail. * Apply error variable lint in op-node/p2p (#11354) * op-chain-ops: remove etherscan package (#11345) The `etherscan` package isn't maintained or used in the monorepo, so it should be deleted. * fix op-geth dependency (#11356) * dependabot(gomod): bump golang.org/x/sync from 0.7.0 to 0.8.0 (#11358) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.7.0 to 0.8.0. - [Commits](https://github.com/golang/sync/compare/v0.7.0...v0.8.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump golang.org/x/time from 0.5.0 to 0.6.0 (#11357) Bumps [golang.org/x/time](https://github.com/golang/time) from 0.5.0 to 0.6.0. - [Commits](https://github.com/golang/time/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: golang.org/x/time dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: bump ci builder `0.50.0` (#11334) * ci: bump ci builder `0.50.0` Bumps the `ci-builder` image with an updated version of foundry. Foundry update: https://github.com/ethereum-optimism/optimism/pull/11325 Docker build: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/60263/workflows/154fd94a-4029-4e2f-8bce-4ea4c6d25897 * contracts-bedrock: fix tests after new foundry version * contracts-bedrock: comment why skip * test: better comments * gas-snapshot: regenerate * snapshots: update * snapshots: update * fix(ctb): Align expected ptr in `Bytes.slice` test An update to `forge-std` causes `bound` to set the free memory pointer at an unaligned offset. This commit updates the test such that the expected pointer is correctly aligned, without an assumption on the starting ptr's alignment. --------- Co-authored-by: clabby <[email protected]> * op-challenger: Modify run_trace to run a block prior to the safe head (#11349) * op-challenger: Add metric to report memory used in the cannon VM (#11350) * op-challenger: Add metric to report memory used in the cannon VM * op-challenger: Remove config override. * op-proposer: retry failed output proposals (#11291) * op-proposer: add retries to output proposal * op-proposer: proposeOutput returns err to help trigger retry * op-proposer: use retry.Do for FetchOutput, add unit tests * op-proposer: improve output fetching retry impl * op-proposer: move done signal check into inner loop --------- Co-authored-by: Sebastian Stammler <[email protected]> * op-challenger: Fix prestate loading for asterisc in run-trace (#11363) * feat(challenger): `AsteriscKona` trace type (#11140) * feat(challenger): `AsteriscKona` trace type Adds support for the new `asterisc-kona` game type in the `op-challenger` * feat: add `kona-host` `--l2-chain-id` flag * op-challenger: Separate oracle server executor (#11348) * fix(op-challenger): run trace cmd * fix(op-challenger): lints --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: refcell <[email protected]> * op-e2e: Fix GraniteSystemConfig (#11361) * update sepolia-devnet-0 deploy-config (#11371) * cannon: move example test programs into testdata directory to prevent Go tool noise (#11379) * op-node: abort block publishing if conductor commit fails (#11380) * Fix devnet-up when op-program/bin is missing prestate-proof.json (#11383) * contracts-bedrock: migrate to just (#11276) * contracts-bedrock: migrate to just Move away from `pnpm` for contracts scripts and towards `just`. `just` was made for this, since we are moving away from JS it makes no sense to keep `pnpm` around which is native to the JS ecosystem. * ci: install just * ops: cleanup, docs * ci: install just * justfile: update * ci: fix install * snapshots: update * contracts-bedrock: remove pnpm/node, cleanup dockerfile * slither ci: no longer need for workaround (TM) * ts-linting: remove * kontrol: regenerate snapshots * safecall: update test * test: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * readme: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Maurelian <[email protected]> * versions: use latest * ci: fix * CONTRIBUTING: update * ci: fix * lint: fix --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: Matt Solomon <[email protected]> Co-authored-by: Maurelian <[email protected]> * op-proposer, op-batcher: Wait for sync in Start rather than loop. (#11192) Ensures that if it fails, the process exits with an error, rather than just exiting the runloop and continuing on in a zombie mode that doesn't do anything but doesn't exit. * contracts-bedrock: improve `CrossL2Inbox` devex (#11322) * contracts-bedrock: improve `CrossL2Inbox` devex Improve the `CrossL2Inbox` devex by creating an alternative entrypoint. This design was not considered previously because there was a "top level call" restriction, aka the "only EOA" invariant. This was to allow for static analysis of transactions, keeping resource usage lower for validating transactions when building blocks or at the mempool layer. Since 3074/7702 render the enforcement of only eoa impossible, we decided to op/acc and lean into the approach of allowing subcalls to trigger `ExecutingMessage` events. This new interface allows another contract to be the entrypoint, the idea is that the user sends the `Identifier` and the serialized log (message) to whatever contract that they want and then pass it to `CrossL2Inbox.validateMessage` which then emits the event that consensus validates. This allows the calling smart contract to be aware of the schema for the log and deserialize it however they see fit. Since the serialized logs are done with the following algorithm: ```go msg := make([]byte, 0) for _, topic := range log.Topics { msg = append(msg, topic.Bytes()...) } msg = append(msg, log.Data...) ``` It is very easy to use `abi.decode` to decode a log, given that solidity was used to `emit` it. The topics are `bytes32` and then the data is abi encoded given the schema of the event itself. Unused parts like `topic[0]` (hash of the event name) can be dropped when decoding if they are not required. * ctb: fix typo * remove nonReentrant and add tests for validateMessage, rename ENTERED_SLOT preimage * add natspec for _checkIdentifier and update that of validateMessage * update version and semver-lock file * check all topics in crossl2inbox test, run pnpm snapshots * tests: fix --------- Co-authored-by: Michael Amadi <[email protected]> * Revert "Fix devnet-up when op-program/bin is missing prestate-proof.json (#11383)" (#11393) This reverts commit 2491a3732fe97c9eec9baf615a010e8f7a42f738. make cannon-prestate doesn't declare all transitive dependencies properly so can fail to build when there are changes. * devnet/e2e: run L1 Deneb and L2 Fjord by default (#11359) * devnet/e2e: run L1 Deneb and L2 Fjord by default * op-e2e: fix TestPostUnsafePayload * op-e2e: Fix TestGasPriceOracleFeeUpdates * op-e2e/actions: fix some tests The L2EngineAPI test needs more fixing * tests: fixes to support Ecotone/Fjord in more tests * op-e2e: one more fix --------- Co-authored-by: Sebastian Stammler <[email protected]> * feat(predeploys): add L2toL2CDM to predeploy addresses.go (#11403) * contracts-bedrock: debug tests (#11397) * contracts-bedrock: debug tests See why the tests are flaking and cannot be reproduced locally. Also modularize/cleanup CI along the way * typo: fix * debug: remove * just: update name * ci: better error help * ci: fix typo * contracts-bedrock: abstract * ci: run with foundry profile ci * ci: better solc warnings check (#11231) * ci: better solc warnings check Use `forge build --force` to force a build so that the warning check can be observed. CI should fail on this commit * contracts-bedrock: fix warnings Fix the failed solc build See the failed workflow here: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/59631/workflows/b93bc600-e772-4ba9-98ed-a0b6f48683c7/jobs/2512271 * foundry: add ignored error code * repo: migrate away from pnpm (#11395) Migrate to just from pnpm. This is continued tech debt cleanup away from `pnpm` and typescript that is no longer used. * Run cannon-prestate if devnet cannon prestate files are missing (#11399) * Fix devnet-up when op-program/bin is missing prestate-proof.json * Fix cannon-prestate to always run * Add prestate.json * ci: update geth tool to v1.14.7 (#11410) * ci: update geth tool to v1.14.7 * ci: temporarily disable L1 geth version check, so L1 geth can be updated * ops-bedrock: explicit hash state.scheme on geth * Add RV reviews (#11422) * Add RV reviews * Fix naming of trust audit to match convention * Update to Geth 1.14.7 (#11382) * chore: update to support geth v1.14.7 * Update geth * Fix "private key curve is not secp256k1" error * Temporarily quiet noisy logs * signature test * Add comments about S256 curve override fix * Update geth * go.mod: update to op-geth v1.101407.0-rc.1 * op-e2e: fix L1/L2 miner settings * Also update devnet L1 base image * ci: bump ci-builder in circleci --------- Co-authored-by: Danyal Prout <[email protected]> Co-authored-by: protolambda <[email protected]> Co-authored-by: Sebastian Stammler <[email protected]> * cannon: Undo changes to memprofile patching (#11420) * fix: update contracts README diagram (#11406) * fix(ctb): remove linked libraries from scripts and tests (#11426) * add additional address to exclude * chore: make public library methods internal * remove another public lib method * remove additional public lib methods * remove hardcoded assumption now that we know it's lib linking * style: forge fmt * add rationale to comment (#11429) * ci: manage versions in versions.json (#11415) * ci: manage versions in versions.json and optimize archive downloads to directly extract * ci: also pin just version * cannon: Add support for --type mt to enable multithreaded cannon (#11411) * cannon: Add support for --type mt to enable multithreaded cannon * cannon: Rename vm type to cannon-mt * dependabot(gomod): bump golang.org/x/crypto from 0.25.0 to 0.26.0 (#11373) * dependabot(gomod): bump golang.org/x/crypto from 0.25.0 to 0.26.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.25.0 to 0.26.0. - [Commits](https://github.com/golang/crypto/compare/v0.25.0...v0.26.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * deps: update --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Tyneway <[email protected]> * op-supervisor: Include executing message info when storing logs. (#11369) * Rebase: op-supervisor: Include executing message info when storing logs. Takes from aj/parse-exec-msg and makes the following updates: - uses upstream ABI definitions for identifier hash - removes the core recording functionality for the moment - fixes up inconsistent typing and merge conflicts due to rearranged packages * Incorporate new ABI format * remove trailing newline in contract --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: minor error in contracts readme (#11432) * Don't recheck terminal type for color (#11412) Not necessary as it's checked further up the call tree. Without this --log.color doesn't work when intended. * maint: further clean up contract scripts organization (#11434) Scripts within contracts-bedrock are all over the place. Relatively minor PR that moves things around into a cleaner folder structure. Scripts themselves are unchanged. * op-e2e: Test Granite EVM rules in op-program (#11391) * op-geth: update to support new precompile-overrides function (#11443) * op-geth: update to support new precompile-overrides function * op-program: ensure no accidental precompile overrides * go.mod: update op-geth for new precompile override functionality * op-challenger: Do not resolve games in selective mode (#11430) * dependabot(gomod): bump github.com/urfave/cli/v2 from 2.27.3 to 2.27.4 (#11450) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.27.3 to 2.27.4. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.27.3...v2.27.4) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 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> * dependabot(docker): bump ethereum/client-go in /ops-bedrock (#11448) Bumps ethereum/client-go from v1.14.7 to v1.14.8. --- updated-dependencies: - dependency-name: ethereum/client-go dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat: introduce OptimismSuperchainERC20 (#11256) * feat: introduce OptimismSuperchainERC20 * fix: contract fixes * feat: add snapshots and semver * test: add supports interface tests * test: add invariant test * feat: add parameters to the RelayERC20 event * fix: typo * fix: from param description * fix: event signature and interface pragma * feat: add initializer * feat: use unstructured storage and OZ v5 * feat: update superchain erc20 interfaces * fix: adapt storage to ERC7201 * test: add initializable OZ v5 test * fix: invariant docs * fix: ERC165 implementation * test: improve superc20 invariant (#11) * fix: gas snapshot --------- Co-authored-by: 0xng <[email protected]> Co-authored-by: Disco <[email protected]> * op-node: Fix p2p data races (#11353) * Fix data races around p2p records Fixes https://github.com/ethereum-optimism/optimism/issues/11328 * Remove some constructor boilerplate * Add data race fixes for op-node/p2p tests * Include book locking for record deletion * Add missing read locks * Move locks into wrappers * Remove ping service trace parameter from public API * I came in search of data races and I found refactors * op-challenger: Fix run-trace disputed block selection (#11437) * op-challenger: Fix run-trace disputed block selection Previously it assumed the safe head at SafeL1 was before the safe head at HeadL1 in the sync status, but that is not guaranteed. As a result it could select an L2 block to check that was unsafe at the specified L1 head. * op-challenger: Update vm-runner to handle the case where op-node hasn't processed all finalized L1 blocks yet * contracts-bedrock: migrate interop portal to fp (#11051) * contracts-bedrock: migrate interop portal to fp Utilize fault proofs in the interop portal. This is useful for removing the `L2OutputOracle` from the codebase. We will need to deploy the interop devnet using the permissioned dispute game after this change, so we want to ensure that the deploy script can set that up easily. * ctb: migrate interop to fp portal * snapshots: regenerate * lint: fix * contracts-bedrock: always enable fault proofs with interop * interop: support fault proofs * deploy script: only deploy correct contracts * contracts-bedrock: cleanup deploy * contracts-bedrock: fix deploy The deploy script is very coupled to unit tests * portal2: reduce codesize * lint: fix * snapshots: update * snapshots: update * semver-lock: regenerate * deploy script: update * tests: update excludes * summary: update * op-wheel: harden against missing safe/finalized heads (#11460) * op-bedrock: Add detail to the documentation to clarify any confusion. (#11457) * Add detail to the documentation to clarify any confusion. * fix format * op-chain-ops: artifacts FS, improve artifacts metadata (#11445) * op-chain-ops: artifacts FS, improve artifacts metadata * ci: include artifacts as Go e2e test pre-requisite * op-chain-ops: move full artifacts test, update testdata * ci: fix artifacts workspace copy * op-node: remove MaxSequencerDrift hardcode (#11459) * go: update superchain import * op-node: read MaxSequencerDrift from superchain configs * go: update superchain import to point to main commit * op-chain-ops/script: turn any Go struct/interface into a precompile with ABI encoding/decoding (#11444) * op-chain-ops/script: turn any Go struct/interface into a precompile with ABI encoding/decoding * op-chain-ops: add more comments about precompile auto ABI code * op-service: capture inherited log attributes (#11470) * op-service: capture inherited log attributes * op-service/testlog: reverse Attrs traversal order * devnet: enable span batches and use blobs for non-plasma (#11477) * op-node,op-batcher: implement span channel out block count limit (#11416) * op-node: implement span channel out block count limit * op-batcher: add max-blocks-per-span-batch flag * op-e2e: test MaxBlocksPerSpanBatch in system test * op-e2e: use span batches in 4844 test * address Axel's review * Update README.md (#11474) Corrected a typo in the sentence: "`op-geth` embeds upstream geth’s version inside its own version..." * feat: update Sepolia Drippie config to latest (#10810) * fix: makefile build command (#11466) Build command inside of the root-level makefile was calling build-ts which no longer exists. Adds a new command to build contracts-bedrock and replaces that inside of the root build command. * op-node: attempt recovery from odd forkchoice states (#11462) * op-node: attempt recovery from odd forkchoice states * op-node: adjust recovery heuristic to express distance in number of sequence windows * op-e2e: Disable proposer in dispute game tests (#11431) The games being tested are created manually and the automated proposals at best waste time and can interfere with tsts like TestHighestActedL1BlockMetric which expects the challenger to acton all games. * deploy-config: Update OP Sepolia absolute prestate (#11394) * txmgr: add rpc api getters/setters (#10897) * Add txmgr rpc api * Update mock TxManager * Use parameterized tests to remove redundant code * Add txmgr.cfgLock to protect values configurable at runtime * txmgr: use generic API() method on interface to allow custom rpc apis * txmgr: re-generate mocks * txmgr: use atomics for Config vals that can be modified via rpc * txmgr: use pointer for SimpleTxManager.cfg * txmgr: remove extraneous code * txmgr: cleanup ctx input arg in rpc methods * Feature/rv compute (#11015) * Add dummy tests for passing and failing * Updating passing along return errors and a duplicate call to clean_docker * Fixing logging * Update to latest kontrol version supporting error codes * Remove trap for testing * Add install-kontrol and run local with enforced version requiresments * Drop on failure trap and test * The cleanup steps may be altering the return results. We're not running docker, not needed here * Test with traps re-added after finding issue was with using find * Formatting, now test with passing test * Update run-kontrol.sh Revert debug set to original header * Increase CPU workers to 16 for kaas runners * Update config.yml * Remove dummy proofs * run-kontrol.sh: set `max_workers` to 16 * run-kontrol.sh: execute all tests with `script` option * run-kontrol.sh: match tests more precisely * run-kontrol.sh: add back `break_every_step` variable * versions.json: bump Kontrol from 0.1.247 to 0.1.258 * IGnore vscode configuration files * Move on regardless of docker removal, container is started with automatic removal on stop, we just want to make sure it happens for redundancy * Extract content of Results to upload to kaas * Call into RV Workflow to run symbolic tests * Updating circleCI to latest credentials setup/secret references. Set context to proper env. Remove unused inputs * Reverting unecessary change * Add RV context * Removing comma from end of json block * Set the specific branch name to run on, do not assume develop. * Temporary when conditional to always run * Revert test when conditional * Supress extraction of outputs * Accept Suggestion for comment line in packages/contracts-bedrock/test/kontrol/scripts/run-kontrol.sh Co-authored-by: Matt Solomon <[email protected]> * Supress tar file creation output * Dropping -verbose in tar command. Reduce output on exeutions * run-kontrol.sh: Update Temporarily unexecuted tests list * run-kontrol.sh: Update Temporarily unexecuted tests list v2 * Update documentation noting changes / usage / flow / secrets for utilizing kaas * run-kontrol.sh: Fetch the xml file if it exists from the build env and make available for posting to summary * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * kontrol/README.md: Update instructions for clarity and usage * .github/workflows: Adding a new workflow to trigger on updates to depoloyment_status from third party * Force push to test * Remove if check for environment. * status-test: This looks like the wrong trigger * Update slack notification workflow with template * proof-runner-notification.yml: Slack notifications on failure, and webhook URL * Replace Link with provided target_url from commit status * Update payload variables per slack workflow variable requirements. --------- Co-authored-by: Juan C <[email protected]> Co-authored-by: Matt Solomon <[email protected]> * repo: rename plasma --> altDA (#11370) * update superchain-registry import * replace all plasma with altda * replace plasma with altda in filenames * contracts: update snapshots * go: update superchain import * go: update superchain import after rebase * go: run mod tidy * op-batcher: fix altda env vars passed in devnet docker-compose * go: update superchain import * go: use main commit for superchain import * ci: remove proof runner workflow (#11486) The 'on: status' trigger is too broad and causes this job to trigger for all commits. Instead KaaS (Kontrol as a Service) will post the resulting status to slack directly, instead of through github * Added Stop API in the conductor (#11463) * add stop api in the conductor * add tests * fix test cases * fix conductor stop api test * re-trigger ci tests * op-chain-ops/script: ConsolePrecompile with console2 ABI (#11446) v2 * op-challenger: Extract RegistrationTask to dedeuplicate registration code between different game types. (#11413) * feat: add cgo_test tags to fuzz tests (#11489) * getting-started: modernize (#11436) Make the getting started script modern by adding recent hardfork config and also make the script runnable from any directory. * op-e2e: Add forge clean to README.md troubleshooting section (#11471) * op-e2e: Add forge clean to README.md troubleshooting section * Update op-e2e/README.md Co-authored-by: Matt Solomon <[email protected]> --------- Co-authored-by: Matt Solomon <[email protected]> * fix run-kontrol.sh path (#11495) * Prevent reiniting preimage uploads. (#190) * fix: require minimum split depth of 2 FDGs with a split depth below 2 can trigger bugs in clock extension. Since we don't expect to have a split depth anywhere near 0 or 1 this is a low impact bug and doesn't have an impact on production but should be prevented anyway. * fix: correct check for max game depth Modifies the FDG constructor to correctly check that the splitDepth +1 is gte the max game depth. Means that the splitDepth is now limited to be 1 smaller than it was before. Fine in prod but avoids a bug in the trace ancestor lookup logic. * fix: have MIPS revert on add/sub overflow/underflow (#230) Updates MIPSInstructions so that it correctly reverts on calls to add, addi, and sub that overflow/underflow. Additionally includes tests that demonstrates that the unchecked versions of the same opcodes allow for overflow/underflow. * fix: correct implementation of srav (#245) Existing implementation of SRAV had a bug where it would perform a shift with all bytes of the rs register when the spec says it should only be using the lower 5 bits of the register. Updates the implementation to reflect this, updates the existing test to use the same test vector as provided in the open mips tests, and adds fuzz tests that shows srav works as expected with rs values that have more than the lower 5 bits set. * fix: have DelayedWETH use call instead of transfer (#228) Updates DelayedWETH to use call instead of transfer because transfer only sends along 2300 gas which will cause the transfer to fail if the owner contract uses lots of gas in the fallback function. Adds tests that demonstrate that the function now works appropriately under any reasonable amount of gas usage. In theory this means the recovery function can be reentered but this isn't an issue because the function is authenticated and is recovering all of the ETH in the contract anyway. * fix: make state.exited be zero or one (#246) Modifies the MIPS contracts to enforce that state.exited is either exactly zero or one and cannot have any other value. * fix: have mips step check register offset instead of overwrite (#238) Existing step logic wrote the register offset into memory but the compiler should already be doing this when the struct is defined. Instead of writing directly into memory, this change verifies that the memory at that location has the expected value which will catch any cases where the compiler's memory allocation mechanism changes in the future. * Add gas input to precompile pre-images (#186) (#252) * contracts: Add gas input to precompile pre-images (#186) Also update the cannon evm tests to use the new precompile preimage scheme. --------- Co-authored-by: Adrian Sutton <[email protected]> * op-challenger: Support uploading data in new format. (#188) * op-program: Add required gas to precompile oracle key (#176) * op-challenger: Support multiple versions of the preimage oracle contract --------- Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: inphi <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: correctly verify mips instruction encoding (#237) A lot of instructions in the MIPS spec require that certain fields be set to zero. Most of the time this isn't actually a problem but this can cause side-effects in a few cases. A buggy compiler could create an issue if it ever spit out non-compliant instructions. This PR implements those zero value enforcement checks for all instructions that we implement. * fix: localdata size check (#271) * Prevent reiniting preimage uploads. (#190) * fix(ctb): PreimageOracle `loadLocalData` length check * fixes * fix: bump preimage oracle semver * chore: snapshots * fix: gas snapshot * revert: gas snapshot changes --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: clabby <[email protected]> * fix(ctb): Perform correct clock validation in FDG constructor (#231) * Prevent reiniting preimage uploads. (#190) * fix(ctb): Perform correct clock validation in FDG constructor Fixes the clock extension / max clock duration check in the `FaultDisputeGame` constructor to account for the worst-case clock extension. * fix: add semver-lock * fix: add kontrol * gas snapshot * fix: gas snapshot and semver-lock --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: refcell <[email protected]> * fix: no squeezing unfinalized proposals (#257) * fix: no squeezing unfinalized proposals Updates the PreimageOracle to correctly revert if a proposal has not actually been finalized. This fixes a bug because the timestamp is not set until after a proposal is finalized but all other conditions in the squeeze function are met even before addLeaves is called with the finalize boolean set. * fix: ci checks * fix: semver lock --------- Co-authored-by: refcell <[email protected]> * fix: Choose min block in FDG local inputs * fix: correct clock extension for step (#258) When the FDG is about to execute a step, we must add an additional clock extension equal to the PreimageOracle challenge period. This gives the PreimageOracle time to elapse. * op-e2e: Fix preimage upload to use new ABI. (#274) * fix(ci): `fp-staging` ci fix (#278) * Revert "fix: have MIPS revert on add/sub overflow/underflow (#230)" (#279) This reverts commit 864e59a821e87f9dd00ae97f85add93fa3857597. * Revert "fix: correctly verify mips instruction encoding (#237)" (#281) This reverts commit 59e02fb3ece7fc249223054944a0b1ff437aa64f. * cannon: Limit mmap allocations (#285) * cannon: Basic memory protections Add memory protections against high memory allocations to the VM. This prevents large allocations from causing the `heap` to overflow and wrap into low memory, which could overwrite code and cause arbitrary code execution. --------- Co-authored-by: inphi <[email protected]> * Add e2e test for starting trace extension one block too late (#268) * feat: create deploy script for fp updates (#292) Creates a deploy script to deploy the implementations for the FaultDisputeGame and PermissionedDisputeGame contracts being updated as part of Granite. Based on the original FPACOPS script with modifications to remove actions that are not necessary for an upgrade. * fix(ctb): Set Anchor State (#280) Allow the `DeputyGuardian` to set the Anchor State for brick prevention. --------- Co-authored-by: clabby <[email protected]> Co-authored-by: refcell <[email protected]> * feat: contract versions for fp fixes (#295) * fix: use existing ASR for FPACOPS2 (#297) FPACOPS2 deployed a new AnchorStateRegistry proxy when the actual script needed to just deploy a new implementation. * op-chain-ops: Go forge scripts runner (#11447) * op-chain-ops: Go forge scripts runner * fix lint * op-chain-ops: encapsulate forge script tests in testdata * op-proposer: ensure uniform proposal interval across restarts (#11417) * op-proposer: ensure uniform proposal interval across restarts closes https://github.com/ethereum-optimism/optimism/issues/11193 * move DGF query logic into FetchDGFOutput * merge loopL2OO and loopDGF * tweak comments * Apply suggestions from code review Co-authored-by: Sebastian Stammler <[email protected]> * return err instead of defaulting to sending a proposak flatten out control flow, remove shouldPropose var * defer l.Log.Info("loop returning") * improve error handling and logging * fix logging syntax error * make DGFContract interface harmonize how network contexts are constructed * modify test for new DGF behavior * fix bugs in test code * remove OutputRetryInterval flag * handle gameCount = 0 * finish removing OutputRetryInterval * driver waits one proposal interval for the first ever proposal * do not create mock unecessarily * do not create mockL2OOContract unecessarily * wrap and return errors instead of logging and returning * op-proposer: Switch to modern binding style for dispute game factory (#11472) --------- Co-authored-by: Sebastian Stammler <[email protected]> Co-authored-by: Adrian Sutton <[email protected]> * Add Base cantina/spearbit audits * Update op-geth dependency to 1.14.8 base (#11494) * Update op-geth dependency to 1.14.8 base * go.mod: update op-geth to v1.101408.0-rc.1 --------- Co-authored-by: protolambda <[email protected]> * op-chain-ops: automatic ABI bindings from Go struct (#11497) * op-node: cleanup driver, closer to removing stepping (#11464) * op-node: cleanup driver, closer to removing stepping * op-node: add comment about event Drain error * op-node: fix lint * op-node: handle drain errors * fix: wrong MaxSequencerDrift comment (#11505) * feat: ensure proper closing of gzip and file writers/readers to prevent resource leaks (#11475) * add gzipCloser struct * add Close method * fix OpenDecompressed func * fix CompressByFileType func * knit * Apply suggestions from code review close both even if one fails Co-authored-by: Adrian Sutton <[email protected]> * fix WriteCloser Close method * fix name for more general * fix writercloser name for more geneeral * add construction function for WrappedCloser * using construction func * seperate wrapped closer struct to wrapped_closer.go --------- Co-authored-by: Adrian Sutton <[email protected]> * add regression test (#11519) * refactor: using slices.Contains (#11521) * Change to `latest` in getting started config (#11524) * feat: add fork activation based on env variables - getting started script update (#11500) * feat: add configurable fork times for each update * remove granite for now * add granite if env var is defined * add granite if env var is defined * fix if else * fix if else * add debug step * fix l2name * remove debug step * dependabot(gomod): bump github.com/prometheus/client_golang (#11483) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.19.1 to 1.20.0. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.19.1...v1.20.0) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Interop: Add new role for dependency set management (#11407) * add role based auth for dependency related setters with tests * support systemConfig initialize, rename foundation multisig to dependency manager * use dependency manager role only, update SystemConfigInterop and Specs tests * rebase to current develop head, run pre-pr script * use constant hash with comments over computing at compile time, update semver-lock * use dependencyManager() fn internally, import directly not indirectly in SystemConfigInterop * op-chain-ops: forge script cheatcodes (#11465) * op-chain-ops: forge script cheatcodes, work in progress incl prank cheatcodes incl env var handling incl serialize utils incl some json/toml utils incl go.mod: tidy * op-chain-ops: fix state dumping * op-chain-ops: remove debug print line * txmgr: rename Get|SetPriorityFee to Get|SetMinPriorityFee (#11526) * txmgr: add tx-type metric (#11523) * ctb: `rc` version FP contracts (#11525) * ctb: `rc` version FP contracts * bump deputy guardian module * Add missing GOMODCACHE caching when building op-stack-go services (#11512) * chore: clarify contracts release process (#11529) * chore: clarify contracts release process * Update packages/contracts-bedrock/VERSIONING.md Co-authored-by: Inphi <[email protected]> --------- Co-authored-by: Inphi <[email protected]> * Add optimistic Granite mainnet activation (#11531) * use copy of config.L1Deployments (#11532) * fix: slice init len (#11520) * Upgrade bbolt via raft (#11507) * deploy-config: Update mainnet prestate for granite HF (#11533) * Add Interop Start timestamp to CrossL2Inbox (#11398) * add interop start timestamp to CrossL2Inbox with tests * change to function, add assertions, update tests * correct the preimage of interop start storage slot * rename custome error * require id timestamp must be > interopStartTime not >=, update tests to use realistic interopStartTime (non-zero) * bump CrossL2Inbox semver, run just semver-lock & just snapshots * add natspec for setInteropStart * update semver lock * dependabot(gomod): bump github.com/prometheus/client_golang (#11540) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.0 to 1.20.1. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/v1.20.1/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.20.0...v1.20.1) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang 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> * OPSM: Deploy Superchain, alternate approach (#11480) * feat: initial DeloySuperchain script * chore: scaffold file-based interfaces * test: additional assertions * chore: appease semgrep * scaffold alternate approach * incorporate feedback * refactor based on feedback * fix tests * test: more robust testing * refactor: dedupe etching of IO contracts and add getter method * refactor: using maps.Copy (#11544) * ctb(proofs): switch to running OptimismPortal2 proofs, since that portal is used in production (#11545) * cannon: Run common evm tests across all implementations (#11333) * cannon: Prep test utils to handle Mips2.sol * cannon: Add metadata struct to hold all contract-related metadata * cannon: Add forge debug test for mips2 * cannon: Fix path to mips2 artifacts in testutil * cannon: Rework evm tests to run across both cannon impls * cannon: Skip failing test for now, add todo * cannon: Rename FPVMState.GetRegisters to GetRegistersMutable * cannon: Run linter * cannon: Fix skipped claim test * cannon: Rename FPVMState registers getter to follow convention * cannon: Rename cpu getter to match naming convention * cannon: Fix bad merge - elf paths, versioned references * refactor: using maps.Keys (#11547) * fix: `getting-started` deploy config (#11557) * fix: fix slice init length (#11542) Signed-off-by: shandongzhejiang <[email protected]> * feat: liquidity migration (#11479) * feat: add L2 standrad bridge interop contract * test: add L2 standard bridge interop unit tests (#13) * test: add L2 standard bridge interop unit tests * fix: add tests natspec * fix: unit tests fixes * fix: super to legacy tests failing * fix: mock and expect mint and burn * fix: add generic factory interface (#14) * test: add L2 standard bridge interop unit tests * fix: add tests natspec * fix: add generic factory inter…
…mission (#1) * make an rpc server an into a cliapp service (#11197) * Add buffered caching of L1 block refs to the confDepth-aware fetcher (#11142) * Add buffered caching of L1 block refs to the confDepth-aware fetcher * Refactor l1 head buffer into helper structs * Fix linting errors * Move L1 block caching from confDepth into an event-driven L1Tracker * Fix l1HeadBuffer locking * Better handle non-shallow reorgs * Improve test naming * Explicitly rewind cache when old head received * op-conductor: Adds connection test to conductor addServer* apis (#11210) * op-e2e: use util for RPC dial, and ensure op-node is on localhost RPC (#11209) * dependabot(npm): bump typedoc from 0.25.7 to 0.26.5 (#11216) Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.25.7 to 0.26.5. - [Release notes](https://github.com/TypeStrong/TypeDoc/releases) - [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.25.7...v0.26.5) --- updated-dependencies: - dependency-name: typedoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump eslint-plugin-jsdoc from 48.7.0 to 48.8.3 (#11213) Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 48.7.0 to 48.8.3. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v48.7.0...v48.8.3) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump mocha from 10.6.0 to 10.7.0 (#11214) Bumps [mocha](https://github.com/mochajs/mocha) from 10.6.0 to 10.7.0. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.6.0...v10.7.0) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(npm): bump typescript from 5.5.3 to 5.5.4 (#11215) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.3...v5.5.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development 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> * dependabot(npm): bump @types/node from 20.11.17 to 20.14.12 (#11220) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.11.17 to 20.14.12. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * contracts-bedrock: speed up ci (#11203) Tests for `contracts-bedrock` should no longer depend on the JS monorepo. This should speed up the tests by removing a step that blocks it from running. * Update README.md (#11222) Update README * deps: remove ts-mocha (#11202) `ts-mocha` appears to be unused so this commit removes it * deps: remove wait-on (#11201) The `wait-on` dep is not used anywhere in the monorepo, so this commit removes it. The following command only shows the `package.json` and lockfile: ```bash git grep -rin wait-on ``` We should remove all unused deps * op-node: set genesis l1 start block to value from SystemConfig contract (#11181) * set genesis l1 start block to value from SystemConfig * always retrieve genesis l1StartBlock from SystemConfig.startBlock() * use contract-bedrock abi instead of large bindings file * fix startBlock contract call * use single func call instead of importing full SystemConfig abi * use vars instead of hardcoded flag strings * Fix CONTRIBUTING.md (#11224) * cannon: fix fuzz test script (#11226) * op-node: Extract contract binding for SystemConfig (#11227) * deps: remove depcheck (#11230) Remove another unused dependency. `depcheck` was previously used when the monorepo had active typescript development in it. Right now it has not typescript development in it and is no longer used as part of CI. We should remove every dependency that is not used. * op-dispute-mon: fix the path and add example (#11233) * fix the path and add example * Update README.md * Update README.md * avoid passing factory address (#11236) * op-service: use binary search instead of walkback for checkRecentTxs (#11232) * use binary search instead of walkback for checkRecentTxs * account for multiple txs from same sender in same block * use recursion if reorg detected * limit condition to return false * Delete chain-mon in favor of monitorism (#11239) * Delete chain-mon * Delete chain-mon from other places. --------- Co-authored-by: Kevin Kz <[email protected]> * dependabot(gomod): bump github.com/onsi/gomega from 1.31.1 to 1.34.0 (#11242) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.31.1 to 1.34.0. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.31.1...v1.34.0) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump github.com/urfave/cli/v2 from 2.27.1 to 2.27.3 (#11243) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.27.1 to 2.27.3. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.27.1...v2.27.3) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 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> * docs(typo): README.md, pausability-lemmas.md (#11241) * chore: add `help` target to Makefile to display the usage of all targets (#11221) Co-authored-by: Mark Tyneway <[email protected]> * op-node: genesis generation (#11249) Better logging in the genesis generation when creating L2 genesis. Using the `startBlock()` method depends on the L1 contracts being initialized. * [op-dispute-mon] Track the latest proposed L2 block number from games w/ a valid root claim (#11238) We'd like to know the latest valid block number associated with a valid dispute game. This would be the equivalent of getting the latest block number from `L2OutputOracle` in pre-FDG. We could look into the `AnchorStateRegistry`, but this does not give us quick enough feedback to know if we are keeping up with "proposing" correct root hashes for the most recent L2 blocks, as dispute games resolves approximately 3.5 days (assuming happy path). There can be many dispute games at any given time, and they may be valid or invalid. This metric captures only valid block numbers from dispute games that we "agree" with. * deps: remove more deps (#11250) Removes more dead deps from the monorepo that are no longer used. Every dep is a liability. We should only have deps that we actively use. Soon we will be able to remove all JS from the monorepo, removing all of these deps. * deps: remove more js deps (#11254) This commit removes more js deps. We are very close to removing all js from the monorepo. We should only have deps in our codebase that we actively use. Otherwise its a security liability. * Update Kontrol Proofs (`0.1.247` to `0.1.316`) (#10953) * Remove `Kontrol-Deploy.json` * Remove `DeploymentSummaryFaultProofs` contracts * Revert "Remove `DeploymentSummaryFaultProofs` contracts" This reverts commit 192ac49acc76f98476caef40fa7af6bfb527282d. * pausability-lemmas.md: update `copy-memory-to-memory` rule * KontrolDeployment: add full deployment logic * DeploymentSummary: sync with full deployment logic * DeploymentSummaryFaultProofs: sync with full deployment logic * Bump Kontrol from `0.1.247` to `0.1.313` * run-kontrol.sh: update `kontrol prove` options * make-sumary-deployment.sh: remove logic manipulating `Deploy.s.sol` * Track `snapshots/state-diff/Kontrol-31337.json` * `kontrol/README.md`: update * OptimismPortalKontrol: remove `encodeWithSelector` from `expectRevert` * run-kontrol.sh: set booster max recursion limit to `100` * Kontrol-31337.json: update with non-fault-proofs deployment * package.json: change order of evaluation for `snapshots` job Both `pnpm kontrol-summary-fp` and `pnpm kontrol-summary` save the state updates to `snapshots/state-diff/Kontrol-31337.json`. In order to correctly test the non-fault-proof deployment setting `pnpm kontrol-summary` has to be run last. * Bump Kontrol from `0.1.313` to `0.1.316` * Update `DeploymentSummaryFaultProofs` * ops-bedrock: Beacon-chain devnet with Dencun + Ecotone upgrade (#9117) * ops-bedrock: beacon-chain devnet with fork to L1 Dencun and L2 Ecotone ops-bedrock: clean up file names, drop unused stateviz ops-bedrock: dockerfile for lighthouse from source ops-bedrock: devnet validator keystores ops-bedrock: dev chain config generate genesis.ssz, work in progress devnet setup lighthouse CLI tweaks ops-bedrock: more CLI tweaks devnet: fix validator keys loading ops-bedrock: cleanup L1 geth setup and jwt-secret usage ops-bedrock: fix L1 engine API endpoint op-chain-ops: insert dev L1 contracts devnet fixes more fixes schedule L2 Delta and Ecotone forks op-chain-ops: fix lint ops-bedrock: docker-compose config comments about special options ops-bedrock: adjust beacon node log level Co-authored-by: Sebastian Stammler <[email protected]> * devnet: Add eth2-testnet-genesis installation step * op-e2e: fix pre-Ecotone tests * ops-bedrock: Fix entrypoint scripts * op-e2e: Fix TestPreEcotone * op-e2e: Fix hardfork validation tests * op-e2e: Enable L1 Cancun at genesis for Ecotone system configs * ci: use eth2-testnet-genesis tag v0.10.0 * op-e2e: use <fork>SystemConfig instead of manipulating fields * op-e2e/actions: process beacon block root for Cancun L1s * op-e2e/actions: fix TestBlockTimeBatchType * op-e2e: add beacon endpoint to L1 setup * op-e2e/actions: fix more tests... * op-e2e/actions: fix manual setting of delta offset * op-e2e/actions: set blob source in plasma tests * devnet: sleep at start of tests * ops-bedrock: remove fetch-all-sidecars for l1 lh from docker-compose * op-e2e: fix Makefile go test flags * op-chain-ops: Add 4788 deployer address to L1 genesis creation * op-e2e: remove outdated TODO code * ci: read eth2-testnet-genesis version from json * fix l1 genesis & cci config * rename beacon-data/deposit_contract_block.txt * cci: dump l1-bn and l1-vs logs * few improvements * Move to op-e2e devnet withdrawals test * set l1 block time to 6s in devnet template * fix game resolve helper, to handle resolve race condition * lower da windows * devnet: bump plasma windows to 16 * fix: adjust plasma test params for smaller challenge window sizes * bump lighthouse, remove src Dockerfile * revert devnet python script commenting out the test isn't run from this script any more anyways that was just temporary while debugging * remove deprecated options ligthouse deprecated http-allow-sync-stalled docker-compose deprecated the version tag * retry start block fetching in L2 genesis cmd * add CL to devnet L1 startup step * ignore receipt for resolveClaim call in FinalizeWithdrawal * forward tx trace as custom error type, use in withdrawal test * return receipt in SendTx --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: tchardin <[email protected]> * cannon: delete unnecessary part in makefile (#11194) * add dependence check in makefile * Update Makefile * Update Makefile * docs(typo): `CrossL2Inbox.sol` (#11125) * docs(typo): `CrossL2Inbox.sol` `if{"f" => ""}` * docs(crossL2Inbox): sync semver-lock * monorepo: remove `devnet-tasks` (#11257) Now `make devnet-test` runs go based devnet tests rather than the legacy hardhat based ones. ```make devnet-test: pre-devnet ## Runs tests on the local devnet make -C op-e2e test-devnet ``` This removes `devnet-tasks` from the monorepo, allowing us to delete many dead dependencies. * .github: remove old mergify config (#11258) * remove changeset (#11259) * feat(cross-l2-inbox): add CrossL2Inbox to predeploy addresses and abi_loader (#11267) * dependabot(gomod): bump github.com/holiman/uint256 from 1.3.0 to 1.3.1 (#11268) Bumps [github.com/holiman/uint256](https://github.com/holiman/uint256) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/holiman/uint256/releases) - [Commits](https://github.com/holiman/uint256/compare/v1.3.0...v1.3.1) --- updated-dependencies: - dependency-name: github.com/holiman/uint256 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> * cannon: add test dependence in Makefile (#11264) * add test dependence in Makefile * Update cannon/Makefile Co-authored-by: mbaxter <[email protected]> --------- Co-authored-by: mbaxter <[email protected]> * op-chain-ops: remove dead code (#11261) This code was used as part of the migration from the legacy system to bedrock for op mainnet. It is no longer needed and exists in the optimism-legacy repo if it is needed. The state transition that represented the migration to bedrock can be reproduced using the optimism legacy repo. Since this code is no longer used, we can delete it here. * MIPS2.sol MT-FPVM Implementation (#11036) * cannon: MIPS2 MT-FPVM contract Add a smart contract implementing the multi-threaded Cannon * Update packages/contracts-bedrock/src/cannon/libraries/MIPSSyscalls.sol Co-authored-by: mbaxter <[email protected]> * cannon: Use common constant for BRK_START * cannon: Define new constant FUTEX_EMPTY_ADDR * cannon: Add SYS_ERROR_SIGNAL constant, fix futex wait ret val * dedup syscall handling; rename timeout * fix sys_clone bug * use handler functions in onWaitComplete * fix nits * fix ETIMEDOUT constant * remove leftover console import * traverse right if left is empty on futex_wake syscall * Update packages/contracts-bedrock/test/cannon/MIPS2.t.sol Co-authored-by: mbaxter <[email protected]> * fix traverseRight updates at popThread * exit syscall is exit_group if last thread * simplify wakeup logic; traverse fully before any other operation * remove dup logic for wakeup traversal end * fuzz thread.exited in wakeup tests * update semver-lock; abi snapshots * implement unused syscalls * rebase; fix clone args * update semver-lock * handle munmap * add comment on unimplemented syscalls * add mising snapshots --------- Co-authored-by: mbaxter <[email protected]> * cleanup: rm more js (#11260) * deps: pull js together Puts all js in the single package where it is used * deps: move linting config * nx: remove config * changesets: remove * npmignore: remove * npmrc: remove workspace * ci: cleanup * check-changed: remove nx dep * build: attempt fix * ci: cleanup * cannon: Fix exitCode for invalid cloneargs in MIPS2 contract (#11275) * mt-cannon: Implement mips logic (#11188) * cannon: Copy over singlethreaded impls as a starting point * cannon: Update mips property access to work with MTState * cannon: Add new syscall constants * mt-cannon: Implement clone syscall * mt-cannon: Implement remaining new syscalls * mt-cannon: Implement thread traversal changes to mipsStep() * mt-cannon: Add logger, log when max steps reached * mt-cannon: Implement onWaitComplete() * mt-cannon: Implement thread manipulation methods Also, use slices of pointers for the thread stacks * mt-cannon: Move thread traversal fns to mips.go * mt-cannon: Fix issue where wakeup traversal never stops * mt-cannon: Fix issue where we can end up popping an empty stack * mt-cannon: Move thread definitions to new thread.go file * cannon: Add compile-time type checks for FPVM(State) impls * mt-cannon: Add new threaded StackTracker * mt-cannon: Update proof generation to include thread proof * mt-cannon: Move FPVM compile-time type check * cannon: Run common vm tests across all FPVM impls * cannon: Cut OpenMIPS clone test * cannon: Cleanup - fix some discrepancies, clarify constant * cannon: Disable mem profiling in op-program instead of patch.go * cannon: Consolidate calls to program.PatchGo * cannon: Disable program.PatchGo in MTCannon tests * mt-cannon: Add multithreaded program test * cannon: Only run sleep check for single-threaded cannon * op-program: Update profiling before dependency init fns are called * mt-cannon: Track stack on thread clone, handled popped threads * mt-cannon: Panic if unrecognized syscall is executed * mt-cannon: Panic if unexpected flags are passed to SysClone * mt-cannon: Add some tests for EncodeThreadProof() * mt-cannon: Add some more tests around threadProof edge cases * mt-cannon: Minimize logging * cannon: Update go version in cannon/example/multithreaded/go.mod Co-authored-by: Inphi <[email protected]> * mt-cannon: Rework clone behavior based on feedback * mt-cannon: Rework wakeup logic * mt-cannon: Cleanup - simplify clone, refine logging * Revert "cannon: Cut OpenMIPS clone test" This reverts commit d876d6a44ffc01672a019d5b2411e7d3eab08439. * mt-cannon: Skip open-mips clone test add todos * mt-cannon: Handle munmap syscall * mt-cannon: Exit if the last thread exits * cannon: Clarify skip comment * cannon: Add some todos * cannon: Add guard around logging --------- Co-authored-by: Inphi <[email protected]> * contracts-bedrock docker fix (#11278) * contracts-bedrock docker fix * lockfile update for pnpm workspace * op-chain-ops: Organize deploy-config, improve check-logging (#11189) * op-chain-ops: Organize deploy-config, improve check-logging * op-chain-ops: fix DAChallengeProxy check * op-chain-ops: add godocs * dependabot(gomod): bump github.com/onsi/gomega from 1.34.0 to 1.34.1 (#11279) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.34.0 to 1.34.1. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.34.0...v1.34.1) --- updated-dependencies: - dependency-name: github.com/onsi/gomega 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> * feat(opsm): scaffold OP Stack Manager and tests (#11274) * init scaffolding of OPSM contract and tests * add chainIdToBatchInboxAddress * chore: address semgrep findings * test: add auth spec * update functions sig, semver lock, snapshots * semver lock update after installing correct foundry version * udpates based on style guide * snapshots * op-program: delete redundant code (#11263) * delete redundant code * delete * op-challenger: fix the wrong variable name and some additional fix (#11179) * fix from differential-testing * fix from L2Genesis * fix variable name * Update metrics.go * docs: broken links in op-preimage (#11296) * cannon: Fix onchain clone flags (#11293) * cannon: Fix onchain clone flags * cannon: Bump contract versions * cannon: Run pre-commit * op-node/derive: linter fix (#11265) * linter fix * use sentinel error * fix format * op-challenger: Add subcommand to continuously run trace providers (#11294) * op-challenger: Add subcommand to continuously run trace providers * op-challenger: Remove duplicate invalid recording. * ops: fix build (#11299) * ops: fix build Migrates to a different `pnpm build` command that broke as part of removing JS from the monorepo. * ops: use frozen lockfile * reduce scope of `expandedOwners` (#11301) * fix comment (#11303) * op-batcher: Add dynamic blob/calldata selection (#11219) * op-batcher: Implement dynamic blob/calldata selection * op-batcher: Improve logging in dynamic eth-da channel config * op-batcher: Rename field ChannelConfig.MultiFrameTx to UseBlobs * op-e2e: Add Batcher AutoDA test * lint * contracts-bedrock: fix `SentMessage` event (#11305) * contracts-bedrock: fix `SentMessage` event The bytecode emitted from `SentMessage(bytes) anonymous` abi encoded the `relayMessage` call, breaking the ability to put calldata directly into the event data. This uses yul to not abi encode the log as `bytes` and instead place the calldata directly into the event data. The fact that there is no abi decoding done in the test shows that this is correct. Previously the abi decoding done in the test was not correct, we want the exact data in the log to be the calldata. * snapshots: update * semver-lock: regenerate * feat: introduce SuperchainWETH and ETHLiquidity (#11042) Introduces the SuperchainWETH and ETHLiquidity contracts. More information about these contracts can be found in the OP Stack Specs repository. * contracts-bedrock: fix CrossL2Inbox (#11320) * contracts-bedrock: fix cross l2 inbox Updates the `CrossL2Inbox` per the latest specs proposal in https://github.com/ethereum-optimism/specs/pull/254 This reduces the cost of sending cross chain messages by emitting the message hash as part of the event rather than the full message itself. * semver-lock: fix * contracts-bedrock: port custom gas token to portal2 (#10780) * contracts-bedrock: port custom gas token to portal2 Ports the custom gas token feature to `OptimismPortal2`. This will enable fault proofs to run on custom gas token chains. * lint: fix * tests: update * tests: update * Add task to capture a section of sepolia running fjord for compatibility tests. (#11326) * Cannon: optimize the example (#11302) * optimize the example Use better-suited examples and make sure to add the required flag L2outputroot. * fix path * update * replace network * update comment * op-node: optimize case to handle proposer requests (#11262) * op-node: optimize case to handle proposer requests * op-e2e: modify withdrawals test to trigger BlockRefWithStatus finalized hot-path * fix(ci-builder-foundry-bump): Updating ci-builder. (#11325) * Snapshots go scripts (#11338) * contracts-bedrock: Go version of generate-invariant-docs * contracts-bedrock: Go version of generate-snapshots * devnet: Update expired docs link (#11329) * delete expired docs link * use the official doc * doc: update style guide (#11290) * doc: update style guide * apply suggestion from code review Co-authored-by: Maurelian <[email protected]> * Update packages/contracts-bedrock/STYLE_GUIDE.md --------- Co-authored-by: Maurelian <[email protected]> * Add Granite and Holocene fork references (#11339) * fix: set default forge gas limit (#11342) * chain-spec: Fix next fork (#11341) * fix: add missing assume condition (#11344) * contracts-bedrock: remove typescript (#11340) * contracts-bedrock: remove typescript Moves to using Go from typescript, new code is autogenerated by claude. Can confirm that both work as expected. The `check-test-names` is not running in CI, it fails for both the Go and Typescript scripts. Maybe claude will be able to get the script to pass. * Update check-spacers.go Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * Update packages/contracts-bedrock/scripts/checks/check-test-names.go Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * contracts-bedrock: fix build * scripts: rename * scripts: rename * scripts: fixes --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: semgrep-app[bot] <63493438+semgrep-app[bot]@users.noreply.github.com> * Reduce ChannelTimeout to 50 in Granite (#11343) * Reduce ChannelTimeout to 50 in Granite * Capture granite genesis files. * Update snapshots. * Update op-geth dependency and resolve TODOs. * update op-geth dependency to rc.1 * fix TestGetRollupConfig --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: SuperchainWETH fuzz testing chain ID error (#11352) Minor fix to fuzz testing for SuperchainWETH and related contracts. Recipient chain ID cannot be the same as the sending chain ID. Contracts throw an error when this is the case, causing fuzz tests to fail. * Apply error variable lint in op-node/p2p (#11354) * op-chain-ops: remove etherscan package (#11345) The `etherscan` package isn't maintained or used in the monorepo, so it should be deleted. * fix op-geth dependency (#11356) * dependabot(gomod): bump golang.org/x/sync from 0.7.0 to 0.8.0 (#11358) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.7.0 to 0.8.0. - [Commits](https://github.com/golang/sync/compare/v0.7.0...v0.8.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump golang.org/x/time from 0.5.0 to 0.6.0 (#11357) Bumps [golang.org/x/time](https://github.com/golang/time) from 0.5.0 to 0.6.0. - [Commits](https://github.com/golang/time/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: golang.org/x/time dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: bump ci builder `0.50.0` (#11334) * ci: bump ci builder `0.50.0` Bumps the `ci-builder` image with an updated version of foundry. Foundry update: https://github.com/ethereum-optimism/optimism/pull/11325 Docker build: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/60263/workflows/154fd94a-4029-4e2f-8bce-4ea4c6d25897 * contracts-bedrock: fix tests after new foundry version * contracts-bedrock: comment why skip * test: better comments * gas-snapshot: regenerate * snapshots: update * snapshots: update * fix(ctb): Align expected ptr in `Bytes.slice` test An update to `forge-std` causes `bound` to set the free memory pointer at an unaligned offset. This commit updates the test such that the expected pointer is correctly aligned, without an assumption on the starting ptr's alignment. --------- Co-authored-by: clabby <[email protected]> * op-challenger: Modify run_trace to run a block prior to the safe head (#11349) * op-challenger: Add metric to report memory used in the cannon VM (#11350) * op-challenger: Add metric to report memory used in the cannon VM * op-challenger: Remove config override. * op-proposer: retry failed output proposals (#11291) * op-proposer: add retries to output proposal * op-proposer: proposeOutput returns err to help trigger retry * op-proposer: use retry.Do for FetchOutput, add unit tests * op-proposer: improve output fetching retry impl * op-proposer: move done signal check into inner loop --------- Co-authored-by: Sebastian Stammler <[email protected]> * op-challenger: Fix prestate loading for asterisc in run-trace (#11363) * feat(challenger): `AsteriscKona` trace type (#11140) * feat(challenger): `AsteriscKona` trace type Adds support for the new `asterisc-kona` game type in the `op-challenger` * feat: add `kona-host` `--l2-chain-id` flag * op-challenger: Separate oracle server executor (#11348) * fix(op-challenger): run trace cmd * fix(op-challenger): lints --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: refcell <[email protected]> * op-e2e: Fix GraniteSystemConfig (#11361) * update sepolia-devnet-0 deploy-config (#11371) * cannon: move example test programs into testdata directory to prevent Go tool noise (#11379) * op-node: abort block publishing if conductor commit fails (#11380) * Fix devnet-up when op-program/bin is missing prestate-proof.json (#11383) * contracts-bedrock: migrate to just (#11276) * contracts-bedrock: migrate to just Move away from `pnpm` for contracts scripts and towards `just`. `just` was made for this, since we are moving away from JS it makes no sense to keep `pnpm` around which is native to the JS ecosystem. * ci: install just * ops: cleanup, docs * ci: install just * justfile: update * ci: fix install * snapshots: update * contracts-bedrock: remove pnpm/node, cleanup dockerfile * slither ci: no longer need for workaround (TM) * ts-linting: remove * kontrol: regenerate snapshots * safecall: update test * test: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * readme: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Matt Solomon <[email protected]> * docs: update Co-authored-by: Maurelian <[email protected]> * versions: use latest * ci: fix * CONTRIBUTING: update * ci: fix * lint: fix --------- Co-authored-by: protolambda <[email protected]> Co-authored-by: Matt Solomon <[email protected]> Co-authored-by: Maurelian <[email protected]> * op-proposer, op-batcher: Wait for sync in Start rather than loop. (#11192) Ensures that if it fails, the process exits with an error, rather than just exiting the runloop and continuing on in a zombie mode that doesn't do anything but doesn't exit. * contracts-bedrock: improve `CrossL2Inbox` devex (#11322) * contracts-bedrock: improve `CrossL2Inbox` devex Improve the `CrossL2Inbox` devex by creating an alternative entrypoint. This design was not considered previously because there was a "top level call" restriction, aka the "only EOA" invariant. This was to allow for static analysis of transactions, keeping resource usage lower for validating transactions when building blocks or at the mempool layer. Since 3074/7702 render the enforcement of only eoa impossible, we decided to op/acc and lean into the approach of allowing subcalls to trigger `ExecutingMessage` events. This new interface allows another contract to be the entrypoint, the idea is that the user sends the `Identifier` and the serialized log (message) to whatever contract that they want and then pass it to `CrossL2Inbox.validateMessage` which then emits the event that consensus validates. This allows the calling smart contract to be aware of the schema for the log and deserialize it however they see fit. Since the serialized logs are done with the following algorithm: ```go msg := make([]byte, 0) for _, topic := range log.Topics { msg = append(msg, topic.Bytes()...) } msg = append(msg, log.Data...) ``` It is very easy to use `abi.decode` to decode a log, given that solidity was used to `emit` it. The topics are `bytes32` and then the data is abi encoded given the schema of the event itself. Unused parts like `topic[0]` (hash of the event name) can be dropped when decoding if they are not required. * ctb: fix typo * remove nonReentrant and add tests for validateMessage, rename ENTERED_SLOT preimage * add natspec for _checkIdentifier and update that of validateMessage * update version and semver-lock file * check all topics in crossl2inbox test, run pnpm snapshots * tests: fix --------- Co-authored-by: Michael Amadi <[email protected]> * Revert "Fix devnet-up when op-program/bin is missing prestate-proof.json (#11383)" (#11393) This reverts commit 2491a3732fe97c9eec9baf615a010e8f7a42f738. make cannon-prestate doesn't declare all transitive dependencies properly so can fail to build when there are changes. * devnet/e2e: run L1 Deneb and L2 Fjord by default (#11359) * devnet/e2e: run L1 Deneb and L2 Fjord by default * op-e2e: fix TestPostUnsafePayload * op-e2e: Fix TestGasPriceOracleFeeUpdates * op-e2e/actions: fix some tests The L2EngineAPI test needs more fixing * tests: fixes to support Ecotone/Fjord in more tests * op-e2e: one more fix --------- Co-authored-by: Sebastian Stammler <[email protected]> * feat(predeploys): add L2toL2CDM to predeploy addresses.go (#11403) * contracts-bedrock: debug tests (#11397) * contracts-bedrock: debug tests See why the tests are flaking and cannot be reproduced locally. Also modularize/cleanup CI along the way * typo: fix * debug: remove * just: update name * ci: better error help * ci: fix typo * contracts-bedrock: abstract * ci: run with foundry profile ci * ci: better solc warnings check (#11231) * ci: better solc warnings check Use `forge build --force` to force a build so that the warning check can be observed. CI should fail on this commit * contracts-bedrock: fix warnings Fix the failed solc build See the failed workflow here: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/59631/workflows/b93bc600-e772-4ba9-98ed-a0b6f48683c7/jobs/2512271 * foundry: add ignored error code * repo: migrate away from pnpm (#11395) Migrate to just from pnpm. This is continued tech debt cleanup away from `pnpm` and typescript that is no longer used. * Run cannon-prestate if devnet cannon prestate files are missing (#11399) * Fix devnet-up when op-program/bin is missing prestate-proof.json * Fix cannon-prestate to always run * Add prestate.json * ci: update geth tool to v1.14.7 (#11410) * ci: update geth tool to v1.14.7 * ci: temporarily disable L1 geth version check, so L1 geth can be updated * ops-bedrock: explicit hash state.scheme on geth * Add RV reviews (#11422) * Add RV reviews * Fix naming of trust audit to match convention * Update to Geth 1.14.7 (#11382) * chore: update to support geth v1.14.7 * Update geth * Fix "private key curve is not secp256k1" error * Temporarily quiet noisy logs * signature test * Add comments about S256 curve override fix * Update geth * go.mod: update to op-geth v1.101407.0-rc.1 * op-e2e: fix L1/L2 miner settings * Also update devnet L1 base image * ci: bump ci-builder in circleci --------- Co-authored-by: Danyal Prout <[email protected]> Co-authored-by: protolambda <[email protected]> Co-authored-by: Sebastian Stammler <[email protected]> * cannon: Undo changes to memprofile patching (#11420) * fix: update contracts README diagram (#11406) * fix(ctb): remove linked libraries from scripts and tests (#11426) * add additional address to exclude * chore: make public library methods internal * remove another public lib method * remove additional public lib methods * remove hardcoded assumption now that we know it's lib linking * style: forge fmt * add rationale to comment (#11429) * ci: manage versions in versions.json (#11415) * ci: manage versions in versions.json and optimize archive downloads to directly extract * ci: also pin just version * cannon: Add support for --type mt to enable multithreaded cannon (#11411) * cannon: Add support for --type mt to enable multithreaded cannon * cannon: Rename vm type to cannon-mt * dependabot(gomod): bump golang.org/x/crypto from 0.25.0 to 0.26.0 (#11373) * dependabot(gomod): bump golang.org/x/crypto from 0.25.0 to 0.26.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.25.0 to 0.26.0. - [Commits](https://github.com/golang/crypto/compare/v0.25.0...v0.26.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * deps: update --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Tyneway <[email protected]> * op-supervisor: Include executing message info when storing logs. (#11369) * Rebase: op-supervisor: Include executing message info when storing logs. Takes from aj/parse-exec-msg and makes the following updates: - uses upstream ABI definitions for identifier hash - removes the core recording functionality for the moment - fixes up inconsistent typing and merge conflicts due to rearranged packages * Incorporate new ABI format * remove trailing newline in contract --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: minor error in contracts readme (#11432) * Don't recheck terminal type for color (#11412) Not necessary as it's checked further up the call tree. Without this --log.color doesn't work when intended. * maint: further clean up contract scripts organization (#11434) Scripts within contracts-bedrock are all over the place. Relatively minor PR that moves things around into a cleaner folder structure. Scripts themselves are unchanged. * op-e2e: Test Granite EVM rules in op-program (#11391) * op-geth: update to support new precompile-overrides function (#11443) * op-geth: update to support new precompile-overrides function * op-program: ensure no accidental precompile overrides * go.mod: update op-geth for new precompile override functionality * op-challenger: Do not resolve games in selective mode (#11430) * dependabot(gomod): bump github.com/urfave/cli/v2 from 2.27.3 to 2.27.4 (#11450) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.27.3 to 2.27.4. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.27.3...v2.27.4) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 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> * dependabot(docker): bump ethereum/client-go in /ops-bedrock (#11448) Bumps ethereum/client-go from v1.14.7 to v1.14.8. --- updated-dependencies: - dependency-name: ethereum/client-go dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat: introduce OptimismSuperchainERC20 (#11256) * feat: introduce OptimismSuperchainERC20 * fix: contract fixes * feat: add snapshots and semver * test: add supports interface tests * test: add invariant test * feat: add parameters to the RelayERC20 event * fix: typo * fix: from param description * fix: event signature and interface pragma * feat: add initializer * feat: use unstructured storage and OZ v5 * feat: update superchain erc20 interfaces * fix: adapt storage to ERC7201 * test: add initializable OZ v5 test * fix: invariant docs * fix: ERC165 implementation * test: improve superc20 invariant (#11) * fix: gas snapshot --------- Co-authored-by: 0xng <[email protected]> Co-authored-by: Disco <[email protected]> * op-node: Fix p2p data races (#11353) * Fix data races around p2p records Fixes https://github.com/ethereum-optimism/optimism/issues/11328 * Remove some constructor boilerplate * Add data race fixes for op-node/p2p tests * Include book locking for record deletion * Add missing read locks * Move locks into wrappers * Remove ping service trace parameter from public API * I came in search of data races and I found refactors * op-challenger: Fix run-trace disputed block selection (#11437) * op-challenger: Fix run-trace disputed block selection Previously it assumed the safe head at SafeL1 was before the safe head at HeadL1 in the sync status, but that is not guaranteed. As a result it could select an L2 block to check that was unsafe at the specified L1 head. * op-challenger: Update vm-runner to handle the case where op-node hasn't processed all finalized L1 blocks yet * contracts-bedrock: migrate interop portal to fp (#11051) * contracts-bedrock: migrate interop portal to fp Utilize fault proofs in the interop portal. This is useful for removing the `L2OutputOracle` from the codebase. We will need to deploy the interop devnet using the permissioned dispute game after this change, so we want to ensure that the deploy script can set that up easily. * ctb: migrate interop to fp portal * snapshots: regenerate * lint: fix * contracts-bedrock: always enable fault proofs with interop * interop: support fault proofs * deploy script: only deploy correct contracts * contracts-bedrock: cleanup deploy * contracts-bedrock: fix deploy The deploy script is very coupled to unit tests * portal2: reduce codesize * lint: fix * snapshots: update * snapshots: update * semver-lock: regenerate * deploy script: update * tests: update excludes * summary: update * op-wheel: harden against missing safe/finalized heads (#11460) * op-bedrock: Add detail to the documentation to clarify any confusion. (#11457) * Add detail to the documentation to clarify any confusion. * fix format * op-chain-ops: artifacts FS, improve artifacts metadata (#11445) * op-chain-ops: artifacts FS, improve artifacts metadata * ci: include artifacts as Go e2e test pre-requisite * op-chain-ops: move full artifacts test, update testdata * ci: fix artifacts workspace copy * op-node: remove MaxSequencerDrift hardcode (#11459) * go: update superchain import * op-node: read MaxSequencerDrift from superchain configs * go: update superchain import to point to main commit * op-chain-ops/script: turn any Go struct/interface into a precompile with ABI encoding/decoding (#11444) * op-chain-ops/script: turn any Go struct/interface into a precompile with ABI encoding/decoding * op-chain-ops: add more comments about precompile auto ABI code * op-service: capture inherited log attributes (#11470) * op-service: capture inherited log attributes * op-service/testlog: reverse Attrs traversal order * devnet: enable span batches and use blobs for non-plasma (#11477) * op-node,op-batcher: implement span channel out block count limit (#11416) * op-node: implement span channel out block count limit * op-batcher: add max-blocks-per-span-batch flag * op-e2e: test MaxBlocksPerSpanBatch in system test * op-e2e: use span batches in 4844 test * address Axel's review * Update README.md (#11474) Corrected a typo in the sentence: "`op-geth` embeds upstream geth’s version inside its own version..." * feat: update Sepolia Drippie config to latest (#10810) * fix: makefile build command (#11466) Build command inside of the root-level makefile was calling build-ts which no longer exists. Adds a new command to build contracts-bedrock and replaces that inside of the root build command. * op-node: attempt recovery from odd forkchoice states (#11462) * op-node: attempt recovery from odd forkchoice states * op-node: adjust recovery heuristic to express distance in number of sequence windows * op-e2e: Disable proposer in dispute game tests (#11431) The games being tested are created manually and the automated proposals at best waste time and can interfere with tsts like TestHighestActedL1BlockMetric which expects the challenger to acton all games. * deploy-config: Update OP Sepolia absolute prestate (#11394) * txmgr: add rpc api getters/setters (#10897) * Add txmgr rpc api * Update mock TxManager * Use parameterized tests to remove redundant code * Add txmgr.cfgLock to protect values configurable at runtime * txmgr: use generic API() method on interface to allow custom rpc apis * txmgr: re-generate mocks * txmgr: use atomics for Config vals that can be modified via rpc * txmgr: use pointer for SimpleTxManager.cfg * txmgr: remove extraneous code * txmgr: cleanup ctx input arg in rpc methods * Feature/rv compute (#11015) * Add dummy tests for passing and failing * Updating passing along return errors and a duplicate call to clean_docker * Fixing logging * Update to latest kontrol version supporting error codes * Remove trap for testing * Add install-kontrol and run local with enforced version requiresments * Drop on failure trap and test * The cleanup steps may be altering the return results. We're not running docker, not needed here * Test with traps re-added after finding issue was with using find * Formatting, now test with passing test * Update run-kontrol.sh Revert debug set to original header * Increase CPU workers to 16 for kaas runners * Update config.yml * Remove dummy proofs * run-kontrol.sh: set `max_workers` to 16 * run-kontrol.sh: execute all tests with `script` option * run-kontrol.sh: match tests more precisely * run-kontrol.sh: add back `break_every_step` variable * versions.json: bump Kontrol from 0.1.247 to 0.1.258 * IGnore vscode configuration files * Move on regardless of docker removal, container is started with automatic removal on stop, we just want to make sure it happens for redundancy * Extract content of Results to upload to kaas * Call into RV Workflow to run symbolic tests * Updating circleCI to latest credentials setup/secret references. Set context to proper env. Remove unused inputs * Reverting unecessary change * Add RV context * Removing comma from end of json block * Set the specific branch name to run on, do not assume develop. * Temporary when conditional to always run * Revert test when conditional * Supress extraction of outputs * Accept Suggestion for comment line in packages/contracts-bedrock/test/kontrol/scripts/run-kontrol.sh Co-authored-by: Matt Solomon <[email protected]> * Supress tar file creation output * Dropping -verbose in tar command. Reduce output on exeutions * run-kontrol.sh: Update Temporarily unexecuted tests list * run-kontrol.sh: Update Temporarily unexecuted tests list v2 * Update documentation noting changes / usage / flow / secrets for utilizing kaas * run-kontrol.sh: Fetch the xml file if it exists from the build env and make available for posting to summary * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * Update packages/contracts-bedrock/test/kontrol/README.md Co-authored-by: Matt Solomon <[email protected]> * kontrol/README.md: Update instructions for clarity and usage * .github/workflows: Adding a new workflow to trigger on updates to depoloyment_status from third party * Force push to test * Remove if check for environment. * status-test: This looks like the wrong trigger * Update slack notification workflow with template * proof-runner-notification.yml: Slack notifications on failure, and webhook URL * Replace Link with provided target_url from commit status * Update payload variables per slack workflow variable requirements. --------- Co-authored-by: Juan C <[email protected]> Co-authored-by: Matt Solomon <[email protected]> * repo: rename plasma --> altDA (#11370) * update superchain-registry import * replace all plasma with altda * replace plasma with altda in filenames * contracts: update snapshots * go: update superchain import * go: update superchain import after rebase * go: run mod tidy * op-batcher: fix altda env vars passed in devnet docker-compose * go: update superchain import * go: use main commit for superchain import * ci: remove proof runner workflow (#11486) The 'on: status' trigger is too broad and causes this job to trigger for all commits. Instead KaaS (Kontrol as a Service) will post the resulting status to slack directly, instead of through github * Added Stop API in the conductor (#11463) * add stop api in the conductor * add tests * fix test cases * fix conductor stop api test * re-trigger ci tests * op-chain-ops/script: ConsolePrecompile with console2 ABI (#11446) v2 * op-challenger: Extract RegistrationTask to dedeuplicate registration code between different game types. (#11413) * feat: add cgo_test tags to fuzz tests (#11489) * getting-started: modernize (#11436) Make the getting started script modern by adding recent hardfork config and also make the script runnable from any directory. * op-e2e: Add forge clean to README.md troubleshooting section (#11471) * op-e2e: Add forge clean to README.md troubleshooting section * Update op-e2e/README.md Co-authored-by: Matt Solomon <[email protected]> --------- Co-authored-by: Matt Solomon <[email protected]> * fix run-kontrol.sh path (#11495) * Prevent reiniting preimage uploads. (#190) * fix: require minimum split depth of 2 FDGs with a split depth below 2 can trigger bugs in clock extension. Since we don't expect to have a split depth anywhere near 0 or 1 this is a low impact bug and doesn't have an impact on production but should be prevented anyway. * fix: correct check for max game depth Modifies the FDG constructor to correctly check that the splitDepth +1 is gte the max game depth. Means that the splitDepth is now limited to be 1 smaller than it was before. Fine in prod but avoids a bug in the trace ancestor lookup logic. * fix: have MIPS revert on add/sub overflow/underflow (#230) Updates MIPSInstructions so that it correctly reverts on calls to add, addi, and sub that overflow/underflow. Additionally includes tests that demonstrates that the unchecked versions of the same opcodes allow for overflow/underflow. * fix: correct implementation of srav (#245) Existing implementation of SRAV had a bug where it would perform a shift with all bytes of the rs register when the spec says it should only be using the lower 5 bits of the register. Updates the implementation to reflect this, updates the existing test to use the same test vector as provided in the open mips tests, and adds fuzz tests that shows srav works as expected with rs values that have more than the lower 5 bits set. * fix: have DelayedWETH use call instead of transfer (#228) Updates DelayedWETH to use call instead of transfer because transfer only sends along 2300 gas which will cause the transfer to fail if the owner contract uses lots of gas in the fallback function. Adds tests that demonstrate that the function now works appropriately under any reasonable amount of gas usage. In theory this means the recovery function can be reentered but this isn't an issue because the function is authenticated and is recovering all of the ETH in the contract anyway. * fix: make state.exited be zero or one (#246) Modifies the MIPS contracts to enforce that state.exited is either exactly zero or one and cannot have any other value. * fix: have mips step check register offset instead of overwrite (#238) Existing step logic wrote the register offset into memory but the compiler should already be doing this when the struct is defined. Instead of writing directly into memory, this change verifies that the memory at that location has the expected value which will catch any cases where the compiler's memory allocation mechanism changes in the future. * Add gas input to precompile pre-images (#186) (#252) * contracts: Add gas input to precompile pre-images (#186) Also update the cannon evm tests to use the new precompile preimage scheme. --------- Co-authored-by: Adrian Sutton <[email protected]> * op-challenger: Support uploading data in new format. (#188) * op-program: Add required gas to precompile oracle key (#176) * op-challenger: Support multiple versions of the preimage oracle contract --------- Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: inphi <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]> * fix: correctly verify mips instruction encoding (#237) A lot of instructions in the MIPS spec require that certain fields be set to zero. Most of the time this isn't actually a problem but this can cause side-effects in a few cases. A buggy compiler could create an issue if it ever spit out non-compliant instructions. This PR implements those zero value enforcement checks for all instructions that we implement. * fix: localdata size check (#271) * Prevent reiniting preimage uploads. (#190) * fix(ctb): PreimageOracle `loadLocalData` length check * fixes * fix: bump preimage oracle semver * chore: snapshots * fix: gas snapshot * revert: gas snapshot changes --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: clabby <[email protected]> * fix(ctb): Perform correct clock validation in FDG constructor (#231) * Prevent reiniting preimage uploads. (#190) * fix(ctb): Perform correct clock validation in FDG constructor Fixes the clock extension / max clock duration check in the `FaultDisputeGame` constructor to account for the worst-case clock extension. * fix: add semver-lock * fix: add kontrol * gas snapshot * fix: gas snapshot and semver-lock --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: refcell <[email protected]> * fix: no squeezing unfinalized proposals (#257) * fix: no squeezing unfinalized proposals Updates the PreimageOracle to correctly revert if a proposal has not actually been finalized. This fixes a bug because the timestamp is not set until after a proposal is finalized but all other conditions in the squeeze function are met even before addLeaves is called with the finalize boolean set. * fix: ci checks * fix: semver lock --------- Co-authored-by: refcell <[email protected]> * fix: Choose min block in FDG local inputs * fix: correct clock extension for step (#258) When the FDG is about to execute a step, we must add an additional clock extension equal to the PreimageOracle challenge period. This gives the PreimageOracle time to elapse. * op-e2e: Fix preimage upload to use new ABI. (#274) * fix(ci): `fp-staging` ci fix (#278) * Revert "fix: have MIPS revert on add/sub overflow/underflow (#230)" (#279) This reverts commit 864e59a821e87f9dd00ae97f85add93fa3857597. * Revert "fix: correctly verify mips instruction encoding (#237)" (#281) This reverts commit 59e02fb3ece7fc249223054944a0b1ff437aa64f. * cannon: Limit mmap allocations (#285) * cannon: Basic memory protections Add memory protections against high memory allocations to the VM. This prevents large allocations from causing the `heap` to overflow and wrap into low memory, which could overwrite code and cause arbitrary code execution. --------- Co-authored-by: inphi <[email protected]> * Add e2e test for starting trace extension one block too late (#268) * feat: create deploy script for fp updates (#292) Creates a deploy script to deploy the implementations for the FaultDisputeGame and PermissionedDisputeGame contracts being updated as part of Granite. Based on the original FPACOPS script with modifications to remove actions that are not necessary for an upgrade. * fix(ctb): Set Anchor State (#280) Allow the `DeputyGuardian` to set the Anchor State for brick prevention. --------- Co-authored-by: clabby <[email protected]> Co-authored-by: refcell <[email protected]> * feat: contract versions for fp fixes (#295) * fix: use existing ASR for FPACOPS2 (#297) FPACOPS2 deployed a new AnchorStateRegistry proxy when the actual script needed to just deploy a new implementation. * op-chain-ops: Go forge scripts runner (#11447) * op-chain-ops: Go forge scripts runner * fix lint * op-chain-ops: encapsulate forge script tests in testdata * op-proposer: ensure uniform proposal interval across restarts (#11417) * op-proposer: ensure uniform proposal interval across restarts closes https://github.com/ethereum-optimism/optimism/issues/11193 * move DGF query logic into FetchDGFOutput * merge loopL2OO and loopDGF * tweak comments * Apply suggestions from code review Co-authored-by: Sebastian Stammler <[email protected]> * return err instead of defaulting to sending a proposak flatten out control flow, remove shouldPropose var * defer l.Log.Info("loop returning") * improve error handling and logging * fix logging syntax error * make DGFContract interface harmonize how network contexts are constructed * modify test for new DGF behavior * fix bugs in test code * remove OutputRetryInterval flag * handle gameCount = 0 * finish removing OutputRetryInterval * driver waits one proposal interval for the first ever proposal * do not create mock unecessarily * do not create mockL2OOContract unecessarily * wrap and return errors instead of logging and returning * op-proposer: Switch to modern binding style for dispute game factory (#11472) --------- Co-authored-by: Sebastian Stammler <[email protected]> Co-authored-by: Adrian Sutton <[email protected]> * Add Base cantina/spearbit audits * Update op-geth dependency to 1.14.8 base (#11494) * Update op-geth dependency to 1.14.8 base * go.mod: update op-geth to v1.101408.0-rc.1 --------- Co-authored-by: protolambda <[email protected]> * op-chain-ops: automatic ABI bindings from Go struct (#11497) * op-node: cleanup driver, closer to removing stepping (#11464) * op-node: cleanup driver, closer to removing stepping * op-node: add comment about event Drain error * op-node: fix lint * op-node: handle drain errors * fix: wrong MaxSequencerDrift comment (#11505) * feat: ensure proper closing of gzip and file writers/readers to prevent resource leaks (#11475) * add gzipCloser struct * add Close method * fix OpenDecompressed func * fix CompressByFileType func * knit * Apply suggestions from code review close both even if one fails Co-authored-by: Adrian Sutton <[email protected]> * fix WriteCloser Close method * fix name for more general * fix writercloser name for more geneeral * add construction function for WrappedCloser * using construction func * seperate wrapped closer struct to wrapped_closer.go --------- Co-authored-by: Adrian Sutton <[email protected]> * add regression test (#11519) * refactor: using slices.Contains (#11521) * Change to `latest` in getting started config (#11524) * feat: add fork activation based on env variables - getting started script update (#11500) * feat: add configurable fork times for each update * remove granite for now * add granite if env var is defined * add granite if env var is defined * fix if else * fix if else * add debug step * fix l2name * remove debug step * dependabot(gomod): bump github.com/prometheus/client_golang (#11483) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.19.1 to 1.20.0. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.19.1...v1.20.0) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Interop: Add new role for dependency set management (#11407) * add role based auth for dependency related setters with tests * support systemConfig initialize, rename foundation multisig to dependency manager * use dependency manager role only, update SystemConfigInterop and Specs tests * rebase to current develop head, run pre-pr script * use constant hash with comments over computing at compile time, update semver-lock * use dependencyManager() fn internally, import directly not indirectly in SystemConfigInterop * op-chain-ops: forge script cheatcodes (#11465) * op-chain-ops: forge script cheatcodes, work in progress incl prank cheatcodes incl env var handling incl serialize utils incl some json/toml utils incl go.mod: tidy * op-chain-ops: fix state dumping * op-chain-ops: remove debug print line * txmgr: rename Get|SetPriorityFee to Get|SetMinPriorityFee (#11526) * txmgr: add tx-type metric (#11523) * ctb: `rc` version FP contracts (#11525) * ctb: `rc` version FP contracts * bump deputy guardian module * Add missing GOMODCACHE caching when building op-stack-go services (#11512) * chore: clarify contracts release process (#11529) * chore: clarify contracts release process * Update packages/contracts-bedrock/VERSIONING.md Co-authored-by: Inphi <[email protected]> --------- Co-authored-by: Inphi <[email protected]> * Add optimistic Granite mainnet activation (#11531) * use copy of config.L1Deployments (#11532) * fix: slice init len (#11520) * Upgrade bbolt via raft (#11507) * deploy-config: Update mainnet prestate for granite HF (#11533) * Add Interop Start timestamp to CrossL2Inbox (#11398) * add interop start timestamp to CrossL2Inbox with tests * change to function, add assertions, update tests * correct the preimage of interop start storage slot * rename custome error * require id timestamp must be > interopStartTime not >=, update tests to use realistic interopStartTime (non-zero) * bump CrossL2Inbox semver, run just semver-lock & just snapshots * add natspec for setInteropStart * update semver lock * dependabot(gomod): bump github.com/prometheus/client_golang (#11540) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.0 to 1.20.1. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/v1.20.1/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.20.0...v1.20.1) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang 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> * OPSM: Deploy Superchain, alternate approach (#11480) * feat: initial DeloySuperchain script * chore: scaffold file-based interfaces * test: additional assertions * chore: appease semgrep * scaffold alternate approach * incorporate feedback * refactor based on feedback * fix tests * test: more robust testing * refactor: dedupe etching of IO contracts and add getter method * refactor: using maps.Copy (#11544) * ctb(proofs): switch to running OptimismPortal2 proofs, since that portal is used in production (#11545) * cannon: Run common evm tests across all implementations (#11333) * cannon: Prep test utils to handle Mips2.sol * cannon: Add metadata struct to hold all contract-related metadata * cannon: Add forge debug test for mips2 * cannon: Fix path to mips2 artifacts in testutil * cannon: Rework evm tests to run across both cannon impls * cannon: Skip failing test for now, add todo * cannon: Rename FPVMState.GetRegisters to GetRegistersMutable * cannon: Run linter * cannon: Fix skipped claim test * cannon: Rename FPVMState registers getter to follow convention * cannon: Rename cpu getter to match naming convention * cannon: Fix bad merge - elf paths, versioned references * refactor: using maps.Keys (#11547) * fix: `getting-started` deploy config (#11557) * fix: fix slice init length (#11542) Signed-off-by: shandongzhejiang <[email protected]> * feat: liquidity migration (#11479) * feat: add L2 standrad bridge interop contract * test: add L2 standard bridge interop unit tests (#13) * test: add L2 standard bridge interop unit tests * fix: add tests natspec * fix: unit tests fixes * fix: super to legacy tests failing * fix: mock and expect mint and burn * fix: add generic factory interface (#14) * test: add L2 standard bridge interop unit tests * fix: add tests natspec * fix: add generic factory inter…
c9dbc5f58 Test fix & fmt fcf735497 ExternalHeaderMode rebase f09d4e5ff Add for wind/unwind support to tbc (ethereum-optimism#159) 5c764a0cd popm: exclude tx outputs that would be dust (ethereum-optimism#186) 1f168f225 popm/wasm: fix dispatch params for {add,remove}EventListener (ethereum-optimism#181) 383611feb popm/wasm: add 'minerStatus' method (ethereum-optimism#178) 6a94b4c0b popm/wasm: rename KeyResult fields and add bitcoinScriptHash (ethereum-optimism#177) 9c4cea583 popm/wasm: add events and clean up globals (ethereum-optimism#175) a2372394d popm: improve UTXO selection when creating Bitcoin transaction (ethereum-optimism#173) 939813cac popm/wasm: fix ethereum address when generating and parsing keys (ethereum-optimism#174) 9245995ef Updated localnet to use more recent commits of optimism and op-geth (ethereum-optimism#139) 159fbc5f5 ci: improve runtime of high usage CI workflows (ethereum-optimism#163) 60a3489db popm/wasm: add 'bitcoinAddressToScriptHash' method (ethereum-optimism#169) fe9752a5a popm/wasm: add 'parseKey' method (ethereum-optimism#168) 65aa0caef ci: add registry-url to setup-node in release (ethereum-optimism#167) 8922ce805 popm/wasm: add new @hemilabs/pop-miner NPM package (ethereum-optimism#162) 67166046b scripts: add release script (ethereum-optimism#164) eea96059b ci: add labeler action (ethereum-optimism#165) git-subtree-dir: heminetwork git-subtree-split: c9dbc5f58a7f997fa4b3af0d765a2967ed3462d1
* contracts: Add gas input to precompile pre-images (#186) Also update the cannon evm tests to use the new precompile preimage scheme. --------- Co-authored-by: Adrian Sutton <[email protected]> * op-challenger: Support uploading data in new format. (#188) * op-program: Add required gas to precompile oracle key (#176) * op-challenger: Support multiple versions of the preimage oracle contract --------- Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: inphi <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]> # Conflicts: # packages/contracts-bedrock/semver-lock.json # packages/contracts-bedrock/snapshots/state-diff/Kontrol-31337.json # packages/contracts-bedrock/src/cannon/PreimageOracle.sol # packages/contracts-bedrock/test/kontrol/proofs/utils/DeploymentSummary.sol # packages/contracts-bedrock/test/kontrol/proofs/utils/DeploymentSummaryCode.sol # packages/contracts-bedrock/test/kontrol/proofs/utils/DeploymentSummaryFaultProofs.sol # packages/contracts-bedrock/test/kontrol/proofs/utils/DeploymentSummaryFaultProofsCode.sol
* feat: remove cross l2 inbox identifier checks * fix: clear emit and validate naming
* feat: remove cross l2 inbox execute message (#185) * feat: remove cross l2 inbox execute message * feat: remove cross l2 inbox execute message * feat: remove cross l2 inbox identifier checks (#186) * feat: remove cross l2 inbox identifier checks * fix: clear emit and validate naming * fix: pre pr (#187) --------- Co-authored-by: AgusDuha <[email protected]>
* transition semver-lock script to common framework (#13399) * deploy-config: Update the mt-cannon absolute prestate on op-sepolia (#13451) * fix docker warning (#13462) * Directly Register APIs in RPC Server (#13454) * Config: Add support for Isthmus (#12847) * Config: Enable Isthmus * Contracts: Add isthmus * set the isthmus time offset in genesis * rollup.Config implements types.BlockType interface --------- Co-authored-by: Vinod Damle <[email protected]> * fix: First Time JWT Generation Bug (#13431) * fix first-time JWT generation bug * op-service: improve and test JWT secret loading code --------- Co-authored-by: protolambda <[email protected]> * find lone words, rm more unused imports, print file path and not file name (#13461) * find lone words, rm more unused imports, print file path and not file name * fixes * feat(op-deployer): add support for http locator (#13464) * feat(op-deployer): add support for http locator Given that the downloader code already supports it, we might as well offer the capability. This is useful for pointing to local registries during development, without having to worry about SSL. * update locator_test.go http is now supported. ftp can be used for unsupported scheme test. * op-service: fix RPC websocket support (#13465) * use disableInitializers (#13183) * use disableInitializers * use disableInitializers * use disableInitializers * use disableInitializers * fixes * assert the values of storage slot of proxies and implementation contracts * fix initialize's visibility * fixes * fixes * fixes * semver bump * cannon: Use 32-bit futex values (#13453) * cannon: Update futex-related tests - use 32-bit futex values * cannon: Update go vm implementation - use 32-bit futex values * cannon: Update sol 64-bit vm implementation - use 32-bit futex values * cannon: Update sol 32-bit vm implementation - use 32-bit futex values * cannon: Update MIPS64 version * cannon: Update MIPS2 version * cannon: Run semver lock * cannon: Update semver comments to match actual version * cannon: Run semver-lock * cannon: Randomize futex value in register when testing * cannon: Tweak comment * cannon: Ignore the upper bytes in the futex value register * cannon: Make FutexVal thread field 32-bit * cannon: Run semver-lock * cannon: Fix some inconsistencies, run semver-lock * cannon: Rename testutil method * cannon: Fix parentheses in syscall noop handling (#13470) * cannon: Fix parentheses in syscall noop handling * cannon: Add cannon64 test case for the undefined syscall path * fix typos (#13477) * Proxy disable initializers check (#13317) * add script that checks that proxied (non predeploy) contracts call `_disableInitializers` in their constructor * add check that all initialize functions of proxied contracts (not predeploys) have the external and initializer modifiers * add to ctb justfile but not in `just check` yet * fixes * use semgrep instead * ... * fixes * fixes * fixes * fixes * fixes * fix comment on semgrep test * fix semgrep test * rename rule * rename rule * add exception * Introduce forked upgrade testing (#13323) * feat: Basic upgrade test scaffolding * Add Superchain Registry * Fork from Registry * feat: allowCheatcodes on setPreinstalls in L2Genesis * feat: Refactory and clean up registry reads * feat: cleanup Upgrade.s.sol * fix: Move strings into function body Upgrade has no constructor * feat: Some cleanup * feat: write optimismPortal2 * feat: Automatically run anvil on 8546 * feat: Add upgrade testing to Ci * fix: use parameter to set UPGRADE_TEST env var * feat: more cleanup * fix: PR feedback * tweak ci * fix: justfile bug * fix: Upgrade syntax errors * add export MAINNET_RPC_URL to ci * debug address in use * feat: Allow cheatcodes for FFIInterface * feat: use EIP1967Helper * feat: improve comments in Setup.sol * feat: add support for interop and optimized test setups - Implemented the ability to use interop in test configurations. - Added checks to skip tests when certain conditions for forked tests are met. - Enhanced Setup with options for overriding L2 genesis and creating forks. - Included additional logging for L1 setup processes. - Enabled etching of deployed upgrade contracts for testing purposes. * feat: Use ETH_RPC_URL as env var name * test fixes for forking * feat: anvil-fork-stop does not error * feat: Do not mess with EVM env on a fork test * feat: Take anvil out of the loop * feat: Don't warp if forked * fix: isForkTest not forkBlock * lint * feat: enforce forking from sepolia or mainnet * fix(ctb): test fixes for a forked env * Revert "feat: Take anvil out of the loop" This reverts commit c70e8d7fd6f65319050b06df4eeb78461a682260. * feat: remove anvil-fork-stop also add helpful comments on just commands * fix: unsilence anvil * fix snapshot and semgrep * temp: slightly faster just-upgrade loop * feat: pin fork block * feat: change upgrade_test to test_upgrade in config.yml for consistency * feat: cache forked state * speculative: skip l2 work * feat: skip benchmark tests if isFork * feat: skip deploying L2 tokens when forking * feat: add skipIfForkTest * feat: limit upgrade testing to L1 contracts * feat: move skipping logic into Setup.sol * feat: Simplify ci config for upgrade tests * gas snapshot * delete ignored deploy artifact * remove unused added vm call * feat: remove modifications to skipped test paths * feat: improve block number handling * feat: Document adding a new contract * fix: ci config syntax error * better justfile comments * feat: skip some tests and log messages when you do * feat: skip SystemConfig tests with incompatible iface * feat: add returnIfForkTest and fix a bunch of tests * feat: more test fixes and tweaks * gas snapshot * feat: Add test-upgrade-rerun to justfile and ci config * feat: Make PINNED_BLOCK_NUMBER be not a magic number * fix: long standing bug unrelated to this work the L1 xDM test was exercising the L2 xDM. Fork testing caught this because it skips deploying L2 contracts. Deploying the L2 contracts to the same network as the L1 contracts was always a bit janky anyways. * feat: PDG: cleaner fork test handling * feat: remove unused import * fix incorrect vm.roll/warp skipping logic * fix: OptimismPortal2 tests * fix gas snapshot * fix: restore test_list to contracts-bedrock-tests job * feat(ci): Split up the test-upgrade CI job * fix(ci): remove erroneous param reference * feat: Improve caching of forked state * feat: use config syntax for inserting rpc url * debug: cache key * feat: Fix cache key checksum * Apply suggestions from code review Co-authored-by: Matt Solomon <[email protected]> * clarify comment about setup.setup forking * feat: remove diff meant for upstack * fix lint * feat: make isForkTest private and add a getter * debugging with annotations * feat: fix test_findLatestGames_static_succeeds * fix: OptimismPortal2 test_initialize_succeeds Read guardian from chain rather than config * feat: fix returnIfForkTest Properly uses the return opcode to halt the test. * fix: Portal tests for forking * fix: DGF test for forking * fix: Skip CGT tests on L1StandardBridge * fix: Skip CGT tests on L1CrossDomainMessenger * fix DGF testFuzz_create_succeeds * fix: DGF testFuzz_create_sameUUID_reverts * feat: remove debugging annotations * fix: remove left over console * fix: PermissionedDisputeGame tests * fix: remove unused import * fix: test_donateETH_succeeds for fork testing * fix: isForkTest getter call * feat: Temporarily skip UnexpectedRootClaim failures on forked upgrade tests * Revert "feat: remove diff meant for upstack" This reverts commit cab685617fd9db6961debe503f81042575b848f7. * feat: clearer env var name for NO_MATCH_CONTRACTS * fix gas snapshot * fix test_constructor_succeeds tests after disableInit rebase * lint --------- Co-authored-by: Matt Solomon <[email protected]> * op-service: RPC subscribe interface fix and utils (#13476) * op-service: RPC subscribe interface fix and utils * op-service: fix subscribe args pass through * op-chain-ops/ecotone-scalar: prefer `.FillBytes()` to `.Bytes()` and `copy` (#13472) * prefer .FillBytes() to .Bytes() and copy The latter can result in an error if the number is less than 32 bytes in length (it gets padded incorrectly). * add tests * output to JSON * add test case for OPM * tidy up * use const in test * feat: Rename Upgrade.s.sol to ForkProd.s.sol (#13480) * feat: Rename Upgrade.s.sol to ForkProd.s.sol The updated name is more descriptive of what the code currently does. It also reflects more accurately the current plan of applying the upgrade outside of this script in a separate one, which may be named `Upgrade.s.sol` and will call `OPCM.upgrade()`. * feat: fix artifcat name * feat: ForkLive instead of ForkProd * op-deployer: Holocene deployment support (#13483) The artifacts for v1.8.0 were generated from the tag `op-contracts-v180-artifacts-base`, which points to `proposal/contracts/v1.8.0` with the non-proxied OPCM backported. The OPCM was deployed using the `opcm bootstrap` command. The PDG blueprints were updated using a custom script which you can find at the `op-contracts-v180-blueprints-script` [tag](https://github.com/ethereum-optimism/optimism/commit/a7091185a787ea104343abafc311d65a5916e4b8). As part of this PR, I also added a bunch of tests to assert that the semver versions of deployed contracts are correct. I'll add similar tests for mainnet once the gov vote passes. * feat(kurtosis-devnet): add template expansion helper (#13490) We need a few things: - some convenience functions for expanding user functions - optional data to drive the template - strict expansion (missingkley=error) * feat(kurtosis-devnet): add spec data source (#13494) This enables us to parse the input provided to kurtosis for the enclave creation, and retrieve some basic information to organize the dynamic information we'll get from the enclave directly. Namely, the name and network ID for each chain created. * feat(kurtosis-devnet): add simple local http server (#13495) Our docker builds can be published to the local registry, so kurtosis can access them. We need something similar for contracts bundles for now. We'll bring up a local http server for the duration of the kurtosis command run, which will serve the contracts. * show label on `Host.onFault` (#13503) * show label on fault * also show label for onExit * op-program: Support multiple types of op-program releases (#13498) * op-program: Support multiple types of op-program releases * include type in formatted release string * feat: Move OptimismMintableERC721 and Factory contracts to L2 dir (#13479) * feat: Move OptimismMintableERC721 and Factory contracts to L2 dir * feat: Remove outdated comment about 721 bridge refunds. Either we deleted that code path, or it never existed in the 721 bridge and we just copy pasted the comment form the ERC20 bridge. * fix: semver * feat(kurtosis-devnet): handle building local artifacts (#13496) This will allow us to point kurtosis to these artifacts, and deploy them from HEAD. Right now I'm assuming we have some available "just" recipes for them. We might decide to do things differently down the road. * OPCMs state should be checked after a deploy (#13510) * fix: more robust opcm checking upon deploy. * Update packages/contracts-bedrock/scripts/deploy/ChainAssertions.sol Co-authored-by: Maurelian <[email protected]> * Update packages/contracts-bedrock/scripts/deploy/ChainAssertions.sol Co-authored-by: Maurelian <[email protected]> * fix: pr comments. --------- Co-authored-by: Maurelian <[email protected]> * feat(kurtosis-devnet): add small cli tool to expand template (#13514) This can be used in isolation to sanity check that a kurtosis-devnet template expands properly, without having to run the entire workflow (although it would fail early anyway). * Fix typos (#13433) * Update README.md * Update README.md * op-supervisor: fix typo in README.md --------- Co-authored-by: protolambda <[email protected]> * feat(kurtosis-devnet): use inspect as a data source (#13493) This enables us to retrieve information about artifacts and services, for downstream consumption. * feat(kurtosis-devnet): extract information from op-deployer artifact (#13492) This is in service of outputting useful information at the end of the deployment. Here we get back some useful wallets and addresses for downstream consumption. * feat,interop: add db syncing between nodes (#13357) * feature: Allow adding arbitrary HTTP handlers to RPC HTTP Server. * feature: Add sync package to handle streaming db files between nodes. * tweak: Add DB sync server handler to op-supervisor server. * feature: Use db sync if it's configured and there's no existing db. * tweak: Use retry lib, which also adds max retries. * rename: SyncRPC -> SyncEndpoint. * tweak: Make the initial chain set part of the Server constructor. * cleanup: Remove unused functions. * rename: client -> syncClient to avoid package collision. * fix: Load DepSet and use for sync server. * tweak: Use client.BasicHTTPClient for sync client. * fix: Don't double concat the path. * tests,fix: Set sync resume to true. * tweak: Add error context. * tweak: Make http body close lint-friendly. * tweak: Change retry policy to backoff from 1s to 30s, up to 10 minutes. * tests,fix: Use require.ErrorIs to handle wrapped error. * feat: Readability improvements to Setup.sol (#13511) * Update message_test.go (#13517) * fix: test filtering in CI (#13526) * feat(kurtosis-devnet): provide main wrapper for kurtosis (#13524) This handles deploying the kurtosis enclave according to spec, and then stitching together the relevant information to be transmitted for downstream consumption. * op-proposer: (DFG) skip new game creation if outputRoot is unchanged (#13288) * op-proposer: do not propose if outputRoot is the same as last proposed game * fixed porposer tests * PR comments * Fix log message. --------- Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: Adrian Sutton <[email protected]> * Remove L2OutputOracle and legacy OptimismPortal (#13489) * attempt... * fixes * fix checks * fix kontrol build * update DeploymentSummaryFaultProofs kontrol hash * fixes * undo unnecessary change * feat: Reduce diff and usage of OptimismPortal2 * semver * fix: init test --------- Co-authored-by: Maurelian <[email protected]> * Added in extra dependency details to the getting started versions script to point people to where to learn more. (#13540) * Add success requirement (#13499) Co-authored-by: Tarun Khasnavis <[email protected]> * feat(contracts): add more require revert error message (#12702) * ct/scripts/ChainAssertions: add require revert message Signed-off-by: jsvisa <[email protected]> * ct/scripts/deploy/Deploy: add require revert message Signed-off-by: jsvisa <[email protected]> * ct/scripts/deploy/DeployOwnership: add require revert message Signed-off-by: jsvisa <[email protected]> * ct/scripts/deploy/DeployPeriphery: add require revert message Signed-off-by: jsvisa <[email protected]> * feat(semgrep): enable for all solidity files, except WETH9 Signed-off-by: jsvisa <[email protected]> * fix require issues Signed-off-by: jsvisa <[email protected]> * fix(semgrep): run just semgrep to fix the require rules Signed-off-by: jsvisa <[email protected]> --------- Signed-off-by: jsvisa <[email protected]> * ci: geth --netrestrict to local docker ips (#13555) * feat(kurtosis-devnet): main tool for deploying devnets (#13525) This ties together the various capabilities in pkg/ and orchestrates them. The phases are: - build local artifacts per input template specification - put them where they can be accessed at runtime by kurtosis - run the deployment - collect useful information and output it for downstream consumption Also provide sample devnet definitions Those are just starting points. We'll need to come up with definitions that actually make sense. Note that there is a temporary workaround for op-deployer image: We need http locator support, which has been merged into op-deployer, but the current version at HEAD doesn't quite work with kurtosis yet. We'll fix that separately, at which point we'll be able to point to a localDockerBuild of "op-deployer" just as well, if we want to. * [op-challenger] Cut stale comment (#13559) * op-program: Update prestate releases for op-program/v1.4.1-rc.1 (#13564) * [op-program] Update releases.json * [op-program] Tweak verify formatting * feat(kurtosis-devnet): build/serve prestate proofs (#13560) This prepares the ground for op-challenger needing a URL locator serving prestate proof files. A {{localPrestate}} placeholder will expand to a URL that's usable by op-challenger. * chore: Upgrade `kona-client` version (#13565) * op-batcher: Fix concurrent map write (#13527) mtx on channel_manager too * ops: Remove the legacy Python devnet, clean up ops (#13558) * fix cross-op-node (#13552) * fix: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (#13542) * op-batcher: remove unecessary mutex (#13569) * Revert "op-batcher: Fix concurrent map write (#13527)" This reverts commit 90435d076bdc9a7f4cee6ade0fa86afb9dc2609d. * lock channelMgrMutex during recordFailedDARequest * rename / export pruneSafeBlocks and pruneChannels * feat: remove enableLegacyContracts (#13562) * feat: remove enableLegacyContracts * feat: remove setUseFaultProofs * feat: Remove useFaultProofs branch in Deploy._run() * gas snapshot * feat: remove useFaultProofs * feat(kurtosis-devnet): refactor run logic (#13554) This change reimplements run over the kurtosis SDK instead of shelling out to the CLI tool, which fixes potential consistency problems with other uses of the SDK. Additionally, we split the endpoint detection logic into a separate entity (will make it a separate package a bit later), and improve the host handling part by no longer assuming reachability on localhost (implicitly assuming Docker backend). This is a step toward supporting k8s backend transparently. * feat(kurtosis-devnet): pass args in-memory (#13576) Now that we don't use the kurtosis cli, there's no reason to go through the filesystem to pass a configuration file. * fix(kurtosis-devnet): avoid re-building proofs (#13571) Now that https://github.com/ethpandaops/optimism-package/pull/116 defines a cannon_prestates_url for each challenger instance, we better skip rebuilding the same thing multiple times. * feat(kurtosis-devnet): cut build time for prestate (#13577) For the purpose of seeding op-challenger, we need only the proof files. This change adds a separate target that outputs only these. Unfortunately, docker outputs can be pretty slow, so avoiding dumping the heavier binaries makes a significant differente performance-wise. * fix(kurtosis-devnet): interop definition (#13578) Adjust the definition, based on latest changes in kurtosis optimism-package. * fix(kurtosis-devnet): adjust build definitions (#13579) - fix the op-challenger image build, as currently ops/docker/op-stack-go/Dockerfile defaults to a non-existing tag. - make it easier to point to an alternate kurtosis package (like a local for for example) * cannon: Add mtcannon64 state versioning (#13582) * cannon: Add new state version and start migrating * cannon: Add new test state for version 4 * cannon: Update cannon commands to use new state version * cannon: Update cannon embeds command * cannon: Update Dockerfile to include cannon version 3 binary * Support multiple withdrawals in a single receipt (#13568) * fix: outdated to anton-rs images (#13596) * feat(kurtosis-devnet): split SDK-based logic into separate pkgs (#13581) This is a code cleanup change. This moves all the code built on top of Kurtosis SDK into separate packages for better clarity. * cannon arch: move derivable stuff to arch.go (#13350) * cannon arch: move derivable stuff to arch.go * address comments * cannon: Add new prestate for op-program/v1.4.1-rc.2 (#13597) * feat: Use encodeCall for type safety (#13561) * feat: Use encodeCall for type safety A very common issue (both from experience and observation) is failing to correctly encode the initializer arguments in `encodeSystemConfigInitializer()`. This fixes that. I believe that at one point we needed to be able to pass the 4 bytes selector in as a string, but that no longer seems to be the case. * semver * feat: expand use of encodeCall to rest of OPCM * semver lock * fix(kurtosis-devnet): point to HEAD op-deployer (#13600) * fix(kurtosis-devnet): try harder to find a host ip (#13604) On Mac and Windows, we should be relatively safe using host.docker.internal (feature of Docker Desktop) On Linux, try to find the docker bridge and infer the IP from there. * feat(kurtosis-devnet): output L1 addresses (#13601) Dump a few potentially interesting addresses as part of the L1 manifest. In particular, superchain addresses. Implementation addresses are provided as well, as they might come in handy for debugging purposes. Output now looks like: ... "l1": { "name": "Ethereum", "nodes": [ { "cl": "http://127.0.0.1:50973", "el": "http://127.0.0.1:50965" } ], "addresses": { "delayedWETHImpl": "0x6cc791cd89220c47952885782156e5e8f2833063", "disputeGameFactoryImpl": "0x256fa44786f5b9aa47f13639b97a52cbbb8d3b6e", "l1CrossDomainMessengerImpl": "0xe70dae11d895c2e508e7d1c0c91dd0f3e4e971c3", "l1ERC721BridgeImpl": "0x5a0242103310c7992773430e790c142b7e94ef3a", "l1StandardBridgeImpl": "0x8eb57e8ca6e1e3216b4293cc37d621a43c17ec40", "mipsSingleton": "0xb5322da185af39b53f8d3cbf40636eb3f1b527f2", "opcm": "0xf0f6e276962a776112511c4ea74ad12b4e44cd6b", "optimismMintableERC20FactoryImpl": "0x5f554a3eabcc8e2055040d563ef4910e8bacff8d", "optimismPortalImpl": "0x9d1da1fef40e2b5f44ed193bd88f1d3ee4a31cc5", "preimageOracleSingleton": "0x31502454e4b07ab6f35216fd734aafd816a06110", "protocolVersionsImpl": "0xba337ce3e690fdd01b1a830404e8caaae22a0638", "protocolVersionsProxy": "0xf2749e312b43529cb35a91e355919a376bd22ce3", "proxyAdmin": "0xed3b4bf7e17e47dac37d7bb913196e192dcaf748", "superchainConfigImpl": "0xcf99c17529cc22c39551547e323ed9dda6841734", "superchainConfigProxy": "0x329cf899464ba580bf047f4b886db342c602f579", "systemConfigImpl": "0x5d58414e85fc12d343eb3445dd7417c483d939a9" } }, ... * feat(kurtosis-devnet): improve docker host detection (#13608) Move the detection logic to a separate package, and make it testable. Also make room for more detection mechanisms down the road if needed. * fix(kurtosis-devnet): make main tests self-contained (#13605) * Fix typos (#13521) * interop, op-supervisor, op-node: Managed Mode (#13406) * interop: dataflow refactor v2 Co-authored-by: Axel Kingsley <[email protected]> * interop: many refactor-fixes, make action test pass * op-e2e: fix lint * op-service: RPC event-stream util, for subscription and polling flexibility * op-node: update interop managed-mode RPC events to use RPC stream util * op-supervisor: subscribe or poll for managed-node events * op-service: stream fallback util * op-node: fix interop managed L1 traversal * op-supervisor: enable action tests to pull events * op-e2e: fix interop action test * lint * fix unit test * Fixes from E2E tests - Reset Engine even when in Managed Mode - Use correct wrapped subscription - Export wrapped subscription type - Close Controllers on exit * Controller tests and fixes --------- Co-authored-by: Axel Kingsley <[email protected]> * feat(kurtosis-devnet): ensure kurtosis engine is running (#13611) Unfortunately the logic for doing so is not present in the kurtosis SDK, so we have to shell out to the binary. Make sure the version we run is compatible with the client library we use to interact with the created enclaves. * op-deployer: Update proof params JSON to match deploy config (#13616) * op-supervisor: fix JWT secret loading (#13620) * fix(kurtosis-devnet): accommodate new wallets format (#13622) * feat: Make contract deployment names consistent with names used in OPCM (#13563) * feat: Fix contract labels and make more explicit Fixes #13391 * fix: Initializable test * update gas-snapshot * feat: fix constructor tests * fix: Initializable test * feat: remove unused import * fix: DeployOwnership script * feat: cleanup * feat: Label contracts in save() function * feat: Add _removeSuffix * Address feedback * fix OptimismPortal2Impl name * feat(kurtosis-devnet): add basic support for smoke tests (#13625) * fix unused imports (#13633) * temporarily disable custom gas token support (#13603) * temp disable CGT * temp disable CGT * fix tests * fix tests * fix tests * fix tests * fix go tests * update tests * fix tests * use skipIfForkTest function * fixes * fixes * transition snapshots script to common framework (#13398) * dependabot(gomod): bump golang.org/x/time from 0.7.0 to 0.9.0 (#13640) Bumps [golang.org/x/time](https://github.com/golang/time) from 0.7.0 to 0.9.0. - [Commits](https://github.com/golang/time/compare/v0.7.0...v0.9.0) --- updated-dependencies: - dependency-name: golang.org/x/time dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * dependabot(gomod): bump github.com/lmittmann/w3 from 0.17.1 to 0.17.3 (#13638) Bumps [github.com/lmittmann/w3](https://github.com/lmittmann/w3) from 0.17.1 to 0.17.3. - [Release notes](https://github.com/lmittmann/w3/releases) - [Commits](https://github.com/lmittmann/w3/compare/v0.17.1...v0.17.3) --- updated-dependencies: - dependency-name: github.com/lmittmann/w3 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> * dependabot(gomod): bump github.com/fatih/color from 1.16.0 to 1.18.0 (#13634) Bumps [github.com/fatih/color](https://github.com/fatih/color) from 1.16.0 to 1.18.0. - [Release notes](https://github.com/fatih/color/releases) - [Commits](https://github.com/fatih/color/compare/v1.16.0...v1.18.0) --- updated-dependencies: - dependency-name: github.com/fatih/color dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * op-program: Refactor derivation task to be separate from bootstrapping the program and verifying outputs. (#13612) Makes the prepare, derive, verify steps more clearly separate. * feat: remove cross l2 inbox execute message (#185) (#13626) * feat: remove cross l2 inbox execute message (#185) * feat: remove cross l2 inbox execute message * feat: remove cross l2 inbox execute message * feat: remove cross l2 inbox identifier checks (#186) * feat: remove cross l2 inbox identifier checks * fix: clear emit and validate naming * fix: pre pr (#187) --------- Co-authored-by: AgusDuha <[email protected]> * fix(ct): DeputyPauseModule audit fixes (#13594) Includes a number of low/informational fixes from the audits of the DeputyPauseModule. - Additional validation on the DeputyGuardianModule. - Small additional comments. - Proper encoding of EIP-712 signature digest. * feat(kurtosis-devnet): make sprig functions available (#13655) Make use of the dict capabilities to simplify some variables management. Also put the local function calls on top, to deduplicate them, making sure we don't even attempt to rebuild the same artifacts. * Deploy Cleanup: Make Artifacts stand alone and etch into global state (#13648) * Make Artifacts stand alone and etch into global state * fix the things * Remove extra artifacts etch * feat: label and allowCheatCodes on artifacts feat: restore deploy config label * fix typo * fix import * fix import * dependabot(gomod): bump github.com/cockroachdb/pebble (#13635) Bumps [github.com/cockroachdb/pebble](https://github.com/cockroachdb/pebble) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/cockroachdb/pebble/releases) - [Commits](https://github.com/cockroachdb/pebble/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: github.com/cockroachdb/pebble 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> * supervisor: Correct log message L1->L2 (#13657) * feat: add DeputyPauseModule security review docs (#13659) * feat: add etchLabelAndAllow (#13651) * feat: add etchLabelAndAllow * fix: Buggy artifacts path prefix * feat: Add overloaded etchLabelAndAllow with path arg * remove no-op type cast * update supervisor readme for Managed Mode (#13623) * Update License (#13602) * Update arch64.go (#13598) * fix(kurtosis-devnet): output padded private keys (#13660) * op-supervisor: improve finality errors and logging (#13662) * op-program: Add hint route for block execution (#13631) * op-program: Implement deposit-only block receipt hint * op-program: Reflective program for block execution * op-program: Hook new hint route to the L2 oracle * op-program: Fix prefetch hint for L2BlockData * op-program: Abstract program execution in prefetcher * op-program: Add chainID to l2-block-data hint * Derive block succeeding the agreed block * fix validation on client.Main * refactor L2Source interface * uint8 chainID; fix TODOs * add test for block exec cache hit * remove useless comment * undo deploy variation cgt code deletion (#13664) * chore(kurtosis-devnet): expose op services logging flag (#13667) Use a central location to set all logging levels. If a specific location is needed instead, it'll be as easy as replacing the template with the desired value. * feat: remove redundant loadInitializeSlot func (#13650) * feat: remove redundant loadInitializeSlot func * feat: remove unused prankDeployment func * fix unused import * op-deployer: Remove unused Isthmus code path (#13668) * feat: remove contractAddressesPath and disk reading (#13649) * feat: remove contractAddressesPath and disk reading * fix the things * kt-devnet: Adds fileserver package for serving cannon prestates (#13666) * kt-devnet: Adds fileserver package for serving cannon prestates - deploy fileserver before optimism-package - updates simple.yaml to use the template functions - small refactor of kurtosis Deploy fn to not print an expected optimism-package env * Runs go mod tidy in cannon testdata examples * Use FILESERVER_PACKAGE constant * op-program: Update releases.json for op-program/v1.4.0 (#13679) * op-program: Update releases.json for op-program/v1.4.0 * op-program: Mark new release as governance approved Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]> * op-program,op-service: dedup BlockInfo header wrapper, always cache hash, avoid recomputing hash (#13681) * dependabot(gomod): bump golang.org/x/term from 0.25.0 to 0.28.0 (#13637) Bumps [golang.org/x/term](https://github.com/golang/term) from 0.25.0 to 0.28.0. - [Commits](https://github.com/golang/term/compare/v0.25.0...v0.28.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: add --remove-old-proofs to remove old KCFGs from the cache (#13690) * supervisor: Record new L1 on ProvideL1 and Notify L2 Finality (#13678) * Record new L1 on ProvideL1 and Notify L2 Finality * lint ; expand unit tests * Add comment for safe use of RecordNewL1 * op-supervisor: bugfix timestamp Check (#13676) * op-supervisor: bugfix timestamp Check * supervisor: include Invalid in SafetyLevel Validation * supervisor: check if BlockSeal is found when iterator stops * Don't rewind iterator if Traversal yields ErrStop * Add Timestamp Invariant Test to E2E * update unit test * pr comments re:error message --------- Co-authored-by: protolambda <[email protected]> * feat: Delete unused test mock contracts (#13684) * fix: OptimismPortal was deleted, so removing it from kontrol (#13692) * Add deployImplementations to ForkLive flow (#13573) * Add deployImplementations to ForkLive flow * feat: remove legacy code * feat: Add comments * fix comment * feat: Compatibility with standalone Artifacts * feat: use etchLabelAndAllowCheatcodes * feat: more readable ForkLive * refactor deploy and forklive flow * fix checks * feat: Remove the _suffix arg from deployImpls * feat: Allow overwriting a saved deployment (logs a warning) * feat: update comment * feat: Save the impls we need to save * fix comment * feat: replace mustGetAddress(Impl) with EIP1967 helper * fix: impl retrieval in l1xDM * fix: impl retrieval in l1xDM * feat: restore import * lint * delete outdated comment * docs: Fix incorrect file extension Update README.md (#13685) Fix incorrect file extension in rollup-node spec link * op-service: Define the SuperRoot type (#13670) * op-service: Define the SuperRoot type * op-program: Add chain ID to super chain output roots * Rename * op-deployer: Add support for dumping calldata (#13680) * op-deployer: Add support for dumping calldata * Update state.go * fix(kurtosis-devnet): cleanup server code (#13704) Now that we have a fileserver as a kurtosis package, we don't need to serve files locally. Therefore we don't need to discover how to access them either. Incidentally this should make the approach compatible with kurtosis k8s backend, once we push docker images to a registry that k8s can access. * feat(kurtosis-devnet): deduplicate all builds (#13705) Avoid rebuilding the same artifacts, as long as the inputs are the same. This enables us to be as careless as we want on the template definition side, and still build everything only once. * dependabot(gomod): bump github.com/lmittmann/w3 from 0.17.3 to 0.17.4 (#13701) Bumps [github.com/lmittmann/w3](https://github.com/lmittmann/w3) from 0.17.3 to 0.17.4. - [Release notes](https://github.com/lmittmann/w3/releases) - [Commits](https://github.com/lmittmann/w3/compare/v0.17.3...v0.17.4) --- updated-dependencies: - dependency-name: github.com/lmittmann/w3 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> * fix(kurtosis-devnet): provide fake implem of localPrestate (#13706) * kt-devnet: improves post-deployment output for nodes/services (#13707) * op-e2e: Add interop fault proofs actions test (#13672) * op-service: Define the SuperRoot type * op-program: Add chain ID to super chain output roots * Rename * op-e2e: Add interop fault proofs actions test * op-program: Update to include chain ID * dependabot(gomod): bump github.com/hashicorp/raft from 1.7.1 to 1.7.2 (#13702) Bumps [github.com/hashicorp/raft](https://github.com/hashicorp/raft) from 1.7.1 to 1.7.2. - [Release notes](https://github.com/hashicorp/raft/releases) - [Changelog](https://github.com/hashicorp/raft/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/raft/compare/v1.7.1...v1.7.2) --- 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> * op-program: Implement initial block derivation step for interop fault proofs (#13675) * op-service: Define the SuperRoot type * op-program: Add chain ID to super chain output roots * Rename * op-e2e: Add interop fault proofs actions test * op-program: Update to include chain ID * op-program: Implement initial block derivation step for interop fault proofs * op-program: Update to include chain ID * op-program: Use validate flag correctly. Rename interop env var. * op-program: Enable interop fault proofs mode in action test (#13677) * op-program: Enable interop fault proofs mode in action test * op-program: Use the right chain output. Won't handle the padding yet, but we have tests covering that we'll need to do further work to address later anyway. * op-program: Tweak name and fix exec mode. * op-program: Support agreed prestate hint in host (#13703) * op-program: Support agreed prestate hint in host * op-program: Fix transition state serialization in test * op-program: Fix prefetcher_test.go * op-program: Prevent specifying both --l2.outputroot and --l2.agreed-prestate flags Check config is consistent * op-program: Return safe or local safe head from derivation Avoids relying on the safe label which won't be updated on interop chains. * op-program: Only stop derivation if local safe reaches the target block. * op-program: Fix safe head trace extension * op-program: Remove unused field. * op-challenger: run-trace now picks a random block in the span batch (#13715) Previously it always picked the first block which was the worst case pre-holocene. Now it biases towards the first and last blocks as they hit more corner cases but can pick a random block in the middle of the batch as well. * ctb: Implement addGameType method on OPCM (#13653) * add comment for why FDG is splitted in Blueprint version (#13720) * make the unused imports script check support multiline formatted imports, remove unused imports (#13695) * fix(kurtosis-devnet): handle out of order services (#13726) * fix(kurtosis-devnet): try harder to avoid local dependency (#13727) * fix(kurtosis-devnet): ensure tests pass without kurtosis running * fix(kurtosis-devnet): forbid tests from using local kurtosis context * fix(kurtosis-devnet): ensure localPrestate is idempotent (#13725) * chore: bump kontrol version, and make output checks more robust (#13697) * chore: bump kontrol version, and make output checks more robust * chore: remove outdated block * clear some unused XXXScript (#13730) * op-program: Pass required block hash to OutputByRoot rather than to L2Source constructor (#13716) * op-program: Pass required block hash to OutputByRoot rather than to L2Source constructor * Move check that output root matches requested hash to prefetcher instead of source. * ctb: Make implementations deployments deterministic and idempotent (#13717) * ctb: Make implementations deployments deterministic and idempotent * code review updates * cr updates * imports * make superchain deployments deterministic * forgot to add test * code review updates * broadcast in dpeloysuperchain * add forgotten broadcast * op-program: Introduce RetryingL2Sources and use it to make prefetcher somewhat multi-L2 capable (#13718) * op-program: Introduce L2Sources to combine info for multiple L2s. * op-program: Plumb L2Sources in * op-e2e: Use actual chain ID, not hte test place holder. * op-program: Use correct chain ID for rexec and prevent duplicate RPC urls for same chain * op-program: Fix test to use chain ID that is actually configured in the test * op-program: Update the host config to support multiple L2s (#13719) * op-program: Introduce L2Sources to combine info for multiple L2s. * op-program: Update the host config to support multiple L2s The CLI flags still only support a single L2. * op-program: Update interop bootstrap to load multiple chain configs * op-e2e: Pass multiple chain configs through when running op-program in interop tests (#13731) * op-deployer: Add v1.8.0 mainnet support (#13737) * fix(just): properly handle multiple tags (#13734) * fix(just): properly handle multiple tags * chore(just): rename just/ -> justfiles/ The current behavior is confusing for people who don't have `just` installed: instead of a recognizable "command not found", they could see a "Permission denied" (if . is in the PATH I suppose). * remove CGT code (#13686) * remove CGT code * fixes * fixes * remove CGT code * fixes * fixes * restore L2 tests * make _balance a spacer, inline unnecessary internal function * add version tests * add version tests * add version tests * add version tests * ... * fixes * fixes * feat(kurtosis-devnet): expose jwt tokens in output (#13738) * chore(kurtosis-devnet): split artifact management to its own package * feat(kurtosis-devnet): add jwt tokens to output * op-challenger: fail immediately if `VmBin` and `Server` don't exist (#13588) * ensure VmBin and Server exist * only check when not in test * test file exists * reuse TempDir() * add tests for new errors * address comments * chore: add predeploy details comments (#13693) * Apply Finality to blocks prior to L1 Finality Singal (#13708) * Apply Finality to blocks prior to L1 Finality Singal * add Log when Finality is assumed from newer Finality Signal * feat(mise): add kurtosis to the toolchain (#13729) * op-program: Add chain ID to hints when using interop (#13735) * op-program: Add L2 chain ID to hints when using interop * op-program: Add L2 chain ID to OutputRoot hints when using interop * Fix label in error message. Co-authored-by: Inphi <[email protected]> --------- Co-authored-by: Inphi <[email protected]> * op-program: Enforce timeout on executing op-program (#13747) * Revert "feat(mise): add kurtosis to the toolchain (#13729)" (#13751) This reverts commit 66a67e0272b1ccf784e31609be118bf5ebaebc8e. Seems to cause issues in CI, unclear why. Reverting pending investigation * op-deployer: Replace old bootstrap scripts with DeployImplementations (#13742) * op-supervisor: Implement supervisor_superRootAtTimestamp RPC (#13736) * supervisor: Early start of RPC * op-supervisor: Add supervisor_superRootAtTimstamp RPC Add a new RPC to get the super root at a given timestamp. * op-supervisor: add chainID to SuperRootResponse * op-supervisor: fix comment * op-supervisor: Add super root to response * return stubbed canonical output for interop_pendingOutputV0AtTimestamp * add ref to reorg PR --------- Co-authored-by: Adrian Sutton <[email protected]> * op-program: Remove caching for transition states. (#13714) * op-program: Implement padding steps (#13741) * op-program: Implement padding steps * op-program: Restore Head field in DerivationResult * op-program: Update cli flags to support multiple chains (#13740) * op-program: Validate that we have L2 chain configs for each rollup * op-program: Update CLI flags to support specifying multiple L2 chains * op-program: Allow custom l2 chain ID flag * feat: have AnchorStateRegistry use a single root (#13700) * feat: have AnchorStateRegistry use a single root Updates the AnchorStateRegistry to use a single unified anchor root by checking with the OptimismPortal for the currently respected game type. Additionally makes the AnchorStateRegistry MCP ready. Users MUST deploy this contract as a new proxy and cannot upgrade their existing proxy. * Update snapshots post-merge * op-deployer: Support single ASR * Update semver * updates after rebase * rename method * make isGameProper comment more obvious * update semver * semver bump * simpler api for boolean functions * comment updates * address wildmolasses comments * add test for not guardian * a few more tests --------- Co-authored-by: Matthew Slipper <[email protected]> * op-supervisor: Fix chain id translation (#13733) * op-supervisor: fix chain ID to index translation * op-supervisor: fix chain index to ID translation * op-program: Transition to invalid state when L1Head reached before claimed block (#13743) * op-supervisor: use event system like op-node, for easy synchronization (#13752) * op-supervisor: use event system like op-node, for easy synchronization * op-supervisor,op-node: simplify local-safe derivation updates * op-supervisor: fixes, report back problem if local-safe update fails * op-e2e: fix fp interop action test * op-service: bigger timeout on eventual-case in poll test * op-node/rollup/derive: add info logging (#13753) * op-supervisor: add logging for RPC subscription state changes (#13632) * chore(op-challenger): Update kona executor to use subcommand (#13769) * op-node,op-service: Make L1 cache size configurable (#13772) Also removes the default limit of 1000, which was too low to hold more than ~3h of L1 data. This was causing problems whenever a duration of 3h has passed since a latest batch was posted, which then caused derivation of a new batch to fetch all L1 data again. This particularly impacted chains that have a usual channel duration longer than 3h, or when chains experienced a safe head stall >3h. Fixes #13409. * feat(kurtosis-devnet): provide standalone descriptors (#13758) * chore: removal of unused system config inputs (#13773) * op-deployer: Holocene defaults (#13783) * op-deployer: Default to holocene * Add contracts v180 tag * go: update SCR dependency to add Soneium Mainnet chain config (#13784) * op-supervisor: Move ChainID and SuperRootResponse to op-service eth package (#13786) * Add Finality Action Testing (#13774) * feat: Add ForgeArtifacts.getSlot() (#13787) * op-challenger: Simplify flags and validation (#13756) * op-challenger: Remove duplicate validation for vm.Config instances * op-challenger: Remove cannon-network and asterisc-network flags. * op-challenger: Use vm flags for rollup-config and l2-genesis * op-challenger: Deduplicate prestates URL parsing * op-challenger: Remove legacy --cannon-l2 flag * op-challenger: Show generic and trace type specific names in error messages. * Update expected error messages. * Updates to work with upstream geth v1.14.12 changes (#13002) * all: update to op-geth with upstream v1.14.12 changes. * go.mod: bump go-ethereum dependency to 1.14.12 * go mod tidy * go.mod: update op-geth and scr --------- Co-authored-by: Roberto Bayardo <[email protected]> Co-authored-by: protolambda <[email protected]> Co-authored-by: Sebastian Stammler <[email protected]> * interop: Add AllSafeDerived API (#13790) * Add AllSafeDerived API * Update op-supervisor/supervisor/backend/backend.go Co-authored-by: Adrian Sutton <[email protected]> --------- Co-authored-by: Adrian Sutton <[email protected]> * feat: incident response improvements (#13711) * feat: incident response improvements First half of the original incident response improvements PR. Co-authored-by: wildmolasses <[email protected]> * fix tests and add specs * misc fixes * more fixes * emit event on setRespectedGameTypeUpdatedAt, and test wasRespectedGameType as withdrawal finality condition * withdrawal when gameWasNotRespectedGameType reverts * anchor game blacklisted and getAnchorGame tests * isGameAirgapped * tiny specs change * add snapshots * fix specs test and ASR snapshot * update semver * no compilation rrestrictions when optimizer is off * interop portal semver * justfile ignore, semver * minor tweaks * expanded test coverage * various logical tweaks * test fix * clearer error * fix test flake in go tests * add portal tests * portal2 tests: encodeCall * FDG test: recipient can't receive value reverts * various final tweaks * regenerate snapshots * fix specs tests * final test fixes --------- Co-authored-by: wildmolasses <[email protected]> * op-challenger: Begin implementing super root trace provider (#13777) * op-challenger: Begin implementing super root trace provider * op-challenger: Remove first attempt at handling unsafe proposals. Will replace with a proper implementation as a follow up * op-challenger: Update for move to eth package * op-challenger: Define Interop-cannon game type and required CLI args (#13792) * op-challenger: Define the cannon-interop trace and game type. Doesn't yet actually register a player for those game types. * op-challenger: Define supervisor-rpc flag and require it for interop-cannon * op-challenger: Do not require rollup-rpc for interop * op-challenger: Require general cannon options for interop * op-challenger: Update config validation for interop * op-challenger: Rename to super cannon * dependabot(gomod): bump github.com/bmatcuk/doublestar/v4 (#13766) Bumps [github.com/bmatcuk/doublestar/v4](https://github.com/bmatcuk/doublestar) from 4.7.1 to 4.8.0. - [Release notes](https://github.com/bmatcuk/doublestar/releases) - [Commits](https://github.com/bmatcuk/doublestar/compare/v4.7.1...v4.8.0) --- updated-dependencies: - dependency-name: github.com/bmatcuk/doublestar/v4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(kurtosis-devnet): user devnets (#13728) This change is an attempt at bridging the gap between kurtosis devnets and future alphanet/betanet specification. (see ethereum-optimism/devnets#4) It does so by defining specific override points in a more generic template. Generic building blocks are defined in templates/, and rely on a new "include" capability at the template level. This approach might also provide a somewhat lighter entry point for user devnet definitions, following the same principle. Note that this is completely optional at this point, and the full scope of the kurtosis definition is still available to whomever needs/wants it. * op-challenger: Remove l2Client and rollupClient from RegisterTask API (#13770) Makes RegisterTask generic enough to support interop games * op-challenger: Move Proposal out of contracts (#13795) Its only used by split adapter and isn't related to the contracts. * feat(kurtosis-devnet): expose the devnet features (#13802) * interop: e2e action tests (#13126) * interop,tests: Add Emitter contract tests. * simplify empty block addition * Fix cross-safe progression. * add cross safe assertion. * Remove duplicate assertion. * Make chains progress as the same rate. * interop: Walkback on conflict reset failures. (#13641) * wip: Walkback on conflict reset failures. * tests: Add initial reset conflict tests. * tweak: reorganize methods. * Consolidate attemptReset into resolveConflict. * tests: Add maxAttempts test. * op-e2e: Add timeouts to multi-peer sync test (#13801) * op-program: Build an interop prestate (#13799) * op-program: Build an interop prestate The bootstrap process for interop is different so introduces a separate main method. * op-program: Stop setting USE_INTEROP env var when running client in external process. The interop version is used by specifying the interop client binary. Update Makefile to build a native version of the interop client binary. * use camel case for opcm outputversion var (#13815) * use camel case for opcm outputversion var * fix test * rm entirely * op-program: Stop derivation once the claimed timestamp is reached (#13812) * op-program: Stop derivation once the claimed timestamp is reached * op-program: Add comment and switch to a panic if agreed is already after claimed * op-challenger: Refactor super trace provider to supply preimages (#13796) Add prestate provider for super roots that can provide preimages. * op-program: Implement consolidation for interop (#13775) * op-program: Implement consolidation for interop * address todos; fix claim validation bug * fix test * fix todos * op-program: Fix short-circuit logic in block walk * op-program: Use l2-chain block fetcher in canon * op-program: Fix current header in engine_backend * op-program: Filter hazardrous exec msgs * cleanup * fix block cache lookup * snap to earliest block and update tests Co-authored-by: Adrian Sutton <[email protected]> * use adrian's suggestion * todo formatting --------- Co-authored-by: Adrian Sutton <[email protected]> * op-program: Implement retries in prefetcher block re-exec (#13819) * op-program: Implement retries in prefetcher block re-exec * add canon block with error test case * add comment on error case in rexec * op-chain-ops: op-run-block debug tool (PR v2) (#13811) * op-chain-ops: op-run-block debug tool * op-run-block: fix conflict with geth merge * op-deployer: Remove ASR implementation field (#13817) * kurtosis-devnet: Add Getting Started Section to README.md (#13813) * feat(kurtosis-devnet): expose private ports (#13789) * feat(kurtosis-devnet): subshells (#13759) This is a convenience feature that allows a user to "enter" a devnet / chain and get a subshell with relevant data (in particular env variables). The goal is to try an minimize the amount of error-prone log-browsing and copy-pasting before being able to interact with the environment. * chore: Add cargo binary folder to $PATH (#13822) * fix(op-program): minimize docker context (#13580) * kurtosis-devnet: Support the interop prestate (#13830) Not currently used in the interop devnet as we're not yet deploying the new game type. * feat(op-challenger): Kona interop executor (#13829) * feat(op-challenger): Kona interop executor * Add agreed prestate to `LocalGameInputs` * super executor 🦸 * lint * op-challenger: Lazy create clients (#13810) Make sync validator configurable per game type. * op-challenger: Add super-cannon to GameType strings (#13832) * Add makefile target to build all cannon prestates (#13831) * op-challenger: Hook up the super game type (#13794) * op-challenger: Implement split adapter and trace accessor creation for super cannon * op-challenger: Implement register task for super cannon * op-challenger: Actually register super cannon game handler * op-challenger: Lazy create clients Make sync validator configurable per game type. * op-challenger: Test split adapter Remove ClaimTimestamp from ClaimInfo as we always use the poststate timestamp * feat: add OP_SUCCINCT game type (#13780) * feat: add OP_SUCCINCT game type * fix: change OP_SUCCINCT to 5 * add ASTERISC_KONA * interop-devnet: remove in favor of kurtosis devnet (#13841) * avoid nil pointer error for `requireEventualBatcherTxType` (#13827) * OPCM upgrade full PoC (#13574) * feat: Implement OPCM upgrade * feat: better comment * feat: Move vars to Setup where they belong * gas snapshot * ops-bedrock: remove legacy docker-compose (#13842) * op-deployer: Support Holocene genesis (#13843) * dependabot(gomod): bump github.com/hashicorp/raft-boltdb/v2 (#13767) Bumps [github.com/hashicorp/raft-boltdb/v2](https://github.com/hashicorp/raft-boltdb) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/hashicorp/raft-boltdb/releases) - [Commits](https://github.com/hashicorp/raft-boltdb/compare/v2.3.0...v2.3.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/raft-boltdb/v2 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> * feat(kurtosis-devnet): devnet manifest implementation (#13823) This change adds a "compilation" phase for devnet manifest. Bottom line, we: - treat the devnet manifest as a high-level specification of an expected deployment - open up the possibility to generate an actionable input for an arbitrary deployer - use kurtosis as a first target, by generating a valid kurtosis input that reflects the properties defined in the manifest pkg/devnet/cmd/main.go is a toy tool to perform that last step. Going forward, we could imagine a k8s deployment being "compiled" following a similar process. Or this being used during automated tests setup in order to create the right target environment. At a high-level, this is part of an effort to standardize our sources of truth across the board. * chore: fix problematic function name in comment (#13781) Signed-off-by: piguagua <[email protected]> * refactor: using slices.Contains to simplify the code (#13807) * refactor: using slices.Contains to simplify the code Signed-off-by: pinglanlu <[email protected]> * op-batcher: reintroduce helper func to fix other usages --------- Signed-off-by: pinglanlu <[email protected]> Co-authored-by: protolambda <[email protected]> * clear targets depending on `make devnet-allocs` at root (#13804) * chore: cleanup devnet tools (#13844) * mise.toml: cleanup unused devnet tool dependencies * op-supervisor: update devnet reference in readme * op-e2e: Add action tests for challenger and stopping at the game timestamp (#13818) * op-e2e: Add action test to confirm fault proof program stops when the agreed timestamp is already at the game timestamp * op-e2e: Add action tests for the challenger super trace provider Ensures that it generates super root/transition states that match the test expectations. Update RootProvider interface to match the actual interface exposed by Supervisor * op-e2e: Remove game inputs that are no longer required. * feat: update foundry versions (#13857) * Update CCI builder version (#13858) * bump cci ci-builder version to v0.56.0 With new versions of foundry tools * ops: update version of cffi dep * chore: Remove tag service (#13860) * fix(kurtosis-devnet): add omitted test fixes (#13862) * chore: extract devnet-sdk package (#13864) This will host the code that interacts with: - the definition of a devnet (including generation of kurtosis inputs) - an arbitrary devnet, regardless of whether it's kurtosis-backed or not On the other hand, kurtosis-devnet remains focused solely on the instantiation of a devnet on kurtosis. As such, kurtosis-devnet can depend on devnet-sdk, but not the other way around. * Remove docker RedundantTargetPlatform and LegacyKeyValueFormat warnings (#13439) * docker: Fix RedundantTargetPlatform warnings * docker: Fix LegacyKeyValueFormat warnings * op-deployer: Improve default hardfork choice (#13854) * op-deployer: Improve default hardfork choice The deploy config was previously created with Holocene activated by default. This PR updates the hardfork selection logic to choose default hardforks based on the contracts version. * CR updates * op-node/rollup/derive: Reorganize `baseBatchStage` (#13866) * op-node/rollup/derive: Reorganize baseBatchStage Fixes #12567 * reword comment Co-authored-by: George Knee <[email protected]> --------- Co-authored-by: George Knee <[email protected]> * op-supervisor: return typed pairs of L1/L2 blocks, and support invalidation of fromda entries (#13840) * op-supervisor: return typed pairs of L1/L2 blocks, and support invalidation of fromda entries * op-supervisor: support DA db block-invalidation and replacement * op-supervisor: fix and cover edge-case of replacing a block at later L1 scope * kt-devnet: adds pectra-devnet (#13871) * chore(kurtosis-devnet): add proper deploy package (#13869) * ci: Upload cannon prestates (#13865) * ci: Publish cannon prestates on develop and op-program releases. * ci: Use new context * ci: Remove comma * fix branch name * ci: Build all cannon prestates so they can be published * ci: Not mt64 its just mt * ci: Remove temporary settings --------- Co-authored-by: raffaele-oplabs <[email protected]> * Refactor Derivation DB Reset Functions (#13874) * make interfaces for opcm contracts and use them in tests and scripts (#13922) * make interfaces for opcm contracts and use them in tests and scripts * fix opcm interop deployment * cannon: Simplify futex handling (#13754) * cannon: Simplify futex handling * cannon: Cut envar and go ahead and implement new futex behavior directly * cannon: Cut now unused onWaitComplete() method * cannon: Update single-threaded mips call to getSyscallArgs * cannon: Update contracts to match go vm * cannon: Update solidity tests * cannon: Reconcile MIPS.sol version with latest release (1.2.1) * cannon: Update differential tests * cannon: Cut wakeup field * cannon: Remove thread futex fields * cannon: Fix const name * cannon: Add new cannon state versions * cannon: Cut wakeup stats * cannon: Fix ParseStateVersion(), add test * cannon: Reenable evm validation in tests * cannon: Temporarily use ad hoc cannon release * cannon: Run semver lock * cannon: Fix semver comment, run semver-lock * cannon: Cut unused constants * cannon: Use latest cannon release in op-stack-go dockerfile --------- Co-authored-by: inphi <[email protected]> * txmgr: Add custom publish error message handling (#13856) * txmgr: Add custom publish error message handling Fixes #13739 * add prefix TXMGR to env var Co-authored-by: protolambda <[email protected]> --------- Co-authored-by: protolambda <[email protected]> * op-challenger: Set agreed prestate preimage for super cannon games. (#13838) Changes type to just []byte and uses empty array as not set for simplicity. * -rc is removed when upgrade() is called by the Upgrade Controller (#13863) * append -rc if not upgraded yet * append -rc if not upgraded yet * fix tests * fix tests * fixes * try fix go tests * fix contracts tests * fixes * fixes * fixes * fixes * contracts-bedrock: remove GCT code (#13921) * contracts-bedrock: remove GCT code This commit removes the custom gas token code from the L2 contracts. The interop contracts were tightly integrated into this code, so the diff is quite large. We cannot remove the getters from the `L1Block` contract because chains did a genesis with `WETH` that calls out to the `L1Block` contract. `WETH` is not proxied, so we cannot modify the bytecode without an irregular state transition. Just going to leave the functions on `L1Block` for simplicity. Both the messenger and the bridge have the references to CGT removed. * l1block: test coverage * contracts-bedrock: more cleanup * compiler error * gas-snapshot * contracts-bedrock: remove dead imports * ctb: unused imports * snapshots: update * interfaces * ctb: fix * op-program: Optimise block by header lookup (#13932) We just requested the header by hash so can skip hashing the header to update the cache and just use the already known hash. * op-challenger: Migrate config over to supporting multiple L2s (#13833) * op-challenger: Migrate config over to supporting multi…
Description
This PR fixes ovmCREATE and ovmCREATE2 to match CREATE and CREATE2 functionality in the evm. In the EVM, even if the bytecode being deployed is invalid, CREATE and CREATE2 will always return the address that the contract would have been created at.
Currently ovmCREATE and ovmCREATE2 return the zero address if the deployment fails or if the bytecode is not safe. This PR changes this functionality to return the created address even if deployment fails, but revert with a clear error message if the initcode or deployed bytecode are unsafe.
Questions
Is it better to revert w/ an error message for unsafe bytecode, or to always return the address, and just force devs to eventually figure out that if their contract is inaccessible after creation, then it is most likely because it was unsafe?
Metadata
Fixes
Contributing Agreement