Optimism 아키텍처
Optimism은 Ethereum을 확장하기 위해 설계된 EVM 동등성(Equivalence)·옵티미스틱 롤업 프로토콜입니다. Ethereum을 확장한다는 것은 네트워크가 처리할 수 있는 유용한 트랜잭션 수를 늘리는 것을 의미합니다. 옵티미스틱 롤업은 보안이나 탈중앙화를 희생하지 않으면서 Ethereum의 연산 및 저장 용량을 증가시키는 레이어 2 확장 기법입니다. EVM Equivalence은 Ethereum Yellow Paper에 정의된 상태 전이 함수를 완전히 준수한다는 뜻입니다.
옵티미스틱 롤업은 여러 트랜잭션을 하나의 트랜잭션으로 묶어 Ethereum 네트워크의 스마트 계약이 검증하도록 합니다. 이 과정을 “롤업(rolling up)”이라고 부르며, 개별 트랜잭션이 더 큰 트랜잭션으로 결합되어 Ethereum에 제출됩니다. “옵티미스틱”이라는 용어는 시스템이 트랜잭션이 유효하다고 가정하고, 반증될 경우에만 검증한다는 의미로, 이를 통해 더 빠르고 효율적인 처리를 가능하게 합니다.
전체 아키텍처
op-node + op-geth
롤업 노드는 validator 모드와 sequencer 모드 중 하나로 실행될 수 있습니다:
- validator (검증자, aka verifier): Ethereum 노드를 실행하는 것과 유사하게 L2 트랜잭션을 로컬에서 시뮬레이션하며, 속도 제한이 없습니다. 또한 validator가 sequencer의 작업을 검증하도록, output roots를 재생성하고 sequencer가 제출한 값과 비교합니다. 불일치가 발생하면 validator는 fault proof를 수행할 수 있습니다.
- sequencer: sequencer는 특권을 가진 주체로, L2 사용자의 트랜잭션을 받아 L2 블록을 생성하고 이를 data availability provider에게 ( batcher 를 통해) 제출합니다. 또한 L1에 output roots를 전송합니다. 현재 스택 전체에 하나의 sequencer만 존재하며, 이 때문에 OP 스택이 탈중앙화되지 않았다는 비판이 있습니다.
op-batcher
배치 제출자, 즉 batcher는 L2 sequencer 데이터를 L1에 제출해 검증자가 접근할 수 있도록 만드는 역할을 합니다.
op-proposer
Proposer는 L2 Output 체크포인트를 Ethereum 상의 L2 output oracle 계약에 생성·제출합니다. 최종 확정 기간이 지나면 이 데이터가 출금을 가능하게 합니다.
Batcher와 Proposer가 모두 L1에 상태를 제출하는 이유는? Batcher는 트랜잭션 데이터를 배치 단위로 L1에 제출하고, Proposer는 L2 상태에 대한 커밋먼트( output roots )를 제출해 L2 계정 상태의 최종 모습을 확정합니다. 두 역할을 분리함으로써 병렬 처리 효율성을 높일 수 있습니다.
contracts-bedrock
L2가 L1과 상호작용하기 위한 다양한 계약들:
- OptimismPortal: L1 상태에서 스마트 계약 호출로 시작된 L2 트랜잭션 피드.
- Batch inbox: Batch Submitter가 트랜잭션 배 치를 제출하는 L1 주소.
- L2 output oracle: 출금 및 fault proof에 사용되는 L2 output roots를 저장하는 스마트 계약.
입금은 어떻게 하나요?
출금은 어떻게 하나요?
Optimism 문서에 대한 피드백
OP 스택을 이해하기 어려운 이유는 여러 가지가 있습니다. 그 중 하나는 동일한 구성 요소가 코드와 문서에서 약간씩 다른 이름으로 여러 번 언급된다는 점입니다. 예를 들어 “op-batcher”와 “batch‑submitter”, “verifiers”와 “validators”가 혼용되어 사용되면 각 구성 요소의 정확한 역할을 파악하기 어렵습니다.
또 다른 어려움은 아키텍처가 지속적으로 진화한다는 점입니다. 설계 요소가 시간이 지나면서 폐기될 수 있는데, 문서가 이를 즉시 반영하지 못하는 경우가 많습니다. 이로 인해 사용자는 오래되거나 부정확한 정보를 접하게 되어 혼란이 가중됩니다.
이러한 문제를 극복하려면 모든 문서를 꼼꼼히 검토하고, 개념을 일관되게 유지하며, OP 스택의 최신 변경 사항을 지속적으로 파악해야 합니다. 이를 위해 추가적인 조사와 다른 사용자·개발자와의 협업이 필요하지만, 복잡한 시스템을 완전히 이해하고 효과적으로 활용하기 위해서는 필수적인 과정입니다.