*최초의 DAO였던 The DAO와 The DAO가 해킹당한 일이 있었습니다. 이에 대해 Antonio Madeira가 Crypto Compare에 기고한 글을 번역했습니다. 설명이 필요한 부분은 이해를 돕기 위해 부가적인 설명을 더했고, 글의 맥락상 중요하지 않다고 생각되는 부분은 삭제하였습니다. 미숙한 번역으로 오역이 있을 수 있습니다.
*원문은 아래 링크에서 읽어보실 수 있습니다.
The DAO 사건의 전말을 알아봅시다. 이 글에서는 The DAO가 어떻게, 그리고 왜 만들어졌는지, The DAO가 어떻게 사용되었고, The DAO의 Soft Fork가 어떻게 실패했는지, 왜 모두가 안심했고, Hard Fork가 어떻게 커뮤니티를 분열시키고, Ethereum Classsic이 만들어졌는지에 대해 다루고 있습니다.
The DAO는 암호화폐와 블록체인 프로젝트를 위한 벤처 캐피탈 펀드처럼 운영될 목적으로 만들어졌습니다. Centralized Authority의 부재는 비용을 감소시키는 효과가 있었고, 이론적으로는 투자자들에게 더 많은 권한을 제공했었죠.
2016년 5월 초, 몇몇 Ethereum 커뮤니티의 회원들이 The DAO(첫 번째 DAO로 알려진)의 시작을 발표했습니다. 동시에 이것은 스마트 컨트렉트로 작성되어 Ethereum Blockchain에 빌드되었습니다. 코드는 Slock.it에 의해 오픈소스로 개발되었지만, Ethereum 커뮤니티의 구성원들이 여기에 The DAO라는 이름을 붙여 배포한 것이죠. TheDAO는 ETH를 투자받고 투자한 금액에 따라 1개에서 100개의 DAO token으로 교환해주는 기간을 가졌습니다. 원하는 사람은 누구나 참여할 수 있었고, 이를 통해 12.7ET, 약 1억 5천만 달러의 자금을 투자받았습니다. 이는 역사상 최대 규모의 크라우드 펀드였고, 이후 시간이 지나 ETH의 가격이 상승함에 따라 The DAO가 보유한 ETH의 총액은 2억 5천만 달러가 넘었죠.
The DAO의 스마트 컨트렉트는 매우 복잡했습니다. 많은 기능을 가지고 있기도 했을 뿐 아니라 다른 프로젝트들이 펀딩을 제안할 수 있도록 해야했기 때문인데요, 큐레이터가 자신의 제안을 Whitelist에 올리면 The DAO 투자자는 이들에 제안에 투표를 하게 됩니다. 만일 이중 20% 이상의 투표를 받은 제안의 경우 Whitelist와 계약된 지갑으로 요청된 자금이 입금되는 구죠였죠. 이때 The DAO에 프로젝트를 제안하는 큐레이터들은 무분별한 펀딩 제안을 방지하고, 자동화된 프로세스에서 일부 사람의 감시가 필요한 부분을 예방하기 위해 배치되었습니다. 또한 큐레이터들 대부분은 Ethereum 커뮤니티의 핵심 멤버들이었죠.
The DAO는 투자자들이 마음에 들지 않는 프로젝트의 펀딩이 결정될 경우 투자자들이 DAO token을 환불받을 수 있도록 하기 위해 ‘Split Function’으로 알려진 ‘exit door’을 만들었습니다. 투자자는 exit door을 통해 자신이 The DAO에 투자한 금액을 다시 ETH로 환불받을 수 있었죠. 구체적인 환불과정은 다음과 같습니다. 만약 어떤 투자자가 The DAO에게 환불요청을 한다면, 투자자는 자신의 Child DAO’ 만들고 자신의 Child DAO로 투자한 만큼의 ETH의 송금을 요청합니다. The DAO는 28일 후에 투자자의 제안을 승인합니다.
The DAO의 첫 출범은 순조로웠고, 여러 프로젝트 제안과 이에 대한 투표가 이루어졌지만, 이후 몇 주동안 보안 문제가 제기되었습니다. 이에 대해 커뮤니티는 모라토리엄을 요구했지만, 실행이 되지 않았고 이외에도 신속하게 해결하지 못한 보안 이슈들이 있었습니다.
2016년 6월 18일, Ethereum 커뮤니티의 구성원들은 The DAO에서 많은 자금이 인출되었고, 스마트 컨트렉트의 ETH 잔고가 하락하고 있다는 것을 알아차렸는데요, 당시 약 7000만 달러 상당의 총 360만 ETH가 해커에 의해 유출되었습니다. 공격자는 자신이 보유하고 있는 동일한 DAO token을 사용하여 여러 번 환불을 요청했고, 공격자가 보유한 DAO token보다 많은 양의 ETH가 발행되었습니다.
(이로 인해 약 360만개의 ETH(전체 ETH의 10%)가 해킹당했습니다. 공격자는 Child DAO를 만든 후 환불을 요청하여 The DAO의 ETH를 인출했습니다. 이때 공격자가 보유한 DAO token의 잔액이 업데이트되기 이전에 다시 환불을 요청하여 The DAO로부터 무한한 ETH가 인출되었던 것이죠.) - 번역자 추가
이 공격에서 공격자는 스마트 컨트렉트에서 공격자의 DAO token을 업데이트 하기 이전에 여러번 The DAO에 ETH를 반환하도록 요청할 수 있었습니다. 이것이 가능했던 이유는 2가지가 있었는데요, 첫 번째는 The DAO의 스마트 컨트렉트가 처음 만들어졌을 때, 공격자의 재귀 호출 가능성을 고려하지 않았다는 것과 두 번째는 환불 요청 시 스마트 컨트렉트가 먼저 투자자에게 ETH를 반환한 다음 내부의 토큰 잔고를 업데이트했다는 것입니다.
이 버그는 Ethereum 자체에서 온 것이 아니라 Ethereum 위에 구축된 애플리케이션에서 나온 것임을 이해하는 것이 중요합니다. The DAO의 스마트 컨트렉트에는 여러 버그가 있었고, 재귀 호출 또한 버그 중 하나였습니다. 이 사건을 이해할 수 있는 좋은 방법은 Ethereum과 The DAO의 관계를 네트워크와 애플리케이션에 비유하는 것인데요, 웹 사이트가 작동하지 않았다면, 그것은 네트워크의 문제가 아닌 단순히 애플리케이션의 문제라는 것이죠.
28일 후 공격자의 Child DAO로부터 ETH가 현금화되는 것을 방지하기 위해 투표를 진행한 결과 Soft Fork가 채택되어 도입되기 직전까지 갔습니다. 그러나 도입되기 불과 몇 시간 전에 몇몇 Ethereum 커뮤니티 멤버들이 버그를 발견했고 결국 Ethererum의 Soft Fork는 진행되지 못했습니다.
(Soft Fork에는 또 다른 문제가 있었는데요, 이 방법은 DAO와 Ethereum 네트워크와 해커가 인출한 Ethereum 지갑 사이의 거래를 중단하는 것이었습니다. 이 경우 해커는 인출한 ETH를 사용할 수 없게 되지만, ETH를 도난당한 원래 소유자들도 ETH를 사용할 수 없게 됨을 의미했죠. 그러나 투표에 채택되어 Soft Fork를 몇 시간 앞두고, 버그가 발생한 것이었습니다.) - 번역자 추가
(여기서 Soft Fork란 쉽게 말해 블록체인의 원본을 복사하여 업그레이드 한 후 다시 원본에 붙여넣는 것을 말합니다. Hard Fork와의 차이점은 Hard Fork의 경우 블록체인의 근본적인 규칙을 바꾸는 것으로 기존 블록체인의 노드와 Fork를 통해 업데이트된 블록체인의 노드가 서로 통신하지 못하지만, Soft Fork의 경우에는 블록체인의 부분적인 규칙을 바꾸는 것으로 기존 블록체인의 노드와 업데이트된 블록체인의 노드가 서로 통신할 수 있고, 합의에 따라 다시 하나로 합쳐질 수 있습니다.) - 번역자 추가
Ethereum의 Soft Fork가 취소되고 이보다 더 결정적인 해결책인 Hard Fork가 투표로 채택되었습니다. 이 Hard Fork에서 유일한 업데이트된 사항은 The DAO에서 인출된 모든 ETH를 다시 돌려받는 것이었고, 업데이트된 Ethereum에서 DAO token 홀더는 1ETH에 100 DAO token을 요청할 수 있었습니다. 또한 1ETH를 초과하는 금액으로 100 DAO token을 받은 투자자는 원래 주소와의 차액을 요청할 수 있었죠. 이 제안으로 Ethereum 커뮤니티는 Hard Fork 지지하는 그룹과 지지하지 않는 두 그룹으로 나뉘어 많은 논란을 일으켰습니다. 각 그룹의 주장은 아래와 같습니다.
Anti-Hard Fork Group
Supported-Hard Fork Group
빠른 합의를 위해 Hard Fork는 ETH 홀더들에 의해 투표되었고, 승인되었습니다. 대부분의 사람들(89%)이 Hard Fork에 투표하였으며, 2016년 7월 20일 Ethereum의 192만 번째 블록에서 실행되었고, Hard Fork 이전의 블록체인은 Ethereum Classic이 되어 상장되었습니다.
표면적으로 The DAO 해킹 사건은 Ethereum과 Ethereum Classic이 나눠지게 된 계기이자, 블록체인과 DAO에 대한 대중의 신뢰에 큰 영향을 준 사건이었습니다. 그러나 본문에 적혀있는 것과 같이 이 사건이 시사하는 바는 바로 블록체인 자체의 딜레마였습니다.
Hard Fork를 반대했던 사람들의 주장처럼 블록체인에 한 번 기록된 사실이 커뮤니티의 합의에 따라 바뀌게 되었고, 이것은 블록체인의 고유한 특성 중 하나인 불변성에 반하는 일이었습니다. 이는 결국 블록체인 자체가 탈중앙화의 가능성을 높이는 것일 뿐 탈중앙화를 보장하는 것이 아니라는 것과 커뮤니티의 합의로 모든 것이 가능하다는 것을 인정하게 된 것입니다.
이외에도 Soft Fork를 할 것인지, Hard Fork를 할 것인지 결정하는 과정에서 다수의 이익을 위해서는 소수를 희생해도 되는 것인지와 사회적 담론에 관한 이슈도 있었고요, 완전히 신뢰할 수 있는 시스템이라는 슬로건에 대한 의구심도 계속해서 제기되고 있는 것 같고요. 그렇다면 Web 3.0도 가능성일 뿐일까요.