BlockChain/Blockchains

[Klaytn] 합의알고리즘

동현 유 2022. 12. 14. 16:39
카카오 블록체인 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 합의 알고리즘 추후 개선 방향

  : 개인적으로는 파이프라이닝이 재밌어 보인다.