합의 알고리즘이란? 방식 설명

0
524

합의 알고리즘이란? 방식 설명

블록체인을 이해하는 가장 중요한 측면 중 하나는 합의 알고리즘이다.

블록체인은 기록 사본을 모든 당사자에게 배포하며, 각 참가자는 블록체인의 노드를 보관하게 된다. 새로운 블록을 형성하고 합의 알고리즘의 규칙에 근거한 검증을 요청함으로써 변경 부분이 반영될 수 있다. 유효성이 확인되면 블록이 모든 사용자의 체인에 추가된다.

Proof of Work (PoW)

PoW는 막대한 계산량을 가장 빨리 해결한 사람에게 블록을 생성할 수 있는 권한을 주고 그 보상으로 코인을 제공하는 방식이다. 대량의 참가 노드에도 대응할 수 있는 반면, 각 노드들의 데이터 전송 시간 차이로 인해 체인이 분기되는 경우가 발생할 수 있다.

P2P 네트워크상에서의 정보 공유에 있어서는 참가 노드 간 타임 러그가 발생하므로, 결제 완결성을 확정짓기 어렵다. 또, 승인까지 거의 한시간이 걸리기 때문에, 실시간성의 문제도 발생한다. PoW는 반복적인 연산을 계속해서 특정 값을 찾아내기 때문에 불필요한 연산을 많이 하게 되며 그로 인한 리소스 낭비(대표적으로 전기비)가 심하다.

PoW는 블록체인은 해시 코드들의 체인이기 때문에 기존 내역을 변경하는 것은 어렵고, 특히 비트코인의 경우 모든 노드가 풀 가동시 약 10분에 하나의 해시 값을 찾을 수 있을 정도이기 때문에 기존 내역을 변경하는 것은 불가능에 가깝지만, 51% 공격의 문제 해시 파워의 51% 이상을 가진 노드가 마이닝을 통해 해시값을 찾더라도 이웃 노드들에게 전하지 않고 다음 블록을 추가 생성 (과반수 이상의 해시 파워를 갖고 있기 때문에 다른 마이너들보다 긴 블록체인을 만들 수 있는 가능성이 높음) 비트코인에서는 체인 분기 시, 짧은 체인은 파기하며, 가장 긴 체인을 올바른 체인으로 선정하기 때문에 해커들의 체인이 올바른 체인이 될 가능성이 높음

Proof of Stake (PoS)

PoS는 PoW의 단점을 극복하기 위해서 나온 대안 중 하나이며, 블록을 생성할 수 있는 확률을 각 노드가 갖고 있는 토큰의 지분에 비례하도록 하는 알고리즘이다. 합의에 필요한 리소스가 PoW에 비해 비약적으로 적으며, 속도 문제도 개선되었다.

대량의 자산을 소유하는 참가자는 그 가치를 지키기 위해서 시스템의 신뢰성을 해치지 않는다는 추정 개념에 따라 자산량을 더 많이 소유하는 승인자가 우선적으로 블록을 작성할 수 있는 특징을 가진다. 이로 인해 해시 계산의 부하가 낮아지고 PoW와 비교해 자원소비가 작아진다는 장점이 있다. 그러나, 결제 완결성을 확정할 수 없는 점과 실시간성이 부족한 등의 과제는 PoW와 기본적으로 동일하다.

한편, PoS도 몇 가지 문제점이 발생된다. 첫째, PoS는 지분이 많을수록 더 유리해지는 방식이므로, 각 노드들이 토큰을 수집하기만 하고 사용하지 않으려는 경향이 나타날 수 있다. 이에 대한 대응으로, 사용하지 않는 오래된 토큰에 대해서는 지분 평가를 떨어뜨리는 ‘Proof of Stake Velocity’라는 방식이 제안되고 있다.

둘째, 리소스 비용이 저렴하기 때문에 아무 것도 수행하지 않는 문제(Nothing at Stake)가 발생하거나, 이전 블록들로 거슬러 올라가서 현재까지의 모든 체인을 위변조할 수도 있다. 셋째, 각 노드들은 양쪽 체인 모두에서 같은 양의 지분으로 둘 다 대등한 체인이 되며, 양쪽 체인에 베팅이 가능하기 때문에 체인 분기를 고의로 노리고 계속 시도할 수 있다는 단점도 있다.

Proof of Importance (PoI)

가상통화 NEM(New Economy Movement)에 채택되어 있는 합의 알고리즘이다. 암호화폐의 잔액과 과거의 거래 수에 근거한 “중요도”에 의해 블록이 생성된다.

악의적인 행위를 예방하기 위해 잔액 수나 거래수의 계산방법에 대해 규칙이 적용되기 때문에, 고액의 잔액을 가지고 있는 것만으로는 중요도가 오르지 않는 구조로 되어 있어 PoS에 비해 보다 복잡한 우선순위 결정이 이루어진다.

결제 완결성에 관해서는, PoW, PoS와 동일하게 체인 분기의 문제가 있다. 단, 중요도에 따라 블록의 생성이 이루어지기 때문에 PoW와 비교해 성능(처리속도 등)은 비교적 확보하기 쉬워진다.

Practical Byzantine Fault Tolerance(PBFT)

PoW나 PoS와 마찬가지로 비잔틴 문제 해결로부터 시작되었지만, 결제 완결성과 성능 문제를 해결한 합의 알고리즘이다. 다만 모든 참가자를 알아야 하기 때문에 퍼블릭 블록체인에서 적용하기는 어렵기 때문에, 하이퍼레저 (Hyperledger)나 Eris 등의 프라이빗 블록체인에서 PBFT 알고리즘을 많이 채택하고 있다.

노드 중 하나가 리더(Primary)가 되어, 스스로를 포함한 모든 참가자에게 요청을 보내고, 요청에 대한 결과를 집계하여 다수결로 값을 채택시키는 방식이다. 참가자의 증가에 따라 합의 형성에 필요로 하는 메시지량이 함수적으로 증가하고, 합의 형성의 시간도 장기화하기 때문에 통상적으로는 상한선을 필요로 한 합의를 얻은 후 블록을 생성하기 때문에 체인의 분기가 생기지 않고 PoW나 PoS의 약점인 분기 후의 완결성 판정의 불확실성을 해소할 수 있다.

PoW나 PoS와는 달리 의사 결정 후, 블록을 생성하기 때문에 블록체인의 분기가 발생하지 않는다. 결제 완결성을 지원하며, PoW처럼 해답을 찾기 위한 반복적인 연산 과정이 없기 때문에 필요한 리소스가 낮으며 성능 또한 우수하다.

악의적인 사용을 하려고 해도 과반수 획득을 해야 하며, 허가된 노드만 참여하기 때문에 과반수 획득이 쉽지 않다. 또한, 리더가 악의적인 행동을 했다고 판단되면, 다수결을 통해 리더를 교체할 수도 있기 때문에 매우 강력한 보안성을 갖는다.

하지만, 모든 노드를 알고 있어야 하고 전원의 의사소통이 필요하기 때문에 노드가 증가할수록 성능은 감소한다. PoW나 PoS는 수천 개의 노드를 운영할 수 있지만 PBFT는 수십 개 노드 수준의 한계성을 지닌다.