[Blockchan A-Z] The DAO 공격

bolee·2022년 12월 14일
0

Blockchan A-Z

목록 보기
32/33

MODULE 3 - SMART CONTRACT INTUITION
06. THE DAO ATTACK

The DAO

The DAO는 최초의 탈중앙화된 자율조직으로 2016년 이더리움을 통해 Vitalik과 다른 사람들이 개발하였다.

핵심 프로토콜은 이더리움이었고, 벤처 투자 조합이라는 목적으로 설립되었다.
창립자들은 The DAO를 통해 이더리움 블록체인 상에 구현할 탈중앙화된 애플리케이션(Dapp) 개발을 지원하고, 블록체인을 통해서 본인들의 프로젝트를 탈중앙화하여 구현하려는 조직들을 도우려고 하였다.

The DAO는 탈중화된 자율조직 즉, DAO이기 때문에 국적이 없는 상태였기 때문에 권한에 대한 문제가 제기될 만했지만 그 문제는 차치하고 넘어갔다.


The DAO 공격

The DAO가 설립되고 활동하던 도중 The DAO는 토큰 판매를 통해서 크라우드 펀딩을 진행했다.
크라우드 펀딩이 끝난 2016년 5월까지 역사상 가장 성공적인 크라우드 펀딩 캠페인 모금액인 총 1억 5천만 달러가 모였다.

사람들은 블록체인에 무언가를 구현한다는 탈중앙화라는 개념과 새로운 형태의 인터넷 그리고 새로운 형태의 세계로 이동한다는 생각을 그저 믿고 있었다.

탈중앙화된 자율조직(DAO)은 전적으로 사람이 아닌 스마트 컨트랙트을 통해 운영되는데, 안타깝게도 The DAO의 코드에는 에러가 있었다.
즉, 이 자율조직에 스마트 컨트랙트에 오류가 있었던 것이다.

이에 따라 The DAO는 2016년 6월에 해킹 공격을 당해 5천만 달러를 잃었다.
여기서 흥미로운 점은 공격자가 실질적으로 아무런 불법도 저지르지 않았다는 것이다.
그들은 단지 코드에서 결함을 발견하고 이를 이용해서 본인들의 계좌로 돈을 빼냈을 뿐이다.

하지만 아무 조치도 취할 수 없었죠
The DAO는 자율조직이기 때문에 자율적으로 정해진 알고리즘과 코드를 따를 뿐이기 때문이다.

그리고 계약서에도 결함이 있었기 때문에 공격자가 계약의 일부로서 이를 유효한 트랜잭션처럼 실행시킬 수 있었다.
이때 계약서는 불변이며 블록체인 상에 존재하기 때문에 수정할 수도 없다.

하지만 여기서 좋은 소식은 The DAO가 코딩된 방식에 따르면 실패 방지 메커니즘이 존재하기 때문에 이번 경우처럼 공격자가 The DAO의 자회사인 다른 계정으로 돈을 옮겼다가 이들을 완전히 가지고 가는 경우가 발생하더라도 자금을 이동시키는 데에 30일가량이 필요하도록 설정되어 있디.
그 시간에 모두가 머리를 맞대 어떤 결정을 내릴지 숙고할 수 있는 것이다.

DAO의 딜레마와 이더리움

DAO의 딜레마

위에 상황과 같은 상황에서 딜레마가 발생한다.
바로 '코드는 법인가?'라는 딜레마이다.

커뮤니티의 한편에서는 DAO에서 코드는 법이기 때문에 이를 아무 말 없이 따를 것이다.

한편에서는 5천만 달러는 너무 많은 돈이고 이는 사람들의 소유라고 할 것이다. 따라서 이들은 블록체인에 하드 포크를 적용하고 규칙을 바꾸자고 주창할 것이다.
즉, 하드 포크를 적용하고 규칙을 바꾸어서 결국에는 계약의 규칙을 바꿀 수 있게 되는 것이며, 기본적으로 계약의 규칙을 파기하고 돈을 회수해서 다시 주인에게 돌려주자는 뜻이다.

이더리움 하드 포크

이런 *딜레마 끝에 하드 포크를 실행한다는 결정이 내려졌으며, Vitalik의 계획 하에 하드 포크로 이루어졌다.

하드 포크라고 해서 항상 분할을 뜻하는 것은 아니지만 이 경우에는 분할이 발생했다.
이는 일부가 이 결정에 만족하지 못했기 때문인데 공격자를 보호하려는 뜻에서가 아니라 이 블록체인 개념의 무결성을 보존하고자 하는 뜻에서 스마트 계약을 존중하는 것이 올바르다고 생각했기 때문이다.

하드 포크 작업에서 이더리움은 이더리움(Ethereum, ETH)과 이더리움 클래식(Ethereum Classic, ETC)으로 분할된다.

하드 포크 된 이더리움에서는 해커의 돈이 다시 The DAO의 손에 돌아가고 사람들에게 잘 분배가 되었으나 이더리움 클래식에서는 해커의 돈이 이더리움 클래식에 남게 되었다.


참고 자료

0개의 댓글