-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathllms-full.txt
More file actions
7618 lines (5302 loc) · 355 KB
/
llms-full.txt
File metadata and controls
7618 lines (5302 loc) · 355 KB
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
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Introduction
URL: https://docs.erigon.tech/
An efficient, modular Ethereum execution client built for performance, low disk footprint, and flexible deployment.
## Sections
- [Get Started](https://docs.erigon.tech/get-started): Hardware requirements, installation options, and first-run guides to get your node online fast.
- [Easy Nodes](https://docs.erigon.tech/get-started/easy-nodes): One-command guided setup for Ethereum mainnet, Gnosis Chain, and Polygon nodes with sensible defaults.
- [Fundamentals](https://docs.erigon.tech/fundamentals): Sync modes, configuration, Docker, JWT, logging, storage optimization, and day-to-day operations.
- [Modules](https://docs.erigon.tech/fundamentals/modules): Run RPC daemon, TxPool, Sentry, and Downloader as independent processes for scalable cluster setups.
- [Staking](https://docs.erigon.tech/staking): Solo staking with Caplin (built-in consensus layer) or pair Erigon with any external consensus client.
- [Interacting with Erigon](https://docs.erigon.tech/interacting-with-erigon): JSON-RPC and gRPC API reference — eth, debug, trace, engine, txpool, and other namespaces.
- [Why Erigon?](https://docs.erigon.tech/get-started/why-using-erigon): Architecture advantages, performance benchmarks, and disk savings — understand what sets Erigon apart from other Ethereum execution clients.
---
# Get Started
URL: https://docs.erigon.tech/get-started
Everything you need to go from zero to a running Erigon node — requirements, installation, and guided setups.
## Sections
- [Why Erigon?](https://docs.erigon.tech/get-started/why-using-erigon): Performance benchmarks, disk savings, and architecture advantages over other Ethereum clients.
- [Hardware Requirements](https://docs.erigon.tech/get-started/hardware-requirements): Minimum and recommended specs for mainnet, testnets, and archive mode.
- [Installation](https://docs.erigon.tech/get-started/installation): Binary releases, building from source, Docker images, and upgrade instructions.
- [Easy Nodes](https://docs.erigon.tech/get-started/easy-nodes): One-command guided setup for Ethereum, Gnosis Chain, and Polygon nodes with sensible defaults.
- [Migrating from Geth](https://docs.erigon.tech/get-started/migrating-from-geth): Switch from go-ethereum to Erigon — what changes, what stays the same, and how to preserve your data.
- [Interacting with Erigon](https://docs.erigon.tech/interacting-with-erigon): JSON-RPC and gRPC API reference — eth, debug, trace, engine, txpool, and other namespaces.
---
# Why using Erigon?
URL: https://docs.erigon.tech/get-started/why-using-erigon
## Sections
- [Integrated Consensus Layer (Caplin)](../fundamentals/caplin): Built-in consensus client — no need to run and manage separate software like Lighthouse. One binary handles both execution and consensus, simplifying setup for stakers and node runners.
- [State Storage (Flat DB)](../fundamentals/optimizing-storage): Replaces the Merkle Patricia Trie with a flat key-value database. Faster reads and writes, and a smaller on-disk footprint for any node type.
- [Immutable, Decentralised Data](../fundamentals/modules/downloader): Splits data processing into specialised stages, minimising random disk I/O and write amplification. Efficiently integrates large datasets into Erigon's flat DB.
- [Predictable RPC Performance](../fundamentals/modules/rpc-daemon): No background compaction means no unpredictable resource spikes. RPC throughput stays stable and consistent — critical for providers and validators who cannot afford surprises.
- [Modularity](../fundamentals/modules/): Core node, RPC daemon, and tx pool run as independent processes with per-component resource limits. If one crashes the rest stay alive. Run multiple instances without downtime.
- [OtterSync](../fundamentals/sync-modes): Shifts initial sync from CPU-intensive transaction re-execution to network download — similar to BitTorrent for state data. Reduces sync time for both full and Archive nodes.
- [Flexible Pruning](../fundamentals/optimizing-storage): Modular architecture and predictable performance handle high-volume traffic with low latency. Smaller database cuts hardware costs. Caplin reduces missed attestations and slashing risk.
- [Home Users & Solo Stakers](../staking/): Run a full or archive node on a consumer SSD. Fast sync cuts setup from days to hours. No third-party servers — your node, your keys, your contribution to decentralisation.
---
# Hardware Requirements
URL: https://docs.erigon.tech/get-started/hardware-requirements
## Overview
A locally mounted **SSD** (Solid-State Drive) or **NVMe** (Non-Volatile Memory Express) disk is essential for optimal performance. Avoid Hard Disk Drives (HDD), as they can cause Erigon to lag behind the blockchain tip, albeit not fall behind.
| Component | Recommendation | Notes |
| --- | --- | --- |
| Disk Type | Use high-end NVMe SSDs. | Avoid HDDs.SSD performance may degrade when nearing full capacity. |
| Disk Configuration | RAID 0 for multiple disks (Speed) | High-Speed Option: RAID 0 provides maximum speed but no redundancy (data loss risk).ZFS filesystems may be considered for Archive nodes for their data integrity features, but complex RAID-Z setups are generally not recommended. |
| RAM | Adequate memory is crucial | Reduces bottlenecks during sync and improves performance under load. |
| CPU | 4–8 cores for Full nodes8–16 cores for Archive nodes | More cores are generally better for intense sync and query operations. |
| Linux | Kernel version > v4 | A modern Linux distribution is required. |
## Disk Size and RAM Requirements
The amount of disk space recommended and RAM you need depends on the [sync mode](../fundamentals/sync-modes) you want to run. **Current Disk Usage** values listed below are obtained using the standard Erigon + [Caplin](../fundamentals/caplin) configuration, with the sole exception of the `--prune.mode` flag.
| Sync Mode | Current Disk Usage | Disk Size (Recommended) | RAM (Required) | RAM (Recommended) |
| --- | --- | --- | --- | --- |
| Archive | — | 4 TB | 32 GB | 64 GB |
| Full (Default) | — | 2 TB | 16 GB | 32 GB |
| Minimal | — | 1 TB | 16 GB | 64 GB |
| **Sync Mode** | **Current Disk Usage** | **Disk Size (Recommended)** | **RAM (Required)** | **RAM (Recommended)** |
| -------------- | ---------------------- | --------------------------- | ------------------ | --------------------- |
| Archive | — | 1 TB | 16 GB | 32 GB |
| Full (Default) | — | 1 TB | 8 GB | 16 GB |
| Minimal | — | 500 GB | 8 GB | 16 GB |
:::warning
The final release series of Erigon that officially supports Polygon is 3.1.\*. For the software supported by Polygon, please refer to the link: [https://github.com/0xPolygon/erigon/releases](https://github.com/0xPolygon/erigon/releases). Disk usage figures below are from September 2025 and are no longer automatically updated.
:::
| **Sync Mode** | **Current Disk Usage** | **Disk Size (Recommended)** | **RAM (Required)** | **RAM (Recommended)** |
| -------------- | ---------------------- | --------------------------- | ------------------ | --------------------- |
| Archive | 4.85 TB | 8 TB | 64 GB | 128 GB |
| Full (Default) | 3.3 TB | 4 TB | 32 GB | 64 GB |
| Minimal | 1.2 TB | 2 TB | 32 GB | 64 GB |
:::tip
See also how you can [optimize storage](../fundamentals/optimizing-storage).
:::
## Bandwidth Requirements
Your internet bandwidth is also an important factor, particularly for sync speed and validator performance.
| Node Type | Bandwidth (Required) | Bandwidth (Recommended) |
| -------------- | -------------------- | ----------------------- |
| Staking/Mining | 10 Mbps | 50 Mbps |
| Non-Staking | 5 Mbps | 25 Mbps |
---
# Migrating from Geth
URL: https://docs.erigon.tech/get-started/migrating-from-geth
### Migration Paths: Choosing Your Erigon Setup
When moving from another Execution Layer (EL) such as Geth, Nethermind, Reth or Besu to Erigon, node runners have a primary choice regarding their Consensus Layer (CL) setup:
* **Erigon with Caplin**: The integrated setup using Erigon's embedded CL client, [Caplin](../fundamentals/caplin). Suitable for all node types — simplifies operation by removing the need for a separate consensus client.
* **Erigon with an External Consensus Client**: This is the traditional setup, allowing to reuse an existing external CL client (like Prysm or Lighthouse).
The recommended approach involves running and syncing an **Erigon node alongside your existing Execution Layer (EL) client (like Geth)**. This allows for full functional verification, thorough testing, and a transition with **zero downtime**. Since Erigon requires **less disk space** than most clients, running both in parallel is practical for the duration of the migration.
#### Choosing Your Migration Strategy
* [Option 1](#option-1-sync-erigon-alongside-geth-and-its-cl): If you run a critical process and have enough disk space, syncing Erigon alongside Geth or any other EL is the recommended choice, and is essential for validators and RPC providers.
* If disk space is limited and downtime is not an option, consider syncing Erigon on a separate machine.
* [Option 2](#option-2-remove-old-el-and-sync-erigon-downtime-accepted): If you are a home user or standard node runner (not running a validator), and the disk space is limited and downtime is acceptable, choose this option to remove your EL and the existing CL first.
| **Node Runner Type** | **Recommended Path (If Disk Space Allows)** | **Rationale** |
| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| Validators | [Option 1](#option-1-sync-erigon-alongside-geth-and-its-cl): Sync Alongside Geth or any EL | Ensures minimal downtime and prevents slashing risk. |
| Public RPC Providers | [Option 1](#option-1-sync-erigon-alongside-geth-and-its-cl): Sync Alongside Geth or any EL | Guarantees zero service interruption for users. |
| Home Users / Standard Node Runners with no critical utilization | [Option 2](#option-2-remove-old-el-and-sync-erigon-downtime-accepted): Remove Geth or any EL and Sync Erigon | The fastest method if downtime is accepted. |
### Option 1: Sync Erigon Alongside Geth and its CL
You can choose whether to migrate to Erigon + Caplin (the simplest setup) or continue using your existing CL.
This path offers the simplest validator configuration by using Erigon's embedded consensus client, Caplin. You will no longer need your external Consensus Layer (CL) client or a JWT secret for CL-EL communication.
**Steps for Minimal Downtime**
1. **Preparation**: [Install](installation/) Erigon.
2. **Configuration Check** (No Conflict): Ensure Erigon's standard [ports](../fundamentals/default-ports) (JSON-RPC, P2P) are different from Geth's. These ports are configured via the `--port` and `--p2p.allowed-ports` command-line options. For example:
```sh
erigon \
--datadir=/data/erigon \
--chain=mainnet \
--port=30304 \
--p2p.allowed-ports=30310,30311,30312,30313,30314,30315,30316
```
3. **Synchronization**: Start syncing Erigon. Monitor the sync status using the `eth_syncing` JSON-[RPC method](../interacting-with-erigon/) or a health check.
4. **Validator Swap**: Once Erigon is fully synced, shut down Geth and the external CL client.
5. **Reconfiguration and Restart**:
* To restart Erigon, there's no need to specify `--port` or `--P2P.allowed-ports`. Refer to this [guide](../fundamentals/caplin) for additional Erigon + Caplin configuration recommendations.
* Crucially, reconfigure your **validator keys manager** to point directly to the Erigon Beacon API, as Erigon/Caplin now handles both layers internally).
6. **Decommission Old Setup**: Verify Erigon/Caplin is proposing and attesting blocks correctly. If confirmed, safely remove Geth, the external CL client, and all their data, including the old JWT secret.
Switch to an Erigon Execution Layer (EL) while keeping your current external Consensus Layer (CL) client (e.g., Prysm, Lighthouse) and your existing JWT secret. Start by syncing Erigon with Caplin as the CL, then configure it to use the external CL.
**Steps for Minimal Downtime**
1. **Preparation**: [Install](installation/) Erigon.
2. **Configuration Check**: run Erigon + Caplin simultaneously with Geth (or any other EL) for fast, parallel syncing and assign unique ports for its P2P networking via `--port` and `--p2p.allowed-ports` (check which ports your present
EL is using). For example:
```sh
erigon \
--datadir=/data/erigon \
--chain=mainnet \
--port=30304 \
--p2p.allowed-ports=30310,30311,30312,30313,30314,30315,30316
```
3. **Synchronization**: Monitor the sync status using the `eth_syncing` JSON-RPC method or a health check.
4. **Validator Swap**: Once Erigon is fully synced, **shut down** both Geth and Erigon. **Keep the external CL client running.**
5. **Reconfiguration and Restart**: Restart Erigon, ensuring it uses the **original Engine API port and JWT secret** that your old EL client used. See [here](../staking/external-consensus-client-as-validator) for details.
6. **Decommission Old Setup**: Verify Erigon and your external CL client are proposing and attesting blocks correctly. If confirmed, safely remove Geth and its data.
### Option 2: Remove Old EL and Sync Erigon (Downtime Accepted)
This is the simplest option as it requires no configuration adjustments. However, the node will be down until Erigon finishes syncing.
This path is the fastest way to get Erigon running. It utilizes **Erigon's embedded consensus client, Caplin**, requiring no external CL client or JWT secret. This is ideal for home users with limited disk space and no critical uptime requirements.
**Steps for Quickest Start**
1. **Decommission Old Setup**: Shut down and **remove your old EL** client (Geth, etc.) and its data. If you were using an external CL client, you can shut it down as well.
2. **Installation**: [Install](installation/) Erigon.
3. **Configuration**: Erigon requires no special configuration; it uses default ports and settings. The [basic setup](../fundamentals/basic-usage) is sufficient for most situations.
4. **Synchronization**: Start syncing Erigon with the default Caplin configuration (Caplin does not use the Engine API).
5. **Final Setup**: Once Erigon is fully synced, your node is online.
6. **Monitoring**: Monitor the sync progress using `eth_syncing` or the health check, and ensure no errors appear in Erigon's logs.
This path retains your existing **external Consensus Layer (CL)** client (e.g., Prysm, Lighthouse) but swaps the old EL client for Erigon. Since downtime is accepted, this process requires simpler port management.
**Steps for Quickest Start**
1. **Decommission Old Setup**: Shut down and remove your old EL client (Geth, etc.) and its data. Keep your external CL client running.
2. **Installation**: [Install](installation/) Erigon.
3. **Configuration** (JWT and Ports): Ensure Erigon uses the same Engine API [port](../fundamentals/default-ports) (`--authrpc.port`) and JWT secret (`--authrpc.jwtsecret`) that the old EL client previously used. For example:\\
```sh
erigon \
--externalcl \
--datadir=/data/erigon \
--chain=mainnet \
--authrpc.port=8551 \
--authrpc.jwtsecret=/jwt \
--authrpc.addr=0.0.0.0 \
--http \
--http.addr=0.0.0.0 \
--http.port=8545 \
--http.api=engine,eth,net,web3 \
--ws \
--ws.port=8546
```
_(Otherwise, you must reconfigure your external CL client to match Erigon's default settings)_
4. **Synchronization**: Start syncing Erigon. Your external CL client will automatically connect to Erigon once Erigon is running and reachable on the Engine API port.
5. **Monitoring and Verification**: Once Erigon is fully synced, check the logs of both Erigon and the external CL client to verify correct chain following.
***
See [Basic Usage](../fundamentals/basic-usage) and [Configuring Erigon](../fundamentals/configuring-erigon/) for more details on available options.
---
# Installation
URL: https://docs.erigon.tech/get-started/installation
'install-docker': 'all-operating-systems',
'install-prebuilt': 'linuxmacos',
'install-source': 'linuxmacos',
'install-native': 'windows',
'install-wsl': 'windows',
};
if (e) e.preventDefault();
const el = document.getElementById(id);
if (!el) return;
document.querySelectorAll('details[id^="install-"]').forEach(d => {
if (d !== el && d.open) {
const s = d.querySelector('summary');
if (s) s.click();
else d.open = false;
}
});
if (!el.open) {
const summary = el.querySelector('summary');
if (summary) summary.click();
else el.open = true;
}
const sectionId = sectionForMethod[id];
if (sectionId) {
history.replaceState(null, '', '#' + sectionId);
}
const resolveTarget = () => {
let t = sectionId && document.getElementById(sectionId);
if (!t) {
let cursor = el.previousElementSibling;
while (cursor && !/^H[1-6]$/.test(cursor.tagName)) {
cursor = cursor.previousElementSibling;
}
t = cursor || el;
}
return t;
};
let lastHeight = document.body.scrollHeight;
let stableFrames = 0;
let totalFrames = 0;
const waitForStableLayout = () => {
const h = document.body.scrollHeight;
if (h === lastHeight) stableFrames++;
else
totalFrames++;
if (stableFrames >= 6 || totalFrames >= 90) {
resolveTarget().scrollIntoView();
} else {
requestAnimationFrame(waitForStableLayout);
}
};
requestAnimationFrame(waitForStableLayout);
};
# Installation
To install Erigon, begin by choosing an installation method suited to your operating system and technical preference. Options range from the simplest to the most complex, including pre-built images, containers, or source compilation.
Pre-built Binaries — Fastest way to get started. Download and run a pre-compiled binary for your architecture.
Docker — Run Erigon in an isolated container. Recommended for most users.
Build from Source — Full control over the build. Requires Go, C++ compiler, and CLI experience.
Docker — Run Erigon in an isolated container. The recommended method on macOS.
Build from Source — Compile directly on your Mac. Requires Go, Clang/GCC, and CLI experience.
Native Compilation — Compile and run Erigon directly on Windows using Chocolatey, MinGW, and Go.
WSL (Windows Subsystem for Linux) — Run a full Linux environment on Windows. Recommended for best performance.
### All Operating Systems
Docker
Docker is like a portable container for software. It packages Erigon and everything it needs to run, so you don't have to install complicated dependencies on your computer.
This Docker image is fully supported on **Linux**, **macOS**, and **Windows**.
_(Note: The container itself is built on multi-platform Linux architectures (linux/amd64 and linux/arm64), which is handled automatically by your Docker setup.)_
#### **Prerequisites**
[Docker Engine](https://docs.docker.com/engine/install) if you run Linux or [Docker Desktop](https://docs.docker.com/desktop/) if you run macOS/Windows.
**General Info**
* The Docker images feature several binaries, including: `erigon`, `downloader`, `evm`, `caplin`, `capcli`, `integration`, `rpcdaemon`, `sentry`, and `txpool`.
* The multi-platform Docker image is available for `linux/amd64/v2` and `linux/arm64` platforms and is now based on Debian Bookworm. There's no need to pull a different image for another supported platform.
* All build flags are now passed to the release workflow, allowing users to view previously missed build information in the released binaries and Docker images. This change is also expected to result in better build optimization.
* Docker images now contain the label `org.opencontainers.image.revision`, which refers to the commit ID from the Erigon project used to build the artifacts.
* With recent updates, all build configurations are now included in the release process. This provides users with more comprehensive build information for both binaries and Docker images, along with enhanced build optimizations.
* Images are stored at [https://hub.docker.com/r/erigontech/erigon](https://hub.docker.com/r/erigontech/erigon).
:::warning
**Windows**: note that Docker on Windows is affected by [WSL2 Performance and Data Storage](/get-started/installation/#install-wsl).
:::
#### **Download and start Erigon in Docker**
Here are the steps to download and start Erigon in Docker.
**1. Check which version you want to download**
Check in the GitHub [Release Notes](https://github.com/erigontech/erigon/releases) page which version you want to download (normally latest is the best choice).
**2. Download Erigon container**
Download the chosen version replacing `<version_tag>` with the actual version:
```sh
docker pull erigontech/erigon:<version_tag>
```
For example:
```sh
docker pull erigontech/erigon:v{ERIGON_VERSION}
```
**3. Start the Erigon container**
Start the Erigon container in your terminal:
```sh
docker run -it erigontech/erigon:<version_tag> <flags>
```
For example:
```sh
docker run -it erigontech/erigon:v{ERIGON_VERSION} --chain=hoodi --prune.mode=minimal --datadir /erigon-data
```
* `-v` connects a folder on your computer to the container (must have authorization)
* `-it` lets you see what's happening and interact with Erigon
* `--chain=hoodi` specifies which [network](/fundamentals/supported-networks) to sync
* `--prune.mode=minimal` tells Erigon to use minimal [Sync Mode](/fundamentals/sync-modes)
* `--datadir` tells Erigon where to store data inside the container
### Linux/macOS
Pre-built Binaries (Linux Only)
**1. Select Your Processor Architecture and Download**
Go to the Erigon [releases page](https://github.com/erigontech/erigon/releases) on GitHub and select the latest stable version (e.g., v{ERIGON_VERSION}) or whichever version you prefer.
Download the appropriate binary file for your processor architecture:
| Processor Type | Binary File Type | Example File Name |
| --- | --- | --- |
| 64-bit Intel/AMD | Debian Package (.deb) | erigon_{ERIGON_VERSION}_amd64.deb |
| 64-bit ARM | Debian Package (.deb) | erigon_{ERIGON_VERSION}_arm64.deb |
| 64-bit Intel/AMD | Compressed Archive (.tar.gz) | erigon_v{ERIGON_VERSION}_linux_amd64.tar.gz |
| 64-bit Intel/AMDv2 | Compressed Archive (.tar.gz) | erigon_v{ERIGON_VERSION}_linux_amd64v2.tar.gz |
| 64-bit ARM | Compressed Archive (.tar.gz) | erigon_v{ERIGON_VERSION}_linux_arm64.tar.gz |
Note that the Release Page Assets table contains also the **checksum** for each file and a checksum file.
**2. Verifying Binary Integrity with Checksums**
To verify the integrity and ensure your downloaded Erigon file hasn't been corrupted or tampered with, use the SHA256 checksums provided in the official release by following these steps:
**2.1 Generate the Checksum of Your Downloaded File**
Next, use the `sha256sum` command followed by the name of your downloaded binary (e.g., `erigon_v3.x.x_linux_amd64.tar.gz`).
```sh
sha256sum <DOWNLOADED_FILE_NAME>
```
Example with a `tar.gz` file:
```sh
sha256sum erigon_v{ERIGON_VERSION}_linux_amd64.tar.gz
```
This command will output a long string (the computed checksum) followed by the file name.
**2.2 Compare the Checksums**
Compare the checksum found in the previous step with those in the Release Notes Assets table or the erigon\_v3.x.x\_checksums.txt file in the same table.
The two checksum strings must match exactly. If they do not match, the file is corrupted, and you should delete it and download it again.
**3. Installing the Binary Executable**
After downloading and verifying the checksum, follow the instructions below based on the file type you chose.
**a. Using Debian Package (`.deb`)**
This method uses your distribution's package manager (like dpkg) to install Erigon system-wide.
1. Navigate to the directory where you downloaded the pre-built binary, e.g. Downloads:
```bash
cd ~/Downloads
```
2. Install the package:
```bash
sudo dpkg -i erigon_3.x.x_amd64.deb
```
(Replace the filename with your downloaded version)
**b. Using Compressed Archive (`.tar.gz`)**
This method gives you a standalone executable that can be run from any directory.
1. Extract the archive:
```bash
tar -xzf erigon_v3.x.x_linux_amd64.tar.gz
```
(Replace the filename with your downloaded version)
2. Move the resulting `erigon` executable to a directory included in your system's $PATH(e.g., $/usr/local/bin) to run it from anywhere:
```bash
sudo mv erigon /usr/local/bin/
```
**4. Running Erigon**
After installation, you can run Erigon from your terminal:
```bash
erigon [options]
```
Build from Source
:::info
Building from source gives you full control over the compilation process and lets you run any specific version or branch. It requires Go, a C++ compiler, and basic familiarity with the command line.
If you prefer a simpler setup, the pre-built binaries or Docker options above are recommended for most users.
:::
**1. Software Requirements**
If you intend to build Erigon from source, you must first meet the necessary prerequisites.
**1.1 Git**
Git is a tool that helps download and manage the Erigon source code. To install Git, visit [https://git-scm.com/downloads](https://git-scm.com/downloads).
**1.2 Build essential and Cmake (Linux only)**
Install **Build-essential** and **Cmake**:
```bash
sudo apt install build-essential cmake -y
```
**1.3 Go Programming Language**
Erigon utilizes Go (also known as Golang) version 1.25 or newer for part of its development. It is recommended to have a
fresh Go installation. If you have an older version, consider deleting the `/usr/local/go` folder (you may need to use
`sudo`) and re-extract the new version in its place.
To install the latest Go version, visit the official documentation at [https://golang.org/doc/install](https://golang.org/doc/install).
**1.4 C++ Compiler**
This turns the C++ part of Erigon's code into a program your computer can run. You can use either **Clang** or **GCC**:
* For **Clang** follow the instructions at [https://clang.llvm.org/get\_started.html](https://clang.llvm.org/get_started.html);
* For **GCC** (version 10 or newer): [https://gcc.gnu.org/install/index.html](https://gcc.gnu.org/install/index.html).
**2. Building Erigon from Source**
The basic Erigon configuration is suitable for most users who simply want to run a node. To ensure you are building a specific, stable release, use Git tags.
**2.1 Clone the Erigon repository**
First, clone the Erigon repository (you do not need to specify a branch):
```
git clone https://github.com/erigontech/erigon.git
cd erigon
```
**2.2 Check Out the Desired Stable Version (Tag)**
Next, fetch all available release tags:
```sh
git fetch --tags
```
Check out the desired version tag by replacing `<tag_name>` with the version you want. Normally latest stable version is the best, check the official [Release Notes](https://github.com/erigontech/erigon/releases). For example:
```sh
git checkout v{ERIGON_VERSION}
```
**2.3 Compile the Software**
Compile the Erigon binary using the `make` command.
Standard Compilation:
```sh
make erigon
```
Fast Compilation (Recommended): to significantly speed up the process, specify the number of processors you want to use with the `-j<n>` option, where `<n>` is the number of processor you want to use (we recommend using a number slightly less than your total core count):
```sh
make -j<n> erigon
```
The resulting executable binary will be created in the `./build/bin/erigon` path.
**3. Running Erigon**
After installation, you can run Erigon from your terminal:
```sh
./build/bin/erigon [options]
```
### Windows
Native Compilation
**1. Software Prerequisites**
You must install the following software and set the below environment variables before compiling Erigon.
**1.1 Chocolatey**
Install _Chocolatey package manager_ by following these [instructions](https://docs.chocolatey.org/en-us/choco/setup).
Once your Windows machine has the above installed, open the **Command Prompt** by typing "**cmd**" in the search bar and check that you have correctly installed Chocolatey:
```bash
choco -v
```
**1.2 `cmake`, `make`, `mingw`**
Now you need to install the following components: `cmake`, `make`, `mingw` by:
```bash
choco install cmake make mingw
```
:::warning
**Important note about Anti-Virus:**
During the compiler detection phase of **MinGW**, some temporary executable files are generated to test the compiler capabilities. It's been reported that some anti-virus programs detect these files as possibly infected with the `Win64/Kryptic.CIS` Trojan horse (or a variant of it). Although these are false positives, we have no control over the 100+ vendors of security products for Windows and their respective detection algorithms and we understand that this may make your experience with Windows builds uncomfortable. To work around this, you can either set exclusions for your antivirus software specifically for the`build\bin\mdbx\CMakeFiles` subfolder of the cloned repo, or you can run Erigon using the other two options below.
:::
**1.3 Git**
Git is a tool that helps download and manage the Erigon source code. To install Git, visit [https://git-scm.com/downloads](https://git-scm.com/downloads).
**1.4 Go Programming Language**
Erigon utilizes Go (also known as Golang) version 1.25 or newer for part of its development. It is recommended to have a
fresh Go installation. If you have an older version, consider deleting the `/usr/local/go` folder (you may need to use
`sudo`) and re-extract the new version in its place.
To install the latest Go version, visit the official documentation at [https://golang.org/doc/install](https://golang.org/doc/install).
**1.5 Set the System Environment Variable**
Make sure that the Windows System Path variable is set correctly. Use the search bar on your computer to search for “**Edit the system environment variable**”.
Click the “**Environment Variables...**” button.
Look down at the "**System variables**" box and double click on "**Path**" to add a new path (or select and click on "**Edit**").
Then click on the "**New**" button and paste the following path:
```bash
C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin
```
**2. Clone the Erigon repository**
Open the Command Prompt and type the following:
```bash
git clone https://github.com/erigontech/erigon.git
cd erigon
```
Next, fetch all available release tags:
```bash
git fetch --tags
```
Check out the desired version tag by replacing `<tag_name>` with the version you want. Normally latest stable version is the best, check the official [Release Notes](https://github.com/erigontech/erigon/releases). For example:
```bash
git checkout v{ERIGON_VERSION}
```
You might need to change the `ExecutionPolicy` to allow scripts created locally or signed by a trusted publisher to run. Open a **Powershell session as Administrator** and type:
```powershell
Set-ExecutionPolicy RemoteSigned
```
**3. Compiling Erigon**
This section outlines how to compile the Erigon client and its associated modules directly from the source code on a Windows environment. Compiling from source ensures you are running the latest version and gives you control over the final binaries. All successfully compiled binaries will be placed in the `.\build\bin\` subfolder of your Erigon directory.
Open Git Bash (the shell that comes with Git for Windows) and change to the Erigon directory:
```bash
cd erigon
```
Compile Erigon and its components using `make`:
```bash
make
```
This builds all modules. All binaries will be placed in the `.\build\bin\` subfolder. The executable binary `erigon.exe` should have been created there.
You can also build specific targets, for example:
```bash
make erigon
```
You can use the same command to build other binaries such as `RPCDaemon`, `TxPool`, `Sentry` and `Downloader`.
**4. Running Erigon**
To make Erigon executable from anywhere from your terminal repeat step 1.5 and add Erigon executable path
```
C:\Users\your-user\erigon.\build\bin\
```
You can now start Erigon by simply using:
```powershell
erigon.exe [options]
```
:::warning
**Note**: When you first start Erigon, Windows Firewall may prompt you to allow internet access. Select "YES" to proceed.
:::
Window Subsystem for Linux (WSL)
WSL enables you to run a complete GNU/Linux environment natively within Windows, offering Linux compatibility without the performance and resource overhead of traditional virtual machines.
**Installation and Version**
* Official Installation: Follow Microsoft's official guide to install WSL2: [https://learn.microsoft.com/en-us/windows/wsl/install](https://learn.microsoft.com/en-us/windows/wsl/install)
* Required Version: WSL version 2 is the only version supported by Erigon.
**Building Erigon**
Once WSL2 is set up, you can build and run Erigon exactly as you would on a regular [Linux/macOS](/get-started/installation/#linuxmacos) distribution.
**Performance and Data Storage**
The location of your Erigon data directory (`datadir`) is the most crucial factor for performance in WSL.
| **Data Location** | **Performance & Configuration** |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Recommended: Native Linux Filesystem (e.g., in your Linux home directory) | Optimal Performance. Erigon runs without restrictions, and the embedded RPC daemon works efficiently. |
| Avoid: Mounted Windows Partitions (e.g., `/mnt/c/`, `/mnt/d/`) | Performance is reduced as the native Windows drives are mounted using DrvFS (a slower network file system). This affects MDBX database access, and complicates filesystem operations that expect unix-like behaviour. Setting [`automount.options=metadata`](https://learn.microsoft.com/en-us/windows/wsl/wsl-config#automount-options) in `/etc/wsl.conf` in your distribution is recommended, but not required. Note that Docker on Windows is also affected. |
**RPC Daemon Configuration**
The choice of data location directly impacts how you must configure the RPC daemon:
| **Scenario** | **RPC Daemon Requirement** |
| --------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Data on Native Linux Filesystem (Recommended) | Use the Embedded RPC Daemon. This is the highly preferred and most efficient method. |
| Data on Mounted Windows Partition | The `rpcdaemon` must be configured as a remote DB even when running on the same machine. |
:::warning
⚠️ Warning: The remote DB RPC daemon is an experimental feature, is not recommended, and is extremely slow. Always aim to use the embedded RPC daemon by keeping your data on the native Linux filesystem.
:::
**Networking Notes**
Be aware that the default WSL2 environment uses its own internal IP address, which is distinct from the IP address of your Windows host machine.
If you need to connect to Erigon from an external network (e.g., opening a port on your home router for peering on port `30303`), you must account for this separate WSL2 IP address when configuring NAT on your router. Alternatively consider [Mirrored mode networking](https://learn.microsoft.com/en-us/windows/wsl/networking#mirrored-mode-networking).
Once you have Erigon installed, you can see [Basic Usage](/fundamentals/basic-usage) to configure your node and confirm it is syncing.
---
# Upgrading from a previous version
URL: https://docs.erigon.tech/get-started/installation/upgrading
Updating to the latest version of Erigon gives you access to the latest features and ensures optimal performance and stability.
## General Recommendations Before Upgrade
* **Read Release Notes**: Carefully review the [Release Notes](https://github.com/erigontech/erigon/releases) for breaking changes and new features relevant to your setup.
* **Terminate your Erigon**: End your current Erigon session by pressing `CTRL+C`.
* **Backup**: Always back up your `datadir` before performing major upgrades.
## Managing your Data
Erigon 3.1 introduces a new snapshot format while continuing to support the old one. This means that new releases are fully compatible with your existing data. However, users who want the latest data files and data-specific fixes can perform an **optional** manual data upgrade:
1. Backup your datadir.
2. [Upgrade your Erigon installation](#upgrading-your-erigon-installation) whether from a binary, compiled source code, or Docker.
3. To initiate the data upgrade, use the following command: `./build/bin/erigon snapshots reset --datadir /your/datadir`.
4. Run Erigon, it will reuse existing data and sync only newer snapshots.
### Snapshots Upgrade Options
* `erigon update-to-new-ver-format --datadir /your/datadir`: this option updates snapshots to be compatible with latest version, but you will not get the full benefits of the new snapshots.
* `erigon snapshots reset --datadir /your/datadir`: this command removes all old snapshots that have had performance improvements.
Choose `upgrade` for a quicker process, or `reset` for maximum performance. If you choose `reset`, you'll need to wait for the new snapshots to download once Erigon starts.
Why Upgrading Erigon Doesn't Always Fix Your Data
Upgrading Erigon involves a key distinction between its core software and its data files, which are managed separately. This approach is rooted in practicality and user control.
The Erigon **software** is the application that processes and interacts with blockchain data. However, the majority of the data itself, including the state of the network, exists in **data files** that you download and store locally.
If a bug is discovered, it is often in the data itself rather than a flaw in the Erigon code. In such a case, simply updating the Erigon binary won't resolve the issue because the faulty data remains on your disk. This is because Erigon upgrades do not normally alter the data files. You must reset and re-download the data snapshots to get the corrected files.
This separation prevents unnecessary and time-consuming processes. The Erigon team cannot regenerate months of data for every minor bug fix, and users shouldn't have to re-download terabytes of information with every new weekly software release.
This design also provides flexibility. A user might need a specific data fix but prefer to remain on an older software version due to a known bug or regression in the latest release. Similarly, a user might be satisfied with their current data set and only need to update the Erigon binary.
While this dual-versioning system may seem complex, it is a deliberate design choice that optimizes for both efficiency and user autonomy.
### Snapshots Downgrade Options
If upgrading snapshots(`3.0`to `3.1`) now happens automatically, you should follow these instructions for downgrading:
:::warning
**WARNING**: This algorithm will remove incompatible `3.1` snapshot files because they are not backward-compatible.
:::
1. Make sure that you're running Erigon on 3.1.x version, use `erigon --version`.
2. Run `erigon --datadir ../your/datadir reset-to-old-ver-format` to reset your snapshots to old format.
3. `git checkout v3.0.x` to checkout to preferred `3.0` version. For example now latest: `git checkout v3.0.15`
4. Run your old version of Erigon.
## Upgrading your Erigon Installation
Follow the below instructions depending on your installation method:
* [Pre-built binaries](#pre-built-binaries-only-linux-and-macos)
* [Docker](#docker)
* [Compiled source code](#compiled-from-source)
### Pre-built Binaries (only Linux and MacOS)
Download the latest binary file from [https://github.com/erigontech/erigon/releases](https://github.com/erigontech/erigon/releases), do the [checksum](./#install-prebuilt) and reinstall it, no other operation needed.
### Docker
If you're using Docker to run Erigon, the process to upgrade to a newer version of the software is straightforward and revolves around pulling the latest Docker image and then running it.
Simply follow the [Docker](#docker) instructions and install and launch the new version.
### Compiled from source
To upgrade Erigon to a newer version when you've originally installed it via Git and manual compilation, follow the installation instructions from step 2 "Check Out the Desired Stable Version (Tag)".
---
# Easy Nodes
URL: https://docs.erigon.tech/get-started/easy-nodes
Guided setup for running a complete node with sensible defaults — pick your network and follow along.
## Sections
- [Ethereum Node](https://docs.erigon.tech/get-started/easy-nodes/how-to-run-an-ethereum-node): Run a full Ethereum mainnet node using Caplin (built-in consensus layer) or connect an external CL client.
- [Gnosis Chain Node](https://docs.erigon.tech/get-started/easy-nodes/how-to-run-a-gnosis-chain-node): Run a full Gnosis Chain node with Erigon's embedded consensus layer or an external CL client.
- [Polygon Node](https://docs.erigon.tech/get-started/easy-nodes/how-to-run-a-polygon-node): Step-by-step guide to running an Erigon node on the Polygon PoS network.
---
# How to run a Polygon node
URL: https://docs.erigon.tech/get-started/easy-nodes/how-to-run-a-polygon-node
:::warning
**Information**: The final release series of Erigon that officially supports Polygon is 3.1.\*. For the software supported by Polygon, please refer to the link: [https://github.com/0xPolygon/erigon/releases](https://github.com/0xPolygon/erigon/releases).
:::
## 1. Prerequisites Check
1. Confirm your machine meets the necessary [Hardware Requirements](../hardware-requirements) based on your desired sync mode.
2. **Install Docker**:
* For Linux, install [Docker Engine](https://docs.docker.com/engine/install).
* For macOS or Windows, install [Docker Desktop](https://docs.docker.com/desktop/).
## 2. Configure and Launch Erigon
Follow these steps to configure and launch the All-in-One Client with the Heimdall endpoint.
### **A. Create the Configuration File**
Create a new file named `docker-compose.yml` in a directory where you want to manage your Erigon setup, and paste the following content into it:
```sh
services:
erigon:
image: erigontech/erigon:v{ERIGON_VERSION}
container_name: erigon-node
restart: always
command:
# --- Basic Configuration ---
- --chain=bor-mainnet
- --bor.heimdall=https://heimdall-api.polygon.technology
- --http.addr="0.0.0.0"
- --http.api=eth,web3,net,debug,trace,txpool
# --- Performance Tweaks ---
- --torrent.download.rate=512mb
# --- Sync Mode (Optional) ---
# To change Sync Mode, uncomment the line below:
# - --prune.mode=archive
# or
# - --prune.mode=minimal
ports:
- "8545:8545" # Exposes the RPC port (needed for wallets/dApps)
volumes:
# *** IMPORTANT: CHANGE THIS PATH! ***
# Replace the path below with an actual directory on your machine
# where you want the blockchain data stored (e.g., /mnt/ssd/erigon-data)
- /path/to/erigon/data:/var/lib/erigon
```
:::warning
⚠️ **Action Required**: You must change the volume path! Replace `/path/to/erigon/data` with a valid, empty directory on your machine where you want Erigon to store its files.
:::
### **B. Launch the Node and Monitor Progress**
Open your terminal in the directory where you saved `docker-compose.yml`. To start the node and immediately see the sync process type:
```
docker compose up
```
Now you can relax and watch your Erigon Polygon node sync!
## Flag explanation
* `--chain=bor-mainnet` and `--bor.heimdall=https://heimdall-api.polygon.technologyspecifies` specify respectively the Polygon mainnet and the API endpoint for the Heimdall network
* to use Amoy tesnet replace with flags `--chain=amoy --bor.heimdall=https://heimdall-api-amoy.polygon.technology`
* Add `--prune.mode=minimal` to run minimal [Sync Mode](../../fundamentals/sync-modes) or `--prune.mode=archive` to run an archive node
* `--http.addr="0.0.0.0" --http.api=eth,web3,net,debug,trace,txpool` to use RPC and e.g. be able to connect your [web3 wallet](../../fundamentals/web3-wallet);
* `--torrent.download.rate=512mb` to increase download speed. While the default downloading speed is 128mb, with this flag Erigon will use as much download speed as it can, up to a maximum of 512 megabytes per second. This means it will try to download data as quickly as possible, but it won't exceed the 512 MB/s limit you've set.
:::tip
Press `Ctrl+C` in your terminal to stop Erigon.
:::
Additional flags can be added to [configure](../../fundamentals/configuring-erigon/) Erigon with several options.
---
# How to run an Ethereum node
URL: https://docs.erigon.tech/get-started/easy-nodes/how-to-run-an-ethereum-node
## 1. Prerequisites Check
1. Confirm your machine meets the necessary [Hardware Requirements](/get-started/hardware-requirements) based on your desired sync mode.
2. **Install Docker**:
* For Linux, install [Docker Engine](https://docs.docker.com/engine/install).
* For macOS or Windows, install [Docker Desktop](https://docs.docker.com/desktop/).
## 2. Configure and Launch Erigon
Follow these steps to configure and launch the All-in-One Client. Erigon uses its embedded Consensus Layer (Caplin) by default, so you don't need a separate Consensus Client (CL).
### **A. Create the Configuration File**
Create a new file named `docker-compose.yml` in a directory where you want to manage your Erigon setup, and paste the following content into it:
```sh
services:
erigon:
image: erigontech/erigon:v{ERIGON_VERSION}
container_name: erigon-node
restart: always
command:
# --- Basic Configuration ---
- --chain=mainnet
- --http.addr=0.0.0.0
- --http.api=eth,web3,net,debug,trace,txpool
# --- Performance Tweaks ---
- --torrent.download.rate=512mb
# --- Sync Mode (Optional) ---
# To change Sync Mode, uncomment the line below:
# - --prune.mode=archive
# or
# - --prune.mode=minimal
ports:
- "8545:8545" # Exposes the RPC port (needed for wallets/dApps)
volumes:
# *** IMPORTANT: CHANGE THIS PATH! ***
# Replace the path below with an actual directory on your machine
# where you want the blockchain data stored (e.g., /mnt/ssd/erigon-data)
- /path/to/erigon/data:/var/lib/erigon
```
:::warning
⚠️ **Action Required**: You must change the volume path! Replace `/path/to/erigon/data` with a valid, empty directory on your machine where you want Erigon to store its files.
:::
### **B. Launch the Node and Monitor Progress**
Open your terminal in the directory where you saved `docker-compose.yml`. To start the node and immediately see the sync process type:
```
docker compose up
```
## Flag explanation
* `--chain=mainnet` specifies to run on Ethereum mainnet
* Add `--prune.mode=minimal` to run minimal [Sync Mode](/fundamentals/sync-modes) or `--prune.mode=archive` to run an archive node
* `--http.addr=0.0.0.0 --http.api=eth,web3,net,debug,trace,txpool` to use RPC and e.g. be able to connect your [web3 wallet](/fundamentals/web3-wallet)
* `--torrent.download.rate` sets the torrent download rate cap. The default is `512mb` (megabytes per second). During initial sync Erigon will use the full allowance — on a dedicated machine this is fine, but if you share the machine with other work you may want to lower it (e.g. `--torrent.download.rate=128mb`). Set `--torrent.download.rate=Inf` to remove the limit entirely.
When you get familiar with running Erigon from CLI you may also consider [staking](/staking/caplin) and/or running an Ethereum node with an [external Consensus Layer](/get-started/easy-nodes/how-to-run-an-ethereum-node/ethereum-with-an-external-cl).
:::tip
Press `Ctrl+C` in your terminal to stop Erigon.
:::
Additional flags can be added to [configure](/fundamentals/configuring-erigon/) Erigon with several options.
---
# Ethereum with an external CL
URL: https://docs.erigon.tech/get-started/easy-nodes/how-to-run-an-ethereum-node/ethereum-with-an-external-cl
You can use **Prysm**, **Lighthouse**, or any other Consensus Layer client with Erigon by including the `--externalcl` flag. This integration enables direct access to the Ethereum blockchain, allowing you to manage your keys for staking ETH and block production.
## Erigon with Prysm as the external CL
1. Start Erigon adding the `--externalcl` flag:
```bash
erigon --externalcl
```
If your Consensus Layer (CL) client is on a different device, add the following flags:
* `--authrpc.addr 0.0.0.0`, since the Engine API listens on localhost by default;
* `--authrpc.vhosts <CL_host>` where \ is the source host or the appropriate hostname that your CL client is using.
2. Install and run **Prysm** by following the official guide: [https://docs.prylabs.network/docs/install/install-with-script](https://docs.prylabs.network/docs/install/install-with-script).
Prysm must fully synchronize before Erigon can start syncing, since Erigon requires an existing target head to sync to. The quickest way to get Prysm synced is to use a public checkpoint synchronization endpoint from the list at [https://eth-clients.github.io/checkpoint-sync-endpoints](https://eth-clients.github.io/checkpoint-sync-endpoints).
3. To communicate with Erigon, the `--execution-endpoint` must be specified as `<erigon address>:8551`, where `<erigon address>` is either `http://localhost` or the IP address of the device running Erigon.
4. Prysm must point to the [JWT secret](../../../fundamentals/jwt) automatically created by Erigon in the `--datadir` directory.