동현 유
척척석사
동현 유
전체 방문자
오늘
어제
  • 분류 전체보기 (178)
    • BlockChain (48)
      • [paper] Consensus (13)
      • [paper] Execution (19)
      • [paper] Storage (5)
      • [paper] ZKP (1)
      • [paper] Oracle (1)
      • Blockchains (9)
    • Java (19)
      • Java의 정석 (13)
      • Java 파헤치기 (5)
    • Python (20)
      • Python 뜯어보기 (6)
      • 데이터 분석 기초 (5)
      • Python 기초 강의 (6)
      • Python 기초 강의 부록 (3)
    • Golang (0)
    • MySQL (3)
      • programmers (2)
      • 기본 문법 (0)
    • 웹 프로젝트 (IBAS) (36)
      • Django 레거시 (14)
      • SpringBoot api 개편 (14)
      • Infra (3)
      • 서버 장애 기록 (4)
      • 신입팀원 교육 자료 (1)
    • CS (30)
      • Operating System (22)
      • Computer Security (3)
      • Network (4)
      • DBMS (1)
    • 책 (10)
      • 도메인 주도 설계 철저 입문 (9)
      • Real MySQL 8.0 (1)
    • BOJ 문제 풀이 (3)
    • 이러쿵저러쿵 (7)
    • 회고 (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
동현 유

척척석사

[Klaytn] 합의알고리즘
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 합의 알고리즘 추후 개선 방향

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

 

'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
    동현 유
    동현 유
    Fault Tolerant System Researcher for more Trustful World and Better Lives. (LinkedIn: https://www.linkedin.com/in/donghyeon-ryu-526b8a276/)

    티스토리툴바