You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: EIPS/eip-7892.md
+72-13Lines changed: 72 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,14 +18,16 @@ This EIP introduces **Blob Parameter Only (BPO) Hardforks**, a lightweight mecha
18
18
19
19
Ethereum's scaling strategy relies on Layer 2 (L2) solutions for transaction execution while using Ethereum as a **data availability (DA) layer**. However, the demand for DA has increased rapidly, and the current approach of only modifying blob parameters in large, infrequent hard forks is **not agile enough** to keep up with L2 growth.
20
20
21
-
The key motivations for BPO forks are:
21
+
The key motivations for BPO forks are as follows:
22
22
23
23
1.**Continuous Scaling**
24
-
- L2 DA demand is growing rapidly, leading to saturation of blob capacity.
24
+
- L2 DA demand is growing rapidly, leading to ongoing saturation of blob capacity.
25
25
- Large, infrequent blob parameter changes create high costs and inefficiencies.
26
26
- BPO forks allow for more frequent, safer capacity increases.
27
27
28
28
2.**Reduced Operational Overhead**
29
+
- Performance improvements and further testing will continue to unlock additional capacity.
30
+
- It is desirable to reduce the time between core devs agreeing on a parameter increase and its effective deployment.
29
31
- Full Ethereum hard forks require significant coordination, testing, and upgrade efforts across clients.
30
32
- By isolating blob parameter changes, BPO forks reduce the complexity of upgrades.
31
33
@@ -39,12 +41,22 @@ The key motivations for BPO forks are:
39
41
40
42
## Specification
41
43
42
-
BPO forks are a special class of hard fork which **only modifies any of the following** blob-related parameters:
44
+
### Parametric hardforks
45
+
46
+
BPO forks are a category of **parametric hardforks**, which only change certain protocol parameters at a designated point in time without requiring client-side code changes. The new parameters are activated instantly, with no transition function. These hardforks are consensus-breaking, and therefore receive a `ForkVersion` in the consensus layer.
47
+
48
+
### Managed parameters
49
+
50
+
The following blob-related parameters are now managed by parametric configuration:
43
51
44
52
-**Blob Target (`blob_target`)**: The expected number of blobs per block.
45
53
-**Blob Limit (`blob_limit`)**: The maximum number of blobs per block.
46
54
-**Blob Base Fee Update Fraction (`baseFeeUpdateFraction`)**: Determines how blob gas pricing adjusts per block.
47
55
56
+
To ensure consistency, when a regular hardfork changes any of these parameters, it MUST do so by adding an entry to the blob schedule.
57
+
58
+
### Execution layer configuration
59
+
48
60
To facilitate these changes on the execution layer, the `blobSchedule` object specified in [EIP-7840](./eip-7840.md) is extended to allow for an arbitrary number of block timestamps at which these parameters **MAY** change.
49
61
50
62
```json
@@ -72,24 +84,71 @@ To facilitate these changes on the execution layer, the `blobSchedule` object sp
72
84
}
73
85
```
74
86
75
-
On the consensus layer, a new parameter is added to the configuration:
87
+
### Consensus layerconfiguration
76
88
77
-
```
78
-
BLOB_SCHEDULE:
79
-
- EPOCH: 348618
89
+
On the consensus layer, a new parameter is added to the configuration. The `FORK_VERSION` is only specified here for pure BPO forks. Regular forks have their own fork version specified in source, even if they alter blob parameters.
90
+
91
+
```yaml
92
+
BLOB_PARAMETER_SCHEDULE:
93
+
- EPOCH: 269568## Deneb (backported)
94
+
MAX_BLOBS_PER_BLOCK: 6
95
+
- EPOCH: 364032## Electra (backported)
96
+
MAX_BLOBS_PER_BLOCK: 9
97
+
- EPOCH: 400000## A future anonymous BPO fork carrying a fork version
98
+
FORK_VERSION: 0x09000000
80
99
MAX_BLOBS_PER_BLOCK: 24
81
-
- EPOCH: 355368
100
+
- EPOCH: 420000## A future anonymous BPO fork carrying a fork version
101
+
FORK_VERSION: 0x0A000000
82
102
MAX_BLOBS_PER_BLOCK: 56
83
103
```
84
104
85
105
The parameters and schedules above are purely illustrative. Actual values and schedules are beyond the scope of this specification.
- BPO forks **MUST NOT** conflict with other fork schedules
91
-
- The timestamp in `blobSchedule`**MUST** align with the start of the epoch specified in the consensus layer configuration
92
-
- The `max` field in `blobSchedule`**MUST** equal the `MAX_BLOBS_PER_BLOCK` value in the consensus layer configuration
150
+
- The ENR fields `next_fork_version` and `next_fork_epoch` are set from the configuration for the next BPO fork, if applicable.
151
+
- It's worth noting that p2p topics will roll over when a BPO fork is activated, as the `fork_digest` parameter is derived from the `fork_version` (modified above to account for BPO forks).
0 commit comments