Cardano 그룹에서 가장하는 소위말하는 Blockchain 2.0 ( Ethereum 등)이 갖고 있는 Scalability, Interoperability, Sustainability에 대해서 설명하려고 한다.
Scability란
Scability라는 것은 실제 확장성을 뜻한다. 컴퓨터 공학에서는 확장성은 주로 대용량 데이터를 처리할 때 분산처리를 가능하게 하여 선형적으로 확장이 가능하게 하는 것을 뜻한다. Complexity가 n^2 인 알고리즘은 데이터가 선형적으로 증가할 때 기하급수적으로 계산량이 늘어나므로 scalable하지 않은 시스템이라고 하며, 이 비유는 하드웨어에서도 적용된다.
이더리움에서는 크게 두가지에서 Scalable에 대한 문제가 있다고 지적한다. 첫번째는 transaction volume이다. 현재 비트코인은 초당 3~4건, 이더리움은 초당 약 20건을 처리하고 있다. 반면 실제로 사용되는 페이팔 같은 경우는 초당 193건을 평균적으로 처리하나 사이버 먼데이에는 450건가까이 처리를 했다고 한다. VISA의 경우는 평균적으로 1667건을 처리하고 있으면 56,000건까지 처리가 가능하다고 한다(https://mybroadband.co.za/news/banking/206742-bitcoin-and-ethereum-vs-visa-and-paypal-transactions-per-second.html).
이러한 시스템의 한계 때문에 항상 '화폐'로써의 가치가 있는지에대해서 정치인들이 갑론을박하나 일단 헤게모니보다는 오늘은 기술에 관한 이야기만 하려고 한다.
이더리움이 Scalable하지 않은 이유는 크게 세가지이다. Transaction / Second, Network Bandwidth, Storage이다.
Transaction / Second
위에 말한 것 처럼 굉장히 자명한 문제이다. 초당 20건은 세계적으로 '화폐'로 쓰이기에는 턱없이 부족한 수치임은 분명하다. Cardano그룹은 Proof-of-Work대신에 Proof-of-Stake을 쓰기로 한다.
Ouroboros라고 불리는 이 알고리즘은 모든 노드가 계산을 하는 것이 아닌 선택받은 Slot Leader들이 노드들만이 계산에 참여하게 하여 자원의 낭비를 최소화 한다. 선택받은 leader들이 참여하지 않거나 계산을 완료하지 않으면 다른 leader들에게 위임하게 한다. 시간을 Epoch라고 부르는 단위로 나눠서 병렬로도 처리가능하게 하여 PoW처럼 너무 많은 사람들이 과도하게 '채굴'을 하지 않더라도 충분히 Distributed Ledger가 가능하게 한다.
개인적으로 PoS가 가능한것은 Genesis Distribution에서 이미 많은 코인이 분산되어 있고, 추가적으로 분산될 예정이기 때문에 PoS가 가능할 것 같다. 하지만 PoS는 결국 51%이상은 한 노드 혹은 담합을 하게 되면 Byzantine Fault Tolerance한 시스템의 특징을 가질 수 있을지는 의문점으로 남아있지만, 담합 혹은 공격을 하는 비용이 실제 그 코인의 가치보다 훨씬더 커지게하는 장치를 마련해놓는다고 한다.
Bandwidth
실제로 블록체인이라는 기술은 데이터(장부)를 모든 노드가 싱크를 하면서 진행되야 하는데, 점점 트랙잰션이 많아지면 실제로 전송해야하는 데이터의 양이 너무 많아지게 된다. Cardano는 Recursive InterNetwork Architecture(RINA)라는 방식으로 데이터를 전체에게 전송하는 방식이 아닌 서브넷 형태로 유저를 모아서 데이터를 전송하고 유효성을 검증하게 된다. TCP/IP와도 유사한 방식인데 Subnet에서 없는 데이터를 필요로 할때는 다른 subnet과 연결하는 형태로 데이터를 갖고오면서 bandwidth를 절약할 수 있다고 한다.
Storage
Chain에 저장되게 되는 데이터의 양은 지속적으로 늘어날 것이다. 절대 줄지는 않을 것이다. 현재 Etehereum노드를 완벽하게 싱크하게 되면 geth 폴더가 대략 60기가 정도까지 늘어나게 되는데 이용량이 양산되는 하드 디스크의 한계를 넘어간다면 분명 그 한계점을 맞이할 것이다. 하지만 아직까지 위 두문제에 비행서 스토리지는 그나마 가격이 저렴하게 해결할 수 있고 Pruning, Compression, Partitioning 등을 이용하면 충분히 해결될 여지가 있다고 판단하여 아직 개발중은 아니라고 한다.
Summary
Scalability의 문제는 다른 상호운용성이나 지속가능성의 문제보다 훨씬 더 근본적인 문제로 가장 Cardano에서 집중하고 있는 문제라고 한다. 실제로 빠르게 해결되어서 실생활에서 ADA가 쓰이는 모습을 기대해본다.