Bitcoin and Bitcon Cash
이번 블로그 포스트는 비트코인의 확장에 대한 내용이다. 비트코인의 확장성은 2009년도 백서가 나온 순간부터 시작된 논제이며, 기술적 확장성에 대한 논의를 넘어 탈중앙화의 의미와 비트코인의 철학적 기반까지 동시에 논의되어야 하는 무거운 주제다. 글에 앞서, 필자는 개인적으로 사토시 나카모토가 주장했던 확장 방식이자, 비트코인 캐시가 따르고 있는 큰 블록사이즈를 선호하며, 그 이유와 논리적 주장에 대해 논하고자 한다.
갈등의 시작
2015년 6월 22일, 비트코인 코어 개발팀의 수장이었던 게빈 안드레센 (Gavin Andresen)이 개발자 마이크 헌 (Mike Hearn)과 함께 비트코인 XT라는 소프트웨어 이름으로 블록사이즈를 1MB에서 8MB까지 매년 두배로 증가시키는 방안을 제안했지만, 비트코인 코어 진영은 받아들이지 않는다. 그 후 블록사이즈를 제한 없이 증가할 수 있는 언리미티드 버전과 덜 과격한 방식의 확장 (1MB에서 2MB)을 제안하는 클래식 버전이 나왔지만 모두 선택을 받지 못한다.
이즈음, 게빈은 코어 개발진에서 사임하고, (사실 그의 코어 개발자 계정이 해킹당했다는 의심을 받고 재단에서 코드 권한을 제거하였지만, 해킹되지 않았다는 사실이 밝혀졌음에도 불구하고 재단은 그의 권한은 돌려주지 않았다. 사실상 코어 개발진에서 퇴출당했다고 볼 수 있다). 마이크헌은 '비트코인 실패했다'라는 블로그 글을 마지막으로 코어팀을 나가게 된다. 또한 초기 비트코인의 코드를 담당했던 몇몇 개발자들이 정치다툼에 밀려 새로운 인물들로 대체되면서 비트코인 확장성 대한 갈등은 더욱 심해진다.
결국 2017년 10월 1일, 중국 비트코인 채굴기업 Bitmain의 우지한이 리드하여 비트코인을 하드포크하였고 비트코인 캐시 (Bitcoin Cash)가 탄생한다. 이로써 본격적으로 비트코인 확장성 논쟁에 불이 붙기 시작한다.
블록사이즈에 대한 오해
비트코인 코어 (BTC) 진영은 블록사이즈를 1MB (메가바이트)로 유지하려 한다. BTC 개발자들이 1MB를 원하는 이유는 블록사이즈가 커질수록 네트워크가 중앙화 된다는 믿음 때문이다. 블록사이즈가 커질수록 저장해야 하는 데이터의 양이 많아지고, 일반 컴퓨터에서 수백 기가바이트에 달하는 노드를 운영하기 어려워질 테니, 그 저장비용 (storage cost)을 감당할 수 있는 소수의 사람들로 집중될 것이라는 이론이다. 하지만 이러한 논리는 실증되지 않은 주장일 뿐이고, 비트코인을 제대로 이해하지 못함에서 비롯된 오해다.
노드의 역할
2009년 비트코인이 처음 나왔을 때 유일한 형태의 노드는 채굴노드였다. 채굴노드가 모든 트랜잭션을 저장하고, 해시파워를 투입하여 거래를 검증하고 네트워크를 유지했다. 비트코인 첫 버전이 나왔을 때 채굴노드와 비채굴노드가 나눠있지 않았고, 라이트 클라이언트 (SPV) 노드도 개발되지 않은 상태였다. 당연히 모든 사용자들이 채굴을 해야 했고, 이후 채굴 기능이 옵션으로 바뀌면서 트랜잭션만 저장만 하는 노드로 구분되기 시작했다. 아래 백서에서 언급되는 'nodes'는 채굴노드를 의미한다.
모든 사용자가 노드를 운영해야 했던 역사 때문인지, 산업에서 자리 잡힌 오해 중 하나는 "노드가 많을수록 네트워크가 안전해진다"는 것이다. 노드의 수가 증가할수록 (동반하는 해시파워가 증가할수록) 네트워크 보안이 강력해지는 것은 사실이지만, 그 노드는 철저하게 채굴을 하는 노드만을 의미한다. 단순히 모든 트랜잭션을 원장에 기록하는 노드는 네트워크 보안에 어떠한 영향도 미치지 않는다. 다시 말해 네트워크의 '보안'과 '사용' 이 구분되는 것, 즉 사용자가 노드 운영을 하지 않는 것이 초기부터 사토시가 설계한 비트코인의 미래였다.
비트코인 디자인은 사용자가 사용자로 남게 하는 것이다. 노드를 운영하는 것이 어려워질수록, 더 적은 노드들이 생겨날 것이다. 그 노드들은 거대한 서버공장이 될 거고, 나머지는 (블록을) 생성하지 않고 전송만 하는 클라이언트가 될 것이다. - 사토시 나카모토, 2010
애초에 비트코인의 디자인 자체가 사용자들은 '사용'만, 채굴자들은 '네트워크 유지'만 하도록 설계되었음에도 불구하고, 사람들은 비트코인의 블록사이즈를 올라감에 따라 운영비용이 증가하여 네트워크가 중앙화 된다고 믿는다. 이러한 논리가 성립되려면, 최대한 많은 사용자가 노드를 운영해야 하는데, 만약 이 논리가 맞다고 생각한다면, 스스로에게 질문해보라.
나는 노드를 운영하고 있는가?
분명 아닐 것이다. 1MB 블록을 고수하는 비트코인 코어 (BTC)도 100GB가 넘는 상태에서, 사용자들은 노드를 운영할 어떠한 인센티브도 없다. 트랜잭션 모든 정보를 보기 때문에 노드를 운영하면 어느 누구도 '신뢰'할 필요 없다고 주장하기도 하지만, 그게 무엇이 중요한가? 어차피 거래를 완료하는 것은 채굴자들이다. 단순히 거래내역을 열람하는 것과 나의 송금이 안전한 것과는 연관관계가 없다. 해시파워가 없으면 네트워크에 어떠한 영향도 미칠 수 없다.
ASIC과 채굴농장
사토시는 비트코인 소프트웨어가 나오기 도전인 2008년부터 비트코인 네트워크는 전문화된 하드웨어와 채굴농장들에 의해 유지될 것이라고 예측했다.
처음엔 대부분의 사용자들이 노드를 운영하겠지만, 네트워크가 성장함에 따라 특화된 하드웨어와 서버농장들로 대체될 것이다. - 사토시 나카모토, 2008
채굴 경쟁이 심해지면서 해시파워가 증가하여 일반 데스크톱 컴퓨터로는 채굴이 어려워졌고, 채굴에 최적화된 하드웨어 (ASIC)가 나오는 동시에 비트코인 가격이 올라 규모의 경제가 이루어졌다. 채굴이 '설비투자'가 필요한 산업으로 성장한 것이다. 채굴자들은 투자한 설비로 네트워크를 유지하고 트랜잭션을 검증함으로써 시뇨리지 (seigniorage)와 트랜잭션 수수료를 받는다. ASIC 채굴기와 채굴농장의 등장으로 인한 채굴의 산업화는 초기 설계부터 의도했던 것이었다.
위 그림은 블록체인 네트워크가 시간이 지남에 따라 어떻게 변화하는지를 알려준다. 어떤 사람들은 이러한 변화가 곧 네트워크 중앙화를 의미한다고 주장하지만, 결코 사실이 아니다. POW (작업증명) 기반의 블록체인은 기본적으로 사용자와 채굴자를 구별하고, 채굴자는 서로 견고하게 연결될 인센티브를 가진다. 서로 직접 연결되어야 트랜잭션 수수료를 더 많이 받을 수 있기 때문이다. 따라서 우리가 알고 있던 비트코인은 사실 메쉬 (mesh) 형태가 아니라 완전 그래프 (complete graph) 형태를 띠는 작은 세상 네트워크 (small-world network)를 구현한다. 노드들이 랜덤 하게 연결하는 게 아니라 시간이 지남에 따라 스스로 학습해 블록 전송의 구간을 줄이면서 아주 밀접하게 연결된 거대한 노드가 형성된다.
현재 비트코인 캐시 네트워크에서 채굴자들끼리 트랜잭션을 브로드캐스팅할때 거치는 단계 (hop)는 약 ~d: 1.32이다. 브로드캐스팅이 두 단계를 거치기도 전에 모든 채굴자들이 트랜잭션 정보를 전달받는다는 것을 의미한다. 바로 이 때문에 비트코인 캐시에서는 0-conf Trasaction (제로 컨펌 트랜잭션)이 가능한 것이다. 블록이 생성되기까지 10분을 기다리지 않아도, 트랜잭션은 모든 채굴자들에게 약 2-3초 안에 브로드캐스팅되고, 채굴자들은 100 컨펌이 지나기 전까지 출금을 할 수 없기 때문에 최대한 안전한 트랜잭션만 담으려고 한다.
어느 정도 채굴자들이 완전 그래프 형태를 이루게 되면, 채굴노드의 수가 증가하는 게 의미 없어지는 균형점에 도달하게 된다. 채굴이라는 제로섬 게임에서 기존 플레이어와 시장 진입자 간 선의의 경쟁만 이루어질 뿐이다. 사토시 역시 비트코인 네트워크는 균형점에 도달할 거고 채굴 노드의 수가 꾸준히 증가해야 한다고 생각하지 않았다.
나는 비트코인 (채굴) 노드가 10만 개 이상이 될 거라고 기대하지 않는다. 어느 정도의 균형점 (equilibrium)이 있을 것이고, 그 이상의 노드는 필요 없다. 나머지는 수십만 개의 라이트 클라이언트 (SPV) 일 것이다. - 사토시 나카모토, 2010
(채굴) 균형점에 도달하면, 많은 노드들은 서버공장들로 변할 것이고, 그 서버공장들은 한 두 개의 네트워크 노드를 통해 LAN상에서 나머지 노드들과 연결될 것이다. - 사토시 나카모토, 2010
이러한 채굴업의 산업화가 중요한 이유는 바로 하드웨어와 네트워크 기술의 발전이 비트코인 확장으로 직결되기 때문이다.
무어의 법칙 (Moore's law)과 경제구조 (economic structure)
2008년 처음 비트코인 백서가 처음 나왔을 때 대부분의 암호학자와 컴퓨터 공학자들은 실현이 불가능하다고 말했다. 유일하게 관심을 가지고 사토시와 이메일을 주고받았던 사람들은 할 핀리 (Hal Finney), 게빈 안데르센 (Gavin Andressen), 그리고 마이크 헌 (Mike Hearn)이었다. 할 핀리는 사망했고, 나머지는 정치싸움에 질려 비트코인을 떠났지만, 아이러니하게도 현재 비트코인 코어 진영에서 개발을 하는 아담 백 (Adam Back)이나 그레고리 맥스웰 (Gregory Maxwell)은 오히려 비트코인이 수학적으로 구동될 수 없다고 공개적으로 주장했던 사람들이다.
비트코인 초기 개발자들은 다른 네트워크/하드웨어 기술이 발전함에 따라 비트코인도 선형(Linear) 확장이 될 거라 믿었고, 비트코인에 회의적이었던 개발자들은 수직적(vertical) 확장 방식만 생각했다. 이러한 생각의 차이가 현재 비트코인 코어와 비트코인 캐시로 나누는 극단까지 이룬 것이다.
사토시는 비트코인은 채굴 경제구조와 무어의 법칙에 따라 선형적으로 확장할 수 있다고 믿었다. 무어의 법칙에 따라 데이터 저장비용은 꾸준히 떨어지고, 인터넷/대역폭 속도는 빨라진다. 우리가 너무나도 자연스럽게 사용하고 있는 많은 웹서비스들도 이러한 인터넷의 선형적 기술발전에 의해 가능해진 것이다. 비트코인도 다를 바 없다.
비트코인은 단순히 블록사이즈를 올리는 것 만으로 '지금 당장' 비자와 마스터카드 수준의 트랜잭션을 소화할 수 있다. 현재 1MB 블록사이즈인 비트코인 코어에서 처리할 수 있는 초당 트랜잭션은 3건 수준이지만, 비자나 마스터카드는 평균 2-3000건을 처리한다. 비트코인으로 초당 3000건을 처리하려면, 블록사이즈는 약 1GB가 되어야 하고, 즉 매년 52TB (테라바이트) 정도의 저장공간이 필요하다. 현재 50TB 드라이브는 약 200만 원이다.
만약 비트코인이 초당 평균 3,000건을 처리한다고 하면, 매년 94,608,000,000건의 트랜잭션이 발생한다는 것을 의미한다. 트랜잭션 당 수수료를 10원으로 가정해도 채굴자들이 수수료로만 가져가는 수익이 약 9500억 원인 것이다. 만약 전체 채굴자들이 부담해야 하는 비용 (저장/대역폭/인터넷/전기세 등)이 트랜잭션 수수료 9500억 원 + 블록 리워드보다 높다면, 비트코인 네트워크는 이론적으로 붕괴할 것이고, 낮다면 비트코인은 유지된다.
즉 노드 운영비용이 증가하면 노드 수가 줄어들고, 중앙화 된다는 주장은 애초에 성립될 수 없는 논리다. 노드 운영비용이 얼마나 증가하던, 채굴자들은 수익을 낼 수 있으면 무조건 그 비용을 부담한다. 바로 이 경제구조가 비트코인 네트워크를 유지하는 근간이다.
애초부터 확장(scalability)과 탈중앙화(decentralization)는 트레이드오프가 아니었다. 비트코인은 처음 시작부터 선형적인 확장과 경제구조를 통한 탈중앙화를 하도록 설계되었다. 매번 특정 채굴 풀 (Mining pool)이 51%에 도달하려고 하면, 바로 분산되는 것도 바로 이 이유다. 비트코인 네트워크의 유지를 통한 이득이, 붕괴를 통한 이득보다 많기 때문에, 그 어느 채굴 풀도 네트워크를 공격할 수 없다.
Long before the network gets anywhere near as large as that, it would be safe for users to use Simplified Payment Verification (section 8) to check for double spending, which only requires having the chain of block headers, or about 12KB per day.
Only people trying to create new coins would need to run network nodes. At first, most users would run network nodes, but as the network grows beyond a certain point, it would be left more and more to specialists with server farms of specialized hardware. A server farm would only need to have one node on the network and the rest of the LAN connects with that one node.
The bandwidth might not be as prohibitive as you think. A typical transaction would be about 400 bytes (ECC is nicely compact). Each transaction has to be broadcast twice, so lets say 1KB per transaction.
Visa processed 37 billion transactions in FY2008, or an average of 100 million transactions per day. That many transactions would take 100GB of bandwidth, or thesize of 12 DVD or 2 HD quality movies, or about $18 worth of bandwidth at current prices. If the network were to get that big, it would take several years, and by then, sending 2 HD movies over the Internet would probably not seem like a big deal.
- Satoshi Nakamoto, 2008
탈중앙성 (Decentralization)
그렇다면 사람들이 그렇게 중요하게 생각하고 앵무새처럼 떠드는 이 탈중앙성은 도대체 무슨 의미일까? 탈중앙화 된 네트워크는 뭐고, 중앙화 된 네트워크는 무엇인가? 어떤 기준으로 그 둘을 나누고, 어떻게 정량화할 것인가? 노드 수가 줄어들어 중앙화 된다는 것은 무슨 의미인가?
사람들은 마치 탈중앙화가 블록체인의 목적인 것처럼 중요성을 강조하지만, 탈중앙성은 결코 목적이 될 수 없다. 탈중앙화를 통해 '얻을 수 있는 가치'가 궁극적인 목표이다. 특정 서비스를 탈중앙화한다고 가치가 생겨가는 것이 아니라, 탈중앙화를 수단으로써 사용하여 특정한 가치를 만들어내야 하는 것이다. 그리고 그 가치 중 가장 중요한 것은 검열 저항성 (censorship-resistance)이다.
탈중앙성은 개념적으로는 스펙트럼의 영역이 아니다. 어느 플랫폼이 더 탈중앙화 되었는지 비교하는 건 전혀 중요하지 않고, 과연 누군가가 공격 또는 컨트롤을 통해 네트워크를 중단하거나 검열할 수 있느냐에 대한 문제다. 그간 수많은 학자들이 많은 이론적 공격 가능성을 논했지만, 비트코인은 지난 10년 동안의 단 한 번도 무너진 적이 없다. 이러한 검열 저항성과 보안적 탄력성이 탈중앙화란 수단을 통해 얻어지는 가치이다.
사족이지만, EOS의 21명의 블록 프로듀서 (BP)가 수만 개의 채굴기가 모인 10개의 비트코인 채굴 풀을 보고, 비트코인이 더 중앙화 되었다고 할 수 없는 이유도 바로 이거다. 자유경쟁이 아닌 정치 투표로 BP를 선정했을 때 BP의 수가 몇이든 이들이 트랜잭션을 검열을 할 수 있게 되는 순간 철저하게 중앙화 된 시스템으로 변하게 된다. *실제로 EOS의 BP들은 27개의 주소를 동결하기도 했다.
비트코인과 비트코인 캐시
비트코인은 사토시 나카모토가 쓴 백서에서 설명하는 비트코인이기를 포기했다. 세그윗의 도입으로 서명의 체인 (chain of signatures) 개념을 버렸고, 장점이었던 빠르고 저렴한 P2P 거래보다 가치저장 (store of value)의 수단이라는 새로운 논리로 방어하고 있다. bitcoin.org는 아예 기존의 비트코인 설명을 변경하기까지 했다. (현재 웹사이트는 리브랜딩됬다)
사토시 나카모토가 한 말이 무조건 맞고 신처럼 받들어야 한다는 것은 아니다. 다만 개인적으로 아쉬운 건, 10년의 역사적 증거를 가진 네트워크의 확장 방식을 인위적으로 막고, 구현될지도 모르는, 기존의 디자인과 너무나도 다른 형태의 결제 채널을 도입하려는 시도이다.
사람들이 비트코인이 아닌 다른 코인을 알트코인 (Alternative coin)이라고 부르는 데는 이유가 있다. 비트코인을 '대체'하려는 시도에서 만들어진 코인이기 때문이다. 만약 백서에서 설명하는 비트코인의 확장이 불가능하다면, 왜 대체 코인을 만들지 않고, 그동안 비트코인을 키워온 사토시가 신뢰한 개발자들을 정치적으로 퇴출시키고, 중앙 집중된 권위적 방식으로 기존의 비전을 바꾸려고 하는지 의문이다.
“Bitcoin can already scale much larger than [Visa] with existing hardware for a fraction of the cost. It never really hits a scale ceiling.” - Satoshi Nakamoto, 2009