2018/11/22 - [암호화폐 이야기] - 블록체인에서 쓰이는 스마트 컨트랙트란 어떤 기능일까? ETC_01

** 지난 포스팅과 이어집니다. **



스마트 컨트랙트도 만능은 아닙니다. 

다음과 같은 단점도 존재합니다. 




1. 오라클 문제 


이더리움은 오라클 이라는것을 사용합니다 


예를들어 한국과 일본이 축구를 한다 이때 한국과 일본에게 배팅을 할수 있으며 결과를 맞춘사람에게는 그에 해당하는 승리 배당금을 준다 라는 계약이 있다고 가정할경우


한국과 일본중에 누가 이겼는지를 컴퓨터가 어떻게 판단할까요? 하는 문제입니다

물론 사람이라면 누구나 누가 승리했는지 초등학생도 알겠지만 컴퓨터는 아닙니다 

(모라벡의 역설: 사람에게 쉬운 것은 컴퓨터에겐 어렵고 컴퓨터에게 쉬운것은 사람에겐 어렵다.) 


이경우 경기 결과를 외부에서 입력해주는것이 바로 '오라클' 입니다 


하지만 만약 한국이 이겼음에도 일본이 이겼다는 입력값을 넣어준다면 스마트 컨트랙트는 그에따라 일본에 배팅한 사람들에게 승리배당금을 배당해 버릴겁니다. 


이는 구체적으로 '이더리움의 오라클' 이라고 이야기 했지만 계약 내용에 대한 판단을 컴퓨터가 어떻게 할수 있을까에 대한 좀 더 근본적인 물음 입니다. 


만약 태풍이 온다면 과수원에 1억을 배상하는 계약을 스마트 컨트랙트로 만들었는때, 이 태풍의 급은 어느정도 여야 하는지 태풍과 열대성 저기압의 기준은 어떠한지  어디까지 접근해야 태풍이 왔다고 판단할수 있는건지 등등 계약 내용에 대해 컴퓨터가 어디까지 판단할수 있는가, 혹은 컴퓨터가 판단할수 없어서 사람의 외부 입력값을 필요로 한다면 그 사람은 어떻게 믿을수 있는가 등의 문제가 있습니다. 


*오라클 문제는 여러가지 방법적 시도와 개발로 해결하려는 노력들이 진행중입니다. 
(어거, 노시스, 체인링크등등~) 



2. 계약 내용이 처음부터 잘못 설정 되었을수 있다. 


분산 네트워크에 올려진 스마트 컨트랙트는 위조가 불가능하지만 처음부터 잘못된 계약을 설정했을 경우의 이야기는 다릅니다.


이것은 의도적이던 혹은 실수에 의한것이던 치명적인 결과를 나을수 있습니다

만일 5만원짜리를 5천원에 판매하는 실수를 스마트 컨트랙트를 통해 올렸다면 유통사측은 파산에 다다를수 있습니다. 

관리자가 임의로 판단하고 취소할수 있는 시스템이 아니기 때문이죠.


이렇게 잘못 짜여진 스마트 컨트랙트는 치명적인 결과를 나을수 있는데, 이미 그런일이 실제로 일어났었습니다 


보통 'DAO 해킹사태' , '다오 해킹사태'  라고 부르는 너무나도 유명한사건 이며 암호화폐 시장에 큰혼란을 주었고 더불어 이더리움과 이더리움 클래식이 분리되어지게 된 원인이 된 사건 입니다.




다오해킹사태 


기술자가 아닌 우리는 이사건을 최대한 단순하게 이해할 필요가 있습니다.

The DAO 는 좋은 아이디어로 많은 이더리움을 ico로 자금 모집을 했습니다 

그러나 다오의 스마트 컨트랙트에는 결함이 있었고 이 결함을 찾아낸 사람 (해커)는 결함을 이용해 243만 이더리움을 해킹한 사건을 이야기 합니다 


너무나도 많은 이더리움이 해킹을 당했던 이사건으로 인해 제2의 마운틴 곡스 사건이 일어났다며 가격은 폭락을 거듭했습니다 

하지만 해커는 바로 이더리움을 시장에 내다 팔지는 못했는데 그 이유또한 27일후에 인출가능한 환불에 대한 스마트 컨트랙트 때문이었습니다.


27일이 지나면 243만 이더리움은 꼼짝없이 해커의 호주머니로 들어가게 되었고 27일동안 해커에게 가게된 이더리움을 다시 원주인에게 돌려주려는 많은 논의와 방법적 시도가 있었습니다. 

이 과정에도 많은 스토리가 있지만 결과만 말하자면 여러시도는 무산되었고 이더리움 개발진은 결국 최후의 방법으로 하드포크를 통해 강제적으로 코인을 돌려줌으로 이문제를 해결해 버립니다.


하지만 스마트 컨트랙트가 의도한대로 실행되지 않았다고 하여 마치 중앙 관리자가 간섭하듯이 하드포크로 문제를 해결하는것이 타당한가에 대한 비판이 있었습니다.

만약 또 오작동이 일어난다면 그때마다 이렇게 하드포크 할것인가?

이렇게 할것 같으면 서버한대 놓고 중앙화된 시스템을 쓰지 왜 어렵게 탈중앙화를 하느냐

등등의 비판이 많았습니다. 


이사건은 시장이 붕괴될 정도의 막대한 사건이라 도저히 간섭하지 않을수가 없었고 바람직하진 않지만 불가피한 선택이었다고 이야기 하기도 합니다. 

당시엔 뜨거웠던 논쟁이고 아직도 찬/반에 대한 입장은 사람마다 생각이 다릅니다. 


어쨋든 이더리움은 모든 코인을 돌려주었고 뭐가 어떻게 되었든지간에 코인은 돌려받고 문제는 해결되고 해피엔딩으로 끝나는듯 했습니다. 


하지만 원치않은 작동이 있었더라도 계약은 계약이다. 

"code is low (코드가 곧 법)" 라는 명분을 들고 해커에게 이더리움이 모두 들어가는 상태의 체인이 살아있었으니 이것이 바로 이더리움 클래식 입니다. 





이더리움: 다오 해킹 사태로 해커에게 뺏긴 이더리움을 강제로 회수한 버전


이더리움 클래식: 해커에게 뺏긴 이더리움도 그대로 인정한 버전 



* 참고 이더리움도 이더리움 클래식도 해킹 당하지는 않았습니다 

해킹당한것은 The DAO 의 스마트 컨트랙트 입니다 

(우리가 해킹이라 부르는 이 행위는 다오의 스마트 컨트랙트의 빈틈을 악용한것이나 계약의 내용을 바꾸거나 위조에 성공한 행위는 아님 )




다음편

2018/11/24 - [암호화폐 이야기] - 스마트 컨트랙트의 문제점을 해결하려는 보안 감사 ETC_03






+ Recent posts