[Base 메인넷 중단에 대한 포스트모템]
어제 Base 메인넷에서 약 30분 정도 블록 생성이 되지 않는 이슈가 있었습니다. Base 팀 측에서 이에 대한 포스트모템을 공유해, 정리해보았습니다.
OP Stack에는 op-conductor라는 컴포넌트가 있습니다. 단일 시퀀서 하에서 뭔가 문제가 생기면 체인이 멈추는 문제를 해결하기 위해, 여러 개의 시퀀서를 둘 수 있도록 하는 컴포넌트입니다.
op-conductor는 Raft라는 합의 알고리즘으로 동작하며, 한 명의 리더가 블록 생성을 하고 문제가 생기면 다른 노드에게 리더를 넘길 수 있도록 짜여져 있습니다. Web3 식으로는 permissioned sequencer set, Web2 식으로는 HA cluster라고 부를 수 있습니다.
어제 Base 메인넷에서 일어난 일은 다음과 같습니다.
1. 너무 많은 트랜잭션으로 인해 리더가 정상 동작을 하지 못했고, 다른 노드에 리더를 넘겼습니다.
2. 그러나 넘긴 노드는 이제 막 시작된 노드였고, 정상적인 시퀀싱이 불가능한 상태였습니다.
3. 해당 노드에는 Conductor도 켜져 있지 않아, 다른 노드로 리더를 넘길 수도 없었습니다.
4. 결국 Base 팀은 Conductor를 끄고, 수동으로 리더를 정상 노드로 넘겼습니다.
즉, 높은 트랜잭션 로드로 인해 시퀀서 셋 중 하나에 문제가 생겼고, 이를 다루는 과정에서의 버그로 올바르지 않은 노드가 시퀀싱을 맡게 되어 블록 생성이 중단된 것입니다.
이러한 상황을 방지