[Ravencoin] 레이븐코인 추가발행사태 정리 -골로 갈뻔한 우리의 까마귀 v1.0

<이제는 말할수 있다> 
레이븐코인 추가발행사태 -골로 갈뻔한 우리의 까마귀


본 글은 레이븐코인 리드개발자 트론블랙의 글(레이븐코인 취약점  -아놔, 뭔일이야 진짜)*을 제 나름대로 각색 및 요약 정리하였습니다. 
https://medium.com/@tronblack/ravencoin-post-vulnerability-fix-fb3a4bd70b7b


※ 레이븐코인 정보와 비하인드 스토리는 "코인논객오공 소통방(t.me/satoshicode)"에서.




□ 사건 배경지식

 ㅇ 레이븐코인의 메커니즘 
    - 이번 결함은 레이븐코인의 콘센서스코드에서 발견됐다. 참고로 컨센서스코드란 모든 노드가 상호동의함으로써 트랜잭션을 받아들이거나 거절하는 특수한 층위의 코드를 말한다. 레이븐코인은 자산 발행 및 관리를 하는 메커니즘을 지난 만큼 비트코인보다 복잡하다. 그 메커니즘은 자산 층(asset later)으로 두 개로 나눠진다. 첫째는 블록에 들어갈 트랜잭션이 대기하는 곳(멤풀)이고, 둘째는 그 블록에 들어가는 곳이며, 이 두번째가 이중지출을 확인 및 차단하는 곳이다. 특히, 레이븐코인의 경우 새로 발행된 자산이 유일무이한 이름을 갖는지, 소각 주소로 500RVN이 전송되는지 등을 확인하는 곳이다.

  ㅇ 결함의 원인
    - 이중지출 등을 확인하는 데 있어 중요한 점은 자산발행으로 이해 RVN이 제대로 소진되는지 여부다. 좀 더 기술적으로 말하면, 중요한 검사 시 조건부 IF구문 밖에서 신규자산(New assets)과 이전자산(Transfer assets) 등 2가지를 포함하는 것으로 코드 변경이 합의됐는데, 문제는 그 2가지 외에 재발행자산(Reissue asstes)이 있다는 점이다. 즉, 중요한 검사 시 재발행자산을 검사 대상에서 빠지므로 재발행자산이 이뤄질 때 RVN이 소진되지 않았다는 것이다. 그런데 이번 결함은 알고보니 자산발행 이후에도 RVN이 소진되지 않는 코드가 입력된 것이었으며, 그 코드는 의도를 갖고 입력된 것으로 보인다.
    - 혹자는 '그러면 왜 그런 코드가 입력되도록 방치했느냐'고 물을 수도 있다. 거기에는 2가지 이유가 있다. 첫째, 그 코드 변경사항은 위험성이 없어보였고 게다가 사용자 정의 오류 메시지 형식으로 위장되어 있었기 때문이다. 둘째, 레이븐코인 핵심 개발진은 더 많은 개발자들이 레이븐코인 프로젝트에 기여하기를 바라기 때문이다. 참고로, 우리는 양질의 개발 지원을 갖고 있지만 대부분은 핵심코드와 무관하다.


□ 사건 개요

  ㅇ 결함 발견
    - CryptoScope팀(https://rvn.cryptoscope.io)은 레이븐코인 관련 모니터링을 하던 중 이상한 점을 발견하고 레이븐코인 핵심 개발진에 온전치못한 방식을 통한 RVN발행에 대해 알렸다. 그 팀은 우리에게 불법적 RVN발행을 보여주는 링크를 보냈고 그것은 사건 파악에 큰 도움이 됐다.

  ㅇ 긴급 코드 수정과 결단
    - CryptoScope팀 정보 덕분에 코드 수정은 바로 완료했으나, RVN홀더에게 악영향을 끼칠수도 있고 취약점을 공표하면 범인이 눈치챌수도 있었기 때문에 코드 저장소에 코드 수정을 올릴수는 없었다.
    - 또다른 검토사항은 이 결함을 해결하기 위한 방식인 소프트포크를 추진하기 위한 방법이었는데, 그것을 하려면 채굴 노드가 새로운 버전으로 업데이트를 해야했고 그 노드는 너무 적지도 너무 많지도 않아야 했다. 너무 적으면 일부 채굴풀이 담합하여 괜한 힘 겨루기를 할수가 있고 너무 많으면 소프트포크가 달성하기 어렵기 때문이다. 결국 소프트포크를 위한 전체 노드 대비 참여 노드 비중을 70%로 정했다.

  ㅇ 비밀 작전 개시
    - 범인 몰래 코드 수정을 반영하기 위해 소소한 코드 변경 건을 미끼로 해서 코드 변경을 요청하되, 그것에 결함을 해소하는 코드 역시 심어놨다. 물론, 이런 방식은 악성코드를 심는 방식과 유사하다.
    - 문제는 레이븐코인 노드는 잘 분산되어있기 때문에 그저 코드 수정된 버전을 채굴 풀에 업데이트하도록 놔두는 것으로는 부족했다. 보통 48%~57%정도가 그나마 알려진 채굴풀이었고 나머지는 알려지지 않는 채굴자들이다. 비록 결함을 해소하려는 좋은 의도임에도 불구하고, 대놓고 채굴노드에게 업데이트하도록 대놓고 독려할수는 없었지만 결국엔 공개적으로 알려야한다고 결정했다. 그와 동시에 거래소들에게도 이 사실을 알리되 그들 재량에 따라 레이븐코인 거래와 입출금이 중단될수 있다는 점도 주지시켰다. 물론, 우리는 레이븐코인 시장을 멈추고 싶지 않았고, 그것이 옳다고 생각하지는 않는다. 다만, 범인이 불법적으로 발행한 엄청난 RVN으로 인해 거래소들 역시 피해를 입을수 있었기 때문이다.
    - 트론 블랙을 포함한 핵심 개발진은 밤잠을 설쳐가며 범인의 돌발행동, 전체 피해의 최소화, 빠른 해결 등을 위해 고민을 거듭했다. 그러던 중 소프트포크를 추진하기 위한 적절한 시점을 골랐고 마침 난이도 조정 주기인 2016블록의 사이클이 막 시작할 시점이었기 때문에, 코드 수정을 위한 채굴 노드의 투표를 개시했고 최대한 투표를 독려했다. 가급적 최소의 사이클 주기에 70%이상의 찬성 투표율을 얻어내야했기에 그것이 달성될때까지 매우 초조해했다.
    - 이제 중요한 점은, 범인이 이 모든 것을 눈치채고 불법 발행에 더욱 박차를 가할수 있다는 점과 또다른 영악한 이들이 이 결함을 눈치채고 범인처럼 재발행자산 기법을 활용해 불법발행에 합류할 수 있다는 점이었다. 그런데 그 우려가 현실이 되었고, 그게 범인인지 또다른 이들인지는 모르지만 추가 불법 발행이 포착됐다.
    - 다행히 짧은 주기만에 코드 수정이 합의 반영되었고 레이븐코인 네트워크의 결함은 일단락되었다.

  ㅇ 특이사항
    - 우리가 이 결함을 늦게 알았거나 소프트포크가 어떤 이유로든 지지부진했다면 범인 및 또다른이들이 이 불법발행에 가세하여 엄청난 인플레이션이 발생하고 레이븐코인 생태계가 무너졌을 것이다. 그것을 막기 위해 그 사태가 발생하기 이전으로 네트워크를 리부팅했을 것이지만 웃긴 것은 무엇을 하든 최선이 아닌 차악이었을 뿐이다.
    - 흥미로운 사실은, 비트코인에도 이와 유사한 일이 2010년과 2018년에 발생했고 이번에 시행한 우리의 작전과 유사한 작전으로 해결했다는 점이다.


□ 사건 수습

  ㅇ 법 집행
    - 이번 사태를 일으킨 범인을 잡고 그에 합당한 처벌을 주기 위해 법 집행 기관에 이 사실을 알렸다. 하지만 우리가 보기에 그 범인이 한 짓은 현재 법과 규제 측면으로 볼때
안타깝게도 패스트푸드에 들어가 냅킨, 케첩, 빨대 등을 훔친 수준에 지나지 않을 것이라는 점이다.
    - 물론 어떤 방식으로는 그 범인에게 어떤 압력을 가해야하지만 문제는 우리는 그 범인이 누구인지 모른다는 점이다.

  ㅇ 정보공개의 범위
    - 우리는 이번 사태에 대해 공개적으로 알리되 세부사항은 공개하지 않기로 했다. 이 사태가 재발행과 관련되어있다는 것과 어떤 법 집행기관에 알렸는지, 정확한 추가발행RVN 수량을 밝히지 않았다.

  ㅇ 해결책 제안
    - 결론적으로 이번 사태를 총 297,902,411.57279207 RVN이 추가 발행됐다. 이것을 바로잡기 위해 4가지 해결책을 제안한다.
     1. 아무 조치도 하지 않는다.
     2. 반감기를 41.375일(59,580블록) 당긴다.
     3. 첫번째 반감기를 82.75일(119,160블록) 당긴다(필자주 : 첫번째 반감기와 두번째 반감기 사이의 기간만 늘어날뿐 두번째 반감기 시점은 변동없음).
     4. 아무 조치도 하지 않되, 총 발행량이 총 공급량(210억개)에 도달하면 공급을 멈추게 한다.

    - 리드개발자 트론블랙은 2번을 선호하지만 다른 제안을 받아들일 용의가 있다. 결정하는 것은 우리 모두의 몫이다.

  ㅇ 앞으로는 
    - 커뮤니티에서 이런일이 발생하지 않도록 제삼자의 코드 감사 등을 후원하는 움직임이 있다고 들었고 우리는 그것을 지지한다.
    - 코드 변경에 따른 코드 취약성은 대부분 실수로 인해 발생하지만 이번 일을 계기로 더욱 관심을 갖는 것은 좋은 변화이며, 알려지지 않은 기여자들로 하여금 더 잘 코드를 확인하는 계획을 세우려고 한다.
    - 참고로 이번 소프트포크 쯤에 놀라울정도로 그 위기의 수준을 감안할때 가격이 놀라울정도로 안정적이었다는 데에 놀랐고 강력한 지지자의 힘을 보여준 것 같다.


※ 레이븐코인 정보와 비하인드 스토리는 "코인논객오공 소통방(t.me/satoshicode)"에서.


법적 고지 : 본 게시글은, 투자를 위한 정보제공을 목적으로 작성되었기에 투자결정은 신중을 기하여 주시기 바라며, 참고자료를 토대로 본인 판단하에 내용을 추가, 편집 등 작성되었기에 본인의 허락없이 복사, 배포, 편집 등을 할 수 없습니다.

댓글 3개:

  1. 정보공유 감사합니다. 많은 도움이 되었습니다.

    답글삭제
  2. 감사합니다. 례이븐샘태계에 한층 더 애정을 갖게 되는 계기가 되었습니다.

    답글삭제
  3. 감사합니다. 례이븐샘태계에 한층 더 애정을 갖게 되는 계기가 되었습니다.

    답글삭제

[Bitcoin] 비트코인의 흥망성쇠(3부작) 1부 "역대 주요이슈 분석" // Bitcoin's Rise & Fall(Trilogy) Part1 v1.5

비트코인의 흥망성쇠 (興亡盛衰) □ 에필로그   ㅇ 분석에 앞서     - 그동안 분석가로서 블록체인과 암호화폐가 지닌 기술 위주의 기본적 분석을 해왔으나, 투자자로서 유의미한 시세변동, 시세에 영향을 끼치는 이슈 등에 대한 분석글 작...