알트코인 2탄 모네로의 컨센서스 프로토콜에 대해서 알아보는 시간을 가져보자. 알트코인을 지지하는 많은 사람들 중 아마 이더리움 다음으로 강성 지지자들이 많은 코인일 것이다. 상당수의 알트코인은 그 투자자들 조차 한탕 해먹고 나갈 생각을 하는 사람들이 대부분인 것에 비해 진심으로 믿고 있는 사람이 많다는 것은 그만큼 해당 체인의 매력도가 있다는 뜻일 것이다.


모네로(와 그를 위시한 소위 다크 코인이라는 것 들이)가 내세우는 장점은 강력한 프라이버시 보호 기능이다. 데이비드 차우미움에서 부터 이어지는 익명 결제의 수요는 비트코인의 탄생 이전부터 있어왔다. 모네로가 비트코인 대비 가장 강력하다고 프로모트 하는 게 바로 프라이버시 기능이 디폴트로 제공된다는 것이다.


anonymity set 이라고 하는데, 익명성을 보장하려면, 대상 사용자가 평범한 사람들 속에 섞여 있어야 한다는 점이다. 숨어있는 군집의 크기가 크면 클수록 외부 관찰자가 특정하기가 더 어렵다는 것이지. 모네로 지지자들의 눈에 비트코인은 디폴트 전송의 경우 어느 주소에서 어느 주소로 갔는지가 너무 투명하게 보이고 물론 믹싱에 믹싱을 거듭하면 익명성을 점점 더 강화시킬 수 있겠지만, 그런 짓을 유저가 알아서 해야 한다는 것 자체가 큰 허들이며 무엇보다 그런 짓까지 해가면서 숨으려고 하는 사람들의 집단이라는 게 바로 내가 섞이고 싶지 않은 사람들의 집단이라는 게 문제라는 거다. 숨으려면 평범한 사람들과 섞여야지, 숨을려고 발광을 하는 사람들끼리 섞여봐야 범죄자들 끼리 섞이는 효과 밖에 더 있냐는 거지.


일리가 있는 지적이다. 예를 들면 메진저 기본적으로 모든 통신이 e2e로 암호화되는 것과 굳이 비밀대화방을 만들어야만 거기서하는 대화만 암호화가되는 메신저의 차이는 크다. 사실 나는 비트코인을 점점 더 개인지갑에 보관하게 되고, 그것도 코인을 거래소에서 '사서' 옮기는 것이 아니라, 코인의 결제 자체가 보편화되어 다른 사용자에게 얻게 된다면, 그리고 또한 라이트닝 네트워크의 사용이 보편화된다면 특별히 뭔가를 '하지' 않아도 추적하기는 사실상 힘들어질 거라고 생각하는데, 일단은 양보해서 비트코인의 익명성이 그런 세상에서도 크게 강화되지 않는다고 해보자.


하지만 그럼에도 불구하고 모네로의 장기적인 전망은 상당히 어둡다고 보는데 이유는 이것저것 있지만 경제적이거나 인센티브 모델에 대한 이야기를 일단 재껴두고 기술적인 부분에 대해서만 말해보자. 사실 전자는 그럴듯하게 들리긴 하지만 난 그렇게 안될 거 같은데? 네 상상일 뿐이잖아. 라고 하면 사실 할말이 없는데 기술적 한계점은 그 장단점이 팩트로 딱 나오는 부분이기에 논쟁의 여지가 적거든.


모네로의 가장 근본적인 문제는, 스케일 가능하지가 않다는 점이다.


모네로가 전송자를 숨기는 방법은 쉽게 설명하면, 내가 아닌 다른 주소도 같이 from 주소에 적어두고 그 주소의 서명 처럼 보이는 것을 첨부한다는 점이다. 디폴트가 10개인데 서명 크기가 당연히 비트코인 대비 10배가 된다. 10개 중에 어느 게 진짜 보낸 놈인지 모르고 그 10개라는 것도 내 주소가 아니라 진짜 그냥 네트워크에 퍼져 있는 남의 주소를 들고와서 적어두는 거니 익명성은 당연히 향상되는 것이지. 당연히 남의 주소니까 유효한 서명을 할 수 없지만 10개 중의 한놈이 서명한 건 보증할 수 있는 암호학 원리를 사용해서 네트워크의 검증을 통과할 수 있게 된다.


문제는 tx의 크기가 몇배가 된다는 거다. 비트코인이 욕 들어먹는 게 너무 비싸고 느리다는 점인데, 모네로는 몇배가 더 부담이 되는 구조인 것이다. tx 데이터 크기랑 전송 수수료나 전송 속도가 무슨 상관이냐고 물을 수도 있는데, 블록체인에서 속도가 느린단 건 뭐 무슨 코딩을 잘못해서 느린 게 아니라 탈중앙성을 위해 블록 크기를 엄격하게 제한을 하기 때문에 한계가 걸리는 것이라서 tx의 크기가 크다는 것은 전송속도와 수수료 문제가 바로 튀어나오게 된다. 모네로 수수료 비트코인 보다 싸던데? 라고 하는 사람이 있다면, 그거야 모네로 쓰는 사람이 거의 없어서 그런 것이고 비트코인 결제량의 반의 반만 따라와도 결코 스케일 가능하지가 않다.


이를 위해 모네로는 블록의 크기를 하드코딩으로 박아두는 게 아니라, 동적으로 늘어날 수 있게 했는데, 그것은 전혀 해결책이 아니다. 쓰는 사람이 늘어날 때 마다 블록크기를 늘리면 모네로가 진짜 돈으로 사용되는 세상이 오면 현재의 백배, 천배, 만배, 십만배로 쓰이게 될텐데 그때 스몰노드들은 결코 감당할 수 없다. 하루에도 네트워크 트래픽을 다운로드에 몇십 몇백 기가 업로드에 몇십 몇백 기가를 쓰게 될텐데 전세계 트래픽이 전부 모네로 tx 주고 받는데 사용될 것이다.


블록체인은 그 특성상 개인이 노드를 운영할 수 있을 정도의 크기를 유지해야 하기 때문에 블록크기를 엄격하게 제한(간혹 블록이라는 개념이 없는 체인도 있는데 어쨌든 이것도 tx의 갯수가 무한히 늘어나는 것을 막는 장치는 필수적이다)해야 하며 이게 바로 전송속도를 제한하고 수수료를 늘리는 근본적인 이유다. 결국 블록체인의 스케일 이슈는 라이트닝 네트워크 등 레이어 2 솔루션을 통해 해결을 하는 것이 정석인데, 문제는 모네로는 그게 너무 어렵다.


레이어2 솔루션은 블록체인 마다 그 상세구현이 다르긴 한데, 기본적으로 온체인 tx가 투명하게 공개된다는 점에 기반해서 스마트 컨트랙을 어떻게 어떻게 잘 짜서 만든 것이다. 문제는 모네로는 온체인 tx의 많은 부분이 숨겨져 있고 따라서 서로를 믿지 않는 두 주체가 채널을 여는 합의에 이르기가 사실상 불가능하다는 점이다. 아직 구현된 게 없다 수준이 아니라 이론적으로 이러면 가능하지 않을까 하는 것이 제안도 되지 않은 상태지.


게다가 모네로의 스케일 이슈는 심각한 게 하나가 더 있다. 위에서 여러 사람의 주소를 미끼로 사용해서 누가 진짜 보낸 놈인지 모르게 한다고 했는데, 약간 센스가 있는 사람이라면 바로 이런 의문점이 떠올랐을 것이다. 아니 그럼 제 3자가 봤을 때 누가 진짜로 썼는지 구분을 못한다면, 나중에 진짜 쓴 놈이 자기 돈을 한번 더 쓸 수 있나? 혹은 누가 내 돈을 미끼로 쓴 덕에 내가 내 돈 못 쓰게 될 수도 있나? 라는 의문이 떠오를 것이다. 물론 모네로 개발자들이 바보가 아니기 때문에 당연힌 그건 막아놨는데, 어떻게 막아봤을까? 한번 생각해봐. 저 문제를 어떻게 막을 수 있을까?


이렇게 막았다.


10개의 디코이를 쓰고, 그 중에서 진짜 쓴 주소를 뭐 어떻게 변환해서(물론 역변환은 안됨) 그걸 기록해두는 것이다. 나중에 다시 쓸려고 하면 비교해보고 거부하는 것이다. 그걸 킵해두고 있다가 tx를 검증할 때 이전에 나왔던 건가 보자 하고 비교해서 없어야 통과가 되는 거지. 문제는 저걸 지울 수가 없다. 당연히 저걸 프루닝 하면 더블 스팬딩이 가능해진다는 말이므로 영원히 유지해야 한다.


즉, 모네로는. 역사에 비례해서 하드 디스크에 유지해야 하는 데이터의 양이 선형적으로 증가한다.


정리하면 


1. 익명성을 얻기 위해 서명의 크기가 여타의 코인에 비해 몇배 이상으로 큰데

2. tx의 크기는 체인의 탈중앙성을 위해 엄격하게 제한되어야 하므로 스케일 이슈가 심각하고

3. 모든 게 불투명한 특성상 레이어2를 만들기가 (현재까지로서는) 불가능에 가까워 보이며 

4. 심지어 사용자층이 전혀 늘어나지 않더라도 역사에 비례해서 선형적으로 필요 하드디스크의 용량이 늘어난다(비트코인의 경우 과거 역사는 공격적으로 지워도 됨. 사용자 수에 비례하지 과거는 상관없음)