Subcomponent: Executor
The Executor essentially does two things in parallel:
It receives soft blocks from the sequencer and executes the transactions in them immediately, and it ensures that the block height matches the expected height. These executed blocks are then inserted into a list to await finalization.
It receives firm blocks from the data-availability layer (i.e., Celestia). These blocks are only executed if a corresponding soft block has not already been executed. Firm blocks are considered finalized.
For execution, the block is sent to the rollup execution layer node, which can be basically anything as long as it returns an execution hash. For example, a node like Geth or Erigon can be used for EVM-compatible transactions.
After execution, it updates the commitment state stored in the rollup execution layer node via gRPC, ensuring that the Conductor can resume from the correct state after a restart.