[리서치 1주차] Zilliqa Project

이더리움 연구회
ether study
Published in
7 min readMay 14, 2018

#Zilliqa Project #이더리움연구회

작성일 : 2018.04.27
Research by ‘이더리움 연구회’
(이더리움 연구회 : www.etherstudy.net )

Zilliqa 프로젝트의 경우 현재 블록체인 기술이 가지고 있는 문제 중 확장성 문제를 집중적으로 해결하고자 하는 프로젝트이다.

최근 이더리움을 이용한 토큰 생성이 많아지고, ICO와 Dapp 들이 증가함에 따라 자연스럽게 Transaction이 증가하였다. 이는 이더리움의 수많은 Transaction을 Pending 상태에 놓이게 했고, 네트워크의 과부하를 일으켰다.

가장 대표적인 사례로는 Cryptokitties가 있다. Cryptokitties는 이더리움 네트워크 위에서 사용자들이 가장 손쉽게 이용할 수 있었던 Dapp이다. 이는 수많은 action을 초래했고, 네트워크 과부하를 일으키며, 확장성의 필요성을 여지없이 보여주었다.

Scalability — 확장성 비교표

다음의 그림을 보게 되면 비트코인의 경우 1초에 7건의 Transaction을 처리하며, 이더리움은 10건을 처리한다. 이는 기존에 사용하는 비자카드와 같은 회사의 8000건에 턱도 없이 부족한 수치이다. 과연 이렇게 수 천 건의 Transaction을 처리하기 위해서 어떤 방법이 필요할까?

Zilliqa 이전에도 많은 방법론이 제시되어왔다. 대표적으로 3가지가 거론된다. 라이트닝 네트워크(Lightening Network), 플라즈마(Plasma), 마지막으로 샤딩(Sharding)이 있다.

각각을 비교하면 다음과 같다.

라이덴 네트워크, 플라즈마, 샤딩 비교

다음과 같은 시도가 있었지만, 네트워크가 커질수록 Consensus가 복잡해진다는 점. Off-Chain이 좋은 방법이기는 하나, 근본적인 해결책이 아니라는 점. 이 두 가지를 미루어 볼 때 Consensus 속도와 네트워크 크기가 양의 상관관계가 되도록 전체 시스템의 구조를 디자인해야 한다는 결론이 나오게 된다.

Zilliqa의 경우 다음과 같이 이야기를 한다. “600 개의 새로운 Node 단위 (Zilliqa의 샤드)로 작업을 나눔으로서 Zilliqa의 처리량을 증가시키는 하이브리드 Consensus 프로토콜을 구현한다”.

Zilliqa 메인페이지에서는 AWS에서 Transaction 처리 속도를 표시하고 있는데 1800개의 노드에서는 1218tx/s 정도의 Performance를 보여주고 있다.

Zilliqa에서 가장 핵심으로 사용하는 기술인 샤딩(Sharding)은 각 샤드(Shard)들이 네트워크 Transaction의 일부를 처리하는 기술을 말한다. 각 샤드(Shard)는 할당된 Transaction을 다른 샤드(Shard)와 병렬로 마이크로 블록들을 처리하고, “DS epoch”라고 하는 병렬 처리 기간이 끝나면 해당 마이크로 블록이 전체 블록으로 결합되어 블록체인에 추가되는 구조이다.

Zilliqa는 샤드를 할당할 때 샤드(Shard)의 크기를 600 노드로 잡고 있다. 이는 다음과 같은 표를 통해 설명할 수 있다.

다음의 표를 보면 샤드(Shard)의 크기가 100일 경우 악의적인 노드가 있을 확률은 0.04이나 600개인 경우 기하급수적으로 낮아지게 된다는 것이다.

Zilliqa의 Consensus 알고리즘은 두 가지를 현재 사용한다. 바로 POW와 PBFT 방식이다. Zilliqa에서 POW는 Sybil attack을 막기 위해서만 작동을 하며 Consensus에는 관여하지 않는다. POW에서 가장 빠르게 마이닝을 한 노드가 DS Committee로 선출이 되고, 기존 노드 중 가장 오래된 노드가 퇴출이 되는 방식의 선입 선출 구조를 가지게 된다. 기존의 노드들은 작업증명의 유효성을 검증하며, 노드들의 네트워크 합류에 대한 권한을 부여받게 된다.

PBFT(Practical Byzantine Fault Tolerance)의 경우 3가지 단계로 Consensus가 진행된다.

  1. 사전 준비 단계(Pre-prepare phase): 리더는 그룹이 동의 해야 하는 레코드를 발표
  2. 준비 단계 (Prepare phase) : 사전 준비 메시지를 수신함으로 모든 노드는 레코드의 정확성과 유효성을 검증하며 “준비” 메시지를 다른 노드 들에게 멀티 캐스트
  3. 커밋 단계 (Commit phase) : 압도적 다수 (super-majority)로부터 준비 메시지를 수신하면서 각 노드는 커밋 (commit) 메시지를 그룹에게 멀티 캐스트

마지막으로 각 노드는 리더가 제안한 레코드에 충분한 수의 노드들이 동의했는지 확인하기 위해 절대다수로부터의 커밋 메시지를 대기한다.

이러한 과정을 통해서 Zilliqa는 트랜잭션 완결성, 저에너지 사용, 낮은 보상 분산이라는 장점을 띄게 된다고 한다.

Zilliqa의 경우 기존 이더리움에서 사용하는 Smart Contract는 복잡하고 의도치 않은 오류들이 발생하기도 한다고 지적한다. 그들은 이를 보완하기 위해 자신들만의 새로운 언어인 Scilla를 선보였다. Scilla의 경우 기존의 언어들과는 다르게 튜링 완전하지 않은 언어로 구성이 되어 있다. 이는 어떠한 모듈을 만들 때는 매우 실용적인 방법이다. 하지만 이 기능 이외의 새로운 부분을 설계할 때는 많은 제약이 따를 수 있다.

Zilliqa는 샤딩(Sharding)이라는 개념을 접목하여 기존에 있던 확장성(Scalability)를 해결하고자 하는 프로젝트이다. 현재 나오고 있는 다른 코인들은 자신들만의 새로운 세계관으로 새로운 것을 만들어내고자 한다. 하지만 Zilliqa의 경우 POW에 PBFT의 개념을 더하여 보안하였다. Zilliqa의 샤딩은 이더리움의 블록의 데이타 샤딩과는 조금 다르게 네트워크 상의 노드를 샤드 단위로 묶고 이들 샤드내에서 합의를 하여 블록을 만들고 이것을 상위로 전달하는 방식이라 이더리움의 샤딩과는 다소 차이가 있다.

그러나, 기존의 이더리움의 업그레이드 버전이라는 생각이 드는 부분들이 많이 있다. 하나 대표적으로는 현재 EOS등의 코인들은 이더리움의 GAS개념을 사용자가 내는 것이 아닌 그 안에서 시스템을 구축한 이들에게서 받아내고자 한다. 기존 시장에서 보면 사용자는 이용을 함에 있어서 불편함이 없어야 하기 때문이다. Zilliqa의 경우에는 이더리움의 GAS 개념을 그대로 사용하고 있다. 또한, 최근 트랜드로 자리잡고 있는 토큰 이코노미 부분에 대해서도 많은 이야기를 하고 있지 않은 점이 아쉬운 부분이다. 아직 POS로 넘어가기에는 발전이 안되어 있으며, POS의 발전이 이루어지면 Zilliqa 또한, consensus를 전환한다고 하니 지켜 볼 필요가 있다.

이더리움 연구회의 1,2기 정기 발표나 향후 업데이트 되는 3기 연구 자료는http://etherstudy.net을 통해서 확인 하실 수 있습니다.
이더리움 연구회 기술 블로그
https://tech.etherstudy.net/를 통해 더욱 다양한 연구 자료를 보실 수 있습니다.

--

--