본문 바로가기
Block Chain/블록체인 구조와 기술

[블록체인] 8장, 합의 알고리즘

by Y06 2021. 2. 24.

 

8.1 합의 알고리즘이란?

합의 알고리즘이란 P2P 네트워크와 같이 정보 도달에 시간차가 있는 네트워크에서 참가자가 하나의 결과에 대한 합의를 얻기 위한 알고리즘이다. 블록체인은 각 노드에서 만든 블록의 정당성을 검토하고 네트워크 전체에서 공유하는 블록체인에 반영하기 위해 이 합의 알고리즘을 사용한다.

 

P2P 네트워크에서는 정보의 지연과 미도달이라는 사태를 피할 수 없다. 따라서 데이터를 변조할 의도가 없다 해도 이중 송신에 따른 중복이나 잘못된 정보에 의한 오작동 등의 위험이 있기 때문에 정확한 정보를 공유하기 어렵다. 이 문제점을 해결하는 것이 합의 알고리즘의 목적이다.

 

8.2 계산량에 따른 증명(Proof of Work)의 문제점

PoW는 확률적으로 해답이 어려운 문제를 가장 빨리 해결한 사람에게 블록을 만들 수 있도록 허가하고 그 보상으로 코인을 준다. 이 방식은 중앙 집권적인 관리자가 없지만 사람들이 보상을 위해 네트워크에 참여하기 때문에 시스템이 자율적으로 운영된다. 그리고 통신이 끊겨 불일치가 발생해 블록이 분기한 경우에도 가장 긴 블록체인을 올바른 것(더 많은 참가자가 승인했다고 간주)으로 함으로써 데이터의 일관성을 보장하고 있다.

 

[ PoW의 문제점 ]

 

■ 51% 문제

PoW는 다수결로 결정을 내리는 알고리즘이다. P2P 네트워크에서 블록을 채굴하기 위해 참가한 채굴자(마이너)는 블록 생성에 대한 보상을 받는다. 하지만 특정 마이너가 전체 네트워크의 과반수 이상을 점유하게 된다면 다른 마이너가 생성한 블록을 승인하지 않는 등 결과를 자유롭게 조작할 수 있기 때문에 PoW는 정상적으로 기능할 수 없게 된다.

 

■ 파이널리티 불확실성

PoW는 블록체인이 분기하는 경우 긴 체인을 올바른 것으로 판단한다. 짧은 체인을 사용하고 있던 노드에서는 긴 체인이 채택돼 블록의 전환이 발생하면 다양한 문제가 발생할 수 있다. 비트코인은 이런 현상을 방지하기 위해 거래가 확정되더라도 6블럭 가량 기다리지 않으면 다음 거래를 할 수 없는 등 제한을 설정하고 있는 지갑도 존재한다.

 

■ 성능한계

P2P 네트워크에서 단일 정보를 공유하는 구조상 네트워크에 확산되는 시간을 없애는 것은 불가능하다. 또한 여러 노드간 합의를 통해 정보의 신뢰성을 담보하고 있기 때문에 합의에 걸리는 시간도 필요하다. 따라서 성능(응답 시간과 처리량)을 올리는 것은 어려우며 실시간으로 처리해야 하는 업무는 기본적으로 적합하지 않다.

 

■ 블록체인의 용량

블록체인은 참가자 전원이 트랜잭션 실행 결과를 검토해 신뢰성을 확보하기 때문에 모든 블록 정보를 각각의 노드가 보유해야 한다. 향후에도 계속 증가해 나갈 것이기 때문에 하드 디스크 용량의 압박과 초기 실행 시간의 증가가 우려되고 있다.

 

8.3 합의알고리즘의 종류

8.3.1 대표적인 합의 알고리즘

불특정 다수의 사용자가 참가하는 인터넷과 같은 환경에서 PoW는 유효한 알고리즘이다. 컨소시엄형 블록체인에서는 악의가 있는 참가자에 대한 대처보다는 처리 속도와 처리량 및 파이널리티의 확실성이 중요하다.

 

블록체인에서 사용이 검토되고 있는 대표적인 합의 알고리즘들을 나열했다. 원래 블록체인 이전의 분선 데이터베이스나 분산 파일 공유 시스템에서 장애에 대응하기 위해 만들어진 기술들이다.

 

합의 알고리즘 채택 시스템
Proof of Work Bitcoin Core, 이더리움
Proof od Stake Ethereum mijin
Paxos Google Chubby
Raft RAMCloud
PBFT Hyperledger Fabric
Sieve Hyperledger Fabric2

8.3.2 분산 시스템의 장애 모델

P2P 네트워크에서 발생 가능한 장애 모델로는 다음의 3가지가 있다.

 

  1. FAIL STOP 모델 ..... 어떤 오류로 인해 중지된 서버는 깨끗이 퇴출하는 모델
  2. FAIL RECOVER 모델 ..... 한 번 정지한 서버가 부활하는 모델(지연과 중단을 구별하지 않음)
  3. BYZANTINE FAULT 모델 ..... 임의 노드가 악의적으로 실수를 일으키는 모델

Paxos와 Raft는 1과 2를, Pow, PoS, RBFT, Seive는 3을 고려한 모델이다. 비트코인과 같이 불특정 다수의 사람이 참가해 스스로의 의사로 거래를 수행하는 구조의 경우에는 사용자가 악의적으로 데이터를 변조하거나 파괴하는 등의 행위를 하는 경우를 고려해야 한다.

 

8.4 각 합의 알고리즘의 특징

■ PoW(Proof of Work)

비트코인을 시작으로 많은 블록체인 기반 기술이 채택하고 있는 합의 알고리즘이다. 블록을 만들어 배포한 후 많은 참가자가 사용하는 것을 올바른 블록으로 정의하기 때문에 참가자의 수에 영향을 받지 않고 얼마든지 참가자를 늘릴 수 있다. 반면 네트워크 상태에 따라 일부분에 불일치가 생신 경우 파이널리티가 불확실하게 되는 점이나 성능이 나오지 않는다는 단점이 있다.

 

■ PoS(Proof of Stake)

이더리움이 채택할 예정인 알고리즘이다. 화폐량을 더 많이 소유하고 있는 승인자가 우선하여 블록을 생성할 수 있는 특징이 있다. PoW와 비교해 자원 소비가 작아지는 장점이 있다.

 

■ PBFT(Practical Byzantine Fault Tolerance)

PoW와 PoS의 단점인 파이널리티의 불확실성과 성능 문제를 해결한 것이다. PBFT는 네트워크의 모든 참가자를 미리 알고 있어야 한다. 참가자중 1명이 프라이머리가 되고 자신을 포함한 모든 참가자에게 요청을 보낸다. PoW/PoS는 남은 1개에서도 동작을 계속하지만 PBFT는 필요 수를 충족하지 못하면 정지한다.

 

다수결로 의사결정한 뒤 블록을 만들기 때문에 블록체인의 분기가 발생하지 않는다. 따라서 한 번 확정된 블록은 변경되지 않기 때문에 파이널리티를 확보할 수 있다. 그리고 PoW와 같이 조건을 만족시킬 때까지 계산을 반복하지 않아도 되기 때문에 매우 고속으로 동작한다. 

 

모든 참가자가 리더의 움직임을 감시해 거짓말이라고 판단하면 다수결로 리더 교체를 신청할 수 있기 때문에 장애에 매우 강력한 내성을 가진 알고리즘이다.

 

반면 언제나 참가자 전원과 의사소통을 해야 하기 때문에 참가자가 증가하면 통신량이 증가하고 처리량이 저하된다. PBFT는 수십 개의 노드가 한계다.

 

■ Sieve

실행 결과 전송과 결과 전송으로 흐름이 나뉜 것이 특징이며 합의 형성 전 단계에서 실행 결과를 검토해 결과가 다른 경우 중지(Abort)시킨다.

 

■ Paxos

가장 유명한 합의 알고리즘의 하나다. Paxos의 특징은 과반수의 동의를 얻었다면 그 동의 내용이 나중에 변경되지 않는다는 점이다. 리더가 부정을 저지르는 경우 동기화되지 않는다. 그리고 멤버가 거짓으로 신고한 경우에도 동기화가 되지 않기 때문에 악의를 가진 참가자가 있는 환경에서 운영하기에는 적절하지 않다.

 

■ Raft

리더 선출 구조 때문에 멤버가 양분돼도 각 커뮤니티별로 계속 동작하지만 과반수에 달하지 못하는 커뮤니티는 로그가 쌓이기만 할 뿐 완료(Commit)되지 않는다.

 


출처: 블록체인의 구조와 이론_아키하네 요시하루, 아이케이 마나부 지음