Skip to content

Commit 1f00bb1

Browse files
authored
dependency-set: update spec (#493)
Updates the spec to match the latest definition of the dependency set. It is no longer an onchain construct but instead is an offchain construct in the client software.
1 parent 170ee3f commit 1f00bb1

File tree

1 file changed

+19
-27
lines changed

1 file changed

+19
-27
lines changed

specs/interop/dependency-set.md

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,29 @@
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

1416
The 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
1719
in the dependency set.
1820

1921
The dependency set is defined by a set of chain ids. Since it is impossible to enforce uniqueness of chain ids,
2022
social consensus MUST be used to determine the chain that represents the canonical chain id. This
2123
particularly impacts the block builder as they SHOULD use the chain id to assist in validation
2224
of 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

2829
The chain id of the local chain MUST be considered as part of its own dependency set. This allows a chain
2930
to 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

3734
The 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
4340
configuration of the chain should deterministically map to a chain id and with careful architecture
4441
changes, 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

Comments
 (0)