diff --git a/kurtosis-devnet/cmd/main.go b/kurtosis-devnet/cmd/main.go index 6ea55811be90..626d18ddec32 100644 --- a/kurtosis-devnet/cmd/main.go +++ b/kurtosis-devnet/cmd/main.go @@ -137,11 +137,6 @@ func localPrestateOption(cfg *config, server *staticServer) tmpl.TemplateContext return "", fmt.Errorf("failed to create prestate build directory: %w", err) } - // Build all prestate files directly in the target directory - if err := prestateBuilder.Build(buildDir); err != nil { - return "", fmt.Errorf("failed to build prestates: %w", err) - } - // Get the relative path from server.dir to buildDir for the URL relPath, err := filepath.Rel(server.dir, buildDir) if err != nil { @@ -154,6 +149,17 @@ func localPrestateOption(cfg *config, server *staticServer) tmpl.TemplateContext return url, nil } + // Check if we already have prestate files. Typical in interop mode, + // where we have a prestate for each chain. + if dir, _ := os.ReadDir(buildDir); len(dir) > 0 { + return url, nil + } + + // Build all prestate files directly in the target directory + if err := prestateBuilder.Build(buildDir); err != nil { + return "", fmt.Errorf("failed to build prestates: %w", err) + } + // Find all prestate-proof*.json files matches, err := filepath.Glob(filepath.Join(buildDir, "prestate-proof*.json")) if err != nil {