forked from protolambda/forkdiff
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfork.yaml
273 lines (267 loc) · 13.4 KB
/
fork.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
title: "op-reth"
logo: "anton.png"
footer: |
[Fork-diff](https://github.com/protolambda/forkdiff) overview of [op-reth](https://github.com/anton-rs/op-reth), a fork of [reth](https://github.com/paradigmxyz/reth) and execution-engine of the [OP Stack](https://github.com/ethereum-optimism/optimism).
base:
name: paradigmxyz/reth
url: https://github.com/paradigmxyz/reth
ref: refs/heads/main
fork:
name: anton-rs/op-reth
url: https://github.com/anton-rs/op-reth
ref: refs/heads/clabby/op-reth
def:
title: "op-reth"
description: |
This is an overview of the changes in [op-reth](https://github.com/anton-rs/op-reth), a fork of [reth](https://github.com/paradigmxyz/reth), part of the [OP Stack](https://github.com/ethereum-optimism/optimism).
<br />
<br />
Similar minimal-diff forks of Ethereum Execution Clients for the [OP Stack](https://github.com/ethereum-optimism/optimism) include:
<br />
- [op-erigon](https://github.com/testinprod-io/op-erigon) built by [testinprod-io](https://github.com/testinprod-io).
<br />
- [op-geth](https://github.com/ethereum-optimism/op-geth) built by [optimism](https://github.com/ethereum-optimism/optimism).
globs:
- "hello/world/greeter.go" # list files of which the patches should be included
- "hello/util/*" # use file globs to include multiple files
- "hello/util/*[!_test].go" # you can ignore things with globs too
sub:
- title: "Reth Binary Changes"
description: "Documents op-reth changes to the reth binary mod."
globs:
- "bin/reth/**"
- "bin/reth/src/init.rs"
- "bin/reth/src/lib.rs"
sub:
- title: "Rollup Arguments"
description: "Type definitions and parameters for rollup configuration"
globs:
- "bin/reth/src/args/*"
- title: "Optimism Payload Builder"
description: "Adds support for the optimism payload builder for spawning payload builder service."
globs:
- "bin/reth/src/cli/*"
- title: "Node Subcommand Modifications"
description: "Adds support for optimism rollup config in the reth node subcommand."
globs:
- "bin/reth/src/node/*"
- title: "Consensus Crate"
description: "Documents op-reth changes to the consensus crate."
globs:
- "crates/consensus/*"
- "crates/consensus/auto-seal/src/lib.rs"
sub:
- title: "Beacon Head Updates"
description: "Allows the beacon consensus engine to update the head."
globs:
- "crates/consensus/beacon/*"
- "crates/consensus/beacon/src/engine/*"
- title: "Consensus Validation Changes"
description: "Validates consensus headers behind the optimism feature flag only when the optimism chain spec option is truthy."
globs:
- "crates/consensus/common/*"
- "crates/consensus/common/src/*"
- title: "Interfaces Crate"
description: "Primarily adds optimism-specific block execution error variants."
globs:
- "crates/interfaces/*"
- "crates/interfaces/src/*"
- "crates/interfaces/src/blockchain_tree/*"
- "crates/interfaces/src/test_utils/*"
- title: "Net Crate"
description: "Documents op-reth changes to the net crate."
globs:
- "crates/net/*"
- "crates/net/eth-wire/*"
- "crates/net/eth-wire/src/*"
- "crates/net/eth-wire/src/types/*"
sub:
- title: "Network API Module"
description: "Updates the NetworkInfo to expose a sequencer endpoint function."
globs:
- "crates/net/network-api/*"
- "crates/net/network-api/src/*"
- title: "Network Module"
description: "Adds the disable tx gossip and sequencer endpoint to the network config and implements them in the network transaction manager."
globs:
- "crates/net/network/*"
- "crates/net/network/src/*"
- title: "Payload Crate"
description: "Documents op-reth changes to the payload crate."
globs:
- "crates/payload/*"
sub:
- title: "Basic Payload Builder Module"
description: |
Implements the Optimism Basic Payload Builder.
If the `no_tx_pool` argument is passed in the payload attributes,
the transaction pool will be ignored and the only transactions
included in the payload will be those sent through the attributes.
The L1BlockInfo must be parsed by the block builder to calculate the
l1 tx cost for deposit transactions.
Cumulative block gas computations change here as well depending on the
hardforks activated, specifically Regolith and Bedrock.
Adds the compute pending block option behind the optimism feature flag.
Builds the payload if there is no tx pool enabled and the optimism chain spec is truthy.
globs:
- "crates/payload/basic/*"
- "crates/payload/basic/src/*"
- title: "Builder Payload Module"
description: "Updates payload builder error variants and payload builder attributes construction."
globs:
- "crates/payload/builder/*"
- "crates/payload/builder/src/*"
- title: "Genesis Files"
description: "OP Stack Chain Genesis Files"
globs:
- "crates/primitives/res/genesis/*"
- title: "Primitives Crate"
description: "Documents op-reth changes to the primitives crate."
globs:
- "crates/primitives/*"
- "crates/primitives/src/serde_helper/*"
sub:
- title: "Base Fee Calculation Tests"
description: "Optimism base fee computation tests."
globs:
- "crates/primitives/src/basefee.rs"
- title: "Chain Types"
description: "Chain Types, IDs and Specs"
globs:
- "crates/primitives/src/chain/mod.rs"
- "crates/primitives/src/chain/spec.rs"
- "crates/primitives/src/constants/mod.rs"
- title: "Optimism Hardforks"
description: "Hardfork support, receipt types, and receipt root calculations."
globs:
- "crates/primitives/src/hardfork.rs"
- "crates/primitives/src/header.rs"
- "crates/primitives/src/lib.rs"
- "crates/primitives/src/proofs.rs"
- "crates/primitives/src/receipt.rs"
- title: "Optimism Deposit Transaction Type"
description: "Supports the optimism deposit transaction type."
globs:
- "crates/primitives/src/transaction/*"
- title: "Revm Crate"
description: "Documents op-reth changes to the revm crate."
globs:
- "crates/revm/*"
- "crates/revm/revm-inspectors/src/tracing/builder/*"
sub:
- title: "Revm Primitives"
description: "Updates the revm transaction environment for deposit transactions."
globs:
- "crates/revm/revm-primitives/*"
- "crates/revm/revm-primitives/src/*"
- title: "Executor Changes"
description: |
Adds contract creation support for the deposit transaction type by setting the tx nonce to the account nonce.
Also dispatches transaction execution to the custom optimism handler if the feature flag is toggled.
globs:
- "crates/revm/src/executor.rs"
- title: "Optimism Executor"
description: |
Implements the <code>BlockExecutor</code> trait on the <code>Executor</code> when the optimism feature flag is toggled.
There is a bunch of optimism-specific transaction execution changes here.
One is that pre-regolith hardfork, system transactions did not contribute to the block gas consumption.
Prior to regolith, deposit transaction gas usage is equal to its gas limit.
Post regolith, there are no more system transactions and deposit transactions report their actual gas usage.
Failed deposit transactions must still have a receipt (handled by the <code>fail_deposit_tx!</code> macro).
globs:
- "crates/revm/src/lib.rs"
- "crates/revm/src/optimism/executor.rs"
- title: "L1 Block Info"
description: |
At the start of each L2 block, the L1 Block Info is posted.
This provides L1 block information used to calculated the L1 cost of L2 transactions.
globs:
- "crates/revm/src/optimism/mod.rs"
- title: "RPC Crate"
description: "Documents op-reth changes to the rpc crate."
globs:
- "crates/rpc/**"
sub:
- title: "RPC Engine API"
description: "Enforces that the payload attributes received on a forkchoice update contain a gas limit."
globs:
- "crates/rpc/rpc-engine-api/*"
- "crates/rpc/rpc-engine-api/src/**"
- "crates/rpc/rpc-engine-api/tests/it/**"
- title: "RPC Types Compat"
description: "Update reth rpc compatibility layer to translate optimism-specific reth primitive types to rpc types."
globs:
- "crates/rpc/rpc-types-compat/*"
- "crates/rpc/rpc-types-compat/src/transaction/**"
- title: "RPC Types"
description: |
Updates the RPC Types to support optimism feature flag types.
Adds transactions, no tx pool, and gas limit fields to the PayloadAttributes.
Adds deposit tx source hash, mint value, and system tx fields to the transaction type.
Updates the transaction receipt type to include the deposit nonce, l1 fee, l1 fee scalar, l1 gas price, and l1 gas used fields.
globs:
- "crates/rpc/rpc-types/*"
- "crates/rpc/rpc-types/src/eth/*"
- "crates/rpc/rpc-types/src/eth/engine/*"
- "crates/rpc/rpc-types/src/eth/transaction/*"
- title: "RPC Support"
description: |
Supports parsing L1 Block Info and building transaction receipts with the additional optimism fields parsed from the l1 block info.
Forwards transactions to the optional sequencer endpoint in the rpc <code>send_raw_transaction</code> method.
globs:
- "crates/rpc/rpc/*"
- "crates/rpc/rpc/src/eth/**"
- "crates/rpc/rpc/src/eth/api/**"
- title: "Storage Crate"
description: "Documents op-reth changes to the storage crate."
globs:
- "crates/storage/provider/**"
- "crates/storage/provider/src/test_utils/**"
sub:
- title: "Post State"
description: "Temporary fix to the receipts root calculation since post regolith a minor bug in op-geth caused the deposit nonce to be skipped in the tx encoding."
globs:
- "crates/storage/provider/src/post_state/*"
- title: "Block Executor Trait"
description: "Updates the BlockExecutor trait with an `execute_transactions` method."
globs:
- "crates/storage/provider/src/traits/*"
- title: "Transaction Pool Crate"
description: "Documents op-reth changes to the transaction pool crate."
globs:
- "crates/transaction-pool/**"
sub:
- title: "L1 Block Info"
description: "Adds the requirement that the Client type implements the BlockReaderIdExt trait to allow optimism to read the l1 block info and calculate l1 transaction costs."
globs:
- "crates/transaction-pool/src/lib.rs"
- title: "NoopTransactionPool"
description: "Updates the noop transaction pool to prevent deposit transactions from entering the pool."
globs:
- "crates/transaction-pool/src/noop.rs"
- title: "Test Utilities"
description: "Test utilities are updated to match on the deposit transaction type"
globs:
- "crates/transaction-pool/src/test_utils/**"
- title: "PoolTransaction"
description: "The PoolTransaction trait is updated to expose input and deposit nonce methods."
globs:
- "crates/transaction-pool/src/traits.rs"
- title: "Transaction Validator Updates"
description: |
Updates the TransactionValidator to error for deposit transactions.
When computing the cost of non-deposit transactions, the l1 block info is fetched using the latest block and used to calculate the transaction's L1 cost.
Tests are added to validate deposit transactions are not accepted.
globs:
- "crates/transaction-pool/src/validate/**"
- title: "Miscellaneous"
description: "Automated or otherwise unimportant file changes."
globs:
- "Cargo.lock"
# The EF Test Cargo.toml is picked up on a strange carriage return diff I believe
- "testing/ef-tests/Cargo.toml"
# Files that can be ignored globally.
# These will be listed in a separate grayed-out section
# and do not count towards the total line count.
ignore:
- "*.sum"