Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 15 additions & 23 deletions devnet-sdk/proofs/prestate/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
}
Expand Down
20 changes: 13 additions & 7 deletions op-deployer/pkg/deployer/pipeline/interop_depset.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)
Expand Down
3 changes: 2 additions & 1 deletion op-deployer/pkg/deployer/state/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down