Blockchain performance Issue
Blockchain performance Issue
본 포스트는 2018 패스트캠퍼스 블록커톤에서 진행된 HASHED 강연을 정리한 내용이다.
블록체인을 활용하여 서비스를 개발하기에는 한계가 있다. 블록체인을 사용했을 때 기존에 중앙화된 시스템보다 성능이 떨어지는 문제가 발생한다.
블록체인 성능은 3가지 요소로 판단할 수 있다. 바로 TPS, 블록생성시간, 최종 확정성이다.
TPS
TPS는 Transactions Per Second의 약자로 초당 처리할 수 있는 거래량을 말한다. 현재 블록체인은 현재 실물 거래에서 사용되고 있는 신용카드에 비해 TPS가 현저히 떨어져서 상용화가 어려운 상황이다.
블록생성시간
블록생성시간은 새로운 블록이 생성되기까지 걸리는 시간을 말한다. 예를 들면 비트코인은 10분, 이더리움은 10 ~ 19초를 유지하려고 한다. 블록생성시간은 트랜젝션이 블록체인에 저장되는 시간에 영향을 준다. 비트코인을 예로 들어보자. N 번째 블록이 생성되자마자 트랜잭션이 바로 N 번째 블록에 바로 기록될 수도 있지만 N 번째 블록에 기록되지 못하면 (N + 1) 번째 블록까지 10분을 기다렸다가 기록되어야 한다. 많은 트랙잭션이 전송되어 비트코인 네트워크가 복잡하다면 트랜잭션이 블록에 기록되기 위해서 (N + 2), (N + 3),… 번째 블록가 생성될 때까지 기다려야할지도 모른다.
네트워크가 과부하된 상황이 아니라면 평균대기시간은 다음과 같다.
평균대기시간 = 블록생성시간 / 2
최종 확정성
최종 확정성이란 트랜잭션이 블록에 기록되었을 때 이 기록이 영구성을 갖는 것을 말한다. 블록체인에서는 트랜잭션이 블록에 기록되었다고 하더라도 최종 확정성을 갖는 것이 아니다. 바로 포크(fork)가 존재하기 때문이다. 블록체인에서 포크란 블록체인이 하나의 체인이 여러 갈래의 체인으로 갈라지는 것을 의미한다. 포크가 존재하는 이유는 새로운 블록이 생성되었음에도 네트워크 상의 문제로 노드 간에 새로운 블록이 동기화되지 않아 동일한 블록 높이를 가진 블록이 여러 개가 생기는 경우가 발생할 수 있기 때문이다.
퍼블릭 블록체인에서 포크가 발생하면 블록 높이가 더 높은 포크를 메인 포크로 삼는다. 트랜잭션이 블록에 기록되었다고 하더라도 이 트랜잭션이 메인 포크에 기록되었다는 보장이 없다. 트랜잭션이 기록된 블록이 메인 포크로 선정되지 않아서 무효화되어 트랜잭션이 다시 블록에 기록되기 위해 트랜잭션 풀에서 대기하게 될 수도 있다. 그래서 보통 암호화폐 거래소에서는 자체적으로 일정 수의 컨펌(confirm)을 기다린다. N 컨펌은 트랜잭션이 기록된 블록을 포함한 N개의 블록이 더 생성되었다는 것을 의미한다. 확정시간은 다음과 같이 표현할 수 있다.
확정시간 = 컨펌수 * 블록생성시간
거래소에서는 비트코인의 경우 보통 6 컨펌, 즉 1시간(6 * 10)을 기다리면 최종확정성을 갖는다고 간주하고 코인을 보내준다.
해결책
블록체인 성능 이슈를 해결하기 위해 다양한 해결책이 제시되고 있다. 이 해결책들에 대해 소개하도록 하겠다.
Big Block
TPS를 향상시키는 방법으로 블록 크기를 키우는 것이다. 그러나 블록 크기를 늘리면 마이닝하는데 더 많은 컴퓨팅 자원을 투자해야 하므로 중앙화의 우려가 존재한다.
DPOS
TPS를 향상시키는 다른 방법으로는 합의 알고리즘으로 DPOS를 채택하는 것이다. DPOS는 Delegated Proof of Sake의 약자로 POS 방식에서 간접 민주주의를 도입한 방식이다. 대표를 선출하여 제한된 노드에게 결정권을 일임하여 TPS를 향상시킬 수 있다. 그러나 이 또한 소수에게 막강한 권한을 부여하여 중앙화의 우려가 존재한다. 또한 소수의 노드만 해킹하면 되므로 51% Attack에 상대적으로 취약해진다.
Off-chain
Off-chain을 활용하는 방안도 검토해볼 수 있다. 정말 필요한 데이터만 On-chain하거나 Off-chain 상에서 데이터를 모아 주기적으로 한꺼번에 On-chain에 올리는 것이다.
Lightning Network
Off-chain을 활용하는 기술 중에는 라이트닝 네트워크(Lightning Network)가 대표적이다. 라이트닝 네트워크는 이전 포스트로 갈음한다.
Plasma
플라즈마(Plasma)는 확장성 네트워크로 사이드체인(Sidechain)인 베이비 블록체인(플라즈마 블록체인)들을 루트 블록체인과 연결하여 데이터를 플라즈마 블록체인에 나눠서 저장한다. 플라즈마 블록체인으로 루트 블록체인의 과부하를 낮춰서 블록체인의 성능 향상을 도모한다.
Interchain
인터 체인(Interchain)은 서로 다른 블록체인을 연결한 블록체인 네트워크이다. 대표적으로 Ark가 스마트 브릿지(Smart Bridge) 기술을 활용하여 다른 블록체인을 연결하는 인터 체인 솔루션을 제공한다.
Sharding
샤딩(Sharding)은 블록체인의 전체 네트워크를 shard라는 파티션으로 나눈 뒤 각각의 네트워크에서 데이터를 독립적으로 저장하는 방식이다.
위 그림은 노드 간 네트워크 연결을 나타낸 것이다. 같은 색을 가진 노드 간에는 동일한 데이터를 저장하고 다른 색을 가진 노드 간에는 다른 데이터를 저장한다.
결론
지금까지 블록체인 성능 이슈와 이에 대해 제시된 솔루션들을 소개하였다. 솔루션들을 살펴보면 결국 탈중앙화에 대해 다시 돌아보게 된다. 세상에는 완전한 것이 존재하지 않고 항상 장단점이 존재한다. 탈중앙화도 마찬가지이다. 탈중앙화는 블록체인이 가치를 갖는 가장 큰 이유지만 절대적인 탈중앙화 또한 여러 문제를 야기한다. 솔루션들은 탈중앙화와 중앙화를 흑백논리로 접근하기보다는 중앙화적 요소를 일부 도입하여 '적당한' 탈중앙화 방식으로 해결책을 모색하고 있다.