카카오 블록체인 Klaytn의 합의 알고리즘 A to Z (https://if.kakao.com/2022/session/46) 를 정리한 내용입니다.
1. 합의 알고리즘이란?
- 비잔틴 오류 허용 문제를 해결하며 발전
- 분산 시스템에서 각 노드 간 데이터 동기화 문제를 효율적으로 해결하기 위해 발전.
- 비동기 분산 시스템에서 하나의 노드만 장애가 난다면 비잔틴 문제를 해결할 수 있는 분산 알고리즘은 존재할 수 없다는 것이 1985년 증명이 되었다. -> 따라서 네트워크 상황과 어플리케이션 특성을 고려하여 설계하는 것이 중요.

2. 블록체인에서의 합의 알고리즘
- 기존의 분산시스템과 유사함.
- 하지만 public blockchain 환경에서는 "외부에서 언제든지 접근하여 동기화를 진행할 수 있다." 는 특성 때문에, 제한된 환경보다 더 합의가 어렵다.
- 합의 알고리즘 예시
- PoW : 채굴이라는 과정을 통해 가장 먼저 해쉬를 찾는 노드의 제안으로 합의를 진행. 전체 시스템 중 49%의 노드가 비잔틴 행위를 하더라도 시스템이 유지. ex) 비트코인, Ethereum 1.0
- PoS : 지분을 기반으로 대다수의 지분을 가진 노드들이 동의하여 합의를 진행. ex) Klaytn, Ethereum 2.0 등
- Broadcase-based BFT : PBFT, IBFT 등 제안자의 제안에 합의 참여자들이 투표를 통해 동의하는 합의 알고리즘. 33%의 노드가 비잔틴 행위를 하더라도 시스템이 유지. ex) Klaytn, Tendermint, Algorand, Apotos 등
3. Klaytn 합의 알고리즘
- PBFT 를 개선한 IBFT 알고리즘을 사용
- 1초 내에 합의 과정을 모두 완료하여 한번 합의된 블록은 번복되지 않는 합의 알고리즘
- IBFT 를 개선하여 블록체인 코어를 개발한 플랫폼 (Klaytn, Jp Morgan Quorum)
- 추구하는 방향 : 실시간 서비스(liveness, low latency), 번복 불가능(Absolute finality)
1) 합의 참여자 선정
: 500백만 클레이를 스테이킹하여 Governance Council (GC) 에 참여해야한다. 랜덤함수를 통해 GC 에 포함된 사람들 을 무작위 추출하여 Committee를 구성한다.
2) 블록 제안자 선정
: Committee 에 속한 사람들 중 Staking 양을 기반으로 랜덤하게 블록 별 제안자를 선정한다. 이 경우 지분이 상당히 많은 사람에 의해 블록 제안이 중앙화 될 가능성이 있다. 이에 따라 지니 계수를 도입하여 staking 비율의 불균형을 일부 해소한다.


3) 합의 동작 과정
: 최종적으로 2/3 이상의 합의 참여자로부터 commit 메세지를 받으면 블럭을 ledger 에 업데이트한다.

4) 블록 제안자 교체

5) locking mechanism
: 이 메커니즘을 통해 한번 확정된 블럭이 다시 번복되지 않도록 한다.

4. Klaytn 합의 알고리즘 추후 개선 방향
: 개인적으로는 파이프라이닝이 재밌어 보인다.

'BlockChain > Blockchains' 카테고리의 다른 글
[Klaytn] 블록체인을 활용한 투표와 의사결정 (0) | 2022.12.14 |
---|---|
비잔틴 장애 허용 문제 (0) | 2022.12.14 |
[Hyperledger Fabric] 개념 정리 및 활용 프로젝트 예시 (0) | 2022.08.22 |
EIP-1155: Multi Token Standard (0) | 2022.08.12 |
EIP-721: Non-Fungible Token Standard (0) | 2022.08.12 |