DAO, How it works?
DAO의 완전한 작동을 위해 따라야 할 일련의 규칙이 필요합니다. 이러한 규칙들은 스마트 컨트랙트로 인코딩 되는데, 이는 본질적으로 컴퓨터 프로그램으로서 인터넷 상에 자율적으로 존재하지만, 스스로는 할 수 없는 일을 사람들이 수행해줘야 합니다.
규칙이 정해지고 나면 DAO는 자금 조달 단계로 들어갑니다. 이것은 두 가지 이유로 매우 중요한데 첫째로, DAO는 일종의 내부 재산, 즉 조직에서 지출하거나 조직 내의 특정 활동에 대한 보상으로 사용할 수 있는 토큰이 있어야 하고, 둘째, 사용자는 DAO에 투자함으로써 투표권을 갖게 되며, 이를 통해 그 운영 방식에 영향을 미칠 수 있게 됩니다.
자금조달 기간이 끝나고 DAO가 배치되면 완전 자율화 되며, 그 개발자는 물론 그 밖의 어느 누구로부터도 완전히 독립적이 됩니다. 오픈 소스이므로 그 코드는 누구라도 볼 수 있습니다. 게다가 모든 규칙과 금융 거래는 블록체인에 기록됩니다. 따라서 DAO는 완전히 투명하고 변경 불가능하며 부패될 수도 없습니다.
본질적으로, DAO를 통해 사람들은 자신의 자금을 전 세계의 어느 누구와도 교환할 수 있습니다. 이는 투자, 자선 기부, 모금, 차입 등의 형태로 이루어질 수 있으며, 이 모든 것이 중개자 없이 이루어집니다. 투표 시스템의 중요한 잠재적 문제 중 하나는 초기 코드에 보안 상의 허점이 발견되더라도 과반수가 투표하기 전에는 이를 수정할 수 없다는 점이다. 투표가 이루어지는 동안에도 해커들은 해당 코드의 버그를 악용할 수 있습니다.
현재 설명되는 The DAO 1.0은 코드부실과 보안의식부실, 개발자 역량 부족 등으로 해체되었습니다. 아직까지는 더욱 발전된 형태인 The DAO 2.0이 나오지 않았기 때문에 The DAO1,0을 기반으로 모델을 소개하려합니다.
The DAO?
DAO는 Decentralized Autonomous Organization의 준말로 탈중앙화 자율조직을 뜻합니다. 즉 특정한 중앙집권 주체의 개입 없이 개인들이 모여 자율적으로 제안과 투표등의 의사표시를 통해 다수결로 의결을 하고 이를 통해 운용되는 조직입니다.
“the DAO”는 그러한 DAO의 개념을 실제화 시킨 프로젝트로써, 이더리움 메인 개발자중 한명이였던 Stephan을 주축으로 팀이 이루어져 있습니다. The DAO는 이더리움 블록체인 상에 컨트랙트 코드로 구현되어있으며, 이더와 자체발행 코드인 Dao Token을 화폐로 사용합니다.
The DAO의 구성요소
| Developers (개발자) - The DAO라는 이더리움 블록체인 위의 자율조직 시스템을 설계한 개발자들
The DAO를 개발한 개발자들이 있다. 또한 Stephan Tual을 포함한 이 개발자들을 중심으로 The DAO에 등 록된 Proposal 중 하나인 Slock.it 또한 개발이 될 예정이다. 애초에 이들이 Slock.it 멤버 출신이며, 펀딩을 위한 개념을 확장하는 과정에서 The DAO가 탄생하게 된다.
| Proposal (제안) - The DAO 플랫폼을 통해 진행할 내용들을 제안하는 제도
프리세일에 참여해 토큰을 구입한 토큰 보유자나 Contractor 등이 제안을 하고 투표를 하여 다수결로 결정이 나면, 해당 제안이 실행된다. 여기서 다수결이란 투표에 사용된 토큰의 수를 말하는 것이지 사람의 수를 말하 는 것은 아니다. 이러한 제안의 범위는 굉장히 광범위한데, 신규 프로젝트를 제안하거나, Curator를 교체하거 나, Contractor를 해고하는 등의 다양한 제안과 그의 승인이 가능하다. 또한 각 제안에는 제안을 실행할 때 필요할 이더수량(프로젝트 진행예산)이 표시되며 코드의 형태(smart contract)로 제안이 이루어진다.
| Voting(투표) - 위의 제안들을 실행하거나 실행하지 않도록 결정하는 것이 바로 The DAO Tokenholders(주주들)이 행사하는 투표이다. 일반적으로 투표 결과는 과반수 원칙(=토큰의 수)에 따르며, 최소 토론 및 투표 | 기간은 2주로 설정이 되어있다. 최소 의결정족수는 진행 예산 이 더비율의 20%이며, 예산금액이 커질수록 최소 의결정족수 비율이 늘어나게 된다. (Accepting a Proposal requires a majority decision after a debating period of two weeks minimum, and a participation rate of 20% or higher calculated proportionally to the value of ETH requested in the Proposal.)
| The DAO Tokenholders (주주) - 프리세일에 참여한 대부분의 투자자들이 여기에 속한다. 이들은 자신이 가지고 있는 토큰 수에 따라 투표권을 행사하게 되며, 이를 통해 The DAO플랫폼 자체와 Curator 그리고 하위 의 사업(Proposal)들을 통제하게 된다. 또한 이러한 투표로 투자한 제안들에서 수익이 나오면 이를 배당받게 된다.
| Contractor(계약인) - The DAO에 Proposal들을 직접 제안하기도 하고, 투표결과를 실제로 수행하기도 하 는 그룹이다. Slock.it의 개발자나 Tribike 창업주와 그 직원들이 이러한 역할을 하게 된다. 사실상 이들은 주 주들의 도구로써, 투표결과에 따라야 하고, 성과가 좋지 못하면 투표를 통해 해고당하기도 한다.
| Curators (중재인) - 이들은 코드가 다 할 수 없는 부분들을 매워주는 역할을 한다. 우선 Contractor(계약인)들을 DAO 상에 등록(Whitelist) 하고, ETH를 받을 수 있도록 한다. 또한 주주들이 요청한 사항에 대해, 계약인이 실 제로 맞게 이행을 하였는지 또는 제안된 코드의 내용이 진실한 지 확인한다. 그리고 51% 공격을 통해 나머지 49%의 토큰이 빼앗기는 일이 일어나지 않도록 막는 역할을 한다. 제안을 하거나 다오펀드를 환불받기 위해서 는 등록(whitelist)이 되어 있어야 하고, 중재인들이 사실상 등록과 삭제 권한을 모두 가지고 있기 때문에 막 강한 권한을 가졌다고 볼 수 있다.
The DAO의 투표 현황
다오의 모든 프로젝트들은 투표를 통해 실행여부가 결정되며, 투표 참여자가 적으면 투표건은 무효가 됩니다. 사실상 상당수의 다오의 토큰 보유자가 다오의 미래가치보다는 당장의 시세차익을 위해 투자했기 때문에 투표 참여율이 부진한 것이 사실입니다. 다오에서 이루어진 투표 현황이 공개되었는데 신을 믿습니까? 같은 의미 없는 투표도 있는 반면, 가장 많은 토큰이 행사된 제안은 “다오에 제안을 올릴 때 넣어야 하는 최소 금액을 2이더에서 11이더로 올리자”는 것이였습니다.
꽤 많은 투표가 올라와있지만 정족수를 채운 투표는 전무하다고 합니다. 이렇듯 다오의 장점일 수 있는 투표로 의견을 내는 것이 별 의미가 없음을 알 수 있습니다.
The DAO 의 해킹 -1. 사건발생
2016년 6월 17일 오후 the DAO 프로젝트의 지갑이 해킹되었다는 소문이 흘러나왔고 해당의혹은 전세계로 퍼져나갔습니다. 해당 사건 이후 이더리움은 50% 다오토큰은 75%의 가격 대폭락이 이어졌습니다.
얼마 후 The DAO 프로젝트의 공식 트위터 계정에 다음과 같은 글이 올라왔습니다. 사건 발생 이후 다오토큰이 70%가 넘는 가격 하락이 발생했습니다.
The DAO 의 해킹 -2. 현황파악
1. DAO Token은 'Split'이라는 스마트컨트랙트 기능을 가지고 있다.
2. 'Split'이란 보유한 DAO Token을 일정비율의 Ether로 되돌려 받는 일종의 투자금 반환 시스템이다.
3. 그리고 이 'Split'에는 치명적인 결함이 있었고, 해커들은 이 기능을 공략하여 Ether를 훔쳐갔다.
4. 'Split'의 결함은 투자금 반환요청이후 '일정시간'이 지난뒤에야 잔고가 반환요청 금액만큼 감소한다는 것이다.
5. 해커들은 자신의 투자잔고가 감소하기 전, 이 일정시간동안 투자금에 대한 반환요청을 어마어마한 수로 반복했다. (현재 recursive attack이라 불린다)
6. 은행을 예로들면, 100만원이 잔고로 있는 통장에서 100만원을 인출하는데, 해당 인출금액의 반영이 5분뒤에 이뤄지는 것으로 볼수있다. 해당 5분간 내 잔고는 계속 100만원이 유지되기 때문에 제한시간 내에는 내가 원하는 횟수만큼의 100만원을 인출할 수 있는 것이다.
그런데 현재 해커는 자신이 인출한 금액을 전혀 유용할 수 없다. DAO의 Split으로 인출한 투자금은 DAO의 서브카테고리인 Child-DAO에 보관되는데, 해당 Child-DAO는 약 27일 후에나 인출이 가능하기 때문이다.
이더리움과 DAO입장에서는 일말의 해결시간을 확보한 상황이다.
The DAO 의 해킹 -3. 대응발표
1. 소프트포크 : recursive 버그를 수정하고 해커가 훔쳐간 투자금액을 동결시킨다.
2. 하드포크 : 이더리움 블록체인의 기록을 수정하여 해커의 행위를 전면무효화한다.
*포크(fork)란 : 이더리움 블록체인 시스템 일부를 업데이트/수정하는 것.
이에 The DAO개발자들은 자신의 블로그에서 공식적으로 이번 사고에 대해 대응할 것임을 밝히며 소프트포크와 하드포크 와 같은 해결책을 제시합니다. 여기서 소프트포크는 recursive 버그를 수정하고 해커가 훔쳐간 투자금액을 동결시키는 것이고 하드포크는 이더리움 블록체인의 기록을 수정하여 해커의 행위를 전면무효화하는 것입니다.
하지만 블록체인은 '모두'가 공유하는 시스템으로, 관리자가 원한다고 해서 마음대로 수정할 수 없습니다. 또한, 만약 하드포크를 진행하게 된다면, 블록체인의 최대강점인 탈중앙집권화가 전면적으로 위배되는 것이기 때문에 이더리움 생태계 자체가 무너질 수도 있다는 우려가 제기되고 있다고 합니다.
The DAO 의 해킹 -4. 특수작전 실행
해당상황이 발생하고 4일이 지난 2016년 6월 22일,
The DAO프로젝트의 핵심멤버 중 한명인 트위터에 글이 올라왔습니다.
1. DAO가 안전하게 복구되고 있다. 패닉에 빠지지 마라.
2. 우리는 DAO를 해킹한 해커들에게 역공을 가하고 있다.
3. 720만개의 Ether가 안전하게 보관되었고, 잔여분 확보를 위해 커뮤니티의 도움이 필요하다.
내 돈을 훔쳐간 도둑의 집에 들어가 다시 내 돈을 몰래 훔쳐오는 특수작전인데, 이에 대해서도 현재 의견이 분분합니다. 이유는 역공 해킹을 주도한 화이트 해커들의 정체와 추가적인 해킹발생 가능성의 인지 때문인데, 다오의 관리자는 해킹을 주도한 인물들에 대해 구체적으로 밝히지 않았기에, 되찾아온 Ether가 안전하게 투자자들의 손에 되돌아올지 확신할 수 없습니다. 또한 능력만 있다면 얼마든지 추가적인 해킹이 가능해 보이는 상황은 여전히 투자자들을 불안하게 합니다.
The DAO 의 해킹 -5. 마무리, 비판, 한계점
이번 사건은 스마트컨트랙트 중 'Split'이라는 '일부'이상으로 발생한 사건이기 때문에, 이더리움에 대한 신뢰도가 완전히 무너진 것이 아니라는 평가로 다오토큰의 50%정도를 회복했지만 첫 프로젝트인 The DAO의 “개인 투자자들에게 투자자금 환급 여부”, “블록체인의 가장 큰 특징인 탈중앙, 분권화 유지가능 여부”등의 문제로 현재로서는 프로젝트가 실패했다고 보는 전문가들이 많습니다.
예를 들어, MIT 테크놀로지 리뷰(MIT Technology Review)에서는 대중에게 중요한 재정상의 결정을 맡긴다는 것은 좋지 못한 생각으로서 어떠한 이익도 내지 못할 것이라는 기사가 보도되기도 하였습니다.
저는 더 다오 프로젝트가 역사적인 의미가 있는 실험이라고 생각합니다. 세계 최초로 서로를 알지 못하는 투자자들이 전 세계에서 아무런 제한 없이 참여하여 기업을 공동으로 경영한다는 것은 블록체인의 특성 없이는 불가능했을 일이기 때문입니다. 한계점으로 언급된 것들을 개선하여 후에, 참여민주주의에 기여할 수 있을 만큼 발전했으면 좋겠습니다.
참고
DAO는 무엇인가?
-https://kr.cointelegraph.com/ethereum-for-beginners/what-is-dao
-https://brunch.co.kr/@ashhan/25
-https://m.blog.naver.com/coinblock/220741967358
the DAO 해킹
'동아리, 스터디, 교육 > 블록체인' 카테고리의 다른 글
[20.08.24] 7주차 블록체인 - 블록체인의 허점 보완, 사이드체인(Side Chain) (0) | 2020.08.30 |
---|---|
[20.08.10] 6주차 블록체인 - EVM storage에는 변수가 어떻게 저장될까? (0) | 2020.08.11 |
[20.07.27] 4주차 블록체인 - 토큰 발행 실습 (0) | 2020.08.03 |
[20.07.20] 3주차 블록체인 - 솔리디티(Solidity) (0) | 2020.07.23 |
[20.07.15] 2주차 블록체인 - 외부 소유 어카운트(EOA), 컨트랙트 어카운트(CA) (0) | 2020.07.16 |