크립토노트
![](/images/thumb/5/54/%EB%AA%A8%EB%84%A4%EB%A1%9C_%EA%B8%80%EC%9E%90.png/300px-%EB%AA%A8%EB%84%A4%EB%A1%9C_%EA%B8%80%EC%9E%90.png)
![](/images/thumb/3/3a/%EB%B0%94%EC%9D%B4%ED%8A%B8%EC%BD%94%EC%9D%B8_%EA%B8%80%EC%9E%90.png/300px-%EB%B0%94%EC%9D%B4%ED%8A%B8%EC%BD%94%EC%9D%B8_%EA%B8%80%EC%9E%90.png)
크립토노트(Cryptonote)란 송신자를 식별하지 못하도록 개인 정보 지향 디지털 통화에 사용되는 프로토콜이다. 크립토노트의 첫 번째 버전은 2012년에 등장하여 Tor에 발표되었다. 백서 원본 작성자는 알 수 없으며 니콜라스 반 사베르하겐(Nicolas van Saberhagen)이라는 익명의 이름을 사용했다. 크립토노트 코인 거래의 공개 키는 수신되기 전에 그룹으로 묶여 있기 때문엔 송신자를 식별하는 것을 불가능하게 만든다. 대표적인 크립토노트 코인은 모네로(Monero)와 바이트코인(Bytecon)이 있다.
목차
배경
'비트코인'은 P2P 전자 화폐를 성공적으로 현실화한 사례이다. 전문과들과 대중들은 public transaction과 proof-of-work 방식을 신뢰할 수 있는 모델로 평가했다. 일반 소비자들은 낮은 수수료와 익명성에 이끌리고 있으며, 상인들은 예견이 가능하고 분산화된 화폐 발행을 긍정적으로 생각한다. 비트코인은 전자화폐가 지폐처럼 단순하고 신용카드처럼 편리하다는 사실을 효과적으로 입증했다. 하지만, 비트코인에서는 몇가지 단점이 존재한다. 예를 들어 시스템의 분배는 경직되어 있으며, 모든 네트워크 이용자들이 클라이언트를 업데이트 해야만 새로운 기능이 도입될 수 있다. 단점을 빨리 개선할 수 없다는 점은 비트코인의 확산을 막고있다. 이러한 경우에는 기존의 것을 개선하는 것보다 아예 새로운 프로젝트를 만드는 것이 효율적이라 생각해 비트코인의 주된 단점에 대한 해결책을 제시하고자 나온 것이 크립토노트이다.
특징
- 추적 불가능한 트랜잭션 : 크립토노트는 링 서명이라는 방식을 사용하여 보내는 사람이 누군지 알 수 없도록 숨긴다.
- 연결되지 않은 트랜잭션 : 보내는 사람이 누구인지 몰라도 받는 사람이 누구인지는 알 수 있다. 크립토노트는 트랜잭션마다 한번만 사용하는 주소를 만들어 낸다. 이 주소는 받는 사람의 공개키로 부터 생성된 것으로, 오직 받는 사람만이 자신의 것인지 알 수 있다.
- 이중 사용 방지 : 동일 코인을 두번 사용하지 못하게 하는 이중사용방지는 모든 코인들이 가져야할 가장 중요한 기능이다. 크립트노트는 익명성을 보장하면서도 동일 코인을 두번 사용할 수 없도록 구성되어있다.
- 블록체인 분석 방지 : 크립토노트는 보내는 사람과 받는 사람을 알 수 없다. 그러니 분석 또한 불가능하다. 즉, 진정 완전한 익명성을 제공하는 것이다. 당연히 부자 목록(Rich list)같은 분석장표는 아예 만들 수 없다.
- 평등한 작업증명 : 크립트노트는 작업증명에 크립토나이트라는 해쉬 알고리즘을 사용한다. 이 알고리즘은 ASIC(Application-specific integrated circuit)에 사용하기 어렵게 되어 있다. 그러므로 비트코인처럼 대형 채굴장에서 특수 장비로 채굴하지는 못한다. 그러나, 실제로 평등하지는 않다. CPU 보다는 GPU가 훨씬 빠르기 때문에 다량의 GPU 채굴기를 사용하는 경우가 많다. CPU만으로도 어느정도 속도는 나오니 CPU 채굴도 가능은 하다.
장점
안정적인 통화량 발행
크립토노트 전자 코인의 상한값은 Msupply = 2^54-1 원자단위이다. 이러한 것은 기술적인 제한값이며 "N개의 코인이 충분하다"라는 직관적 방식에서 계산된 것이 아니다. 발행 과정을 안정적으로 유지하기 위하여 블록 리워드에 대해 다음과 같은 공식을 사용한다. BaseReward = (Msupply - A) >> 18 여기에서 A는 이전에 생산된 코인의 양을 의미한다.
수정 가능한 파라미터
난이도
크립토노트에서는 모든 블록마다 난이도를 변경시킨다. 네트워크 해쉬레이트가 급격하게 성장하거나 감소할 때에 대한 반응시간이 낮아질수밖에 없고, constant block rate로 고착된다. 원래의 비트코인 방식에서는 마지막 2016개의 블록간의 목표 기간과 실제 기간을 비교하게 되고, 이를 현재의 난이도에 대한 배수로 적용한다. 이러한 비트코인의 방식에 따르면 난이도가 급증 급락한다는 단점이 있다. 크립트노트의 기본적인 알고리즘은 노드에 의하여 계산된 모든 work를 합치고, 그들이 소비한 시간으로 나누는 것이다. 일의 단위는 각각의 블록의 난이도 값에 상응한다. 하지만 timestamp에서의 부정확성과 비신뢰성 때문에 블록 사이의 정확한 시간 간격을 알아내기는 어렵다. 만약 한 사용자가 timestamp를 미래로 전환한다면 다음의 interval은 감소하거나 심지어 음수가 될 것이다. 이러한 사례가 거의 없을 것으로 생각 되며, 단지 timestamp를 정리하고 초과분을 소거할 것이다.(20퍼센트 정도) 나머지 값들의 범위는 80퍼센트의 상응하는 블록에 대하여 소비한 시간값이다.
사이즈 제한
사용자들은 블록체인을 저장하는 것에 대하여 지불하며, 사이즈에 해당하는 투표 권한을 가진다. 모든 채굴자들은 수익과 지용의 균형 사이에서 절충을 선택해야 하는데, fee와 블록을 만드는 것에 대한 자신만의 'soft-limit'에 대한 균형이다. 또 위조 트랜잭션을 막기 위해서 최대 블록 사이즈에 대한 핵심 규칙을 필수적이다. 하지만 이러한 값은 수정할 수 있어야 한다. 트랜잭션 사이즈는 명시적으로 제한될 필요가 없다. 블록의 사이즈에 따라 달라지며, 만약 누군가가 수백개의 인풋/아웃풋을 이용하여 거대한 트랜잭션을 보내고자 한다면 충분한 수수료를 지불함으로써 트랜잭션을 진행할 수 있다.
사이즈 초과 페널티
채굴자는 최대 사이즈 2Mb까지, 블록을 수수료가 없이는 트랜잭션으로 가득 채울 수 있다. 다수의 채굴자들이 중간ㄱ밧을 변화시킬 수 있지만 블록체인이 bloat할 가능성이 있으며, 노드에 추가적인 부하가 걸릴 수 있다. 이러한 규칙은 BikSize가 최소 free block 사이즈보다 클 때만 적용된다. free block size는 max(10kb, Mn 110%)에 다다른다. 채굴자들은 '일반적인 사이즈'의 블록을 만들 수 있으며, 전체적인 fee가 패널티를 넘어서면 이러한 usual size보다 클 수도 있다. 하지만 패널티 값은 2차식으로 증가하는 반면 fee는 2차식으로 증가하지 않기 때문에 균헝을 이루게 된다.
트랜잭션 스크립트
크립트노트는 굉장히 최소화된 스크립트 서브시스템을 가지고 있다. 만약 공개키와 통합된 아웃풋 스크립트(output script)가 송신자에게 지나치게 클 경우에, 특별한 아웃풋 타입(output type)을 이용할 수 있다. 송신자가 단지 그것에 대한 해쉬를 공급하는 반면 수신자는 이 데이터를 그의 인풋으로 보내게 될 것이다. 이러한 접은근 비트코인의 'pay-to-hash'와 유사한 방식이다. 새로운 스크립트 명령을 추가하는 대신에, 데이터 구조 수준에서 이러한 케이스를 다룬다.
참고자료
- 〈CryptoNote News〉, 《코인텔레그래프》
- justbear, 〈크립토노트(CryptoNote) 설명〉, 《스팀잇》, 2018-03-12
- 땡글IN, 〈크립트노트 Cryptonote 백서 번역 및 요약입니다. White paper 1/2〉, 《땡글닷컴》, 2017-08-10
같이 보기