합의 알고리즘(Consensus Algorithm)
1. 합의 알고리즘
- 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘
- 합의 모델, 합의 방식, 합의 메커니즘 또는 합의 프로토콜 이라고도 불림
- 블록체인의 데이터는 중앙화된 서버 대신 전세계에 흩어진 수많은 노드에 보관되기 때문에, 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다.
1.1. 작업 증명(PoW, Proof of Work)
- 블록생성 시간동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계되어있음
(좋은 장비로 블록을 생성하려고하면 되는 구조 -> 그래픽카드 가격 상승의 원인)
- 작업증명은 시빌 공격과 같은 블록체인 네트워크에 대한 각종 공격을 막을 수 있다고 증명된 유일한 알고리즘
- 시빌 공격 : 공격자가 실제로는 한명인데 마치 여러명인것처럼 속여서 네트워크상의 여러 노드를 제어함
- PoW의 장단점
1.2. 지분 증명(PoS, Proof of Stake)
- 지분을 많이 가지고 있는 노드에게 블록을 생성할 권한을 준다.
- 쉽게 말해 코인?을 많이 가지고있으면 블록에 생성할 권한을 준다
- 이더리움이 PoS로 변경 중
- 에너지 소모가 적고, 코인을 가진 노드 누구나 네트워크에 허가없이 참여하기 때문에 분산화가 더 잘되어 많은 노드가 의사결정 과정에 쉽게 참여할 수 있다.
- PoS의 장단점
1.3. 위임 지분 증명(DPoS, Delegeted Proof of Stake)
- PoS에서 변형된 것으로, 시스템의 지분을 가진 각 노드가 투표를 통해 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명하는 개념
- 모든 노드의 자격을 가진 주주들이 블록생성에 참여하는 대신, 네트워크의 모든 노드의 투표 결과로 선출한 '상위 노드'에게 권한을 위임해 합의하도록 하는 방식
1.4. 비잔틴 장애 허용(BFT, Byzantine Fault Tolerance)
- 장애가 있더라도 전체의 3분의 1을 넘지 않는다면 시스템이 정상 작동하도록 허용하는 합의 알고리즘
1.5. 프랙티컬 비잔틴 장애 허용(PBFT, Practical Byzantine Fault Tolerance)
- 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어짐
- 네오, 질리카, 하이퍼레저, R3, ITC, 텐더민트 등에서 사용
1.6. 합의 알고리즘의 종류와 장단점 (정리)