---
# System prepended metadata

title: EPF6 - Week 7
tags: [Ethereum Protocol Fellowship 6]

---

# EPF6 - Week 7

## Overview
- Attended core dev call and shared updates
- Coordinated with mentor: Determined the best way to port assertions over to Kurtosis SDK implementation
- Ran existing sim tests with the new Kurtosis config

## Main points
- Met with project mentor and defined the main workflows for sim tests migration: 
    - At this stage, no Assertoor tool will be used: **Lodestar assertions** will be used with Kurtosis instead
- Investigated the [ethereum-package parameters](https://github.com/ethpandaops/ethereum-package?tab=readme-ov-file#configuration) to determine how to accurately replicate the `multiFork.test.ts` - clientOption [parameters](https://github.com/ChainSafe/lodestar/blob/dea6b945c2a258c9739d279a3140d9f19c2b5583/packages/cli/test/sim/multiFork.test.ts#L45):
![image](https://hackmd.io/_uploads/BJ1NNECwge.png)
with `cl_extra_params: []` field
- Researched how to replicate [nodeAssertion](https://github.com/ChainSafe/lodestar/blob/dea6b945c2a258c9739d279a3140d9f19c2b5583/packages/cli/test/sim/multiFork.test.ts#L108C6-L108C19) logic 
- Replicated the `multiFork.test.ts` behavior with **multiFork.ts** file based on Kurtosis SDK 
- Learned how to fetch end expose Kurtosis beacon URLs from the enclave
They are fetched similarly to the way endpoints are accessed in [routes/node.ts](https://github.com/ChainSafe/lodestar/blob/unstable/packages/api/src/beacon/routes/node.ts): 
     - e.g. line 198 in this code snippet exposes beacon URLs from Kurtosis eclave as `"http://localhost:port"`:
     ![image](https://hackmd.io/_uploads/rkDmpE0Pee.png)
     
         CLI output of *beaconUrls*:

         ![image](https://hackmd.io/_uploads/r146pLCDxx.png =55%x)

     - Kurtosis endpoints can then be tested exposing `/eth/v1/*` (e.g. `/eth/v1/node/identity`), similarly to the current code [setting](https://github.com/ChainSafe/lodestar/blob/3626b6ada054099c2592e848c23d381260f220ce/packages/api/src/beacon/routes/node.ts#L188). 
     Tests executed to emulate *nodeAssertion* logic and stress-test the Kurtosis endpoint:
     ![image](https://hackmd.io/_uploads/SJleJrRDle.png)
    - Output of Kurtosis endpoints stress-test:
    ![image](https://hackmd.io/_uploads/S1bGzDAwgg.png)
    
        Tests with **replaced** Kurtosis URLs executed successfully 🎉


## Learnings & Outcomes
- `cl_image: []` field in the [ethereum-package parameters](https://github.com/ethpandaops/ethereum-package?tab=readme-ov-file#configuration) will be dynamically populated by Lodestar [Dockerfile.dev](https://github.com/ChainSafe/lodestar/blob/unstable/Dockerfile.dev)
- Confirmed that the Simulation.initWithDefaults() function logic will be replaced by a **Kurtosis Runner** to generate a kurtosis network config from the configuration currently used in [sim tests](https://github.com/ChainSafe/lodestar/tree/dea6b945c2a258c9739d279a3140d9f19c2b5583/packages/cli/test/sim)
 - All the `*.test.ts` will have a `*.yml` file with the related Kurtosis network config (`multiFork.test.ts` → `multifork.yml`)
 - At this point, *Assertoor* will not be adopted and instead **proprietary assertions** will be maintained, the replication of [nodeAssertion](https://github.com/ChainSafe/lodestar/blob/dea6b945c2a258c9739d279a3140d9f19c2b5583/packages/cli/test/sim/multiFork.test.ts#L108C6-L108C19) logic will be limited to partial implementation (network config `.yml` file)
 - Key outcomes from mentor meeting:
     - [crucible/assertions](https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli/test/utils/crucible/assertions): **no code changes**
     - [crucible/clients](https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli/test/utils/crucible/clients) completely **removed**, its logic migrated to Kurtosis Runner
     - [crucicle/runner](https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli/test/utils/crucible/runner): completely **removed**, the new runner/orchestrator will be the Kurtosis Runner
     - [Simulation file](https://github.com/ChainSafe/lodestar/blob/unstable/packages/cli/test/utils/crucible/simulation.ts) will be connected to Kurtosis endpoints URLs



 
   
## Week 8 TODOs 

- Research and evaluation of different approaches for optimal Kurtosis Runner implementation and integration
- Ongoing feedback from mentor throughout the project
- Attend core dev call

### Useful resources checked

- [Kurtosis SDK](https://github.com/kurtosis-tech/kurtosis/tree/main/api/typescript)
- [GitHub branch](https://github.com/ChainSafe/lodestar/compare/nh/kurtosis-sim) on Lodestar repo dedicated to Kurtosis test




