# EPF6 - Week 18 ## Overview - Attended Lodestar Weekly Standups and [shared updates](https://github.com/ChainSafe/lodestar/wiki/Lodestar-Weekly-Standups-2025#epf-contributors-progress) - Adopted latest changes from **unstable branch**, resolving compatibility gaps with the Kurtosis integration - Successfully simulated the **entire chain** on Kurtosis for the first time - Solved `eth.sendTransaction()` issue by merging updated logic from unstable - Added final commit to the [PR #8296](https://github.com/ChainSafe/lodestar/pull/8296/commits/2ca92a765e04292d026bea7cde5b1a097a36220a) - Continued preparing **Devconnect presentation**, focusing on the technical story behind the migration ## Main points ### 1. Integration with Unstable Branch The previous Docker version assumed that the EL client automatically recognized and used the unlocked <code>EL_GENESIS_ACCOUNT</code>. With the **Kurtosis adaptation**, this assumption no longer held, initially causing failures in sending transactions. The <code>feature/kurtosis-sim-tests</code> branch was behind <code>unstable</code>, leading to inconsistencies in transaction handling and account management. **Key Fix:** Merged relevant logic of [multifork.test.ts](https://github.com/ChainSafe/lodestar/blob/unstable/packages/cli/test/sim/multiFork.test.ts) from `unstable` to the Kurtosis migration branch to align with updated `ExecutionClient` behavior and transaction handling. **Result:** - Resolved the mismatch in how `eth.sendTransaction()` interacts with the execution layer - After integrating `unstable` code, the issue was resolved natively, no additional workaround was needed **Takeaway:** > The updated EL client logic from unstable correctly handles account unlocking and signing, making the simulation setup fully compatible with Kurtosis. --- ### 2. Full Chain Simulation on Kurtosis > [!TIP] Milestone For the first time, an almost full simulation, from genesis through multiple fork epochs, runs entirely on Kurtosis **without Docker** dependencies: ![image](https://hackmd.io/_uploads/Hyg-yHrRll.png) **Remaining Issue:** ```typescript error: uncaughtException: env.createNodePair is not a function ``` **Origin**: [`await assertRangeSync(env);`]((https://github.com/ChainSafe/lodestar/blob/21fbdc95266e4023c3c1872ea9c57aa71b09f457/packages/cli/test/sim/multiFork.test.ts#L162)) [`await assertCheckpointSync(env);`](https://github.com/ChainSafe/lodestar/blob/21fbdc95266e4023c3c1872ea9c57aa71b09f457/packages/cli/test/sim/multiFork.test.ts#L163) [`await assertUnknownBlockSync(env);`](https://github.com/ChainSafe/lodestar/blob/21fbdc95266e4023c3c1872ea9c57aa71b09f457/packages/cli/test/sim/multiFork.test.ts#L164) from multiFork test. This error occurs due to a reference to a legacy Docker-based functions in [utils/syncing.ts](https://github.com/ChainSafe/lodestar/blob/unstable/packages/cli/test/utils/crucible/utils/syncing.ts), they still reference to the previous version of [`createNodePair`](https://github.com/ChainSafe/lodestar/blob/21fbdc95266e4023c3c1872ea9c57aa71b09f457/packages/cli/test/utils/crucible/simulation.ts#L219). Currently under review to determine whether it can be safely replaced or refactored without breaking test logic. --- ### 3. Code Polishing & PR Update - Added final commit to [PR #8296](https://github.com/ChainSafe/lodestar/pull/8296/commits/2ca92a765e04292d026bea7cde5b1a097a36220a) - Cleaned up unused imports and legacy references ## Key Learnings | Area | Insight | |------|----------| | **Branch Alignment** | Keeping Kurtosis migration synced with `unstable` eliminates outdated logic and friction | | **EL Account Handling** | `Unstable` branch handles account unlocking seamlessly, no workaround required | | **Simulation Parity** | The full chain simulation on Kurtosis proves parity with the Docker-based setup | | **Code Maintenance** | PR cleanup now focuses on refinement and polish rather than core functionality | --- ## Week 19 TODOs - Review and discuss the best way to resolve the `env.createNodePair` reference in `utils/syncing.ts` to ensure compatibility with the existing logic. - Validate end-to-end assertions after feedback-driven adjustments. - Continue linting and restructuring the PR for readability and consistency. - Refine Devconnect presentation slides and narrative structure.