Skip to content

Files

Latest commit

9ff9b98 · Aug 20, 2024

History

History
This branch is 1625 commits behind ethereum-optimism/optimism:develop.

op-conductor

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 26, 2024
Jan 18, 2024
Feb 6, 2024
Aug 5, 2024
Aug 20, 2024
Apr 29, 2024
Jun 17, 2024
May 24, 2024
Aug 14, 2024
Dec 19, 2023
Jul 19, 2024
Jan 26, 2024
Jan 31, 2024

op-conductor

op-conductor is an auxiliary service designed to enhance the reliability and availability of a sequencer in high-availability setups, thereby minimizing the risks associated with single point of failure. It is important to note, however, that this design does not incorporate Byzantine fault tolerance. This means it operates under the assumption that all participating nodes are honest.

Summary

The design will provide below guarantees:

  1. No unsafe reorgs
  2. No unsafe head stall during network partition
  3. 100% uptime with no more than 1 node failure (for a standard 3 node setup)

Design

op-conductor architecture On a high level, op-conductor serves the following functions:

  1. serves as a (raft) consensus layer participant to determine
    1. leader of the sequencers
    2. store latest unsafe block within its state machine.
  2. serves rpc requests for
    1. admin rpc for manual recovery scenarios such as stop leadership vote, remove itself from cluster, etc
    2. health rpc for op-node to determine if it should allow publish txs / unsafe blocks
  3. monitor sequencer (op-node) health
  4. control loop => control sequencer (op-node) status (start / stop) based on different scenarios

Conductor State Transition

conductor state transition

Helpful tips: To better understand the graph, focus on one node at a time, understand what can be transitioned to this current state and how it can transition to other states. This way you could understand how we handle the state transitions.

This is initial version of README, more details will be added later.