Description
The superchain-registry should provide Go-embeddable configuration for the dependency set. Since all chains in the superchain-registry will be upgraded to interop, we will need to provide a way to configure the dependency set of multiple clusters.
Following the config scheme used by the op-supervisor.
The interop dependency configuration should be a table that maps chain IDs to a DependencySet
.
The DependencySet
is a mapping of chainIDs
, including the mapped chain ID, to a Dependency
, where each Dependency
contains:
chainIndex
- the chain ID of mapped chain (for now).activationTime
- when the dependency chain becomes active in the cluster.historyMinTime
- when the dependency chain's initiating messages can be executable.
As such, all chains that belong to the same cluster have the same DependencySet
configuration. This duplicates configuration to simplify config management and discovery. Such that a chain can quickly figure out its intra-cluster dependencies without explicitly loading the configuration of other chains.
Alternative Configuration
Rather than create duplicate depset configurations for each chain in a cluster, an alternative scheme is to define a superchainID
that identifies an interop cluster. The superchainID
never changes even as a cluster admits new chains. By avoiding duplicated depsets, it becomes easy to manage the configuration of interop clusters.
I don't think this is the correct approach right now as it overly complicates configuration and the end goal is to have a single superchain cluster for all chains in the registry. But if this changes in the future, we should consider this approach.