## Changelog: Lumia Erigon zkEVM Client Upgrade
**Version:** 2.61.14-RC1 (CDK Erigon)
**Changes:**
- **Client Implementation:**
- Migrated from a Go-based zkEVM node to CDK Erigon([https://github.com/0xPolygonHermez/cdk-erigon](https://github.com/0xPolygonHermez/cdk-erigon)), a specialized framework built upon the original Erigon Ethereum client ([https://github.com/ledgerwatch/erigon](https://github.com/ledgerwatch/erigon)).
- Leverages Erigon's modular architecture, optimized for performance, reduced disk usage, and faster synchronization.
- **State DB:**
- Employs a flat database structure for storing state data instead of Merkle Patricia tries.
- Stores key-value pairs in Plain State and Hash State tables, maintaining compatibility with Ethereum while significantly reducing memory consumption (10:1 reduction compared to legacy Ethereum nodes).
- Uses a separate commitment tree for proof and verification, decoupling data storage from commitment.
- Implements Intermediate Hashes caching for efficient tracking of changes in state data.
- **Data Streamer Integration:**
- Introduces the Data Streamer library ([../../../zkEVM/architecture/data-streamer/data-streamer-design.md](../../../zkEVM/architecture/data-streamer/data-streamer-design.md)) for sharing L2 state data.
- Enables any CDK Erigon node (except the Sequencer) to function as both a data stream server and client.
- Allows SequenceSender and RPC nodes to request batches from the CDK Erigon Sequencer and serve them to other nodes.
- **L1 Syncing and Recovery:**
- Introduces two methods for syncing with L1: normal operation mode (L1 syncing) and recovery mode (L1 or DAC recovery, depending on rollup or validium mode)
- In normal mode, both CDK Erigon Sequencer and RPC nodes read all data related to sequences, verifications, and L1 info from L1 smart contracts.
- Implements L1 recovery for retrieving batch data from L1 (or DAC) to rebuild the state in case of data loss.
- **Component Roles:**
- Distinguishes between the Sequencer and SequenceSender roles.
- The SequenceSender handles batch creation, posting to L1 (for rollups), and interaction with the DAC (for validiums).
- **Other Notable Changes:**
- Removes the `--externalcl` flag.
- Removes the `zkevm_getBroadcastURI` API method.
- Introduces the `zkevm.l1-highest-block-type` flag for configuring how the L1 syncer requests the highest block, defaulting to 'finalized'.
- Provides support for migrating a node between RPC and Sequencer roles by setting the `CDK_ERIGON_SEQUENCER` environment variable.
**Upgrade Notes:**
- Developers should be aware of the architectural and API changes when migrating from the previous client implementation.
- Consider performance improvements and disk usage reductions offered by CDK Erigon.
- Adjust L1 syncing and recovery procedures based on the new methods.