diff --git a/.circleci/config.yml b/.circleci/config.yml index dc575db54f0..191851bc123 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -111,7 +111,8 @@ commands: name: "Authenticate with GCP using OIDC" command: | # Configure gcloud to leverage the generated credential configuration - gcloud auth login --brief --cred-file "<< parameters.gcp_cred_config_file_path >>" + # TODO: https://app.asana.com/1/1208976916964769/project/1209976130071762/task/1211927036399950?focus=true + gcloud auth login --brief --cred-file "<< parameters.gcp_cred_config_file_path >>" || true # Configure ADC echo "export GOOGLE_APPLICATION_CREDENTIALS='<< parameters.gcp_cred_config_file_path >>'" | tee -a "$BASH_ENV" @@ -840,7 +841,7 @@ jobs: type: string docker: - image: <> - resource_class: xlarge + resource_class: large steps: - utils/checkout-with-mise - attach_workspace: { at: "." } @@ -1211,7 +1212,7 @@ jobs: type: string default: 30m machine: true - resource_class: xlarge + resource_class: large steps: - utils/checkout-with-mise - install-contracts-dependencies @@ -1880,32 +1881,39 @@ workflows: test_timeout: 20m environment_overrides: | export PARALLEL=24 - # op-deployer & op-validator excluded as they need sepolia keys - packages: | - op-alt-da - op-batcher - op-chain-ops - op-node - op-proposer - op-challenger - op-dispute-mon - op-conductor - op-program - op-service - op-supervisor - op-fetcher - op-e2e/system - op-e2e/e2eutils - op-e2e/opgeth - op-e2e/interop - op-e2e/actions - op-e2e/faultproofs - packages/contracts-bedrock/scripts/checks - packages/contracts-bedrock/scripts/verify - op-dripper - devnet-sdk - op-acceptance-tests - kurtosis-devnet + # some op-deployer & op-validator excluded as they need sepolia keys or sepolia url + export TEST_PKGS="\ + ./op-alt-da/... \ + ./op-batcher/... \ + ./op-chain-ops/... \ + ./op-node/... \ + ./op-proposer/... \ + ./op-challenger/... \ + ./op-faucet/... \ + ./op-dispute-mon/... \ + ./op-conductor/... \ + ./op-program/... \ + ./op-service/... \ + ./op-supervisor/... \ + ./op-test-sequencer/... \ + ./op-fetcher/... \ + ./op-e2e/system/... \ + ./op-e2e/e2eutils/... \ + ./op-e2e/opgeth/... \ + ./op-e2e/interop/... \ + ./packages/contracts-bedrock/scripts/checks/... \ + ./op-dripper/... \ + ./devnet-sdk/... \ + ./op-acceptance-tests/... \ + ./kurtosis-devnet/... \ + ./op-devstack/... \ + ./op-deployer/pkg/deployer/artifacts/... \ + ./op-deployer/pkg/deployer/broadcaster/... \ + ./op-deployer/pkg/deployer/clean/... \ + ./op-deployer/pkg/deployer/integration_test/... \ + ./op-deployer/pkg/deployer/interop/... \ + ./op-deployer/pkg/deployer/standard/... \ + ./op-deployer/pkg/deployer/state/..." requires: - contracts-bedrock-build - cannon-prestate-quick @@ -1914,10 +1922,10 @@ workflows: - discord # TODO(#15353) - Need to regenerate data used in op-program-compat and then reenable this test # See: https://github.com/ethereum-optimism/chain-test-data?tab=readme-ov-file#generating-new-data -# - op-program-compat: -# context: -# - circleci-repo-readonly-authenticated-github-token -# - discord + # - op-program-compat: + # context: + # - circleci-repo-readonly-authenticated-github-token + # - discord - bedrock-go-tests: requires: - go-lint @@ -2298,12 +2306,12 @@ workflows: context: - circleci-repo-readonly-authenticated-github-token - discord - # Generate flaky test report - - generate-flaky-report: - name: generate-flaky-tests-report - context: - - circleci-repo-readonly-authenticated-github-token - - circleci-api-token + # Generate flaky test report : CircleCI API token not configured TODO: https://app.asana.com/1/1208976916964769/project/1209976130071762/task/1211927036399950?focus=true + # - generate-flaky-report: + # name: generate-flaky-tests-report + # context: + # - circleci-repo-readonly-authenticated-github-token + # - circleci-api-token # Acceptance tests (pre-merge to develop) acceptance-tests-pr: @@ -2344,12 +2352,12 @@ workflows: # context: # - circleci-repo-readonly-authenticated-github-token # - discord - # Generate flaky test report - - generate-flaky-report: - name: generate-flaky-tests-report - context: - - circleci-repo-readonly-authenticated-github-token - - circleci-api-token + # Generate flaky test report - Disabled: CircleCI API token not configured TODO: https://app.asana.com/1/1208976916964769/project/1209976130071762/task/1211927036399950?focus=true + # - generate-flaky-report: + # name: generate-flaky-tests-report + # context: + # - circleci-repo-readonly-authenticated-github-token + # - circleci-api-token close-issue-workflow: when: @@ -2367,15 +2375,16 @@ workflows: context: - circleci-repo-optimism - devnet-metrics-collect: - when: - or: - - equal: [<< pipeline.trigger_source >>, "webhook"] - - and: - - equal: [true, << pipeline.parameters.devnet-metrics-collect >>] - - equal: [<< pipeline.trigger_source >>, "api"] - jobs: - - devnet-metrics-collect-authorship: - context: - - circleci-repo-readonly-authenticated-github-token - - oplabs-tools-data-public-metrics-bucket + # Disabled: GCP auth not configured TODO: https://app.asana.com/1/1208976916964769/project/1209976130071762/task/1211927036399950?focus=true + # devnet-metrics-collect: + # when: + # or: + # - equal: [<< pipeline.trigger_source >>, "webhook"] + # - and: + # - equal: [true, << pipeline.parameters.devnet-metrics-collect >>] + # - equal: [<< pipeline.trigger_source >>, "api"] + # jobs: + # - devnet-metrics-collect-authorship: + # context: + # - circleci-repo-readonly-authenticated-github-token + # - oplabs-tools-data-public-metrics-bucket diff --git a/espresso/streamer_test.go b/espresso/streamer_test.go index 649c9e59283..ba3c3a05749 100644 --- a/espresso/streamer_test.go +++ b/espresso/streamer_test.go @@ -279,29 +279,29 @@ type NoOpLogger struct{} var _ log.Logger = (*NoOpLogger)(nil) -func (l *NoOpLogger) With(ctx ...interface{}) log.Logger { return l } -func (l *NoOpLogger) New(ctx ...interface{}) log.Logger { return l } -func (l *NoOpLogger) Log(level slog.Level, msg string, ctx ...interface{}) {} -func (l *NoOpLogger) Trace(msg string, ctx ...interface{}) {} -func (l *NoOpLogger) Debug(msg string, ctx ...interface{}) {} -func (l *NoOpLogger) Info(msg string, ctx ...interface{}) {} -func (l *NoOpLogger) Warn(msg string, ctx ...interface{}) {} -func (l *NoOpLogger) Error(msg string, ctx ...interface{}) {} -func (l *NoOpLogger) Crit(msg string, ctx ...interface{}) { panic("critical error") } -func (l *NoOpLogger) Write(level slog.Level, msg string, attrs ...any) {} -func (l *NoOpLogger) Enabled(ctx context.Context, level slog.Level) bool { return true } -func (l *NoOpLogger) Handler() slog.Handler { return nil } +func (l *NoOpLogger) With(ctx ...interface{}) log.Logger { return l } +func (l *NoOpLogger) New(ctx ...interface{}) log.Logger { return l } +func (l *NoOpLogger) Log(level slog.Level, msg string, ctx ...interface{}) {} +func (l *NoOpLogger) Trace(msg string, ctx ...interface{}) {} +func (l *NoOpLogger) Debug(msg string, ctx ...interface{}) {} +func (l *NoOpLogger) Info(msg string, ctx ...interface{}) {} +func (l *NoOpLogger) Warn(msg string, ctx ...interface{}) {} +func (l *NoOpLogger) Error(msg string, ctx ...interface{}) {} +func (l *NoOpLogger) Crit(msg string, ctx ...interface{}) { panic("critical error") } +func (l *NoOpLogger) Write(level slog.Level, msg string, attrs ...any) {} +func (l *NoOpLogger) Enabled(ctx context.Context, level slog.Level) bool { return true } +func (l *NoOpLogger) Handler() slog.Handler { return nil } func (l *NoOpLogger) TraceContext(ctx context.Context, msg string, ctxArgs ...interface{}) {} func (l *NoOpLogger) DebugContext(ctx context.Context, msg string, ctxArgs ...interface{}) {} func (l *NoOpLogger) InfoContext(ctx context.Context, msg string, ctxArgs ...interface{}) {} func (l *NoOpLogger) WarnContext(ctx context.Context, msg string, ctxArgs ...interface{}) {} func (l *NoOpLogger) ErrorContext(ctx context.Context, msg string, ctxArgs ...interface{}) {} -func (l *NoOpLogger) CritContext(ctx context.Context, msg string, ctxArgs ...interface{}) { +func (l *NoOpLogger) CritContext(ctx context.Context, msg string, ctxArgs ...interface{}) { panic("critical error") } func (l *NoOpLogger) LogAttrs(ctx context.Context, level slog.Level, msg string, attrs ...slog.Attr) { } -func (l *NoOpLogger) SetContext(ctx context.Context) {} +func (l *NoOpLogger) SetContext(ctx context.Context) {} func (l *NoOpLogger) WriteCtx(ctx context.Context, level slog.Level, msg string, args ...any) {} func createHashFromHeight(height uint64) common.Hash { diff --git a/go.mod b/go.mod index fb86c7e76f8..dac506b929c 100644 --- a/go.mod +++ b/go.mod @@ -106,7 +106,6 @@ require ( github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/coder/websocket v1.8.13 github.com/consensys/bavard v0.1.27 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/containerd/log v0.1.0 // indirect diff --git a/op-batcher/batcher/driver.go b/op-batcher/batcher/driver.go index ec9ede47b08..4d52812b15b 100644 --- a/op-batcher/batcher/driver.go +++ b/op-batcher/batcher/driver.go @@ -126,8 +126,6 @@ type BatchSubmitter struct { throttling atomic.Bool // whether the batcher is throttling sequencers and additional endpoints - submitter *espressoTransactionSubmitter - streamer espresso.EspressoStreamer[derive.EspressoBatch] txpoolMutex sync.Mutex // guards txpoolState and txpoolBlockedBlob txpoolState TxPoolState txpoolBlockedBlob bool diff --git a/op-batcher/batcher/espresso.go b/op-batcher/batcher/espresso.go index 8d4359f2f6d..ee4e2052b6a 100644 --- a/op-batcher/batcher/espresso.go +++ b/op-batcher/batcher/espresso.go @@ -875,8 +875,7 @@ func (l *BlockLoader) nextBlockRange(newSyncStatus *eth.SyncStatus) (inclusiveBl return inclusiveBlockRange{}, ActionRetry } - var safeL2 eth.L2BlockRef - safeL2 = newSyncStatus.SafeL2 + safeL2 := newSyncStatus.SafeL2 // State empty, just enqueue all unsafe blocks if len(l.queuedBlocks) == 0 { diff --git a/op-deployer/pkg/deployer/state/deploy_config.go b/op-deployer/pkg/deployer/state/deploy_config.go index 12b53db93b9..377b2999454 100644 --- a/op-deployer/pkg/deployer/state/deploy_config.go +++ b/op-deployer/pkg/deployer/state/deploy_config.go @@ -168,12 +168,6 @@ func CombineDeployConfig(intent *Intent, chainIntent *ChainIntent, state *State, return cfg, nil } -func mustHexBigFromHex(hex string) *hexutil.Big { - num := hexutil.MustDecodeBig(hex) - hexBig := hexutil.Big(*num) - return &hexBig -} - func calculateBatchInboxAddr(chainState *ChainState) common.Address { if chainState.BatchInboxAddress != (common.Address{}) { return chainState.BatchInboxAddress diff --git a/op-e2e/config/init.go b/op-e2e/config/init.go index 642917f540a..0754bdf3676 100644 --- a/op-e2e/config/init.go +++ b/op-e2e/config/init.go @@ -52,13 +52,13 @@ const ( type AllocType string const ( - AllocTypeStandard AllocType = "standard" - AllocTypeAltDA AllocType = "alt-da" - AllocTypeAltDAGeneric AllocType = "alt-da-generic" - AllocTypeL2OO AllocType = "l2oo" - AllocTypeMTCannon AllocType = "mt-cannon" - AllocTypeMTCannonNext AllocType = "mt-cannon-next" - AllocTypeEspresso AllocType = "espresso" + AllocTypeStandard AllocType = "standard" + AllocTypeAltDA AllocType = "alt-da" + AllocTypeAltDAGeneric AllocType = "alt-da-generic" + AllocTypeL2OO AllocType = "l2oo" + AllocTypeMTCannon AllocType = "mt-cannon" + AllocTypeMTCannonNext AllocType = "mt-cannon-next" + AllocTypeEspresso AllocType = "espresso" AllocTypeEspressoWithoutEnclave AllocType = "espresso-no-enclave" AllocTypeEspressoWithEnclave AllocType = "espresso-enclave" diff --git a/op-program/client/l1/client.go b/op-program/client/l1/client.go index af2513131d5..119d9434256 100644 --- a/op-program/client/l1/client.go +++ b/op-program/client/l1/client.go @@ -46,6 +46,11 @@ func (o *OracleL1Client) L1BlockRefByLabel(ctx context.Context, label eth.BlockL return o.head, nil } +func (o *OracleL1Client) L1FinalizedBlock() (eth.L1BlockRef, error) { + // The L1 head is pre-agreed and unchanging so it can be used as finalized + return o.head, nil +} + func (o *OracleL1Client) L1BlockRefByNumber(ctx context.Context, number uint64) (eth.L1BlockRef, error) { if number > o.head.Number { return eth.L1BlockRef{}, fmt.Errorf("%w: block number %d", ErrNotFound, number) diff --git a/op-supervisor/supervisor/backend/depset/links.go b/op-supervisor/supervisor/backend/depset/links.go index f0509b87056..02a5d783d70 100644 --- a/op-supervisor/supervisor/backend/depset/links.go +++ b/op-supervisor/supervisor/backend/depset/links.go @@ -58,10 +58,7 @@ func (lc *LinkCheckerImpl) CanExecute(execInChain eth.ChainID, return false } expiresAt := safemath.SaturatingAdd(initTimestamp, lc.cfg.MessageExpiryWindow()) - if expiresAt < execInTimestamp { // expiry check - return false - } - return true + return expiresAt >= execInTimestamp // expiry check } // LinkCheckFn is a function-type that implements LinkChecker, for testing and other special case definitions diff --git a/packages/contracts-bedrock/snapshots/semver-lock.json b/packages/contracts-bedrock/snapshots/semver-lock.json index ae49ded301c..6f8510a18ea 100644 --- a/packages/contracts-bedrock/snapshots/semver-lock.json +++ b/packages/contracts-bedrock/snapshots/semver-lock.json @@ -1,6 +1,6 @@ { "src/L1/BatchAuthenticator.sol:BatchAuthenticator": { - "initCodeHash": "0x90f154249a328699903e02c068f01f4f99fc9b5d79bccc4104fd006fdaaec4df", + "initCodeHash": "0x886ad73f143db896806140ccb2a64c353c4822bcc6021e1e6bb48497da478d1c", "sourceCodeHash": "0xb0769be04670274b46231d81eb19b7bac6f2f8d4b4989ad9dda4aea85ef6166d" }, "src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge": { @@ -223,4 +223,4 @@ "initCodeHash": "0x2bfce526f82622288333d53ca3f43a0a94306ba1bab99241daa845f8f4b18bd4", "sourceCodeHash": "0xf49d7b0187912a6bb67926a3222ae51121e9239495213c975b3b4b217ee57a1b" } -} +} \ No newline at end of file