피드로 돌아가기
Dev.toInfrastructure
원문 읽기
계층 간 실패 정의 일치를 통한 블록체인 Liveness 보장 설계
The Bug Behind the Bug: Why Protocol Failures Rarely Live in One Layer
AI 요약
Context
단순 VM 오류나 합의 실패로 치부되던 장애가 실제로는 컴포넌트 간 결정론적 가정의 불일치에서 발생함. 특히 Deterministic Invalidity 상황에서 유효하지 않은 트랜잭션이 Mempool에 잔존하며 네트워크 전체를 동결시키는 Liveness failure 문제 분석.
Technical Solution
- Binary Error 처리 방식에서 Typed Execution Errors 구조로 전환하여 영구적 무효, 상태 의존적 오류, 로컬 인프라 실패를 구분함
- 무효한 트랜잭션을 Proposal 경로에서 즉각 제거하여 동일한 Poisoned payload가 반복 제안되는 루프 차단
- Isolated State 실행 후 Atomic Commit 방식을 채택하여 부분 커밋으로 인한 노드 간 상태 불일치 방지
- Write-ahead logs 및 Idempotent Recovery 메커니즘을 도입하여 재시작 후에도 결정론적 상태 복구 보장
- Fault-injection 테스트를 통해 프로세스 강제 종료 및 디스크 오류 상황에서의 글로벌 아웃티지 가능성 검증
실천 포인트
- 실행 오류를 단순 Error/Ok가 아닌 타입별로 세분화하여 처리하는가 - 트랜잭션 실행과 상태 반영이 Atomic하게 이루어지며 부분 커밋 가능성을 배제했는가 - 로컬 인프라 장애가 네트워크 전체의 Consensus 결정으로 오인될 소지가 없는가 - Fault-injection을 통해 비정상 종료 후 재시작 시의 결정론적 상태 복구 과정을 검증했는가