66
77- [ Chain ID] ( #chain-id )
88- [ Updating the Dependency Set] ( #updating-the-dependency-set )
9- - [ Security Considerations] ( #security -considerations )
9+ - [ Future Considerations] ( #future -considerations )
1010 - [ Layer 1 as Part of the Dependency Set] ( #layer-1-as-part-of-the-dependency-set )
11+ - [ Security Considerations] ( #security-considerations )
12+ - [ Dependency Set Size] ( #dependency-set-size )
1113
1214<!-- END doctoc generated TOC please keep comment here to allow auto update -->
1315
1416The dependency set defines the set of chains that destination chains allow as source chains. Another way of
15- saying it is that the dependency set defines the set of initiating messages that are valid for an executing
16- message to be included . An executing message MUST have an initiating message that is included in a chain
17+ saying it is that the dependency set defines the set of initiating messages that are valid to be used
18+ as part of an executing message . An executing message MUST have an initiating message that is created by a chain
1719in the dependency set.
1820
1921The dependency set is defined by a set of chain ids. Since it is impossible to enforce uniqueness of chain ids,
2022social consensus MUST be used to determine the chain that represents the canonical chain id. This
2123particularly impacts the block builder as they SHOULD use the chain id to assist in validation
2224of executing messages.
2325
24- The dependency set is configured on a per chain basis and is a unidirectional relationship. This means
25- that it is possible to depend on a chain without it depending back. This means that it is possible
26- to send assets to a chain where they cannot be sent back.
26+ The dependency set is configured on a per cluster basis. All chains that are in the dependency set
27+ can accept initiating messages from any other chain in the dependency set, resulting in a mesh.
2728
2829The chain id of the local chain MUST be considered as part of its own dependency set. This allows a chain
2930to consume logs that it has produced much more cheaply than providing a block hash proof.
3031
31- While the dependency set explicitly defines the set of chains that are depended on for incoming messages,
32- the full set of transitive dependencies must be known to allow for the progression of safety.
33- This means that the ` op-node ` needs to be aware of all transitive dependencies.
34-
3532## Chain ID
3633
3734The concept of a chain id was introduced in [ EIP-155] ( https://eips.ethereum.org/EIPS/eip-155 ) to prevent
@@ -43,29 +40,24 @@ In the future, OP Stack chains reserve the right to use up to 32 bytes to repres
4340configuration of the chain should deterministically map to a chain id and with careful architecture
4441changes, all possible OP Stack chains in the superchain will be able to exist counterfactually.
4542
46- It is a known issue that not all software in the Ethereum can handle 32 byte chain ids.
43+ It is a known issue that not all software in the Ethereum ecosystem can handle 32 byte chain ids.
4744
4845## Updating the Dependency Set
4946
50- The ` SystemConfig ` is updated to manage a new role, ` dependencyManager ` .
51- It can only updated by the ` ProxyAdmin ` during an contract upgrade.
52- The sole holder of this role is the only address
53- permissioned to update (remove/add to) the dependency set of that chain.
47+ The dependency set is managed in the client software. Adding a chain to the dependency set is
48+ considered an upgrade to the network. It is not possible to remove chains from the dependency set.
5449
55- The ` SystemConfig ` is also updated to manage the dependency set.
56- The address with the ` dependency manager ` role can add or remove
57- chains from the dependency set through the ` SystemConfig ` .
50+ ## Future Considerations
5851
59- The ` SystemConfig ` MUST enforce that the maximum size of the dependency set is ` type(uint8).max ` or 255.
52+ ### Layer 1 as Part of the Dependency Set
6053
61- ## Security Considerations
54+ The layer one MAY be part of the dependency set in the future. This means that any event
55+ created on layer one is consumable on layer two.
6256
63- ### Layer 1 as Part of the Dependency Set
57+ ## Security Considerations
6458
65- The layer one MAY be part of the dependency set if the fault proof implementation is set up
66- to support it. It is known that it is possible but it is not known if this is going to be
67- a feature of the first release. This section should be clarified when the decision is made.
59+ ### Dependency Set Size
6860
69- If layer one is part of the dependency set, then it means that any event on L1 can be pulled
70- into any L2. This is a very powerful abstraction as a minimal amount of execution can happen
71- on L1 which triggers additional execution across all L2s in the OP Stack .
61+ It becomes increasingly expensive to fully validate the full cluster as the size of the dependency
62+ set grows. The proof system requires validating all of the chains so the size of the dependency
63+ set is limited by the performance of the proof .
0 commit comments