mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
Docs: Add a guide on how to spin up a private Reth testnet using Kurtosis (#4304)
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com>
This commit is contained in:
@ -9,6 +9,7 @@
|
|||||||
1. [Update Priorities](./installation/priorities.md)
|
1. [Update Priorities](./installation/priorities.md)
|
||||||
1. [Run a Node](./run/run-a-node.md)
|
1. [Run a Node](./run/run-a-node.md)
|
||||||
1. [Mainnet or official testnets](./run/mainnet.md)
|
1. [Mainnet or official testnets](./run/mainnet.md)
|
||||||
|
1. [Private testnet](./run/private-testnet.md)
|
||||||
1. [Metrics](./run/observability.md)
|
1. [Metrics](./run/observability.md)
|
||||||
1. [Configuring Reth](./run/config.md)
|
1. [Configuring Reth](./run/config.md)
|
||||||
1. [Transaction types](./run/transactions.md)
|
1. [Transaction types](./run/transactions.md)
|
||||||
|
|||||||
93
book/run/private-testnet.md
Normal file
93
book/run/private-testnet.md
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# Run Reth in a private testnet using Kurtosis
|
||||||
|
For those who need a private testnet to validate functionality or scale with Reth.
|
||||||
|
|
||||||
|
## Using Docker locally
|
||||||
|
This guide uses [Kurtosis' eth2-package](https://github.com/kurtosis-tech/eth2-package) and assumes you have Kurtosis and Docker installed and have Docker already running on your machine.
|
||||||
|
* Go [here](https://docs.kurtosis.com/install/) to install Kurtosis
|
||||||
|
* Go [here](https://docs.docker.com/get-docker/) to install Docker
|
||||||
|
|
||||||
|
The `eth2-package` is a package that is a general purpose testnet definition for instantiating private testnets at any scale over Docker or Kubernetes. This guide will go through how to spin up a local private testnet with Reth various CL clients. Specifically, you will instantiate a 2-node network over Docker with Reth/Lighthouse and Reth/Teku client combinations.
|
||||||
|
|
||||||
|
To see all possible configurations and flags you can use, including metrics and observability tools (e.g. Grafana, Prometheus, etc), go [here](https://github.com/kurtosis-tech/eth2-package#configuration).
|
||||||
|
|
||||||
|
Genesis data will be generated using this [genesis-generator](https://github.com/ethpandaops/ethereum-genesis-generator) to be used to bootstrap the EL and CL clients for each node. The end result will be a private testnet with nodes deployed as Docker containers in an ephemeral, isolated environment on your machine called an [enclave](https://docs.kurtosis.com/concepts-reference/enclaves/). Read more about how the `eth2-package` works by going [here](https://github.com/kurtosis-tech/eth2-package/).
|
||||||
|
|
||||||
|
First, in your home directory, create a file with the name `network_params.json` with the following contents:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"participants": [
|
||||||
|
{
|
||||||
|
"el_client_type": "reth",
|
||||||
|
"el_client_image": "ghcr.io/paradigmxyz/reth",
|
||||||
|
"cl_client_type": "lighthouse",
|
||||||
|
"cl_client_image": "sigp/lighthouse:latest",
|
||||||
|
"count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"el_client_type": "reth",
|
||||||
|
"el_client_image": "ghcr.io/paradigmxyz/reth",
|
||||||
|
"cl_client_type": "teku",
|
||||||
|
"cl_client_image": "consensys/teku:latest",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
"launch_additional_services": false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, run the following command from your command line:
|
||||||
|
```bash
|
||||||
|
kurtosis run github.com/kurtosis-tech/eth2-package "$(cat ~/network_params.json)"
|
||||||
|
```
|
||||||
|
|
||||||
|
In the end, Kurtosis will print the services running in your enclave that form your private testnet alongside all the container ports and files that were generated & used to start up the private testnet. Here is a sample output:
|
||||||
|
```console
|
||||||
|
INFO[2023-08-21T18:22:18-04:00] ====================================================
|
||||||
|
INFO[2023-08-21T18:22:18-04:00] || Created enclave: silky-swamp ||
|
||||||
|
INFO[2023-08-21T18:22:18-04:00] ====================================================
|
||||||
|
Name: silky-swamp
|
||||||
|
UUID: 3df730c66123
|
||||||
|
Status: RUNNING
|
||||||
|
Creation Time: Mon, 21 Aug 2023 18:21:32 EDT
|
||||||
|
|
||||||
|
========================================= Files Artifacts =========================================
|
||||||
|
UUID Name
|
||||||
|
c168ec4468f6 1-lighthouse-reth-0-63
|
||||||
|
61f821e2cfd5 2-teku-reth-64-127
|
||||||
|
e6f94fdac1b8 cl-genesis-data
|
||||||
|
e6b57828d099 el-genesis-data
|
||||||
|
1fb632573a2e genesis-generation-config-cl
|
||||||
|
b8917e497980 genesis-generation-config-el
|
||||||
|
6fd8c5be336a geth-prefunded-keys
|
||||||
|
6ab83723b4bd prysm-password
|
||||||
|
|
||||||
|
========================================== User Services ==========================================
|
||||||
|
UUID Name Ports Status
|
||||||
|
95386198d3f9 cl-1-lighthouse-reth http: 4000/tcp -> http://127.0.0.1:64947 RUNNING
|
||||||
|
metrics: 5054/tcp -> http://127.0.0.1:64948
|
||||||
|
tcp-discovery: 9000/tcp -> 127.0.0.1:64949
|
||||||
|
udp-discovery: 9000/udp -> 127.0.0.1:60303
|
||||||
|
5f5cc4cf639a cl-1-lighthouse-reth-validator http: 5042/tcp -> 127.0.0.1:64950 RUNNING
|
||||||
|
metrics: 5064/tcp -> http://127.0.0.1:64951
|
||||||
|
27e1cfaddc72 cl-2-teku-reth http: 4000/tcp -> 127.0.0.1:64954 RUNNING
|
||||||
|
metrics: 8008/tcp -> 127.0.0.1:64952
|
||||||
|
tcp-discovery: 9000/tcp -> 127.0.0.1:64953
|
||||||
|
udp-discovery: 9000/udp -> 127.0.0.1:53749
|
||||||
|
b454497fbec8 el-1-reth-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:64941 RUNNING
|
||||||
|
metrics: 9001/tcp -> 127.0.0.1:64937
|
||||||
|
rpc: 8545/tcp -> 127.0.0.1:64939
|
||||||
|
tcp-discovery: 30303/tcp -> 127.0.0.1:64938
|
||||||
|
udp-discovery: 30303/udp -> 127.0.0.1:55861
|
||||||
|
ws: 8546/tcp -> 127.0.0.1:64940
|
||||||
|
03a2ef13c99b el-2-reth-teku engine-rpc: 8551/tcp -> 127.0.0.1:64945 RUNNING
|
||||||
|
metrics: 9001/tcp -> 127.0.0.1:64946
|
||||||
|
rpc: 8545/tcp -> 127.0.0.1:64943
|
||||||
|
tcp-discovery: 30303/tcp -> 127.0.0.1:64942
|
||||||
|
udp-discovery: 30303/udp -> 127.0.0.1:64186
|
||||||
|
ws: 8546/tcp -> 127.0.0.1:64944
|
||||||
|
5c199b334236 prelaunch-data-generator-cl-genesis-data <none> RUNNING
|
||||||
|
46829c4bd8b0 prelaunch-data-generator-el-genesis-data <none> RUNNING
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using Kubernetes on remote infrastructure
|
||||||
|
Kurtosis packages are portable and reproducible, meaning they will work the same way over Docker locally as in the cloud on Kubernetes. Check out these docs [here](https://docs.kurtosis.com/k8s/) to learn how to deploy your private testnet to a Kubernetes cluster.
|
||||||
Reference in New Issue
Block a user