[INBEX(인벡스) BLOCKBUSTERS][서울대 Decipher : 김재윤] 블록체인의 기술적인 한계를 극복하기:처리 속도(throughput)

in #kr7 years ago

2017년과 2018년, 블록체인에 엄청난 투자가 이루어지고, 투기 열풍이 불었음에도 불구하고 아직 상용화되어 쓸만한 서비스가 하나도 나오지 않았다. 아직 그 누구도 블록체인 기술을 어디에 어떻게 적용하면 좋을지에 대해서 감을 잡지 못한 탓이 가장 크지만, 블록체인이 가지고 있는 기술적인 한계 역시 아직 커다란 장벽으로 남아있다. 이번 글에서는 블록체인의 기술적 한계와 개선 방안에 대해 알아보고자 한다.



안정성 및 보안성과 성능 간의 관계

블록체인이 안정성(stability)과 보안성(security)을 가지려면 많은 사용자가 네트워크에 참여해야 한다. 더 많은 사용자 혹은 노드가 블록체인 네트워크에 참여할수록 더 큰 안정성과 보안성을 가지게 된다. 여기서 안정성이란, 블록체인 네트워크에 참여하는 노드 중에서 몇 개가 불안정해지더라도 전체 네트워크는 영향을 받지 않고 잘 동작하는 것을 의미한다. 보안성이란 이름에서 알 수 있듯이 데이터에 대한 조작이나 공격이 발생했을 때 이를 얼마나 빨리 알아채고 방어할 수 있는가에 대한 것이다. 하지만 역설적이게도 사용자가 많아질수록 네트워크 구조가 복잡해져서 데이터의 전파 속도가 느려지기 때문에 그에 따라 블록 생성 시간 등 블록체인의 스펙을 낮추지 않으면 안정성과 보안성이 다시 떨어지게 된다. 블록체인은 디지털 자산을 다루는 기술이기 때문에 안정성과 보안성이 가장 중요한 특성이므로 블록체인의 성능, 즉 처리 속도를 떨어트릴 수밖에 없다. 즉, 안정성 및 보안성과 성능은 서로 음의 상관관계를 가지고 있다.



블록체인 성능을 개선하기 위한 아이디어

그렇다면 블록체인의 안정성과 보안성을 떨어트리지 않으면서 성능을 개선할 방법은 무엇일까? 몇 가지 도구들을 제시하여 문제 해결의 실마리를 찾아보고자 한다.

1) 블록체인의 안정성과 보안성을 떨어트리지 않는 최소 노드의 개수

노드의 개수와 안정성 및 보안성은 양의 상관관계를 가지고 있지만, 정비례 관계는 아니기 때문에 노드의 개수가 일정 수준을 넘어서면 포화(saturation)하여 안정성과 보안성이 더 크게 올라가지 않는 순간이 존재할 것이다. Zilliqa라는 프로젝트는 800개 노드가 존재하면 이러한 수준에 도달할 것이라고 보았다 [1]. 물론 이 개수는 블록체인 프로토콜의 설계에 따라서 달라질 수 있다.  ​ 

2) 네트워크의 수평적 확장

블록체인의 안정성과 보안성을 떨어트리지 않는 최소 노드 개수를 알았다면, 그 이상의 노드가 네트워크에 참여하는 것은 블록체인의 운영에 도움이 되지 않기 때문에 네트워크를 확장하는 방법을 생각해야 한다. 즉, 네트워크를 분리해서 여러 개 구축하는 것이다. 이렇게 하면 네트워크의 수만큼 블록체인의 성능을 선형적(linear)으로 증가시킬 수 있다. 선형적이라는 의미는 쉽게 말해서 비례한다는 것이다. 많이 들어봤을 샤딩(sharding)과 사이드체인(sidechain)이 바로 그러한 방법이다. 샤딩 및 플라즈마는 네트워크 간 통신(Interchain communication)이라는 또 다른 문제를 일으키기 때문에 문제가 상당히 복잡해져서 쉽게 해결이 안 되고 있다.

3) 블록체인 클라이언트 최적화

블록체인 성능의 가장 큰 병목(bottleneck)이 네트워크이기 때문에 네트워크에서 성능 개선을 이루어 내는 것이 가장 중요하다. 하지만 이에 못지않게 블록체인 클라이언트 자체의 성능을 개선하는 방법 역시 연구되고 있다. 블록체인 클라이언트에서 가장 큰 병목은 트랜잭션을 처리하는 실행부(execution engine)에 있는데, 보통 가상 머신(virtual machine)이라고 하는 프로그램이 이러한 일을 담당한다. Java를 실행하는 JVM이나 JavaScript를 실행하는 V8 등 일반적인 가상 머신은 실행 정보를 모아서 런타임 최적화(runtime optimization)를 수행하는 Just-In-Time(JIT) compilation과 메모리를 최적화하는 Garbage Collection(GC)이라는 기법을 사용하는데, 상용 블록체인 클라이언트에 있는 가상 머신은 이러한 로직(logic)이 아예 존재하지 않는다. 따라서 가상 머신을 개선하는 방법도 블록체인의 성능을 개선하는 하나의 방법이 될 것이다. 현재 WebAssembly(WASM)와 같은 새로운 언어와 가상 머신을 사용해서 성능을 개선하려는 연구들이 느리게 진행되고 있다.

네트워크의 수평적 확장이 현재 블록체인에서 가장 활발하고도 현실적으로 연구되고 있는 부분이고, 특히 코스모스(Cosmos) 스타일의 인터체인(Interchain) 기술과 플라즈마(Plasma) 스타일의 사이드체인 기술이 가장 현실적으로 보인다. 따라서 앞으로 두 편에 걸쳐 네트워크의 수평적 확장에 대하여 조금 더 깊이 알아보고자 한다.


​[1] ZILLIQA Team. "The ZILLIQA Technical Whitepaper." (2017).



  INBEX 바로가기

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.078
BTC 65594.32
ETH 1720.32
USDT 1.00
SBD 0.42