# EPF6 - Week 6 ## Overview - Attended core dev call and shared updates - Researched`multifork.test.ts` logic and generated line-by-line breakdown - Experimented with Kurtosis SDK - Identified two potential points of integration/replacement (from current Runner to Kurtosis) - Determined that it is likely that new logic will be needed in addition to porting existing function - Integrating feedback structure of project proposal into an improved draft ## Main points - Gained deeper understanding of sim tests/assertions workflow - Tested Kurtosis SDK with kurtosis.js file by recreating the node setup of `multifork.test.ts` **Instructions on how to install Kurtosis SDK** - `npm i kurtosis-sdk` - Upgrade Kurtosis tool following the instruction on [docs.kurtosis](https://docs.kurtosis.com/upgrade/) - Restart the engine: `kurtosis engine restart` ![image (16)](https://hackmd.io/_uploads/HJTLOfBDxg.png) - Kurtosis engine is running: `node packages/cli/test/sim/kurtosis.js` or `npx tsx packages/cli/test/sim/kurtosis.js` ![image (17)](https://hackmd.io/_uploads/BkahKMHDge.png) - Run Kurtosis from code/programmatically ![image (18)](https://hackmd.io/_uploads/SJhOsMHDge.png) This result includes: - Names of services started: `service-a-1`, `service-b-1`, `service-c-1` - Their unique IDs (UUIDs) - Confirmation that configuration templates were rendered and applied - Created a .js file to run ethereum-package with CL nodes (`cl-1-lodestar-geth` & `cl-2-lighthouse-geth`) and EL nodes (`el-1-geth-lodestar` & `el-2-geth-lighthouse`) ![image](https://hackmd.io/_uploads/H1qWhXrwxx.png) ## Learnings & Outcomes - Identified with my mentor a couple of potential migration workflows: - Convert the logic of the `Simulation.initWithDefaults()` function so it generates kurtosis config from the same configuration we already had - Create something `Simulation.fromNetworkConfig` and pass in a Kurtosis config file - Created a multi-client Ethereum testnet programmatically using Kurtosis SDK - Replicated the CLI behavior with `kurtosis run ... --args-file` in code ## Week 7 TODOs - Perform deep dive into Kurtosis SDK - Further investigate what new logic Kurtosis SDK integration will require - Determine the best way to port assertions over to Kurtosis SDK implementation - Test the Kurtosis config matches env from sim test precisely or if further modification required ### Useful resources checked - [Kurtosis SDK](https://github.com/kurtosis-tech/kurtosis/tree/main/api/typescript) - [Upgrade Kurtosis](https://docs.kurtosis.com/upgrade/) - [GitHub branch](https://github.com/ChainSafe/lodestar/compare/nh/kurtosis-sim) on Lodestar repo dedicated to Kurtosis test