이더리움, 한 달간 숨죽인 '유령 버그'
페이지 정보
본문

이더리움(ETH) 메인넷 흔든 ‘유령 버그’…테스트넷에 숨어있던 결함이 한 달 뒤 터졌다
이더리움(Ethereum, ETH) 메인넷에서 12월 초 발생한 노드 검증(어테스테이션) 오류 사태가, 사실 한 달 전 테스트넷 단계에서 이미 존재했던 버그에서 비롯된 것으로 정리되면서 업계가 다시 한 번 “클라이언트 다양성”의 중요성을 강조하고 있다. 겉으로는 네트워크가 완전히 멈춘 것처럼 보이지 않았지만, 내부적으로는 슬롯 누락 증가·참여율 하락·보상 손실이 겹치며 확정성(파이널리티) 리스크가 커졌던 사건이다.
푸사카(Fusaka) 이후 발생한 검증 장애…원인은 프리즘(Prysm) 노드 처리 로직
사후 분석에 따르면 이번 문제는 이더리움 합의(Consensus) 클라이언트 중 하나인 프리즘(Prysm)에서 발생했다. 네트워크와 완전히 동기화되지 않은 상태로 추정되는 노드에서 들어오는 증명(어테스테이션)을 처리하는 과정에서 프리즘이 과도한 연산을 수행했고, 그 결과 노드 자원이 빠르게 소진되면서 성능이 급격히 떨어졌다.핵심은 “검증 요청이 늘었다” 수준이 아니라, 특정 조건에서 프리즘이 과거 상태를 다시 재생성(replay)하고 상태 전환 계산을 반복하는 방식으로 대응하면서, CPU/메모리 부담이 비정상적으로 커졌다는 점이다.
슬롯 누락률 18.5%까지 급등…참여율 75% 하락, 검증자 보상도 손실
사고 구간에서는 네트워크가 여러 에포크 동안 흔들리며 슬롯 누락률이 18.5%까지 올라간 것으로 보고됐다. 참여율도 75% 수준까지 하락해 검증이 평소처럼 원활히 이뤄지지 못했고, 이 영향으로 검증자들이 놓친 어테스테이션 보상 손실이 약 382 ETH 수준으로 추산됐다.즉, “체인이 완전 셧다운”되기보다는, 검증 참여가 급격히 떨어지는 방식으로 네트워크 건강도가 나빠진 사건에 가깝다.
버그는 이미 테스트넷에 있었다…‘조건 미충족’으로 놓친 잠복 결함
이번 결함은 사고 한 달 전, 프리즘의 특정 업데이트(PR 변경)에 포함돼 테스트넷에도 반영됐지만, 당시에는 같은 조건이 재현되지 않아 버그가 드러나지 않았던 것으로 정리됐다.테스트넷은 원래 이런 문제를 잡기 위해 존재하지만, 실제 메인넷처럼 다양한 운영 환경·동기화 상태·트래픽 패턴이 완벽히 재현되지 않으면 “잠복 버그”가 통과할 수 있다는 한계가 드러난 셈이다.
패치 완료…과거 상태 ‘재계산 폭주’ 막고, 검증 비용을 낮췄다
개발진은 문제를 해결한 패치를 적용한 상태다. 사건 당시에는 운영자들이 임시 대응책을 사용하며 버티는 방식으로 대응했고, 이후 정식 업데이트를 통해 “현재 상태를 활용하지 못해 과거 상태를 처음부터 다시 계산하던” 비효율이 개선됐다.요약하면, 검증 처리 과정에서 불필요한 과거 상태 재생성이 발생하지 않도록 로직을 손본 것이다.
이번 사건이 남긴 결론 ‘클라이언트 다양성’이 사실상 안전장치였다
업계가 이번 일을 크게 보는 이유는, 단순한 버그 자체보다도 점유율이 큰 단일 클라이언트에서 같은 결함이 발생했을 때의 파급력 때문이다. 실제로 합의 클라이언트는 특정 구현체의 비중이 과도하게 커질수록, 한 번의 결함이 네트워크 전체 안정성에 영향을 줄 수 있다.이번 건은 프리즘에서 발생했기 때문에 최악의 시나리오를 피했다는 평가가 나오지만, 만약 과반 비중을 차지하는 클라이언트에서 동일 유형의 문제가 터졌다면 확정성 상실 위험이 훨씬 커질 수 있었다는 우려도 함께 제기된다.
2023년 파이널리티 불안 재소환…“같은 급의 리스크는 반복될 수 있다”
이더리움은 과거에도 클라이언트 이슈로 인해 확정성이 흔들린 사례가 있었다. 이번 사건은 “특정 조건에서만 폭발하는 코너 케이스”가 실제 메인넷에서 얼마나 큰 변동성을 만들 수 있는지를 다시 보여줬다는 점에서, 개발·운영 측면 모두에 숙제를 남겼다.