The sequencer is composed of several services that work together to receive and process transactions on the L2, organize them into blocks, create transaction batches, and send these batches to Ethereum.

It is composed of the following components:

  1. RPC: provides an API for the clients to interact with the chain (i.e. send transactions, query the state, etc).
  2. Sequencer: processes L2 transactions, organizes them into blocks, and ensures they comply with the constraints of the proving system.
  3. ETH Operator: batches L2 transactions together and dispatches them to the L1.

View the source code

View the repositories for each component on the ZK stack docs.

RPC

A JSON-RPC API is exposed for clients (such as applications) to provide a set of methods that can be used to interact with Abstract. There are two types of APIs exposed:

  1. HTTP API: This API is used to interact with the chain using traditional HTTP requests.
  2. WebSocket API: This API is used to subscribe to events and receive real-time updates from the chain including PubSub events.

Sequencer

Once transactions are received through the RPC API, the sequencer processes them, organizes them into blocks, and ensures they comply with the constraints of the proving system.

ETH Operator

The ETH Operator module interfaces directly with the L1, responsible for:

  • Monitoring the L1 for specific events (such as deposits and system upgrades) and ensuring the sequencer remains in sync with the L1.
  • Batching multiple L2 transactions together and dispatching them to the L1.