프로토콜 전쟁약 6분수정 2026-09-05Ethereum (ETH)

블록 1,920,000: The DAO 구제와 Ethereum Classic으로 이어진 체인

는 약 1,200만 ETH를 모았고 공격자는 그중 약 360만 ETH를 빼돌렸다. 출금을 막으려던 초기 대응은 2016년 7월 20일의 잔액 변경으로 이어졌다. 이 개입을 적용하지 않은 체인은 Ethereum Classic으로 남았다.

블록 1,920,000: The DAO 구제와 Ethereum Classic으로 이어진 체인

핵심 요약

  • 가 모은 자금은 약 1,200만 ETH였다. 2016년 6월 17일 유출된 약 360만 ETH는 이 자금의 약 3분의 1이었다.
  • 자식 의 출금 제한은 대응 시간을 벌어줬지만, 초기 방안에서는 서비스 거부 취약점이 발견됐다. 는 공격 시작 33일 뒤인 7월 20일 실행됐다.
  • 블록 1,920,000에서 지정된 계정 잔액이 복구 계약으로 옮겨졌다. 이 변경을 적용하지 않은 커뮤니티는 Ethereum Classic을 이어갔고, 분기 전 보유자는 양쪽 체인에 잔액을 갖게 됐다.

사건의 흐름 한눈에 보기

2016-04-30 / 2016-05-28The DAO 모금 진행

토큰 판매로 약 1,200만 ETH를 모으며 종료 시점 가치는 약 1억 5,000만 달러였다.

2016-06-17공격자가 약 360만 ETH를 빼돌리다

자식 생성 대기 기간이 즉각적인 인출을 막는 동안 가 제안됐다.

2016-06-28소프트포크 구현에서 새로운 위험 발견

서비스 거부 취약점 공지는 대안을 검토하는 동안 활성화를 피하도록 권했다.

2016-07-15복구 명세 공개

블록 1,920,000에서 잔액을 옮기고 토큰 100개당 ETH 1개를 반환하는 방안을 제시했다.

2016-07-20상태 변경 실행

포크 체인에서 지정된 계정의 약 1,200만 ETH가 복구 계약으로 옮겨졌다.

2016-07-26ETH와 ETC의 구분을 명시하다

재단은 포크하지 않은 체인의 연속성을 인정하고 거래 재생 위험을 경고했다.

1. 코드로 운영되는 펀드에도 사람이 지키는 문이 있었다

는 2016년 4월 30일부터 5월 28일까지 토큰을 판매해 약 1,200만 ETH를 모았다. 모금 종료 시점의 가치는 약 1억 5,000만 달러였다. Slock.it과 공동창업자들이 개발과 홍보에 참여했고, 투자자는 으로 제안과 지급을 처리하는 벤처 투자 실험에 참여했다.[1]

그러나 코드가 사람의 권한을 없애지는 않았다. 토큰 보유자가 투표하더라도 어떤 제안을 허용 목록에 올려 투표에 부칠지는 큐레이터가 결정했다. SEC의 후속 조사 보고서는 제안의 순서와 시점에도 이들의 재량이 있었다고 기록한다. 코드는 지급을 실행할 수 있지만, 누구에게 지급할 기회를 줄지는 별도의 권한이었다.[1]

위험 경고도 공격보다 먼저 나왔다. SEC 보고서에는 5월의 보안 제안과, 취약점을 해결할 때까지 신규 투자 결정을 멈추자는 6월 3일의 제안이 남아 있다. 아무도 문제를 제기하지 않았던 것이 아니라, 제기된 문제가 해결되기 전에 공격이 시작됐다.[1]

2. 하나의 앱에서 분할 함수가 실패 지점이 되다

6월 17일 공격자는 약 360만 ETH를 자신이 통제하는 주소로 빼돌렸다. SEC는 이를 가 모은 ETH의 약 3분의 1이라고 설명했다.[1]

비탈릭 부테린의 당일 공지는 분할 함수가 실행되는 도중 다시 같은 함수를 호출해, 한 거래에서 여러 차례 이더를 받아내는 을 지적했다. 실패는 의 애플리케이션 로직에 있었다. 이더리움의 암호를 깨거나 합의 규칙을 교체해야 가능한 공격은 아니었다.[2]

자금은 옮겨졌지만 자식 의 생성 대기 기간 때문에 곧바로 외부로 인출할 수는 없었다. 6월 17일 공지는 적어도 약 27일이 더 필요하다고 예상했다. 이 제약은 대응 시간을 줬지만, 최종 포크 시점까지 정확히 4주를 세는 시계는 아니었다.[1][2]

3. 출금을 막는 대응에서도 보안 문제가 드러나다

6월 17일 공지가 처음 제시한 대응은 였다. 특정 계약의 잔액을 줄이는 거래를 거부하는 방안으로, 과거 거래나 블록을 되돌리는 조치와는 명시적으로 구분됐다.[2]

6월 28일 개발자 펠릭스 랑게는 배포된 구현에서 서비스 거부 취약점을 보고했다. 공격자가 예정된 가스 비용을 내지 않고 코드를 실행시켜 채굴을 늦추고 정상 거래를 방해할 수 있었다. 공지는 대안을 검토하는 동안 활성화를 피하도록 권했다.[3]

따라서 구제 방안도 따로 검증해야 했다. 공격자의 출구를 막는 것과 정상적인 네트워크 운영을 지키는 것은 서로 다른 조건이었다. 전자를 위한 조치가 후자를 해칠 수 있었고, 논의는 출금 제한에서 관련 잔액을 명시적으로 재배정하는 방안으로 옮겨갔다.[2][3][4]

4. 잔액 변경을 실행하려면 참여자가 소프트웨어를 선택해야 했다

제프리 윌케의 7월 15일 공지는 명세를 제시했다. 블록 1,920,000에서 목록에 적힌 및 자식 계정의 잔액을 WithdrawDAO로 옮기는 내용이었다. 보유자는 복구 계약에서 토큰 100개를 ETH 1개로 바꿀 수 있었고, 추가 잔액은 별도 절차로 처리됐다.[4]

재단은 이를 혼자 결정할 수 있는 사안으로 설명하지 않았다. 윌케는 커뮤니티 의사를 Geth의 기본 포크 선택에 반영하겠다고 밝혔으며, 이용자는 호환 소프트웨어를 채택하고 어느 상태를 따를지 선택해야 했다. 이전 규칙이 만들어낸 잔액을 예외적인 구제를 위해 바꿀 수 있느냐가 쟁점이었다.[4]

7월 20일 재단은 Dark 와 Whitehat 계약의 약 1,200만 ETH를 복구 계약으로 옮겼다고 발표했다. 포크를 따르는 채굴자의 비중은 약 85%로 추산했다. 이전 대상은 공격자의 360만 ETH만이 아니라 목록에 포함된 계정들이었다.[5]

EIP-779는 이 사건을 나중에 정리한 문서다. 2017년 11월 작성된 이 문서는 새로운 거래 형식이나 EVM 명령어가 아니라 예외적인 상태 변경이었다고 설명한다.[7]

5. 구제 포크의 성공이 다른 체인의 소멸을 뜻하지는 않았다

일부 참여자는 구제 목적의 상태 변경 없이 체인을 계속 운영했다. 7월 26일 재단은 ETH를 포크 체인, ETC를 포크하지 않은 체인을 이어가는 커뮤니티의 노력으로 명시했다. Ethereum Classic의 출발점은 이 연속성에 있다. 두 네트워크는 이전 블록을 공유하면서 이후에는 다른 상태를 받아들였다.[6]

분열은 지갑 문제이기도 했다. 분기 전 이더 보유자는 양쪽 체인에 자산을 가졌고, 같은 서명 거래가 다른 체인에서도 재생될 수 있었다. 재단은 ETC를 새 계정으로 분리하고 자산을 별도 지갑에서 관리하도록 권했다. 불변성 논쟁은 서명 하나가 어느 네트워크의 자산을 움직이느냐는 실무 문제로 이어졌다.[6]

이 사건은 앱 보안과 집단적 구제의 한계를 연결한다. 이더리움 참여자들은 복구에 합의할 수 있었지만 모두에게 같은 선택을 강제할 수는 없었다. ETC는 다른 상태를 보존하며, 거부된 개입을 공유된 과거의 삭제가 아니라 별도 네트워크의 출발점으로 만들었다.[5][6]

이 사건이 남긴 핵심 교훈 (Key Takeaways)

기술 & 아키텍처

앱과 기반 체인은 서로 다른 시스템이다

의 취약점과 대응의 취약점은 계약과 네트워크 대응을 각각 검증해야 함을 보여준다.

시장 & 투자 인사이트

분기는 지갑의 사용법도 바꾼다

분기 전 잔액의 공유와 거래 재생 위험은 ETH·ETC의 의견 차이를 즉각적인 자산 관리 문제로 만들었다.

철학 & 탈중앙화

구제는 다수의 지지를 얻어도 만장일치는 아닐 수 있다

ETH는 지정된 잔액을 복구했고, 반대 참여자들은 상태 변경 없는 체인을 Ethereum Classic으로 이어갔다.

다음 질문으로

이어서 읽을 이야기

같은 주제를 다른 사례와 배경에서 살펴보세요.

출처 및 참고 자료

  1. [1]출처 1: SEC의 The DAO 조사 보고서U.S. Securities and Exchange Commission · 2017-07-25확인 2026-09-05
  2. [2]출처 2: 6월 17일 The DAO 취약점 긴급 공지Ethereum Foundation / Vitalik Buterin · 2016-06-17확인 2026-09-05
  3. [3]출처 3: 소프트포크 대응의 서비스 거부 취약점Ethereum Foundation / Felix Lange · 2016-06-28확인 2026-09-05
  4. [4]출처 4: 7월 15일 포크 명세와 커뮤니티 선택Ethereum Foundation / Jeffrey Wilcke · 2016-07-15확인 2026-09-05
  5. [5]출처 5: 7월 20일 포크 완료와 복구 잔액Ethereum Foundation / Vitalik Buterin · 2016-07-20확인 2026-09-05
  6. [6]출처 6: 포크 이후 ETH·ETC와 거래 재생 주의사항Ethereum Foundation / Vitalik Buterin · 2016-07-26확인 2026-09-05
  7. [7]출처 7: EIP-779: DAO 포크의 사후 명세Ethereum Improvement Proposals / Casey Detrio · 2017-11-26확인 2026-09-05