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: src/content/docs/en/developers/guides/running-a-scroll-node.mdx
+166-1
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ For most developers, using [our official RPC endpoint](/en/developers/developer-
19
19
20
20
We recommend using the latest release at https://github.com/scroll-tech/go-ethereum/releases. The required version for Scroll Mainnet is `scroll-v5.5.0` or higher, and for Scroll Sepolia it is `scroll-v5.4.2` or higher. If you'd like to keep up with new node releases, go to https://github.com/scroll-tech/go-ethereum, click on **Watch**, **Custom**, and make sure that **Releases** is selected.
21
21
22
-
For the remainder of this guide, `VERSION` will denote the version tag. For example, `scroll-v5.7.0`.
22
+
For the remainder of this guide, `VERSION` will denote the version tag. For example, `scroll-v5.8.0`.
23
23
24
24
### Hardware Requirements
25
25
@@ -139,6 +139,171 @@ Running the node in Docker might have a significant impact on node performance.
A full sync will take about 2 weeks for Scroll mainnet and 2-3 days for Scroll Sepolia depending on the speed of the RPC node, beacon node and the local machine.
191
+
Progress is reported as follows for every 1000 blocks applied:
192
+
193
+
```bash
194
+
INFO [08-01|16:44:42.173] L1 sync progress blockchain height=87000 block hash=608eec..880ebd root=218215..9a58a2
195
+
```
196
+
197
+
198
+
### Troubleshooting
199
+
- The node (APIs, geth console, etc) will not be responsive until all the L1 messages have been synced.
200
+
- However, the derivation pipeline is already started during the initial sync phase, which can be seen through `L1 sync progress [...]` logs.
201
+
- For Scroll Sepolia it might take a little longer (10-20mins) for the first `L1 sync progress [...]` logs to appear as the L1 blocks are more sparse at the beginning.
202
+
203
+
You should see something like this shortly after starting:
204
+
```bash
205
+
INFO [09-18|13:41:34.039] Starting L1 message sync service latestProcessedBlock=20,633,529
206
+
WARN [09-18|13:41:34.551] Running initial sync of L1 messages before starting l2geth, this might take a while...
207
+
INFO [09-18|13:41:45.249] Syncing L1 messages processed=20,634,929 confirmed=20,777,179 collected=71 progress(%)=99.315
208
+
INFO [09-18|13:41:55.300] Syncing L1 messages processed=20,637,029 confirmed=20,777,179 collected=145 progress(%)=99.325
209
+
INFO [09-18|13:42:05.400] Syncing L1 messages processed=20,638,329 confirmed=20,777,179 collected=220 progress(%)=99.332
210
+
INFO [09-18|13:42:15.610] Syncing L1 messages processed=20,640,129 confirmed=20,777,179 collected=303 progress(%)=99.340
211
+
INFO [09-18|13:42:24.324] L1 sync progress "blockchain height"=1000 "block hash"=a28c48..769cee root=174edb..9d9fbd
212
+
INFO [09-18|13:42:25.555] Syncing L1 messages processed=20,641,529 confirmed=20,777,179 collected=402 progress(%)=99.347
213
+
```
214
+
215
+
#### Temporary Errors
216
+
217
+
Especially at the beginning some errors like below might appear in the console.
218
+
This is expected, as the pipeline relies on the L1 messages but in case they are not synced fast enough such an error might pop up.
219
+
The chain derivation will continue once the L1 messages are available.
220
+
```
221
+
WARN [09-18|13:52:25.843] syncing pipeline step failed due to temporary error, retrying err="temporary: failed to process logs to DA, error: failed to get commit batch da: 7, err: failed to get L1 messages for v0 batch 7: EOF: <nil>"
222
+
```
223
+
224
+
### Limitations
225
+
226
+
L1 follower nodes can reproduce the correct `state root` of L2 blocks.
227
+
However, currently the derived `block hash` will not match the one seen on L2 follower nodes or Scrollscan.
228
+
This is due to the fact that currently the header fields `difficulty` and `extraData` are not stored on DA but these fields are utilized by [Clique consensus](https://eips.ethereum.org/EIPS/eip-225) which is used by the Scroll protocol.
229
+
This will be fixed in a future upgrade.
230
+
231
+
To verify the locally created `state root` against mainnet, we can do the following:
232
+
233
+
```bash
234
+
# query local block info
235
+
curl localhost:8545 -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getHeaderByNumber","params":["0x2AF8"],"id":0}'| jq
236
+
237
+
# query mainnet block info
238
+
curl https://rpc.scroll.io -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getHeaderByNumber","params":["0x2AF8"],"id":0}'| jq
239
+
```
240
+
241
+
By comparing the headers we can most importantly see that **`state root` , `receiptsRoot` and everything that has to do with the state match**.
0 commit comments