[최윤선의 크립토리서치] 이더리움 스마트 컨트랙트 보안 위한 퀀트스탬프
[최윤선의 크립토리서치] 이더리움 스마트 컨트랙트 보안 위한 퀀트스탬프
  • 승인 2018-06-20 14:37:51
이 기사를 공유합니다

center
최윤선칼럼니스트
코인마켓캡(Coinmarketcap)에 따르면, 퀀트스탬프(QSP)는 20일 기준 시총 157위로 0.08달러에 거래되고 있다. 24시간 거래량의 97%가 바이낸스와 후오비에서 거래되고 있으며, 각각 88.67%와 9.24%를 차지하고 있다.

퀀트스탬프는 실리콘밸리의 대표적인 스타트업 엑셀러레이터인 와이컴비네이터(Y Combinator)의 투자를 받은 스타트업으로, 한국의 글로벌 블록체인 투자 펀드인 해시드(Hashed)와 홍콩의 블록체인 투자회사인 케네틱 캐피탈(Kenetic Capital) 등의 투자를 받기도 했다.

스마트 컨트랙트(Smart Contract)는 1994년 닉 사보(Nick Szabo)의 논문(Smart Contracts: Building Blocks for Digital Markets)에서 처음 소개한 개념이다. 그는 스마트 컨트랙트를 '디지털 형식의 일련의 약속'으로 정의하면서, 유치권, 채권 등의 계약 조항이 하드웨어 및 소프트웨어에 포함될 수 있다고 했다. 닉 사보는 중개인이 없어도 돈을 투입하면 음료가 나오는 자동판매기를 스마트 컨트랙트의 원시적인 형태로 보기도 했다.

스마트 컨트랙트는 2013년 비탈릭 부테린(Vitalik Buterin)에 의해 이더리움 블록체인에 접목됐고, 블록체인 2.0 시대를 열었다. 현재 스마트 컨트랙트는 ‘블록체인에 저장되고 자동으로 실행되는 프로그래밍 소스코드’로 받아들여지고 있다.

스마트 컨트랙트를 이용하면 특정한 조건을 만족할 때 계약이 자동으로 실행되도록 할 수 있다. 간단한 예로 매월 10일이 되면 회사의 지갑으로부터 직원들의 지갑으로 이더리움이 전송되도록 하는 스마트 컨트랙트를 들 수 있다.

이더리움 스마트 컨트랙트는 솔리디티(Solidity)라는 프로그래밍 언어로 작성된 ‘소스 코드’로, 소스 코드 상의 실수나 오류로 인해 버그가 발생할 수 있다.

런던대학교의 컴퓨터 과학자인 일리아 세르게이(Ilya Sergey)는 올해 초 이더리움 스마트 컨트랙트의 버그 여부를 조사한 논문(Finding The Greedy, Prodigal, and Suicidal Contracts at Scale)을 발표했다. 그는 Maian이라는 도구를 이용해 스마트 컨트랙트에 세 가지 유형의 버그(자금이 잠기는 버그, 자금이 유출되는 버그, 그리고 계약을 삭제할 수 있도록 하는 버그)가 있는지 평가했다. 그는 거의 백만(약 97만898건) 건의 스마트 컨트랙트를 평가했으며, 평가 결과 3만4,200건이 잠재적으로 취약하고 2,365건에 명확히 버그가 있는 것으로 나타났다.

실제로 작년 11월에는 이더리움 지갑인 패리티(Parity)가 ‘버그로 인해’ 잠기는 사건이 발생했다. 이로 인해 약 1억 5,000만 달러에 달하는 자금이 잠기게 되었다. 스마트 컨트랙트는 크게 두 가지로 나누어지는데, 새로 작성할 때마다 배포되는 스마트 컨트랙트와 다시 배포할 필요가 없이 모든 스마트 컨트랙트에서 호출할 수 있는 라이브러리 컨트랙트가 바로 그것이다.

라이브러리 컨트랙트를 이용하면 동일한 소스 코드를 반복해서 배포할 필요가 없기 때문에 가스 비용을 절약할 수 있다는 이점이 있다. 당시 패리티의 라이브러리 컨트랙트에는 두 가지 문제가 있었다. 누구나 패리티 라이브러리 컨트랙트의 소유자를 자신으로 설정할 수 있었고, 그 소유자가 해당 컨트랙트를 삭제할 수 있었다. 안타깝게도 devops199라는 개발자가 우연히 패리티 라이브러리 컨트랙트를 발견하고 자신을 소유주로 설정한 후 삭제했고, 그 결과 해당 라이브러리 컨트랙트에 의존하는 모든 스마트 컨트랙트 지갑을 사용할 수 없게 됐다.

현재 대표적인 이더리움 블록 익스플로러인 이더스캔(Etherscan)에서 검증된 컨트랙트들(Verified Contracts)을 확인할 수 있다. 하지만 검증된 컨트랙트들조차도 버그와 취약성을 가지고 있는 경향이 있는데, 여기서 ‘검증된’이라는 말이 단지 제공되는 소스 코드가 블록체인에 배포된 내용과 일치한다는 것만을 나타내기 때문이다.

이에 이더리움 스마트 컨트랙트에 대한 보안 기준을 세우고 그에 대한 검증을 진행하는 누군가가 필요함을 알 수 있다. 이더리움 기반 토큰들도 스마트 컨트랙트를 이용하여 만들어지기 때문에, 투자자들을 위험에 빠뜨리지 않기 위해서는 토큰 스마트 컨트랙트 검증도 중요하다. 이러한 상황에서 자신의 스마트 컨트랙트를 검증받고자 하는 개발자들의 수요가 늘어났고, 자연스럽게 관련 업체들도 생겨나게 됐다.

그중 하나가 바로 퀀트스탬프이다. 퀀트스탬프는 이더리움 스마트 컨트랙트를 검증하는 자동화된 프로토콜이다. 퀀트스탬프는 크게 두 부분으로 구성돼 있는데, 하나는 스마트 컨트랙트를 감사하는 웹 기반 자동 검증 시스템이고, 다른 하나는 스마트 컨트랙트에 있는 오류를 찾는 사람들에게 보상을 주는 자동 보상 시스템이다.

자동 검증 시스템은 다음과 같은 프로세스로 작동한다. 계약 생성자(Contract Creators)가 퀀트스탬프에 스마트 컨트랙트에 대한 검증을 요청한다. 검증자 노드(Validator nodes)는 보안 검증 엔진(Security Audit Engine)을 이용해 검증한다.

엔진은 검증되지 않은 스마트 컨트랙트를 가져와서 자동으로 보안 취약성 검사를 수행하고 검증 보고서를 만든다. 해당 검증 보고서의 공개 여부는 계약 생성자가 검증 요청 시 설정할 수 있으며, 공개된 검증 보고서는 퀀트스탬프 홈페이지에서 확인할 수 있다.

스마트 컨트랙트의 복잡성에 따라 검사에 소요되는 시간이 길어지므로, 검증자 노드는 사용된 컴퓨팅 자원에 비례하여 보상으로 QSP를 받게 된다. 단, 코드가 올바르게 검사됐음을 확인하는 합의가 3분의 2 이상 이뤄져야 한다.

검증자 노드는 검증을 수행하기 전 QSP를 스테이킹 해두어야 하는데, 이는 검증자 노드가 검증 결과를 위조하거나 버그를 보고하지 않는 등의 악의적인 행위를 할 경우 스테이킹 되어 있는 토큰을 삭감하거나 삭제하기 위함이다.

자동 보상 시스템은 다음과 같은 프로세스로 작동한다. 버그 발견자(Bug finders)가 스마트 컨트랙트 소스 코드의 주요 취약점을 발견한 경우, 퀀트스탬프 검증 스마트 컨트랙트(Quantstamp Validator Smart Contract)를 이용하여 해당 소스 코드를 제출한다. 그러면 검증자 노드가 제출된 소스 코드의 버그 여부를 위와 같은 방식으로 검증하고, 버그가 발견되면 버그 발견자는 현상금(Bounty)으로 QSP를 받는다.

한편, 퀀트스탬프는 현재 베타 버전을 출시한 상태다. 퀀트스탬프 홈페이지에서 회원가입 후, 검토 받고자 하는 이더리움 기반 토큰의 컨트랙트 주소를 입력하면 5분 이내로 결과를 확인할 수 있다.

검토 결과 확인을 위해서는 25QSP를 지불해야 한다. 하지만 베타 버전임을 고려해 나중에 지불 버튼(Or send later)을 클릭해 검토 요청과 결과 확인이 어떤 식으로 진행되는지 알아보기 위한 정도로만 사용해볼 것을 추천한다. 퀀트스탬프 메인넷은 오는 8월에 출시될 예정이다.

- 이 글은 퀀트스탬프 백서를 참고해 작성했습니다.

- 이 글은 정보 제공을 목적으로 하는 단순 참고 자료로서 이에 대해 법적 책임을 지지 않습니다.

- 이 글의 정확성, 유용성 및 완전성을 보증하지 않으며, 진술한 내용을 갱신할 의무를 지지 않습니다.

- 이 글은 권유를 위해 작성된 것이 아니며, 투자 판단 및 발생 가능한 손실에 대한 책임도 투자자에게 있습니다.

※최윤선 프로필

고려대학교 졸업

글로벌경제신문 객원 기자 / 칼럼니스트

CBP(Certified Bitcoin Professional) 자격증 소지

블록체인교육연구소 BERI(Blockchain Education Research Institute)