brunch

You can make anything
by writing

C.S.Lewis

by CURG in Seoul Aug 10. 2018

블록체인의 근본적인 확장성 문제- 1부

On Scaling Decentralized Blockchains

블록체인 기반 암호 화폐의 인기가 증가함에 따라 확장성(Scalability)은 주요 관심사이자 시급한 문제가 되었다. 그러나, 유감스럽게도, 비트코인에는 근본적인 병목이 존재한다. 이러한 병목이 어떻게 P2P 오버레이 네트워크의 높은 처리량과 낮은 지연(latency)을 제한하는지를 분석한다. 나아가 연구 결과로부터 블록 크기나 인터벌(interval)에 해당하는 매개변수를 다시 설정하는 것은 차세대 고(高)부하 블록체인 프로토콜을 위한 첫 번째 단계에 불과하며, 주된 향상은 기술적 접근에서의 근본적인 재고(再考)가 필요함을 보이고자 한다.


본 글은 Kyle Croman, et al. "On Scaling Decentralized Blockchains", 2016에 기반하여 작성되었다.



블록체인의 확산과 함께 확장성에 대한 우려가 제기되었다. 비트코인은 대략적인 간격-즉, 인터벌-으로 블록을 발행하는 자체 조절 시스템이므로, 그 최대 트랜잭션(transaction) 처리량은 최대 블록 크기 나누기 블록 인터벌로 제한된다. 비트코인의 블록 크기가 커지는 추세는 그 시스템이 최대 용량에 도달하는 잠재적 문제를 야기한다.


비트코인에서 트랜잭션을 확인하기까지는 10분 혹은 더 긴 시간이 소요되며, 최대 처리량은 초당 7개의 트랜잭션이다. 대조적으로 Visa에서는 트랜잭션이 수 초 안에 확인되고 초당 평균 2,000개의 트랜잭션을, 때로는 56,000개의 트랜잭션이 처리된다. 이러한 큰 간극은 분명히 존재한다. 따라서 핵심 질문은 다음과 같다.


블록체인이 주류 지불수단의 성능만큼 확장될 수 있는가?
그렇게 되기 위해서는 무엇이 필요한가?


고성능의 분산화된 시스템을 확보하기 위하여, 비트코인과 블록체인의 확장성 문제를 조명하는 두 가지 관점을 제시한다.



매개변수 재설정에 대한 측정법 연구 및 탐구. 오늘날 비트코인 네트워크의 리소스 비용과 성능을 특정 짓는 다양한 메트릭-측정 항목-에 대한 실험적 측정을 제시한다. 보다 나은 확장성을 위한 첫걸음은 블록 사이즈와 블록 인터벌과 같은 주요 시스템 매개변수를 수정하는 것이다. 실험을 통해 매개변수 재설정으로 어느 정도의 이득을 볼 수 있었음을 알 수 있다.


연구 결과는 네트워크의 유효 처리량(effective throughput)에 크게 영향을 받았는데, 이때 X% 유효 처리량이라는 것은 평균 블록 인터벌 간격 내에 블록을 전파하는 노드의 비율(평균 블록 인터벌이라는 시간 단위 안에서, 전체 네트워크상에서 가장 최신 블록을 전파받고 검증하는 노드의 비율)이 X%가 되는 처리량이다. 만일 유효 처리량이 90%라 한다면 해당 대역폭에서 네트워크의 노드 중 10%는 지체된다는 말이며, 잠재적으로 서비스 거부가 발생하여 네트워크의 유효 마이닝 파워가 줄어들 수 있다. 본 논문에 기반하여, 최소한 현재 네트워크에서 90%의 노드가 충분한-유효한- 처리량을 갖출 수 있도록 다음 두 가지 가이드라인을 제시한다.


처리량 제한. 오늘날의 평균 블록 인터벌인 10분을 기준으로 하였을 때, 블록 크기는 4MB를 초과하여서는 안 된다. 이는(4MB 블록 사이즈는) 초당 최대 27개의 트랜잭션 처리량에 해당한다. 


지연 시간 제한. 네트워크의 대역폭을 최대한 활용하기 위해서는 블록 인터벌이 12초보다 작아서는 안 된다.


위 결과에는 오직 가능한 메트릭 중 일부만을 고려했음을 상기하라(다른 메트릭은 정확한 측정에 어려움이 있다). 매개변수 재설정에 대한 본 결과는 일종의 상한선으로 볼 수 있다. 만일 더 많은 메트릭을 고려하면 더욱 엄격한 제한으로 도출될 것이다.



블록체인 확장성을 위한 디자인. 분권화를 유지하면서 유의미한 확장을 이루기 위해서는 근본적인 프로토콜 재설계가 필요하다. 이에 블록체인 확장을 위한 다양한 기술적 접근법을 검토한다. 단지 점진적인 증가만을 고려하는 것이 아니라, 근본적인 아키텍처 재설계 역시 다룬다. 이미 지난 '블록체인의 확장성 문제와 솔루션 소개' 게시글에서 최근의 제안 중 일부를 살펴본 바 있다.



오늘날의 비트코인 확장성을 살펴보기에 앞서 몇 가지 용어를 정의해보자.


최대 처리량. 최대 처리량은 블록체인이 트랜잭션을 확인할 수 있는 최대 속도이다. 오늘날 비트코인의 최대 처리량은 초당 3.3에서 7개 트랜잭션이다. 이 수치는 블록 크기와 블록 인터벌에 의해 제약된다.


지연 시간; 트랜잭션이 확인(confirm)되는데 걸리는 시간이다. 트랜잭션은 블록에 포함됨으로써 확인되었다고 간주되며, 대략 10분에 해당된다. 본 글에서는 비트코인의 지연 시간을 단일 확인에 대해 정의했지만, 지불을 수락하기 전에 6개의 확인이 요구되는 통상의 조언을 따르는 경우도 있다.


부트스트랩 시간; 현재 시스템 상태의 유효성을 검증함에 필요한 히스토리를 다운로드하고 처리하는 데 소요되는 시간이다. 현재(논문 작성 시점) 비트코인에서의 부트스트랩 시간은 히스토리의 크기에 비례하며 대략 4일 정도이다. 이 수치는 아마존(Amazon) EC2의 t2.medium을 기준으로 5개의 평균을 낸 값이다.


트랜잭션 확정-확인-당 비용(이하 CPCT, Cost per Confirmed Transaction). 단일 트랜잭션을 확인하기 위해 전체 비트코인 시스템에서 소모되는 자원의 비용(USD)이다. CPCT는 여러 자원을 포괄하며, 각 자원은 운용 비용(주로 전기세)과 장비 비용으로 구분된다.

마이닝: 마이너들이 작업증명(PoW)을 함에 지출되는 비용. 

트랜잭션 검증: 암호화 검증을 통해 트랜잭션이 유효한지를 연산함에 필요한 비용. 

대역폭: 트랜잭션, 블록, 메타데이터를 전송하고 수신하는 데 소요되는 네트워크 리소스의 비용. 

스토리지: (1) 모든 트랜잭션을 저장하는 비용. 마이너와 풀 노드에서 트랜잭션을 검증함에 필요하다. (2) 블록체인의 히스토리 데이터를 저장하는 비용. 부트스트랩과 새로운 노드가 네트워크에 참여할 때 필요하다.


표 1. 비트코인 비용 분류. 모든 노드에서부터 발생하는 비용 포함.


표 1은 이 다양한 비용에 대한 추정치를 나타낸다. 표에서 확인할 수 있듯이, 주된 비용 소모는 마이닝으로부터 발생한다. 계산에 따르면 최대 처리량에서 확정된 트랜잭션당 소요 비용은 $1.4에서 $2.9이며, 57%가 마이닝을 위한 전기 소모량에 해당한다. 사실상의 비트코인 처리량을 가정하자면 CPCT는 $6.2에 이른다.


비용 추정 방법론에 대해 논하여 보자. 비트코인에서의 트랜잭션당 비용을 측정하기 위해 네트워크 전체에서 소모한 전기와 마이닝 장비에 소요된 비용을 합하는 어림 계산을 수행하였다. AntMiner S5+ 마이닝 하드웨어에 기반하여 추정했으며, 이는 2015년 10월의 통계를 기준으로 줄(Joule, J)당 그리고 달러당 가장 높은 해시 레이트를 제공하는 하드웨어이다. 하드웨어의 유효 수명을 1년으로 가정했으며, 네트워크의 평균 해시 레이트는 2015년 10월을 기준으로 450,000,000 GH/s로 가정하였다. 본 하드웨어의 전력 소비(0.445 W/GH)에 따라 네트워크의 전체 전력 소비는 200 MegaWatt에 달한다. 더하여 KWh당 평균 가격은 $0.1로 어림잡았다.


두 가지의 흥미로운 시나리오가 있다. 첫 번째 시나리오는 비트코인 네트워크가 최대 처리량으로 동작하는 때이며, 즉 초당 3.3-7 트랜잭션을 의미한다. 이 최대 처리량은 비트코인의 1MB 최대 블록 크기와 가변 트랜잭션 크기로 제한된다. 최대 처리량의 하한선은 대략 500바이트 정도인 현재 평균 트랜잭션 크기로부터 추론되지만, 반면 상한선은 비정상적으로 작은(250바이트) 트랜잭션으로부터 추정되는 값을 기반으로 한다. 두 번째 시나리오는 비트코인 네트워크에서의 사실상의 평균 대역폭을 고려하는 것으로, 이는 2015년 10월에 수집된 통계에 기반하여 초당 1.57 트랜잭션으로 작동한다.


표 1은 트랜잭션 유효성 검증, 스토리지, 대역폭 비용에 대한 어림 추정치를 보인다. 이 추정치는 [https://bitnodes.21.co/]으로부터 전체 네트워크가 5400개의 풀 노드를 포함하고 있음을 가정하고 있다. 트랜잭션 유효성 검증에서, 각 풀 노드는 EC2 micro-instance에 해당하는 수행 비용(~ $0.01/hour)으로 가정하거나 5년 수명의 $500의 프로세서로 가정하였다. 두 경우 모두 동일한 추정치가 도출된다. 트랜잭션은 5년 수명의 SSD에 저장되는 것으로 가정하였으며, 매일 $0.3/GB의 비용이 소모된다. 시스템의 보안을 유지하기 위하여 모든 노드는 전체 히스토리를 포함하는 것으로 가정하였다. 각각의 노드는 가정용(home-grade) 인터넷 연결(대략 $100/month)을 유지하며 모든 트랜잭션에 대해 비용을 따졌다. 오늘날의 비트코인 운용 규모에서는 EC2 micro 인스턴스와 가정용 인터넷 연결이 충분히 큰 네트워크 대역폭당 연산능력을 제공한다. 


기타 메트릭. 본 글에서는 비트코인의 역할을 트랜잭션에 초점을 맞추어 서술하고 있으나, 사실 비트코인은 값을 저장하는 역할을 할 수도 있다. 이러한 측면에서 CPCT의 대안으로 저장(store)당 비용을 고려할 수도 있다.



매개변수 튜닝에 따른 확장성과 근본적 한계. 블록 크기를 늘리거나 제한을 제거하는 등의 여러 제안이 있다. 이러한 제안들은 주로 첫 증가가 수행될 시점, 블록 크기 변경 전략(없음 vs 선형 vs repeated doubling vs 선택적 감소), 그리고 변경을 위해 참여할 마이너의 비율 등에서 차이가 있다. 세그윗(Segwit, segregated witness)은 소프트 포크 구현이 가능한 제안이다. 이는 레거시 노드가 업그레이드할 필요는 없으나 트랜잭션 유효성 검사와 마이너를 암묵적으로 신뢰한다. 개발자 커뮤니티에서는 기능과 스케쥴에 대한 다양한 조합으로부터 이들을 더 세분화하였다(Core, XT, Classic, 그리고 Unlimited).


매개변수의 재설정만으로 충분히 중대형 트랜잭션 처리 시스템의 성장에 따른 요구에 대응할 수 있을지는 아직까지 열려있는 질문이다. 본 섹션의 나머지 부분에서 그러한 한계를 탐구할 것이다.


측정 연구. 비트코인 성능에 관하여 중요한 참고사항은 Decker와 Wattenhofer의 2012년 ‘비트코인 네트워크에서의 블록 전파’ 측정 연구에 언급되어 있다. 당시 비트코인 노드가 블록을 수신하는 것에 소요되는 중앙값과 90-백분위 시간은 각각 6.5초와 26초였다. 이 연구는 또한 작은 블록에 대해서도 언급하고 있는데, 대략 20KB보다 작은 블록의 경우 지연 시간이 블록 전파 시간에 유의미하게 영향을 끼침을 보였다. 이 크기를 초과하면 처리량이 지배적인 요소가 되며 블록 크기와는 무관하였다. 따라서 충분히 큰 블록의 경우 블록 전파 시간이 블록 크기에 따라 선형적으로 증가함을 찾아내었다. 측정 당시의 평균 블록 크기는 97KB였다. 즉, 2012년에는 90%의 노드가 전체 1MB 블록을 수신하는 데 5분이 소요되었을 거라는 의미이다. 이는 블록 인터벌의 상단 부분을 차지하는 것이다. 


노드의 대역폭 프로비저닝(provisioning)과 네트워크 토폴로지는 2012년 이후로 많은 발전이 있었기에, 해당 측정을 2014년과 2015년에 다시 반복하였다. 이에 따르면 10%, 중앙값, 90% 블록 전파 시간은 각각 0.8초, 8.7초, 그리고 79초로 나타났다. 나아가 평균 블록 크기는 대략 540KB였으며, 1MB 블록 크기에 투영해보면 10%, 중앙값, 90% 블록 전파 시간은 각각 1.5초, 15.7초, 2.4분으로 나타났다. 


X% 유효 처리량. 메트릭 ‘X% 유효 처리량’을 다음과 같이 정의하였다. X% 유효 처리량 := (블록 크기) / (X% 블록 전파 지연). 본 측정 연구에서는 다음과 같은 네트워크의 X% 유효 처리량을 제안한다.



또한 2012년의 Decker와 Wattenhofer의 실험에서처럼, 처리량이 지연 시간을 압도하는 블록 크기를 측정하는 추가 실험을 진행하였다. 그 결과는 아래 Figure 1에 표기하였다. 블록이 노드의 50%, 75%, 그리고 90%에 전파되는 각각에서의 네트워크 전파 속도를 구했다. 블록 크기가 0에서부터 커짐에 따라, 네트워크 전파 속도는 80KB에 달할 때까지 증가하며, 80KB가 넘어서는 순간 처리량이 지연 시간을 압도하게 된다. 이 시점에서 90%의 노드에 대한 전파 속도는 55Kbps이며, 위 표에서 관측된 현재 네트워크상에서 90%의 유효 처리량과 일치한다.


데이터에 노이즈가 껴 있기 때문에 지연 시간에 대한 추정을 할 수는 없다. 본 논문에서는 크기가 80KB를 넘어서는 블록에 대해서는 지연 시간을 무시하도록 하겠다.


Fig. 1: 네트워크 전파 속도 vs 블록 크기



매개변수 재설정의 한계. 이제 비트코인 확장성을 위한 매개변수 재설정에 대해 알아보자. 만일 평균 블록 크기가 블록 인터벌에 따른 X% 유효 용량에 도달하면, 네트워크의 (100-X)% 노드는 블록을 수신할 수 없고 비활성화된다. 본 연구에서는 현재 수치 정도의 분산화를 유지함이 바람직하다고 가정하였고, 연구 목적에 따라 90%를 목표로 설정하였다. 분산화로 인하여 각 노드의 기여도를 정량화하기는 어렵다. 각 노드가 모두 마이너일 필요는 없다. 어떤 노드는 서비스 제공자나 개인 사용자와 연관되어 있을 수도 있다. 각 노드의 경제성 중요도를 측정하는 절대적인 방법은 없다. 여기서는 각 노드가 동등한 가중치를 가진다고 정의한다.


또한 비트코인의 현재 P2P 네트워크를 사용한다고 가정한다. 만일 네트워크의 크기나 특성이 변경되면 X% 유효 처리량에도 영향을 끼치게 된다. 그러나 비트코인 네트워크는 2014년 11월부터 2015년 11월까지 대략 4500에서 6300개의 풀 노드에서 안정적인 크기를 유지하였다. 간략화를 위해 이러한 조건을 ‘현재 네트워크’로 칭하도록 하겠다.


처리량 제한. 블록 크기와 인터벌은 다음을 반드시 만족해야 한다. 블록 크기 / X% 유효 처리량 < 블록 인터벌.

                              


따라서 10분 혹은 더 짧은 시간의 블록 인터벌 동안, X가 90%일 경우 블록 크기는 4MB를 넘지 않아야 하며, X가 50%일 경우 38MB를 넘지 않아야 한다.


관측 1 (처리량 제한). 현재 네트워크와 오늘날의 평균 블록 인터벌 10분인 경우, 블록 크기는 4MB를 넘지 않아야 한다. 4MB 블록 크기는 초당 최대 27회의 트랜잭션에 해당한다.


지연 시간 제한. 시스템의 지연 시간을 개선하기 위하여, 원칙적으로 단순하게 블록 인터벌을 줄일 수 있다. 그러나 동시에 높은 유효 처리량을 유지하기 위해서는 블록 사이즈를 줄여야 한다. 80KB보다 작은 크기의 블록을 전파하는 것은 지연 시간이 블록 전파 시간에 영향을 끼치는 요소가 되기 때문에 네트워크의 대역폭을 모두 사용하지 못한다. 네트워크의 90% 유효 대역폭이 55Kbps이기 때문에 80KB의 블록을 90%의 노드에 전파하기 위해 대략 12초가 소요된다. 


관측 2 (지연 시간 제한). 오늘날의 오버레이 네트워크에서 최소한 90%의 유효 처리량을 유지하고 네트워크의 대역폭을 최대한 활용하기 위해서는, 블록 인터벌이 12초보다 현저히 작아서는 안 된다.


표 2. 노드당 리소스와 병목 현상 분석



병목 현상 분석. 매개변수 튜닝으로 블록체인 프로토콜 확장이 가능하지만, 기본 인프라로부터의 한계로 인해 그 처리량이 훨씬 적다. 표 2a를 보면, 4000개 이상의 비트코인 노드에 대해 노드당 대역폭 측정을 수행한 결과가 기재되어 있다. 표 2a는 오늘날 비트코인이 달성한 전체 네트워크 처리량-55Kbps의 90% 유효 처리량-보다 훨씬 높은 네트워크 대역폭으로 각각의 노드가 프로비저닝 되었음을 나타낸다. 비트코인 네트워크가 노드당 링크 대역폭에 다다를 수 없는 이유는 여러 요소와 관련되어 있다. 또한 파이프라이닝의 부재로 인하여 여러 오버레이 홉(hop)을 거친 전파는 경로의 길이에 비례하여 지연되게 된다. 마지막으로, 테이블 2b는 트랜잭션 검증 및 디스크 입출력으로부터의 암호화 오버헤드가 거의 없음을 보이고 있다.




Edit by.


김상혁 | 서강대학교 분산처리연구실 석사과정 | ksangh228@gmail.com

관심분야: 블록체인, 분산처리시스템, 클라우드컴퓨팅


박상현 | 서강대학교 컴퓨터공학과 학사과정 | twodude@naver.com

관심분야: 블록체인, 이종컴퓨팅, 인공지능




[1] Kyle Croman, et al. "On Scaling Decentralized Blockchains", 2016

작가의 이전글 블록체인 거버넌스 : 미래를 프로그래밍 하다_2
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari