Commit e872658d authored by Gyanendra Mishra's avatar Gyanendra Mishra

update docs

parent 641fb1ba
ETH2-MERGE-STARTOSIS-MODULE Ethereum Module
=========================== =======================
This is the Startosis version of the popular [eth2-merge-kurtosis-module](https://github.com/kurtosis-tech/eth2-merge-kurtosis-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)
### Parity Missing Tasks 1. Spin up a network of mining Eth1 clients
1. Spin up a network of Eth2 Beacon/validator clients
- [x] main.star 1. Add [a transaction spammer](https://github.com/kurtosis-tech/tx-fuzz) that will repeatedly send transactions to the network
- [x] launch forkmon, prometheus, grafana, testnet_verifier, transaction_spammer 1. Launch [a consensus monitor](https://github.com/ralexstokes/ethereum_consensus_monitor) instance attached to the network
- [x] do a wait for epoch finalization 1. Optionally block until the Beacon nodes finalize an epoch (i.e. finalized_epoch > 0)
- [ ] assert that finalization epoch > 0
- [x] wait for CL genesis to occur before adding forkmon - DESCOPED as I don't see the bug For much more detailed information about how the merge works in Ethereum testnets, see [this document](https://notes.ethereum.org/@ExXcnR0-SJGthjz1dwkA1A/H1MSKgm3F).
- [x] Module IO (this is blocked on Startosis Args working)
- [x] forkmon (this is blocked on CL clients running) Quickstart
- [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 1. [Install Docker if you haven't done so already][docker-installation]
- [x] static_files package 1. [Install the Kurtosis CLI, or upgrade it to the latest version if it's already installed][kurtosis-cli-installation]
- [x] testnet_verifier (this is blocked on CL/EL clients running) 1. Ensure your Docker engine is running:
- [x] transaction_spammer (this is blocked on EL clients running) ```bash
- [x] participant_network/participant_network DEMO docker image ls
- [x] has most data generation things, needs to start EL/CL clients ```
- [x] needs upload files to be implemented 1. Create a file in your home directory `eth2-module-params.yaml` with the following contents:
- [x] need to fill in the dictionary with all el / cl types
- [x] participant_network/participant ```yaml
- [x] pure POJO should be quick to implement NO BLOCKERS logLevel: "info"
- [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 1. Execute the module, passing in the params from the file:
- [x] participant_network/pre_launch_data_generator (the only missing piece here is remove_service) ```bash
- [x] data generation kurtosis module exec --enclave-id eth2 github.com/kurtosis-tech/eth2-module --args "$(cat ~/eth2-module-params.yaml)"
- [x] remove services post generation ```
- [x] participant_network/el (requires facts and waits)
- [x] besu Management
- [x] facts and waits + private_ip_address_placeholder ----------
- [x] framework
- [x] facts could use more waiting 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.
- [x] erigon
- [x] facts and waits + private_ip_address_placeholder Configuration
- [x] framework -------------
- [x] geth DEMO
- [x] facts and waits + private_ip_address_placeholder 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:
- [x] framework TESTED
- [x] nethermind 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:
- [x] facts and waits + private_ip_address_placeholder - Prysm: [#11508][prysm-issue]
- [x] framework - Nimbus: [#4193][nimbus-issue]
- [x] facts could use more waiting
- [x] el_client_context pure POJO NO BLOCKERS <details>
- [x] el_client_launcher interface not necessary <summary>Click to show all configuration options</summary>
- [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 <!-- 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" -->
- [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 </details>
- [x] facts and waits
- [x] framework TESTED You can find the latest Kiln compatible docker images here: https://notes.ethereum.org/@launchpad/kiln
- [x] lodestar
- [x] facts and waits Developing On This Module
- [x] framework -------------------------
- [x] needs longer fact & wait First, install prerequisites:
- [x] nimbus - eth2-merge-kurtosis-module is broken and so is this 1. Install Go
- [x] facts and waits 1. [Install Kurtosis itself](https://docs.kurtosistech.com/installation.html)
- [x] framework
- [x] prysm - doesn't work as genesis_fork version is different, like the old module Then, run the dev loop:
- [x] facts and waits 1. Make your code changes
- [x] framework 1. Rebuild and re-execute the module by running the following from the root of the repo:
- [x] teku ```bash
- [x] facts and waits source scripts/_constants.env && \
- [x] framework kurtosis enclave rm -f eth2-local && \
- [x] needs longer facts and waits bash scripts/build.sh && \
- [x] cl_client_context pure POJO NO BLOCKERS kurtosis module exec --enclave-id eth2-local "${IMAGE_ORG_AND_REPO}:$(bash scripts/get-docker-image-tag.sh)" --execute-params "{}"
- [x] cl_client_launcher interface not necessary ```
- [x] cl_availability_waiter - facts and waits - DESCOPED facts and waits will do this NOTE 1: You can change the value of the `--execute-params` flag to pass in extra configuration to the module per the "Configuration" section above!
- [x] cl_rest_client/api_response_objects.go DESCOPED as facts will do this NOTE 2: The `--execute-params` flag accepts YAML and YAML is a superset of JSON, so you can pass in either.
- [x] cl_rest_client/el_rest_client - DESCOPED as facts will do this
- [x] cl_node_metrics_info - pure POJO NO BLOCKERS To get detailed information about the structure of the module, visit [the architecture docs](./docs/architecture.md).
- [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] When you're happy with your changes:
- [x] confirm behavior of artifact_uuid post for loop fix - Add an entry to `docs/changelog.md` under the `# TBD` header describing your changes (this is required for CI checks to pass!)
\ No newline at end of file - Create a PR
- Add one of the maintainers of the repo as a "Review Request":
- `parithosh` (Ethereum)
- `gbouv` (Kurtosis)
- `h4ck3rk3y` (Kurtosis)
- `mieubrisse` (Kurtosis)
- Once everything works, merge!
<!------------------------ Only links below here -------------------------------->
[docker-installation]: https://docs.docker.com/get-docker/
[kurtosis-cli-installation]: https://docs.kurtosistech.com/installation.html
[starlark-docs]: https://docs.kurtosis.com/starlark
[enclave-context]: https://docs.kurtosistech.com/kurtosis-core/lib-documentation#enclavecontext
[using-the-cli]: https://docs.kurtosistech.com/using-the-cli.html
[prysm-issue]: https://github.com/prysmaticlabs/prysm/issues/11508
[nimbus-issue]: https://github.com/status-im/nimbus-eth2/issues/4193
## Known Bugs
`wait_for_epoch_finalization` - doesn't work as expected, as Starlark doesn't have ways to do assertions on facts just yet. The issue #15 tracks this.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment