From 7d6a574e1fd5088a7e5eef6827c6c5f2a6cc3e1e Mon Sep 17 00:00:00 2001 From: Adrian Sutton Date: Fri, 23 May 2025 13:24:14 +1000 Subject: [PATCH 1/2] op-node: Add dependency set flag Required when interop fork is scheduled. Makes the dependency set available on the node config but it isn't currently used. Will unblock updating kurtosis to provide the depset config file. --- op-node/flags/flags.go | 7 +++++++ op-node/node/config.go | 3 +++ op-node/rollup/derive/attributes.go | 5 +++++ op-node/service.go | 15 +++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/op-node/flags/flags.go b/op-node/flags/flags.go index 531b4420d8c..4ae1df146ce 100644 --- a/op-node/flags/flags.go +++ b/op-node/flags/flags.go @@ -75,6 +75,12 @@ var ( Category: RollupCategory, } /* Optional Flags */ + DependencySet = &cli.PathFlag{ + Name: "dependency-set", + Usage: "Dependency-set configuration, point at JSON file.", + EnvVars: prefixEnvVars("DEPENDENCY_SET"), + TakesFile: true, + } BeaconHeader = &cli.StringFlag{ Name: "l1.beacon-header", Usage: "Optional HTTP header to add to all requests to the L1 Beacon endpoint. Format: 'X-Key: Value'", @@ -458,6 +464,7 @@ var optionalFlags = []cli.Flag{ BeaconFallbackAddrs, BeaconCheckIgnore, BeaconFetchAllSidecars, + DependencySet, SyncModeFlag, FetchWithdrawalRootFromState, RPCListenAddr, diff --git a/op-node/node/config.go b/op-node/node/config.go index e54c3f2a57c..3f10000106c 100644 --- a/op-node/node/config.go +++ b/op-node/node/config.go @@ -7,6 +7,7 @@ import ( "math" "time" + "github.com/ethereum-optimism/optimism/op-node/rollup/derive" "github.com/ethereum/go-ethereum/log" altda "github.com/ethereum-optimism/optimism/op-alt-da" @@ -31,6 +32,8 @@ type Config struct { Rollup rollup.Config + DependencySet derive.DependencySet + // P2PSigner will be used for signing off on published content // if the node is sequencing and if the p2p stack is enabled P2PSigner p2p.SignerSetup diff --git a/op-node/rollup/derive/attributes.go b/op-node/rollup/derive/attributes.go index b90708d74fe..53ca5fab546 100644 --- a/op-node/rollup/derive/attributes.go +++ b/op-node/rollup/derive/attributes.go @@ -13,6 +13,11 @@ import ( "github.com/ethereum-optimism/optimism/op-service/predeploys" ) +type DependencySet interface { + // Chains returns the number of chains in the dependency set + Chains() []eth.ChainID +} + // L1ReceiptsFetcher fetches L1 header info and receipts for the payload attributes derivation (the info tx and deposits) type L1ReceiptsFetcher interface { InfoByHash(ctx context.Context, hash common.Hash) (eth.BlockInfo, error) diff --git a/op-node/service.go b/op-node/service.go index 2938fea6861..b79313f1cb6 100644 --- a/op-node/service.go +++ b/op-node/service.go @@ -8,6 +8,7 @@ import ( "os" "strings" + "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/backend/depset" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" @@ -39,6 +40,11 @@ func NewConfig(ctx *cli.Context, log log.Logger) (*node.Config, error) { return nil, err } + depSet, err := NewDependencySetFromCLI(ctx) + if err != nil { + return nil, err + } + if !ctx.Bool(flags.RollupLoadProtocolVersions.Name) { log.Info("Not opted in to ProtocolVersions signal loading, disabling ProtocolVersions contract now.") rollupConfig.ProtocolVersionsAddress = common.Address{} @@ -85,6 +91,7 @@ func NewConfig(ctx *cli.Context, log log.Logger) (*node.Config, error) { L1: l1Endpoint, L2: l2Endpoint, Rollup: *rollupConfig, + DependencySet: depSet, Driver: *driverConfig, Beacon: NewBeaconEndpointConfig(ctx), InteropConfig: NewSupervisorEndpointConfig(ctx), @@ -285,6 +292,14 @@ func applyOverrides(ctx *cli.Context, rollupConfig *rollup.Config) { } } +func NewDependencySetFromCLI(ctx *cli.Context) (depset.DependencySet, error) { + if !ctx.IsSet(flags.DependencySet.Name) { + return nil, nil + } + loader := &depset.JSONDependencySetLoader{Path: ctx.Path(flags.DependencySet.Name)} + return loader.LoadDependencySet(ctx.Context) +} + func NewSyncConfig(ctx *cli.Context, log log.Logger) (*sync.Config, error) { if ctx.IsSet(flags.L2EngineSyncEnabled.Name) && ctx.IsSet(flags.SyncModeFlag.Name) { return nil, errors.New("cannot set both --l2.engine-sync and --syncmode at the same time") From 2ad356387ff8e5fc609fd66ebdc2b8d8a662b97d Mon Sep 17 00:00:00 2001 From: protolambda Date: Fri, 23 May 2025 16:02:35 +0200 Subject: [PATCH 2/2] op-node: categorize the dependency set CLI flag --- op-node/flags/flags.go | 15 ++++++++------- op-node/service.go | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/op-node/flags/flags.go b/op-node/flags/flags.go index 4ae1df146ce..17bbf731f82 100644 --- a/op-node/flags/flags.go +++ b/op-node/flags/flags.go @@ -75,12 +75,6 @@ var ( Category: RollupCategory, } /* Optional Flags */ - DependencySet = &cli.PathFlag{ - Name: "dependency-set", - Usage: "Dependency-set configuration, point at JSON file.", - EnvVars: prefixEnvVars("DEPENDENCY_SET"), - TakesFile: true, - } BeaconHeader = &cli.StringFlag{ Name: "l1.beacon-header", Usage: "Optional HTTP header to add to all requests to the L1 Beacon endpoint. Format: 'X-Key: Value'", @@ -432,6 +426,13 @@ var ( Destination: new(string), Category: InteropCategory, } + InteropDependencySet = &cli.PathFlag{ + Name: "interop.dependency-set", + Usage: "Dependency-set configuration, point at JSON file.", + EnvVars: prefixEnvVars("INTEROP_DEPENDENCY_SET"), + TakesFile: true, + Category: InteropCategory, + } IgnoreMissingPectraBlobSchedule = &cli.BoolFlag{ Name: "ignore-missing-pectra-blob-schedule", @@ -464,7 +465,6 @@ var optionalFlags = []cli.Flag{ BeaconFallbackAddrs, BeaconCheckIgnore, BeaconFetchAllSidecars, - DependencySet, SyncModeFlag, FetchWithdrawalRootFromState, RPCListenAddr, @@ -504,6 +504,7 @@ var optionalFlags = []cli.Flag{ InteropRPCAddr, InteropRPCPort, InteropJWTSecret, + InteropDependencySet, IgnoreMissingPectraBlobSchedule, ExperimentalOPStackAPI, } diff --git a/op-node/service.go b/op-node/service.go index b79313f1cb6..3698b02e3f3 100644 --- a/op-node/service.go +++ b/op-node/service.go @@ -293,10 +293,10 @@ func applyOverrides(ctx *cli.Context, rollupConfig *rollup.Config) { } func NewDependencySetFromCLI(ctx *cli.Context) (depset.DependencySet, error) { - if !ctx.IsSet(flags.DependencySet.Name) { + if !ctx.IsSet(flags.InteropDependencySet.Name) { return nil, nil } - loader := &depset.JSONDependencySetLoader{Path: ctx.Path(flags.DependencySet.Name)} + loader := &depset.JSONDependencySetLoader{Path: ctx.Path(flags.InteropDependencySet.Name)} return loader.LoadDependencySet(ctx.Context) }