警惕潜在风险:用Geth进行质押,可能会失去所有资产?
원저자:Labrys
원본 편집: Deep Chao TechFlow
이 기사에서는 Ethereum 네트워크에서 클라이언트 Nethermind가 직면한 결함에 대해 설명합니다. 이로 인해 Nethermind(네트워크의 약 10%)를 사용하는 모든 검증자가 오프라인 상태가 됩니다. 이 기사는 Ethereum 네트워크에서 Geth 클라이언트의 절대 다수 위치와 그것이 가져오는 잠재적인 위험을 강조합니다. Geth는 안정적이고 신뢰할 수 있는 클라이언트이지만, 네트워크에서 광범위하게 사용되기 때문에 심각한 장애가 발생할 경우 전체 네트워크에 심각한 영향을 미칠 수 있습니다. 이 기사에서는 네트워크가 직면한 중앙 집중화의 위험을 줄이기 위해 커뮤니티에서 실행 클라이언트의 다양성에 주의를 기울일 것을 촉구합니다.
소개하다
이번 주 이더리움 네트워크의 임원 클라이언트인 Nethermind는 Nethermind를 실행하는 모든 검증인(네트워크의 약 10%)이 오프라인 상태가 되는 중단을 경험했습니다.
Nethermind는 소수의 이해관계자에 의해 운영되기 때문에 이는 소규모 이벤트입니다. 아래는 Nethermind를 실행하는 자체 검증인의 총 잔액 그래프입니다. 처음 오류가 발생했을 때 현지 시간으로 오전 4시경에 검증인이 오프라인 상태가 된 것을 확인할 수 있습니다. 팀에서는 약 4시간 후에 패치를 발표했고, 제가 패치를 설치했을 때 현지 시간으로 오전 9시쯤에 유효성 검사기가 백업되어 실행되었습니다. 이 기간 동안 내 유효성 검사기는 받은 것과 동일한 양의 보상으로 처벌을 받았습니다. 당일 오후 1시에는 검증인의 잔고가 정전 전보다 높아졌다. 전반적으로 이것은 사소한 결함입니다.

많은 사람들은 Geth를 실행할 때 비슷한 오류가 발생하면 처벌도 비슷할 것이라고 잘못 생각합니다. 이것은 사실이 아닙니다. Geth나 Geth가 어떻게 구축되었는지에 관한 것이 아니라 Geth를 운영하는 사람들의 수에 관한 것입니다.
ClientDiversity.org에 따르면 Ethereum의 유효성 검사기 중 약 84%가 Geth를 실행하고 있습니다. 이제 이러한 보유자를 보호하기 위해 Geth는 의심할 여지 없이 가장 우수하고 안정적인 클라이언트입니다. Nethermind와 같은 소수의 클라이언트가 이번 주에 결함과 중단으로 어려움을 겪고 있는 반면, Geth는 합병 이후(그리고 그 이전에도) 잘 운영되고 있습니다. 내 경험에 따르면 Geth에서 소수 클라이언트로 전환할 때 유효성 검사기에 더 많은 리소스가 필요하고 더 많은 유효성 검사를 놓쳤다는 사실을 발견했습니다.
이 글은 Geth에 대한 공격이 아닙니다. 나는 그들의 팀을 매우 존경합니다. 불행하게도 Geth의 광범위한 사용으로 인해 Geth가 대부분의 지분을 보유하고 있을 때 Geth를 운영하는 데 따른 위험에 대해 솔직하게 논의해야 합니다.

더 많은 누락된 증명과 더 많은 다운타임을 경험할 가능성이 높다는 것을 안다면 누구도 Geth를 떠나고 싶어하지 않을 것입니다. 특히 전문 스테이킹 운영자와 같이 가장 높은 수익을 광고하기 위해 가동 시간에 의존하는 비즈니스 모델을 가진 사람들은 더욱 그렇습니다.
지난 9월 기준으로 최대 운영업체인 Lido는 Geth의 검증인 중 약 76%를 운영하고 있는 것으로 추정되었습니다.

하지만 소수 클라이언트를 운영하고 있다는 사실이 행복합니다. 추가 보상을 잃더라도 네트워크의 탈중앙화를 위해 개인적인 이익을 희생하는 이타주의자이기 때문이 아니라 내 ETH가 손실될 것임을 알기 때문입니다. 결과적으로 대부분의 버그가 없습니다.
Geth에 버그가 있으면 어떻게 되나요?
버그 자체에 따라 다릅니다.
Ethereum 유효성 검사기의 2/3 이상이 Geth를 실행하기 때문에 Geth에 중대한 오류가 발생하면 즉시 체인 마무리가 방지됩니다. 이는 체인이 중지되거나 중단된다는 의미는 아닙니다. 다른 클라이언트가 계속 실행되는 한 체인은 계속 실행됩니다. 블록의 약 84%가 누락됩니다. 즉, 약 12초의 블록 시간 대신 약 75초마다 새 블록이 제안됩니다. 이러한 블록은 재구성되기 쉬우므로 이러한 블록에 포함된 트랜잭션은 체인이 다시 완료될 때 여전히 존재한다는 보장이 없습니다. 이것은 나쁘게 들리지만 수년 동안 이더리움은 합병 이전에 최종 확인 개념이 없었으며 오늘날 비트코인도 마찬가지입니다. 이것이 바로 거래소가 구조 조정 및 손실 위험을 줄이기 위해 6개 이상의 블록 확인을 기다리게 하는 이유입니다. 자금의.
일부 합의 클라이언트에 버그가 나타났던 2023년 5월에 이더리움에 이런 일이 이미 발생했다는 것을 기억하는 사람도 있을 것입니다. 이틀 만에 체인 종료가 두 번 중단되어 많은 블록이 누락되었으며 어느 시점에서는 네트워크의 40%만이 여전히 실행되고 있었습니다. 네트워크가 복원된 후 대부분의 DApp 사용자는 트랜잭션 블록 확인이 약간 느려지는 것 외에는 어떤 문제도 발견하지 못했습니다.

하지만 검증인은 어떻게 되나요?
비활성 누출
소수의 클라이언트가 실패하면 페널티는 그들이 얻은 것과 동일한 비율로 ETH를 잃는 것입니다(위의 유효성 검사기 그래프에서 볼 수 있듯이). 그러나 Geth가 실패하면 즉시 체인이 마무리되는 것을 방지하므로 처벌은 다음과 같습니다. 더 심각한. 이렇게 증가된 페널티를 비활성 누출이라고 하며 체인이 4주기(~25분) 이상 동안 마무리를 중지할 때 오프라인 유효성 검사기에 적용됩니다. 이 더 가혹한 처벌은 오프라인 검증인이 가능한 한 빨리 온라인으로 돌아오도록 장려하기 위한 것입니다. 또는 최악의 경우 그들의 지분이 전체 지분의 1/3 미만이 될 때까지 오프라인 검증인의 지분을 파괴하여 온라인 검증인이 완료할 수 있도록 하기 위한 것입니다. 체인 확인.

비활성 유출 동안 단 2일 동안 오프라인 상태인 검증인은 지분의 0.6%, 즉 2개월 스테이킹 보상에 해당하는 금액을 잃게 됩니다!
5일 동안 오프라인 상태만 유지해도 1년 스테이킹 보상(3.5%)이 모두 소모됩니다! 이는 검증인이 이벤트 이전에 가지고 있던 잔액을 복원하는 데 2년 이상의 스테이킹이 소요된다는 것을 의미합니다.
오프라인 상태가 된 후 1주일 이내에 자산의 10% 또는 3년 보상이 손실됩니다. 약 20일 내에 자산의 50%가 손실되고, 약 40일 내에 자산의 90%가 손실됩니다.
이에 비해 소수의 클라이언트 오류로 인해 오프라인 상태가 된 검증인은 40일 동안 지분의 0.4%만 잃게 됩니다.
비활성 페널티는 얼마나 오래 지속되나요?
버그에 따라 다릅니다.
버그를 패치할 수 있는 경우 Geth 팀이 버그를 패치하고 유효성 검사기에 적용하는 데 걸리는 시간(또는 다른 실행 클라이언트로 전환하는 데 걸리는 시간) 동안 페널티가 지속됩니다.
실제로 이 문제는 몇 시간 또는 최대 며칠 내에 해결될 것으로 예상됩니다. 버그를 수정하는 데 최근 Nethermind 사건과 같은 시간이 걸린다면 검증인은 지분의 0.004%를 잃게 되는데 이는 큰 문제가 아닙니다.
버그로 인해 유효성 검사기가 잘못된 블록을 생성하고 Geth가 이를 유효한 것으로 간주하고 인증하면 상황이 추악해질 수 있습니다. 이로 인해 체인이 포크됩니다. 체인은 유효하지 않은 블록을 포함하는 분기(Geth 체인)와 유효하지 않은 블록을 무시하는 분기(비 Geth 체인)의 두 분기로 분할됩니다. Geth를 실행하는 검증자는 두 분기가 모두 유효한 것으로 간주하므로 가장 무거운 체인에 구축하기로 결정합니다. 검증인 중 84%는 Geth 체인에 자신의 이익을 인증하고, 검증인 중 16%만이 Geth 체인이 아닌 것에 자신의 이익을 인증합니다. 따라서 Geth 검증자는 Geth 체인을 가장 가중치가 높은 체인으로 선택하고 계속해서 구축할 것입니다.

물론 이러한 문제가 모두 해결되면 Geth 체인의 블록은 더 이상 사용되지 않지만(이로 인해 자체 문제가 발생함) 더 큰 문제는 Geth 체인이 해당 블록을 확인하기에 충분한 지분(2/3 이상)을 갖게 된다는 것입니다. 무효화 체인.
Geth 체인이 완성되면 검증인이 Geth 체인을 인증하면 비Geth 체인도 확인될 때까지 비Geth 체인의 구성에 참여할 수 없으며 그렇지 않으면 삭감됩니다. 본질적으로 Geth를 실행하는 유효성 검사기는 유효하지 않은 체인에 커밋되었으며 Geth가 아닌 체인이 확인될 때까지 해당 체인에 잠겨 있습니다. 여기에는 많은 사람들이 오해하는 주요 위험이 있습니다.
Geth 유효성 검사기는 유효하지 않은 체인에 걸려 있기 때문에 Geth 체인이 아닌 곳에서는 비활성 상태로 간주되어 비활성 누출로 인해 어려움을 겪게 됩니다. 어떤 소프트웨어 업데이트나 버그 수정도 이러한 유효성 검사기를 저장할 수 없습니다. 지분이 네트워크의 1/3 미만이 될 때까지 고갈되어 Geth 체인이 아닌 체인이 확인될 수 있습니다.
현재 네트워크에는 28,976,695 ETH가 스테이킹되어 있습니다. 이 중 84%(약 2,400만 ETH)는 Geth를 실행하는 검증인에게 귀속될 수 있으며, 16%(약 500만 ETH)는 Geth를 실행하지 않는 검증인에게 귀속될 수 있습니다. Geth가 아닌 체인을 확인하려면 Geth를 실행하는 검증인이 남은 전체 지분의 1/3 미만이 될 때까지 지분을 폐기해야 합니다. 이는 약 2,150만 ETH(전체 자산의 약 90%)가 이러한 유효성 검사기에서 파괴되어 Geth 자산이 전체의 1/3(250만 + 500 10,000 ETH) 미만인 약 250,000 ETH로 감소해야 함을 의미합니다. Geth가 아닌 검증인이 관리하는 ~500만 ETH는 이제 지분의 2/3 이상을 차지하므로 체인을 확인할 수 있습니다.
이는 완료하는 데 약 40일이 소요되는 매우 고통스러운 과정이 될 것입니다. 이로 인해 모든 ETH의 총 공급량이 약 18% 감소하여 총 공급량이 1억 ETH 미만이 됩니다.

수출을 위한 투쟁
여기서 중요한 점은 잘못된 체인의 유효성 검사기가 가만히 앉아 있을 가능성이 없다는 것입니다. 그들은 여전히 자신의 지분을 옵트아웃할 수 있는 옵션을 가지고 있으며, 그렇게 하지 않을 경우 유효 잔액이 16 ETH에 도달할 때 네트워크는 그들을 강제로 퇴거시킬 것입니다. 하지만 그렇다고 해서 손실이 16ETH로 제한되는 것은 아닙니다.
검증인을 종료하면(강제로 종료하더라도) 종료 대기열로 들어가게 되며, 종료 대기열에 있는 동안에는 여전히 ETH를 잃게 됩니다!
최악의 경우 비활성 유출로 인해 유효한 체인이 다시 확인되기까지 약 40일이 소요될 수 있다는 것을 알고 있습니다. 그러면 대기열에서 나가는 데 얼마나 걸리나요?
종료 대기열에는 에포크(~6.4분)당 네트워크를 종료할 수 있는 검증자의 수를 제한하는 변동 제한이 있습니다. 이탈 한도는 다음과 같이 정의됩니다.
현재 종료율은 6.4분마다 13명의 검증인이 퇴장하고 있으며 Geth를 실행하는 모든 검증인이 퇴장을 원할 경우 모든 검증인이 퇴장하는 데 최소 약 260일이 소요됩니다. 지분의 90%가 약 40일 안에 소각된다는 점을 고려하면 대부분의 검증인의 잔액은 체인을 나가기 전에 고갈될 것입니다.
출금을 시작한 Geth 검증인의 초기 2%는 처음 5일 이내에 출금되며, 최대 손실은 약 1년간의 스테이킹 보상이 됩니다.
손실을 지분의 10% 미만으로 제한하려면 출구 검증자 중 상위 3%에 속해야 합니다.
기존 검증인 중 상위 8%만이 지분의 50% 미만으로 손실을 제한할 수 있습니다. 이때 수동으로 출구를 시작하지 않은 사람은 강제로 출구로 나가게 되며 16 ETH의 유효 잔액으로 출구 대기열에 추가됩니다.
40일 후 지분의 90%가 소각되면 85% 이상의 검증인이 여전히 대기열에 있을 것입니다.
퇴출 능력은 귀하를 구할 수 없으며 귀하의 하향 위험은 강제 퇴출로 인한 손실(16 ETH)로 제한되지 않습니다.
상처는 어떻습니까?
어떤 사람들은 버그가 발생하면 Geth를 운영하는 스테이커가 비활성 유출로 고통받을 뿐만 아니라 삭감될 것이라고 잘못 믿고 있습니다. 이것은 잘못된 것입니다.
삭감 페널티는 합의 클라이언트에 의해 전적으로 제어되는 이중 서명 이벤트에만 적용됩니다. Geth의 버그로 인해 합의 클라이언트가 축소 가능한 오류를 발생시켜서는 안 됩니다. Geth는 잘라낼 수 없는 잘못된 블록 오류를 생성합니다.
Geth 버그에는 비활성 유출에 대한 페널티만 적용됩니다.
당신은 무엇을 해야 합니까?
현재 Geth를 실행하는 스테이커는 대다수 실행 클라이언트 실행과 관련된 위험을 완전히 이해하지 못할 수도 있습니다. 많은 사람들은 버그가 발생하면 몇 시간 내에 문제를 해결하기 위한 패치가 출시될 것이며 그 과정에서 손실되는 에테르는 거의 없다고 잘못 가정합니다.
많은 사람들은 유효하지 않은 블록을 증명하는 위험으로 인해 유효하지 않은 최종 체인에 갇히고 대부분의 ETH가 파괴된다는 사실을 이해하지 못합니다. 이는 현실이 될 수도 있는 실제 위험입니다.
이더리움 스테이킹은 위험 없는 수익이 아닙니다. 연간 최대 잠재 수익이 3.5%인 상품에 최소 $75,000를 투자하시겠습니까? 하지만 100% 손실이 발생할 수 있나요? 아마 아닐 수도 있지만, 이것이 바로 오늘날 이더리움 스테이커의 84%가 하고 있는 일입니다.
더 적은 수의 클라이언트로 이동하면(동일한 버그가 여러 클라이언트에 나타나지 않는다고 가정) 연간 손실을 최대 3.5%로 제한할 수 있습니다.
이 지식으로 인해 여전히 Geth를 실행하는 사람은 미친 것처럼 보입니다. 나는 Geth를 운영하는 사람들이 이 위험을 완전히 이해하지 못하고 있다고 추측할 뿐입니다.
LST(예: stETH, cbETH 등)를 보유하고 있고 LST가 검증기에서 Geth를 실행 중인 경우, 귀하의 이더리움이 위험에 처해 있음을 이해하고 Geth가 더 이상 주류 상태를 유지하지 않을 때까지 스테이킹을 해제하거나 다른 LST로 전환하는 것을 고려하십시오.


