코드체인의 합의 알고리즘들

어떤 합의 알고리즘이 가장 좋은 합의 알고리즘일까? PoW(Proof of Work)? PoS(Proof of Stake)? PoA(Proof of Authority)? 사실 정답은 없다. 성능, 보안성, 분산화의 정도 등 여러 면에서 장단점이 있기 때문에 특정 합의 알고리즘이 가장 좋다고 이야기하기는 어렵다.

블록체인 네트워크를 구축할 때는 네트워크의 특성에 따라 합의 알고리즘을 선택해야 한다. 참여 노드의 숫자가 100개 이하로 제한되더라도 높은 TPS(Transaction Per Second)와 빠른 블록 확정 속도가 필요하다면 BFT(Byazntine Fault Tolerance) 계열의 합의 알고리즘이 좋고, 최대한 많은 노드의 참여가 필요가 있는 보안성이 중요한 어플리케이션이라면 PoW 합의 알고리즘을 선택하는 것이 좋다.

코드체인은 블록체인 네트워크를 셋업할 때 합의 알고리즘을 선택할 수 있다. 현재 PoA, PoW, 텐더민트(Tendermint) 등의 합의 알고리즘을 제공하고 있고, 필요하면 다른 합의 알고리즘도 쉽게 추가할 수 있는 pluggable한 아키텍처를 가지고 있다. 구축하고자 하는 블록체인 어플리케이션의 특성에 맞는 합의 알고리즘을 선택하면 된다.

현재 코드체인은 두 개의 테스트넷을 운영하고 있다.

먼저, Saluki 테스트넷은 PoA 합의 알고리즘을 사용한다. PoA는 합의에 참여하는 노드의 정체를 알고 있기 때문에, 어떤 노드가 잘못된 행동을 했을 경우 법적인 제재를 가할 수 있다. 따라서 PoS처럼 지분을 걸고 잘못된 행동을 했을 때 처벌을 하는 메커니즘이 필요 없고, 커뮤니케이션 오버헤드도 적어서 빠르게 합의에 도달할 수 있다.

또 다른 테스트넷인 Husky 테스트넷Cuckoo Cycle 기반의 PoW 합의 알고리즘을 사용한다. 각 노드는 계산을 통해 Cuckoo Cycle의 그래프 문제의 해를 찾아야 하며, 해를 찾은 노드가 블록을 생성하면 블록 보상을 지급한다. 현재 30초마다 하나의 블록을 생성하고 있고, 채굴 속도에 따라 난이도가 자동으로 조절되는 시스템을 가지고 있다.

대표적인 BFT 방식의 합의 알고리즘인 텐더민트를 사용하는 Corgi 테스트넷도 조만간 오픈할 예정이다. 텐더민트 합의 알고리즘은 1/3 이하의 노드가 비잔틴이어도 문제가 없는 합의 방식이며, 100개 이하의 노드에서 대략 1000-2000 TPS의 성능을 보여준다. 또한 확률적으로만 finality를 보장하는 PoW 합의 알고리즘과 달리 3-4초 이내에 즉각적인 finality를 보장한다는 장점이 있다. 참여 노드는 지분을 걸고 노드로 참여하고 잘못된 행동을 했을 때 지분이 삭감되는 처벌을 받기 때문에 임의의 노드가 참여할 수 있다는 점에서 PoA와는 차별화된다.

이 외에도 코드체인은 다양한 합의 알고리즘을 실험하고 있다. Algorand처럼 VRF(Verifiable Random Function) 기반으로 노드를 선출하는 합의 알고리즘도 실험 중이다. 또한, PoW 기반으로 노드를 선출하고 선출된 노드가 다시 BFT 기반의 합의 알고리즘의 노드로 참여하는 하이브리드 방식의 아이디어도 테스트하고 있다.

전세계적으로 합의 알고리즘에 대한 연구가 활발히 진행 중이기 때문에 앞으로 성능, 보안성, 분산화를 모두 개선한 합의 알고리즘이 지속적으로 등장할 것으로 기대한다. 코드체인은 여러 합의 알고리즘을 쉽게 구현하고 테스트해볼 수 있는 환경을 제공하여, 합의 알고리즘의 성능과 안정성을 실제로 검증할 수 있는 플랫폼 역할을 수행하려 한다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s