자유
이더리움 Pectra업그레이드 진행상황 및 새 테스트넷 hoodi 런칭.
조회 3,471 · 공감 4 · 댓글 3
요약
이더리움이 메인넷 Pectra 업그레이드 를 앞두고 지난 2월 테스트 넷에서 업그레이드 테스트를 하던 중 사고가 발생하여 holesky 테스트넷이 마비되고 네트워크는 복구를 했으나 업그레이드 테스트를 원활히 할 수가 없어 결국 메인넷 업그레이드 일정은 미루고 새로운 테스트넷 hoodi를 시작했습니다.
hoodi 테스트넷 pectra 업데이트는 3월26일경 진행예정이고 이후 문제가 없다면 메인넷은 4월25일경 업데이트 예정입니다.
Pectra 업그레이드 몇가지 소개
확장성 - 이전 업그레이드에 도입된 블롭의 처리용량을 늘려서(블럭당 3 -> 6, 최대값 6- > 9) L2에서 더빠르고 저렴한 거래가능
계정추상화 업그레이드 EIP-7702 - 드디어 스마트 계약시 이더리움이 없어도 됩니다. 토큰 같은 스테이블코인으로 지불가능
스테이킹 최적화 : 1 밸리데이터 당 32이더로 제한된 스테이킹 한도를 2048로 증가, 밸리데이터수 감소. 유연한 출금지원
등등등
holesky 테스트넷 pectra 업그레이드 사고 경과
(보통 업그레이드때 테스트 노드를 지켜보는데 아이들 데리고 여행 중이어서 돌아와서 보니 테스트 노드가 엉망이더군요.)
네트워크가 분기되어 일반적인 방법으로는 복구도 안되고 오래된 장비로 테스트넷 돌리는데 리소스 부하도 높아서 서버가 계속 죽는 바람에 일주일 정도 고생하다가 며칠 전 겨우 복구했습니다. - 메인넷 장비라 생각하고 살리려 애썼습니다. )
사고 경과 - 일부 소개
2월24일 holesky 테스트넷에서 펙트라 업그레이드 발동.
그러나 몇몇 실행 클라이언트(Geth, Nethermind, Besu)가 정상입금계약 주소인 0x4242424242424242424242424242424242424242 대신 메인넷 계약주소를 사용하거나 값이 누락되어 0x000을 사용하였고 해당 클라이언트가 블럭을 만들었을때 empty requests list 처리를 하여 결과적으로 해시값이 다르게 나와 네트워크가 분할되었습니다.
Erigon과 Reth는 잘못된 블록을 올바르게 거부 ,Geth, Nethermind, Besu는 잘못된 블록을 수락
문제는 에러가 난 클라이언트 3개가 90%에 가까운 점유율을 가지는 녀석들이어서 대부분의 클라이언트들이 잘못된 체인을 따라가기 시작했고. 결국 아래처럼 동작하면서 네트워크가 마비되었습니다.
- 무효한 체인을 따르는 대부분의 노드
- 무효 체인은 115968년 에포크에서 정당화된 상태(최종화되지는 않았지만)에 도달하여 지배적인 체인이 되었습니다.
- 유효한 체인에서 충분한 피어를 찾을 수 없을 때 합의 클라이언트가 "동기화" 모드로 전환됨
- 비콘 노드가 "동기화" 모드에 있는 동안 블록을 생성하지 않는 검증자
- 검증자가 잘못된 체인을 증명한 후 올바른 체인을 증명하지 못하도록 하는 슬래싱 보호
이후 여러 시도가 있었고 결국 네트워크는 살아났지만 돌이킬수 없는 결과를 초래했는데. 너무 많은 밸리데이터가 슬래싱 되고 강제 퇴출되어 EXIT 큐가 꽉 차버렸습니다.
일년 넘게 기다려야 출금 테스트가 가능한 지경이 되었습니다.
결국 메인넷 업그레이드 일정은 연기되고 급하게 새로운 테스트넷인 hoodi 가 런칭되었습니다.
사고 분석 자료 ( 추가 )
https://etherworld.co/2025/03/03/aftermath-of-holesky-testnet-incident-lessons-learned/
Hoodi Testnet
( https://github.com/eth-clients/hoodi , https://hoodi.ethpandaops.io/ )
메타마스크 체인 등록 정보
Name : Hoodi
RPC : https://rpc.hoodi.ethpandaops.io/
Chain Id : 560048
explore : https://light-hoodi.beaconcha.in/
깃헙 메인페이지에 소개된 링크들도 아직 준비중인것도 있고 동작한하는것도 많아 많이 어수선합니다.
일단 제네시스 블럭은 3월17일 UTC 12:10에 시작하였고 .
빠른 테스트를 위해 메인넷과 비슷한 백만명의 밸리데이터를 각 클라이언트 개발팀 / 커뮤니티 / 기업등등에 배분하여 시작하였습니다.
Permissionless(POS)라서 기존 메인넷 테스트넷 구성과 동일하게 최신 클라이언트 조합으로 노드 구성 후 참가 가능합니다.
저도 일단 새벽에 긴급으로 노드 2대 세팅하고 밸리데이터키 만들고 디파짓 했습니다.
노드구성 참고사항.
현재 구글에서 검색으로 나오는 hoodi 테스트넷 구성 매뉴얼은
https://www.coincashew.com/coins/overview-eth/testnet-hoodi/overview-manual-installation 인데
( 전 스테이킹 시작할때 dappnode로 스테이킹을 했었는데 클라이언트 업데이트가 너무 늦어서 )
요즘엔 eth docker를 테스트에 주로 사용합니다. https://ethdocker.com/Usage/QuickStart
우분투에 설치후 config 설정에서 맨 마지막 커스텀 지정후
https://github.com/eth-clients/hoodi/tree/main/metadata 주소 넣으시면 테스트넷 구성이 가능합니다.
진행하다가 보면 문제가 현재 hoodi 네트워크용 스테이킹 키 만드는 툴이 공식적으로 나와 있지 않아서 소스를 수정해서 빌드해서 키를 만드셔야 합니다.
https://github.com/ethereum/staking-deposit-cli#introduction
https://github.com/ethereum/staking-deposit-cli/pull/435
키를 만드셨으면 런치패드를 이용해서 디파짓을 해야하는데 공식 런치패드가 없어서 이쪽을 이용하시면 됩니다.
https://light-hoodi.beaconcha.in/validators/deposits/submit
디파짓에 필요한 이더는 파우셋을 통하거나. ( https://hoodi-faucet.pk910.de/ )
이전에 해당 주소의 홀스카이 파우셋을 통해 테스트 이더를 받은 이력이 있는 주소에는 1000이더씩 보내져있습니다.
테스트넷 사고 후 복구 후기 및 느낀점
클라이언트 Diversity ( https://clientdiversity.org/ )
이더리움은 최종화에 2 에폭의 처리시간이 필요합니다.
해당 기간동안 전체 클라이언트의 66% 이상의 합의가 없으면 justify나 flinalize가 되지 않는데.
그래서 하나의 클라이언트가 너무 많은 점유율을 가지고 해당 클라이언트에 문제가 발생하면 네트워크에 문제가 발생할 가능성이 매우 높습니다. 이번에 홀스카이 사고를 보니 이후 여파가 너무 엄청나서 깜짝 놀랐습니다.
그래도 Geth나 Prysm의 점유율을 낮추려고 많은 시도를 하고 있는데 그래도 많이 나아졌습니다.
소수 클라이언트를 사용해야 하는 이유로 스테이킹 슬래싱의 패널티 때문이기도 한데요.
슬래싱 패널티는 다음과 같습니다.
지분을 보유한 이더의 1/32(최대 1이더)가 즉시 소각되고 36일 제거 기간이 시작됩니다.
이 제거 기간 동안 검증자의 지분은 점차 감소합니다. 중간 지점(18일차)에서 추가 페널티가 적용되며, 그 규모는 슬래싱 이벤트 이전 36일 동안 모든 슬래싱된 검증자의 지분을 보유한 이더의 총 규모에 따라 조정됩니다. 즉, 더 많은 검증자가 슬래싱되면 슬래시 규모가 커집니다.
최대 슬래시는 모든 슬래싱된 검증자의 전체 유효 잔액입니다(즉, 많은 검증자가 슬래싱되면 전체 지분을 잃을 수 있음)
장애초기에는 확인방법이 없어서 몰랐는데 (가장 많이 쓰는 https://holesky.beaconcha.in/ 는 아직도 복구가 안되었습니다. )
노드 결국엔 복구하고 보니 참혹합니다.
이번 테스트넷 사고 이후 잘못된 체인을 계속 따라가다 결국 현재 강제 퇴장 준비중이고 (두달이나 더 기다려야 합니다)
32이더였던 밸런스는 점점 줄어들어 현재 21이더만 남았습니다 . 하하하 - 테스트 넷이라 다행인데..
그냥 참고하시라고 오랜만에 글 남겨봅니다.
댓글 3
스테이킹의 세계는 역시 어렵네요.
이번 사고는 저한테는 역대급 사고이면서 많은 생각을 하게 해주더라구요.
이더가 사고를 통해 얻은 교훈으로 한걸음 더 나아갔으면 합니다.
https://etherworld.co/2025/03/03/aftermath-of-holesky-testnet-incident-lessons-learned/
정말 힘든 경험을 하셨네요. 아이들과의 여행 중에 테스트 노드에 문제가 생겨서 복구하느라 고생하신 이야기를 들으니 안타깝습니다. 특히 오래된 장비로 테스트넷을 돌리시는 상황에서 네트워크 분할과 같은 심각한 문제가 발생했을 때 겪으셨을 어려움이 느껴집니다.
말씀하신 사고 경과를 초등학생도 이해하기 쉽도록 다시 설명해 드릴게요.
**1. holesky 테스트넷에서 펙트라 업그레이드 발동:**
* **쉬운 설명:** 이더리움 "실험실"에서 새로운 기능을 시험해 보려고 했는데, 갑자기 문제가 생겼어요.
**2. 네트워크 분할:**
* **쉬운 설명:**
* 마을에 두 개의 길이 있는데, 한 길은 잘못된 표지판 때문에 엉뚱한 곳으로 가고, 다른 길은 올바른 곳으로 가는 상황이 벌어졌어요.
* 몇몇 "길 안내자(실행 클라이언트)"들이 잘못된 표지판을 보고 사람들을 엉뚱한 길로 안내했어요.
* 대부분의 사람들이 잘못된 길을 따라가면서 마을이 엉망이 되었어요.
* **영어:** Network Split, Fork
* **실행 클라이언트 (Execution Client):** 길 안내자
**3. Erigon과 Reth의 올바른 대처:**
* **쉬운 설명:** 똑똑한 "길 안내자(Erigon, Reth)"들은 잘못된 표지판을 무시하고 올바른 길을 알려줬어요.
**4. Geth, Nethermind, Besu의 문제:**
* **쉬운 설명:** 하지만 대부분의 "길 안내자(Geth, Nethermind, Besu)"들이 잘못된 표지판을 따라가면서 더 큰 혼란이 발생했어요.
**5. 무효한 체인을 따르는 대부분의 노드:**
* **쉬운 설명:** 대부분의 사람들이 잘못된 길을 따라가면서 그 길이 진짜 길이라고 믿게 되었어요.
**6. 검증자의 슬래싱 및 강제 퇴출:**
* **쉬운 설명:**
* 잘못된 길을 따라간 사람들은 벌을 받고 마을에서 쫓겨났어요.
* 너무 많은 사람들이 쫓겨나면서 마을을 다시 세우는 데 아주 오랜 시간이 걸리게 되었어요.
* **슬래싱 (Slashing):** 벌칙
* **밸리데이터 (Validator):** 마을을 지키는 사람, 길 안내자
**7. EXIT 큐:**
* **쉬운 설명:** 마을에서 쫓겨난 사람들이 다시 돌아오려면 아주 오랫동안 줄을 서서 기다려야 해요.
이번 사고로 인해 테스트넷이 엉망이 되고, 밸리데이터들이 슬래싱되는 등 심각한 문제가 발생했다는 것을 알 수 있습니다. 특히 EXIT 큐가 꽉 차서 출금 테스트를 하려면 1년 넘게 기다려야 한다는 점이 안타깝습니다.
이러한 경험을 통해 얻은 교훈을 바탕으로 앞으로는 더욱 철저하게 테스트하고 대비하여 이러한 문제가 재발하지 않도록 노력해야 할 것입니다.