2016.06.22

블록체인 투자자, 수백만 달러 손실··· '스마트 계약 때문'

Peter Sayer | IDG News Service
스마트 계약 코딩에 관해 잘 모르는 투자자들이 수백만 달러의 손실을 보았다.


이미지 출처 : Peter Sayer/IDG News Service

투자자들이 이더리움(Ethereum) 블록체인 플랫폼으로 개발된 ‘스마트 계약(Smart Contract)’에서 구멍을 놓치면서 암호화된 화폐로 수백만 달러의 손해를 봤을 수도 있다.

이 스마트 계약은 이더리움의 솔리디티(Solidity) 프로그래밍 언어로 작성되어 있으며, 작은 활자는 DAO(The Distributed Autonomous Organization)라는 크라우드 소싱 벤처 기금의 투자, 운영, 출금에 관한 규칙을 명시한 코드였다.

이더리움은 다른 블록체인과 마찬가지로 분산형 공개 원장이나 거래 기록이다. 비트코인(Bitcoin) 원장은 비트코인 거래를 기록하지만 이더리움 블록체인은 이더(Ether)라는 암호화된 화폐의 송금을 기록한다. 한 가지가 더 있다. 이더리움은 스마트 계약을 운영하기 위한 플랫폼이기도 하다. 그 개발사인 이더리움 재단(Ethereum Foundation)은 스마트 계약을 "고장 정지 시간, 검열, 사기 또는 제 3자의 간섭 가능성이 없이 프로그램 한 대로 정확히 실행되는 애플리케이션"이라고 설명하고 있다.

어떤 측면에서는 그것이 사실이기도 하다. DAO의 계약은 의도한 것과는 달랐을지 몰라도 프로그램 된 대로 정확히 실행되었다.

한 영리한 투자자는 해당 계약이 다른 투자자들이 기대한 대로 항상 실행된 것은 아니라는 사실을 발견한 것으로 보인다. 지난 17일, 해당 투자자는 구멍을 이용해 DAO가 이더를 저장하는 곳을 DAO의 ‘차일드(Child)’인 다른 계좌로 변경했다. 계약 조건에 따라 27일의 기간이 지난 후에야 차일드 계좌에서 출금할 수 있다. 하지만 그 이후로는 이론적으로 막을 방법이 없다. 이더리움에서는 코드가 법이다.

‘반복되는 호출 취약성’ 또는 ‘비우기 레이스’라고 알려진 구멍이 여러 이더리움 스마트 계약에서 발견되었으며 1주일 이상 일찍 공개되었다. DAO 개발에 사용된 프레임워크 개발사인 Slock.it는 6월 12일 코드를 패치하고 DAO로 하여금 새 버전을 도입하도록 촉구했다고 밝혔으며, 다른 요소로 인해 DAO에서 구멍을 악용하지 못하도록 했다.

Slock.it의 설립자 스티븐 튜얼은 자사 블로그에서 "오늘날 DAO 기금을 위험에 처하게 하는 문제는 아니다"고 밝혔다.

여기에서 밝혀졌듯이 다른 요소로 DAO를 보호하지 못했다.

구멍을 이용할 때는 투자자가 계약을 통해 현금을 확보할 수 있도록 코드를 반복적으로 호출하는 것도 수반된다. 코드가 처음에는 지급금을 제공하지만 이후 연산에서는 투자자가 사용할 수 있는 기금에서 금액을 인출한다. 따라서 인출 연산이 이뤄지기 전에 코드를 호출한다면 같은 총액을 반복적으로 지출할 수 있다. 이것은 은행 창구 직원에게 계좌의 모든 돈을 요구한 후 현금을 챙기고, 직원이 잔액을 업데이트하기 전에 계속해서 계좌의 모든 돈을 요구하는 것과 유사하다.

이것의 사기 여부는 투자자로서 투자를 일종의 사회적 계약이나 스마트 계약에서 합의한 내용에 맞게 처리하느냐에 따라 달라진다.

사기가 아니라면 일각에서 말하는 것처럼 해킹은 아닐까?

코넬대학교의 부교수인 에민 군 사이러는 DAO의 문제를 분석하는 한 블로그 게시물에서 "해킹이라고 볼 수 있는지도 확실치 않다"고 밝혔다. 이어서 "무엇인가를 해킹이나 버그(Bug), 또는 원하지 않는 동작으로 분류하려면 원하지 않는 동작에 대한 설명이 필요하다. DAO에 대해서는 그런 설명이 없었다. DAO가 이행해야 하는 것에 대한 독립적인 설명은 존재하지 않는다"고 전했다.

이 모든 것들은 자신의 기금이 새어나가는 DAO의 투자자들에게는 좋지 않지만, 이더리움에 실존하는 문제를 제시하고 있다.

현존하는 812만 이더의 1/10 이상이 이 하나의 기금에 투자되었다. 여기서 신뢰가 떨어지면서 이더 전체의 가치가 폭락해 16일에는 이더당 20.51달러였던 것이 20일에는 11.81달러로 감소했다. 이더리움 경제의 장부가치에서 7억 달러가 증발해 버린 것이다.

신뢰를 회복하고 DAO 투자자들이 돈을 되찾을 기회를 제공하고자 이더리움 재단은 기본 규칙을 변경하여 헌법 개정과 마찬가지로 DAO의 기금이 전환된 계정을 동결시키는 것을 제안했다.

이더리움의 공동 설립자 바이탈릭 부테린은 "이 덕분에 토큰(Token) 보유자에게 이더를 회복할 수 있는 능력을 제공하는 등 잠재적인 추가 조치 논의를 위한 충분한 시간을 얻게 될 것이다"고 해당 재단의 블로그에서 밝혔다.

하지만, 재단은 이 해결책을 선뜻 수용하기 어렵다. 비트코인 채굴자들이 변경된 코드를 수용하기로 하려면, 재단에 분산형 시스템을 실행하는 컴퓨터가 있어야 한다. 비트코인 채굴자 대다수가 그렇게 한다면, 이 제안은 효과가 있다.

어떤 의미에서 보면, 이더리움의 설립자들은 어느 쪽을 선택하든 비난을 피할 수 없다. 그들은 DAO의 투자자들의 이익을 숙고하여 계약에 개입하고 제 3자의 개입 없이 스마트 계약은 프로그램 된 대로 정확히 실행된다는 이더리움의 기본 원칙을 약화시킬 수 있다. 아니면 아무 것도 하지 않은 채 가만히 서서 DAO의 몰락으로 나머지 플랫폼에 대한 신뢰도 무너지는 것을 지켜볼 수도 있다.

특히 DAO 투자자들에게는 판결과 배상을 제공하는 하나의 중앙집중화된 규제 당국 없이 분권화된 경제에 정말로 참여하고 싶은지에 대한 테스트가 될 것이다. ciokr@idg.co.kr
 
2016.06.22

블록체인 투자자, 수백만 달러 손실··· '스마트 계약 때문'

Peter Sayer | IDG News Service
스마트 계약 코딩에 관해 잘 모르는 투자자들이 수백만 달러의 손실을 보았다.


이미지 출처 : Peter Sayer/IDG News Service

투자자들이 이더리움(Ethereum) 블록체인 플랫폼으로 개발된 ‘스마트 계약(Smart Contract)’에서 구멍을 놓치면서 암호화된 화폐로 수백만 달러의 손해를 봤을 수도 있다.

이 스마트 계약은 이더리움의 솔리디티(Solidity) 프로그래밍 언어로 작성되어 있으며, 작은 활자는 DAO(The Distributed Autonomous Organization)라는 크라우드 소싱 벤처 기금의 투자, 운영, 출금에 관한 규칙을 명시한 코드였다.

이더리움은 다른 블록체인과 마찬가지로 분산형 공개 원장이나 거래 기록이다. 비트코인(Bitcoin) 원장은 비트코인 거래를 기록하지만 이더리움 블록체인은 이더(Ether)라는 암호화된 화폐의 송금을 기록한다. 한 가지가 더 있다. 이더리움은 스마트 계약을 운영하기 위한 플랫폼이기도 하다. 그 개발사인 이더리움 재단(Ethereum Foundation)은 스마트 계약을 "고장 정지 시간, 검열, 사기 또는 제 3자의 간섭 가능성이 없이 프로그램 한 대로 정확히 실행되는 애플리케이션"이라고 설명하고 있다.

어떤 측면에서는 그것이 사실이기도 하다. DAO의 계약은 의도한 것과는 달랐을지 몰라도 프로그램 된 대로 정확히 실행되었다.

한 영리한 투자자는 해당 계약이 다른 투자자들이 기대한 대로 항상 실행된 것은 아니라는 사실을 발견한 것으로 보인다. 지난 17일, 해당 투자자는 구멍을 이용해 DAO가 이더를 저장하는 곳을 DAO의 ‘차일드(Child)’인 다른 계좌로 변경했다. 계약 조건에 따라 27일의 기간이 지난 후에야 차일드 계좌에서 출금할 수 있다. 하지만 그 이후로는 이론적으로 막을 방법이 없다. 이더리움에서는 코드가 법이다.

‘반복되는 호출 취약성’ 또는 ‘비우기 레이스’라고 알려진 구멍이 여러 이더리움 스마트 계약에서 발견되었으며 1주일 이상 일찍 공개되었다. DAO 개발에 사용된 프레임워크 개발사인 Slock.it는 6월 12일 코드를 패치하고 DAO로 하여금 새 버전을 도입하도록 촉구했다고 밝혔으며, 다른 요소로 인해 DAO에서 구멍을 악용하지 못하도록 했다.

Slock.it의 설립자 스티븐 튜얼은 자사 블로그에서 "오늘날 DAO 기금을 위험에 처하게 하는 문제는 아니다"고 밝혔다.

여기에서 밝혀졌듯이 다른 요소로 DAO를 보호하지 못했다.

구멍을 이용할 때는 투자자가 계약을 통해 현금을 확보할 수 있도록 코드를 반복적으로 호출하는 것도 수반된다. 코드가 처음에는 지급금을 제공하지만 이후 연산에서는 투자자가 사용할 수 있는 기금에서 금액을 인출한다. 따라서 인출 연산이 이뤄지기 전에 코드를 호출한다면 같은 총액을 반복적으로 지출할 수 있다. 이것은 은행 창구 직원에게 계좌의 모든 돈을 요구한 후 현금을 챙기고, 직원이 잔액을 업데이트하기 전에 계속해서 계좌의 모든 돈을 요구하는 것과 유사하다.

이것의 사기 여부는 투자자로서 투자를 일종의 사회적 계약이나 스마트 계약에서 합의한 내용에 맞게 처리하느냐에 따라 달라진다.

사기가 아니라면 일각에서 말하는 것처럼 해킹은 아닐까?

코넬대학교의 부교수인 에민 군 사이러는 DAO의 문제를 분석하는 한 블로그 게시물에서 "해킹이라고 볼 수 있는지도 확실치 않다"고 밝혔다. 이어서 "무엇인가를 해킹이나 버그(Bug), 또는 원하지 않는 동작으로 분류하려면 원하지 않는 동작에 대한 설명이 필요하다. DAO에 대해서는 그런 설명이 없었다. DAO가 이행해야 하는 것에 대한 독립적인 설명은 존재하지 않는다"고 전했다.

이 모든 것들은 자신의 기금이 새어나가는 DAO의 투자자들에게는 좋지 않지만, 이더리움에 실존하는 문제를 제시하고 있다.

현존하는 812만 이더의 1/10 이상이 이 하나의 기금에 투자되었다. 여기서 신뢰가 떨어지면서 이더 전체의 가치가 폭락해 16일에는 이더당 20.51달러였던 것이 20일에는 11.81달러로 감소했다. 이더리움 경제의 장부가치에서 7억 달러가 증발해 버린 것이다.

신뢰를 회복하고 DAO 투자자들이 돈을 되찾을 기회를 제공하고자 이더리움 재단은 기본 규칙을 변경하여 헌법 개정과 마찬가지로 DAO의 기금이 전환된 계정을 동결시키는 것을 제안했다.

이더리움의 공동 설립자 바이탈릭 부테린은 "이 덕분에 토큰(Token) 보유자에게 이더를 회복할 수 있는 능력을 제공하는 등 잠재적인 추가 조치 논의를 위한 충분한 시간을 얻게 될 것이다"고 해당 재단의 블로그에서 밝혔다.

하지만, 재단은 이 해결책을 선뜻 수용하기 어렵다. 비트코인 채굴자들이 변경된 코드를 수용하기로 하려면, 재단에 분산형 시스템을 실행하는 컴퓨터가 있어야 한다. 비트코인 채굴자 대다수가 그렇게 한다면, 이 제안은 효과가 있다.

어떤 의미에서 보면, 이더리움의 설립자들은 어느 쪽을 선택하든 비난을 피할 수 없다. 그들은 DAO의 투자자들의 이익을 숙고하여 계약에 개입하고 제 3자의 개입 없이 스마트 계약은 프로그램 된 대로 정확히 실행된다는 이더리움의 기본 원칙을 약화시킬 수 있다. 아니면 아무 것도 하지 않은 채 가만히 서서 DAO의 몰락으로 나머지 플랫폼에 대한 신뢰도 무너지는 것을 지켜볼 수도 있다.

특히 DAO 투자자들에게는 판결과 배상을 제공하는 하나의 중앙집중화된 규제 당국 없이 분권화된 경제에 정말로 참여하고 싶은지에 대한 테스트가 될 것이다. ciokr@idg.co.kr
 
X