brunch

You can make anything
by writing

C.S.Lewis

by CURG in Seoul Sep 12. 2018

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

구조의 재설계를 통한 해결법 

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


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




   이전에 게시한 블록체인의 근본적인 확장성 문제” 글을 통해 비트코인의 매개 변수(block size, time interval)의 수정을 통한 확장성 향상에는 한계가 있다는 것을 알 수 있었다. 따라서 이번 글에서는 블록체인 구조의 재설계를 통해 확장성을 향상하는 방법에 대해서 논의하고자 한다. 이를 위해, 비트코인 시스템을 network 계층, consensus 계층, storage 계층, view 계층, side 계층으로 분리하여, 각 계층에서의 확장성 향상을 위한 접근법을 설명하겠다.

비트코인의 계층화


Network 계층  


    Network 계층은 비트코인 네트워크에서 트랜잭션과 같은 정보를 전파하는 기능을 담당하는 계층이다. Network 계층은 다음과 같은 두 가지의 문제점을 가지고 있다.


전파 과정에서의 local validation

local validation

   트랜잭션이 생성될 경우, 노드들은 전달받은 트랜잭션을 자신과 연결된 모든 노드에 전달하는 과정을 통해 네트워크를 구성하고 있는 모든 노드에 해당 트랜잭션이 전달되도록 한다. 이러한 과정에서 어떤 한 노드가 invalid 트랜잭션을 계속 생성하고 다른 노드들에 전달할 경우 네트워크 전체에 invalid 트랜잭션에 의한 denial-of-service(DoS) 공격[2]이 발생할 수 있다. 비트코인 네트워크에서는 이러한 DoS 공격을 막기 위해, 전달받은 트랜잭션을 전파하기 이전에 해당 트랜잭션에 대한 local validation 과정을 진행한다. 그러나 트랜잭션에 대한 local validation 과정은 트랜잭션의 전파 시간에서 많은 영향을 미친다.


각 트랜잭션에 대한 두 번의 전파

트랜잭션의 전파

   생성된 트랜잭션은 네트워크에 전파된 후, 채굴자들에 의해 블록에 포함되게 된다. 이후 해당 트랜잭션은 블록에 포함되어 다시 네트워크에 전파된다. 따라서 생성된 트랜잭션은 비트코인 네트워크에서 하나의 노드에 대해 두 번씩 전파된다. 즉, 비트코인 네트워크에서는 하나의 데이터에 대해 중복 전파가 발생한다.


   위에서 언급된 network 계층의 문제점을 해결하기 위해서 몇 가지 개선 방법들이 존재한다. 첫 번째 방법은, 블록을 전달받을 때 자신이 보유하고 있지 않은 트랜잭션에 대해서만 요청하는 방법이다. 이를 통해, 같은 트랜잭션에 대한 중복적인 전파가 발생하지 않는다. 두 번째 방법은, 채굴자들끼리 고성능의 네트워크를 구성하는 방법이다. 해당 방법을 통해 채굴자 사이의 전파 시간을 감소시킬 수 있지만, 분산성이라는 블록체인의 특징에 위반되게 된다. 다른 방법들로는 네트워크의 브로드캐스트 기능을 개선하는 방법과 정직한 노드 사이의 강력한 연결성과 낮은 네트워크 직경[3]을 가지고 있는 p2p 네트워크 구조를 설계하는 방법이 있다.


Consensus 계층


    Consensus 계층은 트랜잭션 처리를 위해, 트랜잭션의 순서를 지정하는 과정을 담당하는 계층이다. 해당 계층은 network 계층을 통해 전달된 트랜잭션들을 분산 원장에 삽입하는 기능을 담당하는 계층으로써 비트코인에서는 마이닝 과정과 생성된 블록을 원장에 삽입하는 과정을 말한다. Consensus 계층은 크게 PoW( proof of work )와 PoW 이외의 합의 알고리즘으로 나눌 수 있다.


PoW(Proof of work)

식 1.

   비트코인의 합의 알고리즘인 PoW의 경우, [식 1]과 같이 bandwidth(블록의 크기)consensus speed(합의 속도)가 상승하면 fork 발생률이 상승하여 네트워트의 security을 감소시킨다. 그러나 PoW에서의 위 세 성분의 관계는 절대적이지 않다. GHOST 프로토콜의 경우, chain selection rule을 변경하여, consensus speed가 상승하여도 security가 보장되도록 하였다 [4]. Bitcoin-NG에서는 blockchain protocol을 변경하여, network 계층에 의해서만 consensus speed와 bandwidth가 제한되도록 하였다 [5].


PoW 이외의 방법


PoS and Consortium consensus

   PoW 이외의 방법으로는 proof of stake와 consortium consensus가 있다.  먼저 PoS는 PoW와 달리 계산을 통해 합의에 도달하는 것이 아닌, 그들의 자산을 보증금으로 맡김으로써 블록 생성의 권리를 얻는 방법을 말한다. 다음으로, consortium consensus는 분산성을 지키기 위해서 소모되는 performance cost를 줄이기 위해 제시되었다. 이를 위해, consortium consensus는 검증에 참가할 소수의 사람을 미리 지정한 후 BFT(Byzantine Fault Tolerant)를 통해 합의에 도달하는 방법이다. 그러나 해당 방법은 검증에 참가하는 사람들이 증가함에 따라 performance가 감소한다는 단점이 있다.


Storage 계층


   Storage 계층은 consensus 계층에 의해 생성된 데이터에 대한 저장과 가용성을 제공하는 global memory 기능을 담당하는 계층이다. Storage 계층은 크게 두 가지 기능을 수행한다. 두 가지 기능은 consensus 계층에서 요청하는 저장된 데이터에 대한 수정 및 삭제 요청에 대한 수행과 보관하고 있는 데이터에 대한 읽기 요청에 대한 수행이다.


blockchain ledger

   비트코인에서 원장을 저장하고 관리하는 부분을 storage 계층이라 할 수 있다. 비트코인의 경우 기본적으로 모든 원장을 저장하게 된다. 따라서 비트코인 네트워크의 전체적인 측으로 보면 비트코인 네트워크는 수많은 중복된 데이터를 저장하게 된다. 또한, 풀 노드가 되기 위해 전체 원장으로 내려받으면 4일 이상의 시간이 걸린다. 이러한 storage 계층의 문제점들은 각 노드가 전체 원장을 저장하지 않고 원장 내용을 나누어 가지고 있는 방법으로 해결할 수 있다. 그러나 해당 방법을 사용하기 위해서는 분할된 저장 데이터를 읽어오는 도중에 해당 데이터의 정확성을 인증하는 방법이 필요하다.


View 계층

   View  계층은 모든 트랜잭션을 적용하여 생성된 데이터를 제공하는 기능을 한다. View 계층이 수행되는 방법에는 두 가지 방법이 있다.


View via replication



Ledger replication


   View via replication 방법은 모든 노드가 모든 트랜잭션을 검증하고 처리하면서 각자의 원장을 유지하는 방법이다. 해당 방법은 매우 높은 가용성을 가진다.


Outsourcing views via cryptography


Outsourcing view


   Outsourcing views via cryptography은 각 노드가 원장을 소유하지 않고 제삼자에 의지하여 view 계층 기능을 수행하는 방법이다. 해당 방법은 노드들이 원장을 소유하지 않아도 되는 장점이 있지만, 데이터의 가용성이 감소하게 된다. 따라서 제삼자가 제공하는 데이터의 정확성을 증명해주는 암호 기법의 digest[6]가 같이 제공되어야 한다. 그러나, 해당 방법을 사용하기 위해서는 실제 환경에서 데이터의 정확성을 증명할 수 있는 암호 기법이 필요하다.


Side 계층


   Side 계층은 off-chain에서 수행되는 기능들을 뜻한다. Off-chain 트랜잭션의 경우, micropayment network에서 증명이 되었다. Micropayment에서는 각자의 거래는 당사자들의 payment 채널에서 이루어진다. 이러한 payment 채널을 통해 거래하는 방법은 비트코인이 내재하고 있는 성능과 중앙 집중화 사이에서의 절충안이 될 수 있다. 그러나 payment 채널을 이용한 거래에서의 거래의 보안성은 payment 채널의 정직성에 의존적이다.


결론


   두 편의 게시글을 통해 비트코인에서 확장성 상승을 위한 방법들을 확인할 수 있었다. 첫 번째 게시글에서 다루었던 것과 같이 비트코인 프로토콜 매개변수의 수정을 통한 처리량 향상은 한계점이 명확하다. 따라서 비트코인뿐만 아니라 블록체인에서의 현저한 트랜잭션 처리량 상승을 위해서는 블록체인의 구조적 변화를 고려해야 한다.




Edit by.


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

ksangh228@gmail.com

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


박상현 | 서강대학교 컴퓨터공학과 학사과정 | 

twodude@naver.com

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




[1] Kyle Croman, Christian Decker, Ittay Eyal, Adem Efe Gencer, Ari Juels, Ahmed Kosba, Andrew Miller, Prateek Saxena, Elaine Shi, and Emin Gün. “On scaling decentralized blockchains.”


[2] https://en.wikipedia.org/wiki/Denial-of-service_attack


[3] https://en.wikipedia.org/wiki/Network_science#Diameter_of_a_network


[4] https://github.com/ethereum/wiki/wiki/White-Paper


[5] I. Eyal, A. E. Gencer, E. G. Sirer, and R. van Renesse. (Oct. 7, 2015). ‘‘Bitcoin-NG: A scalable blockchain protocol.’’


[6] https://en.wikipedia.org/wiki/Cryptographic_hash_function

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari