-[x] wait for CL genesis to occur before adding forkmon - DESCOPED as I don't see the bug
-[x] Module IO (this is blocked on Startosis Args working)
-[x] forkmon (this is blocked on CL clients running)
-[x] prometheus (this is blocked on CL clients running)
-[x] grafana (this is blocked on prometheus running)
-[x] grafana needs an upload files endpoint in Startosis
-[x] static_files package
-[x] testnet_verifier (this is blocked on CL/EL clients running)
-[x] transaction_spammer (this is blocked on EL clients running)
-[x] participant_network/participant_network DEMO
-[x] has most data generation things, needs to start EL/CL clients
-[x] needs upload files to be implemented
-[x] need to fill in the dictionary with all el / cl types
-[x] participant_network/participant
-[x] pure POJO should be quick to implement NO BLOCKERS
-[x] mev_boost participant_network/mev_boost NO BLOCKERS - removed some attributes that aren't used
-[x] mev_boost_context pure POJO NO BLOCKERS
-[x] mev_boost_launcher NO BLOCKERS
-[x] participant_network/pre_launch_data_generator (the only missing piece here is remove_service)
-[x] data generation
-[x] remove services post generation
-[x] participant_network/el (requires facts and waits)
-[x] besu
-[x] facts and waits + private_ip_address_placeholder
-[x] framework
-[x] facts could use more waiting
-[x] erigon
-[x] facts and waits + private_ip_address_placeholder
-[x] framework
-[x] geth DEMO
-[x] facts and waits + private_ip_address_placeholder
-[x] framework TESTED
-[x] nethermind
-[x] facts and waits + private_ip_address_placeholder
-[x] framework
-[x] facts could use more waiting
-[x] el_client_context pure POJO NO BLOCKERS
-[x] el_client_launcher interface not necessary
-[x] el_availability_waiter - facts and waits - DESCOPED facts and waits will do this
-[x] el_rest_client/api_response_objects.go DESCOPED as facts will do this
-[x] el_rest_client/el_rest_client - facts and waits DESCOPED as facts will do this
-[x] participant_network/cl (requires facts and waits)
-[x] lighthouse DEMO
-[x] facts and waits
-[x] framework TESTED
-[x] lodestar
-[x] facts and waits
-[x] framework
-[x] needs longer fact & wait
-[x] nimbus - eth2-merge-kurtosis-module is broken and so is this
-[x] facts and waits
-[x] framework
-[x] prysm - doesn't work as genesis_fork version is different, like the old module
-[x] facts and waits
-[x] framework
-[x] teku
-[x] facts and waits
-[x] framework
-[x] needs longer facts and waits
-[x] cl_client_context pure POJO NO BLOCKERS
-[x] cl_client_launcher interface not necessary
-[x] cl_availability_waiter - facts and waits - DESCOPED facts and waits will do this
-[x] cl_rest_client/api_response_objects.go DESCOPED as facts will do this
-[x] cl_rest_client/el_rest_client - DESCOPED as facts will do this
-[x] cl_node_metrics_info - pure POJO NO BLOCKERS
-[x] get render templates to have the magic strings subsituted with real values
-[x] confirm that the 0x30000038 value in `static_files/genesis-generation-config/cl/config.yaml.tmpl` is correct - this makes prysm work [DESCOPED]
-[x] confirm behavior of artifact_uuid post for loop fix
\ No newline at end of file
Ethereum Module
=======================
This is a [Kurtosis Starlark module][starlark-docs] that will:
1. Generate EL & CL genesis information using [this genesis generator](https://github.com/skylenet/ethereum-genesis-generator)
1. Spin up a network of mining Eth1 clients
1. Spin up a network of Eth2 Beacon/validator clients
1. Add [a transaction spammer](https://github.com/kurtosis-tech/tx-fuzz) that will repeatedly send transactions to the network
1. Launch [a consensus monitor](https://github.com/ralexstokes/ethereum_consensus_monitor) instance attached to the network
1. Optionally block until the Beacon nodes finalize an epoch (i.e. finalized_epoch > 0)
For much more detailed information about how the merge works in Ethereum testnets, see [this document](https://notes.ethereum.org/@ExXcnR0-SJGthjz1dwkA1A/H1MSKgm3F).
Quickstart
----------
1.[Install Docker if you haven't done so already][docker-installation]
1.[Install the Kurtosis CLI, or upgrade it to the latest version if it's already installed][kurtosis-cli-installation]
1. Ensure your Docker engine is running:
```bash
docker image ls
```
1. Create a file in your home directory `eth2-module-params.yaml` with the following contents:
```yaml
logLevel:"info"
```
1. Execute the module, passing in the params from the file:
Kurtosis will create a new enclave to house the services of the Ethereum network. [This page][using-the-cli] contains documentation for managing the created enclave & viewing detailed information about it.
Configuration
-------------
To configure the module behaviour, you can modify your `eth2-module-params.yaml` file. The full YAML schema that can be passed in is as follows with the defaults ([from here](https://github.com/kurtosis-tech/eth2-module/blob/master/types.proto) provided:
Note: Following an update starting the network post-merge, `nimbus` and `prysm` clients don't work anymore. Fixes are tracked in the following Github issues:
- Prysm: [#11508][prysm-issue]
- Nimbus: [#4193][nimbus-issue]
<details>
<summary>Click to show all configuration options</summary>
<!-- Yes, it's weird that none of this is indented but it's intentional - indenting anything inside this "details" expandable will cause it to render weird" -->
```
```
</details>
You can find the latest Kiln compatible docker images here: https://notes.ethereum.org/@launchpad/kiln