# 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:

**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.