2024년 11월 21일 목요일, 수이 네트워크가 처음으로 네트워크 중단(Outage) 사태를 겪었다. 그 원인은 혼잡 제어 시스템의 ‘TotalGasBudgetWithCap”모드에서 트랜잭션 복잡도를 계산함에 있어 비용 산정을 0으로 잘못 하게 되었고, 코드에 있던 assert! 구문이 실행 비용이 0이면 안된다는 판단을 내린 것에 있었다.
이로써 수이 네트워크는 사상 처음으로 네트워크가 중단되는 사태를 겪었고 약 2.5시간동안 블록을 생산하지 못하였다.
네트워크 중단은 어찌되었던 좋은 소식은 아니다. 누군가는 이러한 사태로 신뢰를 잃었을 수도 있다. 수이가 올해 가장 유의미한 성과를 보여줬던 블록체인 네트워크이니만큼, 작금의 상황을 전화위복 삼아서 더 큰 도약을 해주길 바란다.
올해 레이어1 시장의 주인공은 수이라고 말할 수 있을 정도로 수이는 눈부신 한 해를 보냈다. TVL 측면에서도 Non-EVM 체인들 중 솔라나 다음으로 2위, 온체인 거래량도 7일 기준 2조 원을 넘는 등 눈부신 업적들을 달성하였다. 그러던 중 2024년 11월 21일 목요일 오전 1시 15분부터 3시 45분(PT 기준)까지, 여태껏 100% 업타임을 자랑했던 수이 네트워크가 갑작스럽게 첫 네트워크 중단을 겪게 되었다.
이번 사태의 기술적 세부사항은 다음과 같다:
네트워크의 혼잡 제어 시스템의 'TotalGasBudgetWithCap' 모드에서 문제가 발생
이 모드는 처음에 프로토콜 버전 63에서 활성화되었다가 되돌려졌고, 이후 버전 68에서 재활성화 되었다.
다음 두 가지 조건을 모두 충족하는 특정 유형의 트랜잭션을 받았을 때 (지금 사태와 같은)시스템이 충돌하게 되는데:
혼잡 제어 시스템이 'TotalGasBudgetWithCap' 모드로 구성되어 있을 때
네트워크가 다음 두 특성을 모두 가진 트랜잭션을 받았을 때: 1)변경 가능한 공유 객체에 인풋이 들어갔을 때, 2) MoveCall 명령어가 없을 때
이러한 조건이 충족되었을 때 실행 비용이 잘못 계산되어 0이 되었고, 이로 인해 assert! 구문이 작동하여 모든 검증자들이 충돌을 일으킴
1.1.1 혼잡 제어 시스템이 필요한 이유
수이의 독특한 객체 기반 아키텍처는 다른 네트워크와 차별화되는 대규모 병렬 트랜잭션 처리를 가능하게 한다. 하지만 여러 트랜잭션이 동일한 공유 객체에 접근해야 할 때(예: 여러 사용자가 동일한 NFT와 상호작용하려 할 때)는 반드시 순차적으로 처리해야 한다. 혼잡 제어 시스템은 이러한 순차적 처리를 관리하고 시스템 과부하를 방지하기 위해 설계되었다.
PR #20365를 통해 수정사항 구현
메인넷에는 v1.37.4로, 테스트넷에는 v1.38.1로 배포
수정사항이 배포된 후 검증자 커뮤니티의 신속한 대응으로 단 15분 만에 네트워크 복구
다만, 전체 2시간 30분의 중단 시간 중 상당 부분은 릴리스 빌드 완료를 기다리는 데 소요됨
1.2.1 주요 교훈 및 개선사항:
사고 감지 시스템이 효과적으로 작동하여 온콜 엔지니어들에게 즉시 자동 경보를 전송
팀은 악의적 트랜잭션에 더 잘 대응하기 위해 테스트 시스템을 강화하는 중
디버그 및 릴리스 바이너리를 더 빠르게 제공하기 위해 빌드 워크플로우 개선 작업 진행 중
결과적으로는 수이 네트워크의 첫 중단 사태였음에도 불구하고, 신속한 해결과 상세한 포스트모템을 통한 투명한 소통은 네트워크의 회복력과 위기 상황에서의 기술적 역량을 입증했다. 현재 수이 네트워크는 첫 번째이자 마지막이길 희망하는 네트워크 중단 사태를 성공적으로 해결하고 정상 운영 중이다.
수이 네트워크가 처음으로 네트워크 중단 사태를 겪는 것임에도 불구하고 빠르게 네트워크를 복구했기 때문에, 커뮤니티나 시장의 반응은 그렇게 부정적이지 않은 편이고, 수많은 네트워크 중단 사태를 겪었던 솔라나 커뮤니티는 오히려 수이 커뮤니티에 격려를 보내기도 하였다.
수이 네트워크는 여태까지 100% 업타임을 지킨 것에 대해서 매우 자랑스럽게 생각했었는데, 이제 그 자랑을 못하게 되었다. 아무리 요즘엔 네트워크가 다운되든 말든 신경 쓰지 않는다고 하지만, 100% 업타임을 유지하는 네트워크와 한번 다운된 네트워크에 대한 신뢰도의 차이는 날 수밖에 없기 때문에 이번 사건으로 네트워크에 대한 신뢰가 조금은 깨졌을 것이라고 사료된다. 해서, 이 신뢰를 어떻게 회복하느냐가 앞으로 남은 사이클에서 중요한 과제가 될 것 같다.
그럼에도 이번 사태가 가격에 치명적인 영향을 주지 않는 이유는, 수이를 좋아하는 사람들 대부분이 솔라나를 좋아하거나 좋아했던 사람들일 가능성이 높고, 이미 솔라나는 몇 번이고 네트워크 다운타임을 겪어봤음에도 다시 살아나는 것을 봐왔기에 회복 탄력성이 강한 것으로 보인다.
우선 시장의 신뢰를 회복하기 위해서 가장 먼저 해야 하는 것이 "빠른 복구"였는데, 수이 재단과 수이 밸리데이터들 그 외 컨트리뷰터들이 열심히 협력하여 2.5시간 만에 네트워크를 다시 정상으로 되돌린 것은 매우 높게 평가할 만하다. 하지만 여기서 더 중요한 것은 올해 내내 끌어왔던 수이의 모멘텀을 네트워크 중단 이후로도 어떻게 계속 이어갈 수 있느냐에 대한 부분이다.
수이는 인프라 단에서도 다양한 이니셔티브들을 전개하여 블록체인 업계를 선도해왔다. 대표적으로 무브 언어와, 오브젝트 기반의 스토리지 모델은 굉장히 혁신적인 접근법이었고, 이 외에도 미스티세티 업그레이드를 통해 네트워크의 성능을 성공적으로 향상시켰고, 월루스와 같은 스토리지 레이어를 준비하며 블록체인 기술이 대중화 레벨에서 사용되기 위해선 무엇이 필요한지에 대한 연구를 계속 진행하고 있다. 하지만 수이가 지금의 모멘텀을 이어가기 위해서는 이것들 이상의 무언가가 반드시 필요하다. 필자는 그것을 SuiPlay0X1으로 보고 있다. 간편한 하드웨어를 기반으로 한 게이밍 생태계 조성이 성공적으로 이루어진다면, 올 한 해 동안 수이를 이끌어왔던 모멘텀을 다시 한번 받아서 재도약 할 수 있다.
결과적으로 필자는 이번 네트워크의 중단은 "불행 중 다행"이라고 생각한다. 매도 빨리 맞는 것이 낫다고, 이러한 이슈들은 되도록이면 빨리 일어나서 나중에 수이 네트워크가 더 큰 규모의 자산을 다뤘을 때는 이런 사고가 안 날 수 있도록 방지할 수 있기 때문이다.
블록체인은 굉장히 복잡한 시스템이다. 특히 병렬 처리를 지원하는 네트워크는 더더욱 그렇다. 그렇기 때문에 이런 복잡성을 추구하면서도 네트워크가 멈추지 않을 것이라고 단정 짓는 것이 어쩌면 더 위험했는지도 모르겠다. 앞으로 복잡하게 블록체인을 설계해서 높은 확장성을 갖추는 만큼이나 네트워크 보안에도 많은 신경을 써야 할 것이다.
지금 보니까 수이가 한 시간 정도 넘게 멈춘 거 같다. 솔직하게 말해서 나는 어떻게 그렇게 수많은 블록체인들이 멈추지 않고 작동하는지 놀라울 정도다. 네트워크가 너무 복잡하기 때문이다. 내가 봤을 때, 솔라나도 최소한 한 번은 더 멈추지 않을까 생각한다.
방금 수이 네트워크가 중단된 것을 보면서 과거의 솔라나가 생각났다(모르는 사람들을 위해, Rooter는 Suilend 이전에 솔라나의 OG DeFi 앱인 Solend(now SAVE)의 파운더이다. 즉, 솔라나에도 초기부터 애플리케이션을 만든 경험이 있다는 이야기). 솔라나는 2021-2022년동안 수도 없이 네트워크가 중단됐지만, 지금 보면 솔라나가 대장 아닌가. 네트워크가 중단되는 것은 장기적으로는 굉장히 도움이 된다고 본다.
그리고 아마 이러한 고통을 겪는 것은 수이만이 아닐 것이라고 생각한다. 소위말해 “퍼포먼스 체인”이라고 불리는 블록체인들은 언제든지 겪을 수 있는 이슈라고 사료된다.
관련 아티클, 뉴스, 트윗 등 :