Component: Conductor
The Conductor's main responsibility is to connect the shared Sequencer to the execution layer, where the execution layer can be any node that executes transactions and returns an execution hash (for example, Geth).
The conductor receives blocks in two ways — either from the shared Sequencer directly or from the data-availability layer (i.e., Celestia). Blocks received from the shared sequencer are filtered for transactions that match the Conductor's rollup chain and then sent to the execution layer for execution.
Transactions received from the Sequencer are marked as "soft" as soon as they are executed. These transactions are not considered finalized until the same block is also fetched from Celestia, which means that Celestia acts as the ultimate source of truth in this scenario.
The three subcomponents of the Conductor are as follows:
The Executor
The Sequencer Reader
The Celestia Reader
Since the last audit, the following changes have been made to the Conductor:
Data validation. Previously, corrupted data retrieved from Celestia would cause the system to crash. Now, after fetching data from Celestia, Conductor performs filtering and metadata verification to ensure the data's format and keys are correct, guaranteeing its usability for rollup playback.
Automatic restart. Conductor now supports automatic restarts, preventing crashes due to timing issues.
Bridge-deposit format update. The format for bridge deposits has been updated to prevent transaction hash collisions.