넥스트 알파

자산과 기술의 다음 흐름을 읽는 전략 노트

  • 2025. 4. 4.

    by. 에셋 빌더

    목차

      2016년, 이더리움 생태계에서는 블록체인 역사상 중요한 전환점으로 회자되는 사건이 하나 발생했다. ‘DAO 해킹 사건’이라 불리는 이 일은 단순한 기술적 문제를 넘어, 탈중앙화와 블록체인의 철학, 그리고 현실적인 운영 방식 사이에 존재하는 갈등을 드러낸 사례로 자주 언급된다. 이 사건은 결과적으로 이더리움 체인을 두 갈래로 나누는 선택으로 이어졌다. 하나는 지금의 이더리움(ETH), 다른 하나는 원래의 체인을 유지하기로 한 이더리움 클래식(ETC)이다. 이 글에서는 DAO라는 프로젝트가 어떤 배경에서 시작되었는지, 해킹은 어떤 원리로 일어났는지, 그리고 왜 이더리움이 ‘롤백’이라는 논쟁적인 결정을 내리게 되었는지를 하나의 흐름으로 살펴보려 한다. 아울러 이 결정이 어떤 철학적 논쟁을 불러왔는지, 그리고 또 다른 체인인 이더리움 클래식의 등장이 어떤 의미를 가졌는지도 함께 다뤄본다.

       

      DAO 해킹사건


      1. DAO 무엇이었나?

      DAO(Decentralized Autonomous Organization), 즉 탈중앙화 자율 조직은 블록체인 기술이 가진 이상적인 방향성을 현실에서 실현해보려는 하나의 실험이었다. 이는 중앙 기관이나 운영자의 개입 없이, 스마트 컨트랙트를 기반으로 스스로 작동하도록 설계된 분산형 펀드이자, 참여자들이 직접 의사결정에 참여하는 구조를 지향한 조직 형태라 할 수 있다.

       

      이더리움이 스마트 컨트랙트를 통해 블록체인에 어떤 혁신을 가져왔는지에 대해서는 [이더리움이 바꾼 블록체인]에서 자세히 다뤘다.

       

      당시 ‘The DAO’라는 프로젝트는 이더리움 생태계에서 상당한 기대를 모았다. 누구나 DAO 토큰을 구매해 참여자가 있었고, 펀드로 어떤 프로젝트에 자금을 투자할지 투표를 통해 결정할 있는 구조였다. 기존의 기업이나 벤처 캐피탈 모델과는 다른, 탈중앙화된 투자 시스템이라는 점에서 주목을 받았다.

       

      ‘The DAO’ 2016 4월에 출시되었으며, 독일의 스타트업인 Slock.it 주도하여 개발한 프로젝트였다. 이더리움 블록체인을 기반으로 하며, 중앙 운영자가 없이 커뮤니티의 투표에 따라 자금이 운영되는 시스템이었다. 초기에는 DAO 토큰을 이더리움으로 구매하면 누구나 투자자가 있었고, 일정 기간 동안 1 5천만 달러어치의 이더리움이 모이면서 당시로서는 사상 최대 규모의 크라우드펀딩을 기록하기도 했다. 이러한 기대감 속에서 The DAO 이더리움 생태계의 '킬러 '으로 간주되었지만, 동시에 복잡한 스마트 컨트랙트 구조와 충분하지 않은 보안 검토로 인해 위험 요소도 함께 내포하고 있었다.

       

      그렇다면 당시 The DAO 실제로 어떤 기능을 제공했을까? 단순한 토큰 거래 플랫폼이라기보다는, 탈중앙화된 벤처 펀드로서 작동하는 구조가 핵심이었다. 사용자는 DAO 애플리케이션에 접속해 이더리움(ETH) 예치하고, DAO 토큰을 받을 있었다. 토큰은 단순한 화폐가 아니라 거버넌스 참여권을 의미했다.

       

      DAO 내부에는 '제안(Proposals)' 시스템이 존재했다. 누구나 프로젝트를 제안할 있었고, DAO 토큰 보유자들은 제안에 대해 투표할 있었다. 제안이 통과되면, 스마트 컨트랙트가 자동으로 해당 프로젝트에 자금을 분배하도록 설계되어 있었고, 이러한 자금 운용은 사람이 직접 개입하지 않고, 미리 작성된 코드에 따라 실행되도록 되어 있었기에 완전한 자동화와 투명성을 추구한 구조였다.

       

      결과적으로 The DAO는 '중앙 관리자 없이 운영되는 투자 조직'이라는 아이디어를 실제로 구현해 본 사례라고 볼 수 있다. 그러나 이런 이상적인 구조는 동시에 기술적 리스크와 새로운 형태의 보안 취약점을 함께 드러내는 계기가 되기도 했다.

       

      [여기서 잠깐] 암호화폐 세계에서 '프로젝트' 무엇인가?

       

      'The DAO'와 같은 프로젝트는 암호화폐 세계에서 단순한 앱이나 기능성 서비스 그 이상을 의미한다. 일반적으로 '프로젝트'라 하면 하나의 기술 또는 토큰을 떠올리기 쉽지만, 크립토 생태계에서는 기술 플랫폼, 토큰 경제, 커뮤니티의 의사결정 방식, 나아가 철학적 방향성까지 모두 포함한 하나의 통합된 생태계로 이해할 수 있다. 특히 DAO 같은 프로젝트는 기술적인 구현뿐 아니라, 스스로 의사결정하고 운영되는 커뮤니티의 구조와 탈중앙화라는 철학적 가치까지 함께 반영하는 경우가 많다. 다시 말해, 블록체인 기반 프로젝트는 단지 기능을 제공하는 시스템이 아니라, 기술(예: 스마트 컨트랙트), 경제 모델(토큰 발행과 분배), 운영 구조(DAO 형태), 가치관(탈중앙화와 투명성) 등이 유기적으로 통합된 형태로 설계되는 경우가 많다. 이런 맥락에서 The DAO는 단순한 애플리케이션이라기보다는, 새로운 형태의 조직 모델을 실험한 전체 프로젝트로 이해하는 것이 더 적절하다. 이 프로젝트는 탈중앙화된 자율 조직의 가능성을 보여준 동시에, 블록체인의 한계와 과제를 함께 드러낸 상징적인 사례라고 할 수 있다.


      2. DAO 해킹의 원인: 스마트 컨트랙트 취약점 완전 분석

      하지만 The DAO의 기반이 되었던 스마트 컨트랙트는 완벽한 구조라고 보기 어려웠다. 스마트 컨트랙트는 결국 사람이 작성한 코드이며, 그 코드에 예상치 못한 오류나 허점이 있다면 이를 악용하는 상황이 발생할 수도 있다.

       

      실제로 2016년 6월, 누군가 DAO의 스마트 컨트랙트에 존재하던 재귀 호출 취약점(Recursive Call Bug)을 이용해 자금을 분리된 하위 DAO로 옮기기 시작했다. 이 방식은 계약 조건을 직접적으로 위반한 것은 아니었지만, 코드의 구조적 허점을 매우 정교하게 활용한 행위였다. 그 결과 약 360만 이더(당시 기준 약 500억 원 상당)가 유출되는 사태로 이어졌다.

       

      여기서 사용된 재귀 호출 취약점은 DAO 스마트 컨트랙트 내부에 존재하던 설계상의 문제 중 하나였다. 이 문제는 컨트랙트가 이더를 전송한 후 잔고를 갱신하는 방식이 아니라, 이더를 전송하기 전에 외부 주소의 컨트랙트가 다시 호출될 수 있도록 허용한 데서 비롯되었다. 이러한 취약점은 DAO 고유의 구조에서 비롯된 것이지만, 원리는 다른 스마트 컨트랙트에도 적용될 있다. 스마트 컨트랙트는 일반적으로 아래와 같은 순서로 작동한다:

       

      1. 사용자가 어떤 동작을 트리거함 (: DAO에서 자금 인출 요청)
      2. 해당 스마트 컨트랙트의 함수가 실행됨
      3. 함수 내부에서 외부 주소(: 사용자의 컨트랙트) 이더를 전송함
      4. 외부 주소에서 콜백 함수가 자동 실행됨 (여기서 재귀 호출이 가능함): 자세한 과정이 궁금하면 아래의 [부록. DAO 재귀 호출 취약점의 흐름] 참고. 
      5. 이후에 잔고 초기화 나머지 처리 실행

       

      문제는 이러한 전송 구조에서 잔고 초기화보다 이더 전송이 먼저 이루어질 경우, 외부 컨트랙트가 호출을 통해 동일한 함수 실행을 반복할 수 있게 된다는 점이다. 이로 인해 컨트랙트 내부의 상태(state)가 아직 갱신되지 않은 시점에서 이더가 여러 차례 인출되는 문제가 발생할 수 있다.

       

      이러한 방식은 단지 DAO에만 국한된 것이 아니며, 스마트 컨트랙트를 설계할 때 종종 간과되기 쉬운 부분으로 지적되어 왔다. 이후 이더리움 개발자 커뮤니티는 이러한 구조적 문제를 줄이기 위해 Checks-Effects-Interactions 패턴을 따를 것을 권고하게 되었다. 즉, 상태 변경(예: 잔고 0 처리)을 먼저 실행한 뒤 외부로 이더를 전송하는 순서를 지켜야 보다 안전하다는 점이 실 사례를 통해 입증된 셈이다.

       

      이번 사건은 단순한 코드 상의 실수로 보기 어려울 만큼 커다란 영향을 끼쳤다. 당시 DAO에 예치된 이더리움은 전체 공급량의 약 15%에 달하는 규모였으며, 그만큼 프로젝트에 대한 신뢰는 물론, 이더리움 생태계 전체의 안정성에 대한 의문을 불러일으키는 계기가 되었다.

       

      DAO 해킹 사건의 시간대별 진행 과정과 추가 기술 정보가 궁금하다면, [이더리움 위키의 정리 문서] 참고해보는 것도 좋다.

       


      3. 이더리움의 선택: 롤백과 하드포크

      해킹 사건 이후, 이더리움 커뮤니티는 깊은 논쟁 속으로 빠져들게 되었다. 이 사건은 단순히 기술적 결함을 둘러싼 문제를 넘어, 블록체인의 철학과 윤리에 관한 다양한 시각이 충돌하는 계기가 되었다. 논의의 핵심은 '버그를 이용한 해커의 행위가 도덕적으로 정당한가'라는 윤리적 질문과, '블록체인 상에서 발생한 결과를 되돌릴 수 있는가'라는 기술적·철학적 물음으로 나뉘었다.

       

      일부 커뮤니티 구성원들은 “코드에 따라 실행된 결과는 존중되어야 한다”고 주장했다. 이 입장은 블록체인 철학에서 자주 인용되는 “Code is Law(코드가 곧 법이다)”라는 원칙과 맞닿아 있다. 이들은 블록체인의 핵심 가치를 불변성과 투명성으로 보았으며, 이미 기록된 결과를 되돌리는 행위는 그 근본을 흔드는 일이라고 여겼다.

       

      반면 또 다른 입장에서는 이번 사건을 단순한 코드 오류나 사용자 실수로 보기는 어렵다고 판단했다. 그들은 이 사건이 이더리움 생태계 전체를 위협하는 비상 상황이라고 보고, 이를 막기 위해 예외적인 조치가 필요하다고 주장했다. 블록체인이 기술만으로 완벽히 자율 운영되기에는 현실의 예외 상황이 존재한다는 점을 강조한 것이다.

       

      결국 이더리움 개발자들과 커뮤니티는 하드포크(hard fork)라는 결정을 내리게 된다. (하드포크에 대한 개념과 역사에 대해서는 [하드포크의 모든 것] 글에서 더 자세히 알아볼 수 있다.)

       

      이 하드포크는 해킹 이전 상태로 블록체인을 되돌리는 방식으로 진행되었으며, 해커가 가져간 이더리움을 무효화한 뒤 피해자들에게 자산을 복원하는 절차였다. 이러한 방식은 흔히 ‘롤백(rollback)’이라고 불리며, 데이터베이스에서 이전 상태로 되돌리는 개념과 유사하게 이해될 수 있다.

       

      다만 블록체인에서 롤백은 매우 예외적인 선택으로 여겨진다. 블록체인은 본래 한 번 기록된 내용을 누구도 수정하거나 삭제할 수 없다는 불변성(immutability)을 핵심 속성으로 하기 때문이다. 

       

      실제 롤백은 특정 블록 번호에서 체인을 분기시키는 방식으로 진행되었다. 이더리움 개발팀은 새로운 체인을 생성하고, 해커가 이동시킨 이더를 보관하고 있는 주소를 동결한 뒤, 그 자산을 피해자에게 다시 분배하는 스마트 컨트랙트를 삽입했다. 이후 이 새 체인을 기준으로 거래가 이어지게 되었고, 기술적으로는 이 조치가 성공적으로 작동했다.

       

      하지만 철학적인 측면에서는 이 결정이 커뮤니티 내부에 깊은 균열을 남겼다. “Code is Law”라는 원칙을 지키고자 했던 구성원들에게 이 조치는 블록체인의 신뢰성과 중립성을 훼손하는 일처럼 보였기 때문이다. 결국 이 결정을 받아들이지 않은 일부 커뮤니티는 원래의 체인을 유지하기로 하였고, 그것이 오늘날 우리가 알고 있는 이더리움 클래식(Ethereum Classic, ETC)으로 이어지게 되었다.


      4. ‘Code is Law’ 철학의 충돌

      “Code is Law”라는 원칙은 DAO 사건 이후에도 블록체인 업계 전반에서 계속해서 등장하는 주요 쟁점 중 하나로 남아 있다. 특히 스마트 컨트랙트를 기반으로 운영되는 다양한 플랫폼에서는 해킹, 오라클 오류, 의도치 않은 실행 결과 등이 발생할 때마다 이 원칙을 고수할 것인지, 아니면 특정 상황에서는 인간의 개입을 허용할 것인지에 대한 논의가 반복되고 있다.

       

      DAO 사건은 이와 같은 철학적 고민을 세상에 던진 계기가 되었다. 기술이 아무리 자동화되었더라도, 사회적 책임이나 윤리적 판단이 여전히 필요할 수 있다는 점에서 이 사건은 블록체인의 미래 방향성에 중요한 질문을 던졌다고 볼 수 있다.

       

      흥미롭게도, 이와 같은 논쟁은 유연성과 확장성을 지향하는 이더리움과 같은 플랫폼에서는 자주 등장하는 반면, 비트코인과 같이 보수적이고 안정성을 중시하는 체계에서는 거의 발생하지 않는다. 비트코인은 코드의 변경을 매우 신중하게 다루며, 하드포크나 롤백과 같은 선택이 역사적으로도 드물게 이루어져 왔다. 이러한 차이는 단지 기술적 설계뿐만 아니라, 각 블록체인이 내세우는 철학의 차이에서 비롯된 것이라고 할 수 있다.

       

      [관련 글] 👉 비트코인 완전 정복: 개념, 작동 방식, 장단점 한눈에 보기

       

      결국 이더리움과 이더리움 클래식의 분기는 단순한 사건 대응 방식의 차이에서 끝나지 않는다. 그것은 블록체인이 어떤 원칙과 가치를 중심에 둘 것인가에 대한, 보다 근본적인 논쟁의 한 장면이었다.

       


      부록 : DAO 재귀 호출 취약점의 흐름

      DAO 해킹은 스마트 컨트랙트의 상태 변경 순서가 잘못 설계되었을 어떤 문제가 발생할 있는지를 보여주는 대표적인 사례이다. 아래는 재귀 호출 취약점이 발생하는 과정을 단계별로 정리한 흐름이다:

       

      1. 공격자가 자신의 컨트랙트를 DAO 등록해 놓는다. 컨트랙트에는 fallback() 함수가 정의되어 있음.
      2. 공격자가 DAO 이더 인출을 요청하는 트랜잭션을 보낸다.
      3. DAO withdraw() 함수가 실행되어, 공격자 컨트랙트로 이더를 전송한다.
      4. 전송 과정에서 공격자의 컨트랙트 fallback() 함수가 자동으로 실행된다.
      5. fallback() 함수 안에서 다시 DAO withdraw() 함수를 호출한다.
      6. DAO 아직 상태(잔고) 업데이트하지 않았기 때문에, 다시 이더를 전송한다.
      7. 과정이 여러 차례 반복되면서, 하나의 요청으로 다수의 인출이 이루어지는 재귀 호출 취약점이 발생한다.

       

      DAO 사건에서 재귀 호출 취약점이 문제가 되었던 핵심적인 이유는, fallback 함수가 단순한 후속 처리 역할에 그치지 않고, DAO 내부의 로직을 다시 실행하는 트리거로 사용되었다는 점에 있다. 외부 컨트랙트에서 발생한 호출이 DAO의 내부 함수 흐름을 반복적으로 유도할 수 있었다는 점에서, 이 구조는 스마트 컨트랙트 설계 시 주의가 필요한 부분임을 보여주는 사례로 해석할 수 있다.

       

      특히 공격 흐름에서의 다섯 번째 단계, 즉 "DAO의 withdraw() 함수를 다시 호출함"이라는 부분은 기술적으로 매우 중요한 지점이었다. 이 시점에서는 아직 상태(state)가 갱신되지 않은 상태였기 때문에, 공격자는 동일한 로직을 반복 호출하여 이더를 여러 번 인출하는 것이 가능했다. 이와 같은 상황은 결과적으로 스마트 컨트랙트 설계상의 순서 문제에서 비롯된 것으로 볼 수 있다.

       

      이러한 문제는 단순한 실수라기보다는 구조적인 맥락에서 발생할 수 있는 취약점으로, 이후 이더리움 커뮤니티에서는 이를 방지하기 위한 방법으로 Checks → Effects → Interactions 패턴을 제안하게 되었다. 즉, 상태 변경(예: 잔고 초기화)을 먼저 수행한 후, 외부와의 상호작용을 나중에 처리하는 순서를 지켜야 보다 안전한 스마트 컨트랙트를 구현할 수 있다는 교훈을 이 사건은 남겼다고 할 수 있다.

       

      블록체인의 기본 구조와 거래 처리 방식이 궁금하다면, [트랜잭션과 UTXO 완벽 이해하기] 참고해보는 것도 좋다.

       


      📌 핵심 요약

      • The DAO 탈중앙화된 투자 펀드였으며, 이더리움 생태계의 실험적 시도였다.
      • 스마트 컨트랙트의 재귀 호출 취약점으로 인해 360 이더가 유출되는 해킹 사건이 발생했다.
      • 사건을 계기로 이더리움은 하드포크/롤백 을 선택했고, 결과 이더리움 클래식이 탄생했다.
      • Code is Law라는 철학은 해킹 이후 블록체인 커뮤니티를 깊게 분열시켰으며, 지금도 중요한 논쟁 주제다.
      • 비트코인은 이러한 논쟁 없이 불변성과 보수적 설계를 고수하고 있다.

       


      자주 묻는 질문 (FAQ)

      Q1. DAO 해킹 사건이란 무엇인가요?

      A. 2016 이더리움 기반 프로젝트 ‘The DAO’에서 스마트 컨트랙트의 취약점을 이용한 해킹 사건으로, 360 이더가 유출되었습니다. 사건은 이더리움 커뮤니티를 분열시키고, 이더리움 클래식의 탄생으로 이어졌습니다.

       

      Q2. 이더리움은 롤백을 선택했나요?

      A. 피해 규모가 커서 커뮤니티 보호를 위해 해킹 이전 상태로 되돌리는 하드포크를 단행했습니다. 이는 논란의 여지가 있었고, 일부는 이를 블록체인 철학에 위배된다고 보았습니다.

       

      Q3. Code is Law 무슨 뜻인가요?

      A. 'Code is Law' 스마트 컨트랙트에서 실행된 결과는 되돌릴 없다는 철학입니다. DAO 사건에서는 원칙을 지켜야 한다는 주장과 예외 상황에서는 개입이 필요하다는 주장이 충돌했습니다.

       

      Q4. 이더리움 클래식과 이더리움의 차이는 무엇인가요?

      A. 이더리움 클래식은 DAO 해킹 사건 이후 롤백을 거부하고 원래 체인을 유지한 프로젝트입니다. 이더리움은 롤백을 통해 자산을 복원한 체인을 따르고 있으며 기술 발전과 생태계 규모에서 앞서 있습니다.

       

      Q5. 비트코인에서도 DAO 같은 해킹이 일어난 적이 있나요?

      A. 비트코인에서는 DAO 같은 복잡한 스마트 컨트랙트가 없어 유사한 구조의 해킹은 없었습니다. 철학적으로도 롤백 같은 개입을 거의 하지 않으며, “불변성 가장 중요하게 여깁니다.