뉴스 · 技术生态

퍼블릭 체인이 중지되는 이유는 무엇입니까? 블록체인 합의를 진정으로 이해하기 위한 코스모스 종료 25시간

텍스트 크기

9월 22일 저녁, 한 사용자가 ATOM 전송을 보냈습니다.

어느 날 밤이 지났지만 거래는 여전히 "확인 대기 중"이었습니다.

개인키는 분실되지 않았고, 지갑에 서명 예외도 없었습니다. 다음날 다시 확인해보니 여러 공개 RPC에서 코스모스 허브가 블록 높이 33,086,740에서 멈춘 것으로 나타났습니다.

새로운 블록이 생성되지 않으면 자연스럽게 이 거래를 패키징할 장소가 없게 됩니다.

코스모스 허브가 블록 생산을 재개한 지 하루쯤 지나서야 기다리던 ATOM 전송이 마침내 성공했습니다.

일반 사용자에게는 이것이 블록체인 합의를 이해하는 가장 직관적인 교훈이 될 수 있습니다.

우리는 "어떤 중앙 조직도 퍼블릭 체인을 폐쇄할 수 없다"고 말하곤 하지만 현실은 훨씬 더 복잡합니다. 충분히 분산된 블록체인은 일반적으로 서버실에 "종료 버튼"이 없지만 여전히 중지될 수 있습니다.

이번 코스모스 허브의 중단으로 인해 평소에는 일반 사용자에게 숨겨져 있던 이 메커니즘이 완전히 노출되었습니다.

1. 코스모스가 갑자기 “블록 생산을 중단”한 이유는 무엇인가요?

우선, 혼동하기 쉬운 문제를 명확히 할 필요가 있습니다. 이번에 직접 공격을 받은 것은 코스모스 허브가 아니었습니다.

사건은 뉴트론에서 처음 발생했습니다.

9월 22일, "AIATO: AI Agent Takeover"라는 Neutron 거버넌스 제안이 통과되었습니다. 공격자는 체인 수준 거버넌스 권한의 허점을 이용하고 wasmd 프레임워크에서 기본적으로 제공하는 특권 지침을 사용하여 Astroport 및 Drop과 같은 애플리케이션의 계약 관리자를 공격자가 제어하는 ​​주소로 변경했습니다.

이것은 우리가 일반적으로 이해하는 종류의 "코드 취약점"이나 "프로토콜 결함"이 아닙니다.

단순히 애플리케이션 자체에 "도어락"이 있다고 이해하면 되지만, 뉴트론의 체인 수준 거버넌스 역시 더 높은 권한을 가진 "마스터 키"를 보유하고 있습니다. 공격자가 거버넌스 결과를 통제하는 것은 이 키를 얻는 것과 동일하며 관리자를 재지정하고 계약을 마이그레이션하고 추가로 자산을 전송할 수 있습니다.

코스모스 허브가 실제로 참여하게 된 것은 후속 크로스체인 자금 이체였습니다.

Cosmos Labs의 검토에 따르면 Neutron 실행이 중단되기 전에 공격자는 일부 자산을 여러 네트워크로 전송했습니다. 약 170만 개의 ATOM이 코스모스 허브로 이전되어 크로스체인 유동성을 통해 교환되기 시작했습니다.

즉, 코스모스 허브 자체가 직접적인 공격을 받지는 않았고, 뉴트론 취약점으로 인해 일반 허브 사용자 자금이 직접 탈취되지도 않았다.

그러나 공격을 통해 획득한 ATOM은 이미 Hub에 진입한 상태이다. 남은 ATOM이 유출되는 것을 방지하기 위해 일부 코스모스 허브 검증인들이 노드 운영을 중단하기 시작했습니다.

9월 22일 19시 18분경(SGT)까지 중지된 검증인은 전체 투표권의 3분의 1 이상을 차지했으며, 따라서 코스모스 허브는 새로운 블록을 계속 형성할 수 없었고 결국 33,086,740개에서 중지되었습니다.

이 단계는 매우 중요합니다.

이는 회사가 코스모스 허브를 직접 클릭할 수 있는 "일시 중지" 버튼이 없으며, 온체인 거버넌스 투표를 먼저 거치지 않는다는 의미입니다. 네트워크를 실제로 멈추게 하는 것은 충분한 검증인이 더 이상 합의 형성에 참여하지 않을 때입니다.

그러나 더 주목할만한 것은 실제로 후속 복구 프로세스입니다.

체인이 정지된 지 약 4시간 후에 검증자는 완전한 복구 계획을 받았습니다: 체인 정지 높이에 대한 일회성 상태 수정을 수행하고 공격자 주소에 남아 있는 ATOM을 커뮤니티 검증자가 공동으로 관리하는 다중 서명 주소로 전송합니다.

이후 코스모스 랩스는 검증자들이 도달한 솔루션을 기반으로 Gaia v28.3.0 패치를 제작하고 테스트한 후 검증자들에게 배포했습니다.

이 버전의 Gaia는 지정된 복구 높이에서 일회성 상태 변경을 수행하여 공격자 주소의 1,227,121 ATOM을 Nansen, Keplr, Enigma, Silknodes, Kiln 및 Polkachu로 구성된 4/6 다중 서명 주소로 전송합니다.

9월 23일 이른 아침까지 v28.3.0을 설치한 것으로 확인된 검증인의 수는 전체 투표권의 67%를 초과했습니다. 따라서 그날 12:00 UTC에 코스모스 허브는 재시작을 조정했습니다. 약 6분 후, 이 일회성 상태 수정은 블록 높이 33,086,741에서 실행되었으며 네트워크는 정상적인 블록 생성으로 돌아왔습니다.

결국, 코스모스가 블록 생성을 중단한 시점부터 운영을 재개하는 시점까지의 전체 과정에서 네트워크의 생명력을 먼저 잃게 만든 것은 검증인이었고, 투표권의 2/3 이상이 새로운 상태 전환 규칙 세트를 수락하여 궁극적으로 이 규칙 세트를 복원된 정식 상태로 만들었습니다.

이 시점에서 겉으로는 간단한 질문이 떠오릅니다. 분산형 퍼블릭 체인인데 왜 검증 권한의 1/3 이상이 이를 중지할 수 있고, 네트워크를 복원하려면 충분한 검증자가 동일한 소프트웨어 세트를 수락하고 실행해야 할까요?

그 대답은 실제로 "합의"라는 단어에 있습니다.

2. 소위 합의는 “영원히 멈추지 않는다”는 것이 아닙니다.

블록체인에 대해 가장 오해되는 것 중 하나는 "분권화"가 "다운타임이 없음"과 동일하다는 것입니다.

실제로 합의 메커니즘이 실제로 해결하는 문제는 중앙 장부가 없는 상황에서 얼마나 많은 노드가 거래 순서와 원장 상태에 대해 합의에 도달할 수 있는지입니다.

그러나 다양한 퍼블릭 체인은 이를 다양한 방식으로 구현합니다.

비트코인의 가장 전형적인 예는 작업 증명인 PoW입니다. 채굴자는 컴퓨팅 성능을 기반으로 블록을 생성하기 위해 경쟁합니다. 짧은 시간 내에 네트워크에 두 개의 법적 분기가 나타나면 노드는 누적된 작업량에 따라 둘 중 하나를 선택하여 계속 구축합니다.

따라서 비트코인에는 "이 블록은 67%의 투표 후에 영원히 확정될 것입니다"라는 명확한 순간이 없습니다. 확률론적 최종성에 더 가깝습니다. 후속 블록이 많을수록 이전 트랜잭션을 재구성하는 데 필요한 컴퓨팅 전력 비용이 점점 더 높아집니다.

이것이 바로 모든 사람들이 비트코인 ​​거래가 확인을 위해 6블록을 기다리는 것이 가장 좋다고 말하곤 했던 이유입니다. 결국 컴퓨팅 파워가 아무리 높아도 노드가 실행하는 합의 규칙을 단순히 우회할 수는 없습니다.

물론 이는 비트코인의 상태가 어떤 상황에서도 "절대 수정 불가능"하다는 의미는 아닙니다. 이론적으로 전체 생태계가 새로운 클라이언트 세트와 새로운 합의 규칙을 받아들이면 하드포크를 통해 과거 규칙에서는 유효하지 않았던 상태 변경도 유효하게 될 수 있습니다.

하지만 새로운 규칙 세트를 수용할 만큼 충분한 채굴자, 전체 노드, 거래 플랫폼, 지갑 및 사용자를 확보할 수 있는 능력이 있는 사람은 누구일까요?

거의 ~ 아니다.

개발팀은 전체 비트코인 ​​네트워크에 대한 합의 규칙을 결정할 수 없습니다. 또한 넘어야 할 합의 임계값이 매우 높기 때문에 채굴자와 거래 플랫폼에게도 어렵습니다. 바이낸스에서 7,000 BTC가 도난당했을 때 일부 사람들은 CZ가 대규모 채굴자들에게 연락하여 운영을 하자고 제안했지만 결국 아무 일도 일어나지 않았습니다.

Ethereum은 또 다른 고전적인 예를 제공합니다.

PoS로 전환한 후 이더리움은 이제 Casper FFG와 LMD-GHOST로 구성된 Gasper 합의를 사용합니다. 간단히 이해하자면, 메커니즘의 한 부분은 "현재 어떤 체인을 따라야 하는지"를 결정하는 역할을 담당하고, 다른 부분은 블록이 진정한 의미에서 최종성을 달성하도록 만드는 역할을 담당합니다.

스테이킹된 ETH의 최소 2/3를 대표하는 검증인이 해당 체크포인트에 대한 합의에 도달하면 블록은 마무리 단계로 나아갈 수 있습니다. 반대로, 지분의 1/3 이상이 오랫동안 올바른 투표에 참여하지 않으면 네트워크가 일시적으로 최종성을 형성하지 못할 수 있습니다. 그러나 이더리움은 또한 오랫동안 최종 확정이 불가능할 때 오프라인 검증인의 유효 가중치를 점진적으로 줄이기 위해 비활성 누출을 설계하여 네트워크가 최종적으로 최종성을 복원할 수 있는 기회를 제공했습니다.

이 결과를 실제로 변경하려면 프로토콜 규칙과 클라이언트도 변경해야 합니다.

2016년 DAO 사건과 마찬가지로 이더리움 커뮤니티는 마침내 하드포크를 통해 블록 1,920,000에서 이더리움 재단에 의한 불규칙적인 상태 변경이라는 특별한 상태 수정을 구현하고 해당 ETH를 복구 계약으로 이전했습니다.

그러나 업그레이드를 거부하고 원래 상태를 계속 유지한 일부 채굴자와 커뮤니티는 결국 이더리움 클래식(ETC)을 형성했고, 이는 잘 알려진 ETH와 ETC의 포크로 이어졌는데, 이는 모든 사람이 이 규칙을 받아들이는 것은 아니라는 것을 나타냅니다.

코스모스 허브는 또 다릅니다. 일반적인 BFT 합의에 더 가까운 CometBFT를 사용합니다.

이는 보다 일반적인 BFT 합의로 이해될 수 있습니다. 즉, 블록이 실제로 제출되려면 투표권의 2/3 이상의 커밋을 얻어야 합니다.

장점은 Finality가 매우 명확하다는 것입니다. 충분한 검증 권한을 가지고 투표를 통해 블록이 제출되면, 보안감을 위해 확률을 교환하는 PoW와 같이 점점 더 많은 블록을 계속 기다릴 필요가 없습니다.

그러나 다른 측면도 매우 간단합니다. 즉, 투표권의 1/3 이상이 더 이상 커밋을 형성하는 데 필요한 투표를 제공하지 않으면 나머지 검증인은 아무리 노력해도 2/3 이상을 얻을 수 없습니다.

현 시점에서 네트워크의 가장 안전한 선택은 '블록 생산을 일시 중지'하는 것이므로, 분산 시스템의 관점에서 볼 때 코스모스 허브의 짧은 중단은 실제로 신비롭지 않습니다.

한마디로, 충분한 투표권을 가진 검증자 그룹이 참여를 중단한 후 합의 프로토콜은 자체 규칙에 따라 충분한 합의 없이 새 블록을 계속 확인하는 것보다 가용성을 잃는 것이 좋습니다.

그 뒤에는 실제로 일반 사용자가 종종 혼동하는 분산 시스템의 두 가지 개념이 있습니다.

안전성: 서로 다른 노드는 두 개의 상충되는 최종 상태를 동시에 확인할 수 없습니다.

활동성: 네트워크가 계속해서 발전하고 새로운 거래를 처리할 수 있습니까?

BFT 시스템의 경우, 합의에 참여하는 노드가 충분하지 않은 경우 정지는 때때로 안전을 유지하기 위해 지불되는 대가입니다. 직설적으로 말하면, 이 분산형 원장은 나머지 사람들이 자신의 계정을 유지하도록 허용하는 것보다 거기서 멈추는 것이 좋습니다.

이러한 관점에서 되돌아보면, 퍼블릭 체인의 역사에서 완전히 다른 것처럼 보이는 많은 사고가 실제로는 같은 일을 중심으로 발생한다는 것을 알 수 있습니다.

분산 노드가 더 이상 "올바른 상태"에 동의할 수 없을 때 네트워크는 무엇을 합니까?

3. 비트코인부터 솔라나까지, 퍼블릭 체인의 실제 위험 경계는 어디입니까?

코스모스가 이 문제를 제기한 것은 이번이 처음이 아닙니다.

2013년 초에 비트코인은 매우 전형적인 체인 포크 사고를 겪었습니다.

당시 비트코인 ​​0.8은 기본 데이터베이스를 Berkeley DB에서 LevelDB로 전환했고, 이후 대량의 트랜잭션 입력이 포함된 블록이 나타났습니다. 새 버전의 노드에서는 정상적으로 처리할 수 있었지만 일부 이전 버전의 노드에서는 Berkeley DB 잠금 수 제한으로 인해 해당 블록을 유효하지 않은 것으로 판단했습니다.

그래서 매우 당황스러운 장면이 나타났습니다. 모두가 비트코인을 운영하고 있었지만, "이 블록이 합법적인지 여부"에 대해 기존 클라이언트와 신규 클라이언트는 서로 다른 대답을 하기 시작했습니다.

그 결과 네트워크는 두 개의 체인으로 나뉘었고 새 버전 0.8 측은 한때 컴퓨팅 파워의 약 60%를 보유했으며 자체적으로 빠르게 수렴하기 위해 일반적인 컴퓨팅 파워 경쟁에 의존할 수 없었습니다.

결국 대규모 채굴 풀은 이전 버전으로 다시 전환하기 위해 협력하여 이전 규칙 측면에서 더 많은 컴퓨팅 성능을 되찾았고 네트워크는 다시 수렴되었습니다. 비트코인은 나중에 BIP 50을 통해 사고를 구체적으로 검토했습니다.

2016년 이더리움의 DAO 사건은 문제를 한 단계 더 발전시켰습니다.

위에서 DAO 사건에서 언급했듯이 이더리움 커뮤니티는 마침내 블록 1,920,000의 하드 포크를 통해 이더리움 재단에 의해 불규칙한 상태 변경이라고 명시적으로 불리는 특별한 상태 수정을 구현하여 관련 ETH를 복구 계약으로 이전했습니다.

하지만 모두가 이 결정에 동의한 것은 아니다. 상태 수정을 거부한 일부 채굴자와 커뮤니티는 원래 규칙을 계속 유지했고, 이후 오랫동안 지속된 이더리움 클래식(ETC)이 등장했습니다.

이번 DAO 포크는 극단적인 사건이 발생하면 코드 합의 외에 사회적 합의도 있음을 모두에게 알려주는 고전적인 사건이기도 하다. 충분히 일관된 의견이 형성되지 않으면 체인이 실제로 둘로 분할될 수 있습니다.

2021 솔라나는 완전히 다른 실패 경로를 보여줍니다.

그해 9월에는 대량의 로봇 거래가 네트워크에 쏟아져 검증 노드 메모리가 부족해지고 다수의 노드가 충돌하는 사태가 발생했다. 결국 전체 네트워크는 현 상태에 대한 합의에 도달하지 못하고 약 17시간 동안 새로운 블록 확인을 중단했습니다. 그런 다음 검증인들은 네트워크를 복원하기 위해 협력했습니다.

이러한 사고를 종합해 보면 동일한 것이 아니라는 것을 알 수 있습니다.

2013년 비트코인의 문제는 서로 다른 클라이언트가 서로 다른 유효성 규칙을 구현하기 시작한다는 것입니다.

2021년 솔라나의 문제는 다수의 검증 노드가 정상적으로 합의에 계속해서 참여할 수 없고, 네트워크가 활력을 잃는다는 것입니다.

Ethereum DAO가 직면한 문제는 커뮤니티가 새로운 프로토콜 규칙을 통해 상태를 적극적으로 수정해야 하는지에 대한 질문에 더 가깝습니다.

이번에 코스모스 허브는 또 다른 특별함을 가지고 있습니다. 공격 자산이 계속 이동하는 것을 방지하기 위해 검증인 조정을 통해 네트워크는 먼저 활성 상태를 적극적으로 잃습니다. 그런 다음 충분히 높은 비율의 검증 권한이 공동으로 새로운 소프트웨어를 수락하고 상태를 복원하여 네트워크를 다시 일관성 있게 만듭니다.

따라서 이러한 사건을 단순히 "블록체인이 종료될 수 있다", "탈중앙화는 가짜다"라고 단정하기보다는, 좀 더 실제적인 사실을 인정하는 것이 좋습니다.

합의 메커니즘은 결코 파괴 불가능한 기계가 아닙니다. 이것이 실제로 제공하는 것은 불일치가 발생할 때 누가 올바른 체인을 결정할 것인지와 같은 일련의 분산된 규칙입니다. 얼마나 많은 참가자가 주 최종 결정을 내릴 수 있습니까? 오류가 발생하면 네트워크는 계속 실행되거나 중지되도록 선택합니다. 그리고 극단적인 경우에는 어떤 집단적 행동이 다음 운영규칙을 바꿀 수 있는지.

이는 또한 이번 코스모스 사건이 "체인을 중단해야 하는가?"라는 질문보다 일반 사용자들에게 더 고려할 가치가 있는 질문을 남기게 만듭니다.

마지막에 쓰세요

우리는 종종 열쇠나 동전이 아니라고 말합니다.

물론 이 문장은 여전히 ​​유효하지만 자산 통제를 강조합니다. 개인 키가 귀하의 손에 있는 한 지갑, 거래 플랫폼 또는 기타 제3자는 일반적으로 귀하를 대신하여 이체에 서명할 수 없습니다.

전제는 귀하가 사용 중인 블록체인이 언제든지 이 서명을 처리할 수 있어야 한다는 것입니다.

코스모스 허브가 블록 생성을 중단하는 날에도 사용자는 여전히 개인 키를 보유하고 있으며 자산은 허공에서 사라지지 않습니다. 그러나 트랜잭션에 올바르게 서명하더라도 이를 수락할 새로운 블록이 없습니다.

복구 프로세스에서는 충분한 합의 참가자가 새로운 상태 규칙 세트를 수락하면 원래 주소의 개인 키 서명 없이 특정 계정의 온체인 상태도 변경될 수 있다고 설명합니다.

이는 "귀하의 키나 코인이 아닙니다"를 무효화하지는 않지만 개인 키 자율성과 기본 합의 권리는 결코 동일하지 않음을 상기시켜줍니다.

지갑도 마찬가지다.

지갑은 개인 키와 서명 권한이 사용자의 손에 있는지 확인하고, 체인 수준의 이상을 최대한 빨리 식별하고, 거래 상태를 정확하게 표시하고, RPC 및 노드 중복성을 설정하고, 네트워크가 복원된 후 거래의 최종 결과를 재확인할 수 있습니다.

그러나 지갑은 퍼블릭 체인에 대한 합의를 복원할 수 없으며, 기본 네트워크가 절대 중단되지 않을 것이라고 보장할 수 없으며, 체인의 규칙과 상태가 합의 수준에서 절대 변경되지 않을 것이라고 보장할 수도 없습니다.

따라서 성숙한 분산 시스템이 실제로 추구해야 할 것은 "아무것도 변경할 수 없다"는 것이 결코 아닐 수 있습니다. 반대로 이러한 불완전한 경계는 가능한 한 명확해야 합니다. 누가 합의를 중단할 수 있습니까? 얼마나 많은 무게가 필요합니까? 어떤 상황에서 긴급 개입이 허용되나요?

진정한 탈중앙화로 인해 시스템에 사고가 발생하지 않는 것은 불가능합니다. 중요한 것은 사고가 발생하더라도 누가, 어떤 규칙에 따라, 어떤 수준의 합의를 통해 이 계정이 다음에 어떻게 기록되어야 하는지를 결정할 수 있다는 것입니다.

관련 뉴스

계속 탐색하기데이터 목록검색