diff --git a/op-proposer/research/flow.md b/op-proposer/research/flow.md index 68bf8bce7..9932a605d 100644 --- a/op-proposer/research/flow.md +++ b/op-proposer/research/flow.md @@ -6,41 +6,40 @@ main.go는 애플리케이션의 진입점으로, 초기 설정을 수행하고 ```plaintext => : main { /op-service/cliapp/lifecycle.go: RunContext{ - /proposer/l2_output_submitter.go : Main { + /proposer/l2_output_submitter.go : Main { // L2 Output Submitter 초기화 및 실행 /proposer/service.go : ProposerServiceFromCLIConfig // 프로포저 서비스의 진입점, CLI 설정을 통해 프로포저 서비스를 초기화하고 실행 } - /op-service/cliapp/lifecycle.go : LifecycleCmd { - /proposer/service.go : Start { - /proposer/driver.go : StartL2OutputSubmitting - } - } + /op-service/cliapp/lifecycle.go : LifecycleCmd { // CLI 애플리케이션 수명주기 관리 + /proposer/service.go : Start { + /proposer/driver.go : StartL2OutputSubmitting // L2 Output 제출 시작 + } + } } - -} + } ``` ## /proposer/service.go -service.go는 배처 서비스의 CLIConfig를 설정하고, L2OutputSubmitter 생성하고 시작 +service.go는 proposer 서비스의 CLIConfig를 설정하고, L2OutputSubmitter 생성하고 시작 ```plaintext => : ProposerServiceFromCLIConfig { : initFromCLIConfig { - : initMetrics - : initL2ooAddress - : initDGF - : initRPCClients - : initTxManager - : initBalanceMonitor - : initMetricsServer - : initPProf - : initRPCServer - : RecordInfo - : RecordUp - : initMetricsServer - : initDriver { - /proposer/driver.go : NewL2OutputSubmitter { - /proposer/driver.go : newL2OOSubmitter + : initMetrics // 성능 지표 초기화 + : initL2ooAddress // L2 Output Oracle 주소 초기화 + : initDGF // Dispute Game Factory 초기화 + : initRPCClients // RPC 클라이언트 초기화 + : initTxManager // 트랜잭션 관리 초기화 + : initBalanceMonitor // 잔액 모니터링 초기화 + : initMetricsServer // 성능 모니터링 서버 초기화 + : initPProf // 프로파일링 초기화 + : initRPCServer // RPC 서버 초기화 + : RecordInfo // 서비스 정보 기록 + : RecordUp // 서비스 시작 상태 기록 + : initMetricsServer // (중복된) 성능 모니터링 서버 초기화 + : initDriver { // 드라이버 초기화 + /proposer/driver.go : NewL2OutputSubmitter { // 새로운 L2 Output Submitter 생성 + /proposer/driver.go : newL2OOSubmitter // L2 Output Submitter 인스턴스 생성 } } } @@ -51,30 +50,30 @@ service.go는 배처 서비스의 CLIConfig를 설정하고, L2OutputSubmitter ```plaintext => : StartL2OutputSubmitting { - : waitNodeSync { - /op-service/dial/rollup_sync.go : WaitRollupSync + : waitNodeSync { // 노드 동기화 대기 + /op-service/dial/rollup_sync.go : WaitRollupSync // 롤업 동기화 대기 } - : loop { + : loop { // L2 Output 제출 루프 { - : FetchL2OOOutput // L2 Output Oracle + : FetchL2OOOutput // L2 Output Oracle과 fetch or - : FetchDGFOutput // Dispute Game Factory + : FetchDGFOutput // Dispute Game Factory과 fetch } - : proposeOutput { - : sendTransaction { - : waitForL1Head + : proposeOutput { // 출력 제안 + : sendTransaction { // 트랜잭션 전송 + : waitForL1Head // L1 블록체인 헤드 대기 { - : ProposeL2OutputDGFTxCandidate - : Send // TODO: Send 파악 + : ProposeL2OutputDGFTxCandidate // Dispute Game Factory 트랜잭션 후보 제안 + : Send // 트랜잭션 전송 로직, TODO: 구체적인 구현 분석 필요 or - : ProposeL2OutputTxData - : Send // TODO: Send 파악 + : ProposeL2OutputTxData // L2 Output 트랜잭션 데이터 제안 + : Send // 트랜잭션 전송 로직, TODO: 구체적인 구현 분석 필요 } } - /metrics/metrics.go : RecordL2BlocksProposed { - /op-service/metrics/ref_metrics.go : RecordL2Ref + /metrics/metrics.go : RecordL2BlocksProposed { // L2 블록 제안 기록 + /op-service/metrics/ref_metrics.go : RecordL2Ref // L2 참조 기록 } } } - -} \ No newline at end of file + } +``` \ No newline at end of file