Sequencer Node

A sequencer node is a participant in the HotShot consensus protocol which also makes available some services to support L2 clients. The sequencer node is L2 agnostic: it does not provide services specifically tailored to any particular L2. It merely exposes all available information about HotShot and the log of blocks which have been sequenced. Any L2 may query this information and interpret the blocks according to its own execution rules in order to implement a prover, executor, RPC service, etc.

The main internal components of the sequencer node and their respective functions are:

  • HotShot validator: The component which actually runs consensus and communicates with other sequencer nodes. In the sequencer, the HotShot protocol is instantiated with a generic transaction type that is capable of encoding transactions from any rollup. The transaction type consists of an opaque L2 identifier, which L2 executors can use to filter for their own transactions, and an array of bytes encoding the transaction data.

  • HotShot query service: The query service maintains a database containing the history and current state of HotShot, including all committed blocks and QCs, consensus-specific data like view numbers and stake tables, and status information like validator uptime. It populates this data using events provided by the HotShot validator and provides a REST API for querying the data. There is also a WebSockets-based API which allows clients to subscribe to notifications when new blocks and QCs are produced. The query service does not provide any L2-specific information. The contents of the blocks it provides are the generic transactions that HotShot itself understands.

  • Submission API: The sequencer node also provides an interface allowing clients to submit transactions to the HotShot mempool. It takes as input a transaction serialized into bytes and an L2 identifier, and it wraps these into HotShot's generic transaction type.

Last updated