diff --git a/devnet-sdk/proofs/prestate/client.go b/devnet-sdk/proofs/prestate/client.go index 83ca757a6e281..0797fedcb781b 100644 --- a/devnet-sdk/proofs/prestate/client.go +++ b/devnet-sdk/proofs/prestate/client.go @@ -9,6 +9,10 @@ import ( "mime/multipart" "net/http" "path/filepath" + + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/backend/depset" + "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" ) // These constants should be in sync with op-program/chainconfig/chaincfg.go @@ -63,34 +67,22 @@ func WithInteropDepSet(content io.Reader) PrestateBuilderOption { } } -type Dependency struct { - ChainIndex uint32 `json:"chainIndex"` - ActivationTime uint64 `json:"activationTime"` - HistoryMinTime uint64 `json:"historyMinTime"` -} - -type DependencySet struct { - Dependencies map[string]Dependency `json:"dependencies"` -} - -func RenderInteropDepSet(chains []string) DependencySet { - deps := DependencySet{ - Dependencies: make(map[string]Dependency), - } - +func generateInteropDepSet(chains []string) ([]byte, error) { + deps := make(map[eth.ChainID]*depset.StaticConfigDependency) for i, chain := range chains { - deps.Dependencies[chain] = Dependency{ - ChainIndex: uint32(i), - ActivationTime: 0, - HistoryMinTime: 0, + id, err := eth.ParseDecimalChainID(chain) + if err != nil { + return nil, fmt.Errorf("failed to parse chain ID: %w", err) } + deps[id] = &depset.StaticConfigDependency{ChainIndex: types.ChainIndex(i)} } - return deps -} + interopDepSet, err := depset.NewStaticConfigDependencySet(deps) + if err != nil { + return nil, fmt.Errorf("failed to create interop dependency set: %w", err) + } -func generateInteropDepSet(chains []string) ([]byte, error) { - json, err := json.Marshal(RenderInteropDepSet(chains)) + json, err := json.Marshal(interopDepSet) if err != nil { return nil, err } diff --git a/op-deployer/pkg/deployer/pipeline/interop_depset.go b/op-deployer/pkg/deployer/pipeline/interop_depset.go index 06101a0c74443..09b98228a7f64 100644 --- a/op-deployer/pkg/deployer/pipeline/interop_depset.go +++ b/op-deployer/pkg/deployer/pipeline/interop_depset.go @@ -4,8 +4,10 @@ import ( "context" "fmt" - "github.com/ethereum-optimism/optimism/devnet-sdk/proofs/prestate" "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/state" + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/backend/depset" + "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" ) func GenerateInteropDepset(ctx context.Context, pEnv *Env, globalIntent *state.Intent, st *state.State) error { @@ -16,14 +18,18 @@ func GenerateInteropDepset(ctx context.Context, pEnv *Env, globalIntent *state.I return nil } - var chains []string - for _, chain := range globalIntent.Chains { - chains = append(chains, chain.ID.Big().String()) + lgr.Info("creating interop dependency set...") + deps := make(map[eth.ChainID]*depset.StaticConfigDependency) + for i, chain := range globalIntent.Chains { + id := eth.ChainIDFromBytes32(chain.ID) + deps[id] = &depset.StaticConfigDependency{ChainIndex: types.ChainIndex(i)} } - lgr.Info("rendering the interop dependency set...") - depSet := prestate.RenderInteropDepSet(chains) - st.InteropDepSet = &depSet + interopDepSet, err := depset.NewStaticConfigDependencySet(deps) + if err != nil { + return fmt.Errorf("failed to create interop dependency set: %w", err) + } + st.InteropDepSet = interopDepSet if err := pEnv.StateWriter.WriteState(st); err != nil { return fmt.Errorf("failed to write state: %w", err) diff --git a/op-deployer/pkg/deployer/state/state.go b/op-deployer/pkg/deployer/state/state.go index 1333ea2be978b..b628c26f6b62c 100644 --- a/op-deployer/pkg/deployer/state/state.go +++ b/op-deployer/pkg/deployer/state/state.go @@ -7,6 +7,7 @@ import ( "github.com/ethereum-optimism/optimism/devnet-sdk/proofs/prestate" "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/broadcaster" + "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/backend/depset" "github.com/ethereum-optimism/optimism/op-chain-ops/addresses" "github.com/ethereum-optimism/optimism/op-chain-ops/foundry" @@ -37,7 +38,7 @@ type State struct { PrestateManifest *prestate.PrestateManifest `json:"prestateManifest"` // InteropDepSet contains the interop dependency set render by the prestate SDK if interop is enabled - InteropDepSet *prestate.DependencySet `json:"interopDepSet,omitempty"` + InteropDepSet *depset.StaticConfigDependencySet `json:"interopDepSet,omitempty"` // SuperchainDeployment contains the addresses of the Superchain // deployment. It only contains the proxies because the implementations