Klaytn Design (2) : Block Generation & Propagation

Heesu
Top Klass
Published in
8 min readSep 8, 2019

안녕하세요, Klaytn 스터디그룹 Top Klass입니다.

이번 글은 Klaytn Design 2번째 시리즈로, Block Generation & Propagation 에 대해 설명합니다.

* Klaytn Design 이전 시리즈 보기 :

Klaytn Design (1) : Klaytn Network Structure, Klaytn Main Chain Network

* Klaytn Design 다음 시리즈 보기 :

Klaytn Design (3) : Accounts

  • 배경지식
    Klaytn 네트워크의 형태/구성요소
    - CNN/ENN/PNN 등의 개념
    BFT 문제
    - BFT 계열 합의 알고리즘의 개념

Block Generation Cycle

Round : Klaytn에서의 블록 생성 사이클
> 각 Round마다 1개의 새로운 블록을 생성하고, 이후 즉시 다음 Round를 시작한다.

블록 생성 간격은 네트워크 트래픽의 상태와 노드 작동 조건 등의 영향을 받을 수 있다.
> Klaytn에서는 각 Round가 약 1초간 지속되는 것을 목표로 한다.

Proposer and Committee Selection

  1. 각 Round에서는 무작위로, 또한 결정적으로 합의 노드(CN, Consensus Node) 중 하나를 생성될 블록의 Proposer로 선택한다.
  2. 이후 CN의 그룹을 Committee로 선택한다.

Klaytn 자체는 Proposer/Committee 선정 과정에 직접 관여 하지 않는다.
> 각 CN이 가장 최근 블록 헤더에서 파생된 무작위 수를 사용하여, 해당 CN이 Round에 대한 역할을 수행하도록 선택되었다는 증거를 제공하는 암호화 작업을 실행한다.

Committee의 규모는 Byzantine에 적합해야 하며, CNN의 규모가 작을 경우 모든 CN(Proposer 제외)이 Committee로 선정될 수 있다.

Block Proposer and Validation

  1. Proposer가 선정되면, Proposer는 Round에 대한 선택 증명을 모든 CN에 broadcasting 한다.
    > 선택 증명 : Proposer의 공개키에 의해 검증 가능한 암호 증명서
  2. 주어진 Round의 Committee로 선정된 CN들은 제안할 새로운 블록을 누구에게 broadcasting할 것인지 Proposer에게 통보한다(자체 선택 증명).
  3. Proposer는 TX POOL에서 트랜잭션 집합을 선택하고 이들을 블록으로 만든다.
  4. Proposer는 새로 생성된 블록에 합의하고 최종 확정하기 위해 Committee와 합의를 실행한다.

위 과정에서 사용되는 합의 알고리즘은 BFT 계열의 하나로, IBFT(이스탄불 비잔틴 결함 허용)를 채택하였다. IBFT의 동작 과정은 다음과 같다.

출처 : 인프런 — Klaytn 블록체인 어플리케이션 만들기

IBFT는 pre-prepare, prepare, commit 총 3단계의 합의 과정을 가진다. Round-Robin(RR) 방식을 통해 매 Round마다 CN들 중 Proposer를 선택하고, 나머지 노드들은 Validator가 된다. 위 그림에서 Validator 3은 검증 역할을 제대로 수행하지 못하는 Fault 노드이다.

  1. Propose
    > 합의 노드들 중 하나를 Proposer로 선정한다.
  2. Pre-prepare
    > Proposer가 블록을 생성하여 Validator들에게 제안한다.
    > 본인이 Proposer임을 증명하는 메세지를 함께 전달한다.
  3. Prepare
    > Validator 노드들이 모두 같은 Round에 있는지 파악하는 단계이다.
    > Validator 노드들은 Proposer에게 메세지를 받으면 자신을 제외한 모든 노드들에게 성공적으로 메세지를 수신했다는 사실을 알린다.
    > 위 그림에서 Validator 3은 Fault 상태이므로, 메세지를 받기만 할 뿐 송신은 할 수 없는 상태이다.
    > Prepare 과정이 정상적으로 종료되면, 시스템에서 몇 개의 노드가 정상적으로 작동하는지 파악할 수 있다.
  4. Commit
    >
    Proposer가 보낸 블록을 수락할 것인지 판단하기 위해 다른 노드들과 소통하는 단계이다.
    > 블록에 대한 찬/반 유무를 결정하여 다른 모든 노드들에 전송한다.
    > 해당 블록에 대한 합의 비율이 2/3 이상이라면 블록이 승인되어 그 즉시 블록 전파 단계로 넘어가게 된다.
    > 이 경우 블록의 Finality가 성립되며, 블록이 변경 불가능한 최종 상태가 된다.

Klaytn 이외의 다른 여러 블록체인 플랫폼들은 각자의 특성에 맞는 다양한 합의 알고리즘을 채택하고 있다.

  • Hyperledger Fabric → PBFT(Practical Byzantine Fault Tolerance)
    > IBFT 와 마찬가지로 BFT 계열이며, 합의 과정이 유사하다.
  • EOS → DPOS-BFT(Delegated Proof of Stake — BFT)
    > 기존 BFT 문제를 DPOS 관점에서 해결한 방식이다.
    > 참여 노드들의 투표를 통해 21명의 대표(BP, Block Producer)와 대표 후보자로 이루어진 대표단을 구성하며, 이후 블록 생성 및 전파 과정에는 21명의 대표만이 참여한다. 마찬가지로 RR 방식을 통해 블록을 생성한다.
    > BP 구성원 중 2/3 + 1 명(16명) 이상이 블록을 확정하면 하나의 블록이 확정된다.

Block Propagation

  1. 제안된 블록은 선정된 Committee의 2/3 이상의 서명을 받아야 성공적으로 마무리 된다.
  2. Committee가 합의에 도달하면, 새로운 블록은 모든 CN에 전파되고 합의 Round는 종료된다.
  3. 새로운 블록이 모든 CN에 전파되면, 새로 생성된 블록의 정보는 PNN을 통해 ENN에 블록 Header와 Body 데이터를 전달함으로써 모든 Klaytn 네트워크 참가자가 이용할 수 있도록 한다.

Public Disclosure and Open Validation

Klaytn 네트워크의 서비스 제공자와 최종 사용자는 자유롭게 블록 생성 결과를 검증하고 Commitee가 적절한 절차에 따라 블록을 생성했는지 여부를 확인할 수 있다.
> 블록 Header에 Committee의 서명의 2/3 이상이 포함되어 있는지 확인하는 것을 포함한다.

모든 CN은 공개 유효성 검사를 지원해야 하며, 공개 키(블록 서명시 사용)를 공개 가능한 공간(Ex. 블록 Header)에 게시해야 한다.

공개 검증이란?
- 블록 생성 과정에서 투명성을 촉진하고, 검열을 저지하며, 악의적인 행동을 방지하고자 수행하는 검증 작업이다.

Seperated Propagation Channels for Blocks and Transactions

네트워크 대기 시간은 혼잡 정도에 의해 크게 영향을 받는다. 네트워크의 처리량이 일정할 때, 트랜잭션의 수가 증가하게 되면 네트워크의 대기 시간이 비례적으로 지연된다. 이 지연 시간은 BApp 등에서 최종 사용자 환경을 보장하는 데 있어 매우 중요하므로 App 설계 시 우선적으로 고려되어야 한다.

Klaytn은 위와 같은 문제의 해결을 위해 다채널 접근법(Multichannel Approach)채택한다. 다채널 접근법은 다음과 같이 설명할 수 있다.

  • 트랜잭션과 블록에 대해 별도의 전파 채널 할당
  • 네트워크가 높은 수의 TX로 심한 정체 상태일 때도 새로 생성된 블록을 적시에 전파 가능
  • 간헐적인 네트워크 트래픽 급증에 관계없이 최종 사용자 요청에 대한 응답성능 유지

Block Rewards

각 Round에 대해 블록 보상은 사전 설정된 분배 비율에 따라 Klaytn의 토큰 경제 구조에 분배된다. 블록 보상이란 블록 처리를 위해 지불된 새로 생성된 Klay와 트랜잭션 수수료의 합계 를 말하며, 2020년 중반에는 9.6 Klay 정도가 된다.

새로 만들어진 블록의 Proposer는 CN에 지급될 보상금의 100%를 받는다. 이때 Committee는 아무런 보상도 받지 못한다. Klaytn의 경우 Proposer로 선정될 확률은 해당 CN이 차지하는 Klay 양의 영향을 받으므로, 투자하는 Klay의 양이 많을 수록 보상을 받게 될 확률이 높아진다고 할 수 있다.

Klaytn 이외의 다양한 블록체인 플랫폼에서 제공하는 블록 보상은 다음과 같다.

  • Bitcoin
    채굴된 Coin을 기준으로,
    > 1 ~ 21만개 : 50 BTC
    > 21 ~ 42만개 : 25 BTC
    > 42 ~ 63만개 : 12.5 BTC
    위와 같이 채굴된 코인이 21만개를 초과할 때마다 지급되는 보상이 50% 감소한다.
  • Ethereum
    기존에는 3 ETH를 제공하였으나, 2018년 이후 합의 알고리즘을 기존의 PoW에서 PoS로 전환하는 과도기적 과정의 하나로 제공 코인을 2 ETH로 감소시켰다.
  • EOS
    매년 자체적으로 통화 코인량이 증가하게 되는 ‘인플레이션’ 개념이 별도로 존재하며, 매년 1 ~ 5% 정도의 인플레이션이 발생한다. DPOS계열이 합의 알고리즘을 채택하여 21개의 BP를 선택하고, 전체 통화량의 1% 정도를 BP가 가져가게 된다.

발제자: 배희수

작성자: 배희수

검토자: 김지은, 이은진

Klaytn Design

#1. Klaytn Network Structure, Klaytn Main Chain Network

#2. Block Generation and Propagation

#3. Klaytn Accounts

#4. Klaytn Transactions

#5. Computation

--

--