클레이튼 이해하기

bolee·2022년 6월 22일
0
post-thumbnail

다른 블록체인의 특징과 클레이튼을 비교하여 클레이튼의 장점과 특성을 알아볼 것이다.

합의 (Consensus)

합의 알고리즘의 경우 여러 가지가 존재하게 된다.

  • Public 블록체인: PoW, PoS 등등
  • Private 블록체인: pBFT, Raft 등등

보통 Private 블록체인이 Public 블록체인보다 효율적으로 합의에 도달할 수 있다. 특히 BFT 기반 Private 블록체인의 경우 아래와 같은 특징을 가지고 있다.

BFT(비잔티움 결함 허용)

  • 참여 노드 수를 제한하여 높은 성능과 효율성 달성
  • 합의 노드 수를 제한하기 때문에 분산화를 약화
  • 합의 내용이 소규모 그룹에게만 공개되기 때문에 투명성이 저하됨

반면에 클레이튼은 BFT의 장점을 살려 Public 블록체인과 결합할 수 있다는 믿음을 토대로 IBFT(이스탄불 비잔티움 결함 허용) 합의 알고리즘으로 채택하였다.

강력한 보안 및 투명성을 유지하며, 엔터프라이즈급 성능 및 안정성을 제공하는 퍼블릭 블록체인을 지향하고 있다.

이러한 목표를 달성하기 위해 공개를 통한 개인적인 합의 신뢰모델(private consensus with public disclosure)을 채택하고 있다.

구성 요소

  • 합의를 달성하는 소수의 private 노드
  • 바깥에서 블록체인 생성 결과를 공개적으로 접근 및 검증할 수 있는 노드

IBFT (이스탄불 비잔티움 결함 허용)

크게 3단계의 합의 과정이 존재한다.

  • pre-prepare 단계
  • prepare 단계
  • commit 단계

라운드 로빈(Round Robin) 방식을 선택해 매 라운드마다 Proposer(제안자)를 뽑는다.

라운드 로빈 스케줄링(Round Robin Scheduling, PR)
시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum)로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘

Proposer를 제외한 나머지 노드들은 Validator(검증자)가 된다.

  1. Propose 단계
    • 한 노드가 Proposer로 선정된다.
  2. Pre-Prepare 단계
    • Proposer 노드가 블록을 만들어서 다른 노드들에게 제안하고 전달한다.
  3. Prepare 단계
    • Validator 노드들이 Proposer 에게서 메세지를 받으면 자신을 제외한 다른 노드들에게 메세지를 잘 받았다는 메세지를 보낸다.
    • 이 단계가 끝나면 시스템에서 총 몇 개의 노드가 살아있는지(작동하는지) 알 수 있다.
    • 또한, Validator 노드들이 같은 단계에 있는 지도 확인할 수 있다.
  4. Commit 단계
    • Proposer 노드에게서 받은 블록을 수락할 건지 다른 노드들과 소통하며 결정하는 과정
    • 2/3 이상의 Validator 노드들이 합의를 했다고 계산되면 블록 승인이 되고 다음 합의 단계로 넘어가게 된다. 즉, commit 단계에서 결정이 되고 Finality(불변성) 정리가 된다.
    • Finality(불변성)가 부재가 없고 변경 불가능한 최종적인 상태가 여기에서 결정된다.

장점

  • 합의 노드들끼리 통신을 통해 합의를 이끌어내고 그 즉시 완결성을 가진다.

단점

  • 합의 노드들이 많아지면 많아질수록 통신량이 급격하기 증가한다. 하지만, 합의 노드의 일부만 뽑아 IBFT 형태를 유지하도록 설정되어 있다.

블록 생성 및 전파

블록 생성 사이클 (cycle)

  • 클레이튼의 블록 생성 주기를 라운드(round)라고 한다.
  • 각 라운드는 새로운 블록을 생성하고 끝나는 즉시 새로운 라운드가 시작된다.
  • 블록 생성 간격은 약 1초 정도이다.

제안자와 위원회 선택 (Proposer and Committee Selection)

  • 각 라운드에서 블록을 생성할 Proposer를 무작위(randomly)이지만, 결정적(deterministically)으로 Governance Council 노드들 중에서 뽑는다.

Governance Council
코어 셀(Core Cell)들의 집합, 즉 합의 노드들을 말한다.

  • 각각의 합의 노드가 가장 최근의 블록 헤더에서 파생된 난수를 사용해 자기가 라운드에 선택되었는지 증명하게 되는 암호화 작업을 한다.

블록 제안과 검증 (Block Proposal and Validation)

  1. 노드가 제안자로서 선택이 되면, 자신이 그 라운드에서 제안자로서 선택된 근거를 다른 합의 노드들에게 알리게 된다. 이 때, 그 근거로써 제안자의 공개키를 통해 입증가능한 암호 증명을 사용한다.
  2. 해당 라운드에서 위원회로 뽑힌 합의 노드 그룹은 제안자에게 자신들이 왜 위원회 멤버로 뽑혔는지 증거와 함께 알려준다.
  3. 이제 누가 제안자고 누가 위원회인지 파악이 되면 제안자가 트랜젝션 풀에서 트랜젝션들을 선택하고 정렬해서 블록을 만들고 위원회와 합의를 진행한다.

블록 전파 (Block Propagation)

  • 제안된 새로운 블록이 성공적으로 합의를 이루게 되면, 해당 블록은 모든 합의 노드들에게 전달이 되고 합의 라운드는 종료된다.

  • 그 후 프록시 노드를 통해 엔드포인트 노드들에게 전달된다.

네트워크 구조

전체 네트워크 안에는 코어 셀 네트워크(Core Cell Network)가 존재하고, 코어 셀 네트워크를 둘러싸는 엔드포인트 노드 네트워크(Endpoint Node Network)가 존재하게 된다.

하나의 코어 셀은 하나의 참여자가 운영하게 되는데, 한 개의 CN과 이 CN과 연결되어 있는 여러 개의 프록시 노드(Proxy Node, PN)로 운영된다.

CN으로 참여하기 위해서는 까다로운 조건들을 만족해야 하며, CN들은 서로 계속 소통할 수 있도록 각자 연결되어 있다.
합의하는 과정에서 서로 최대한 빨리 커뮤니케이션을 해야하기 때문에 다 연결되어 있는 것이다.
또한 각 CN들은 외부와 직접적으로 접촉할 수 없으며, 매우 Private한 환경이기 때문에 합의 노드로서 블록을 만드는 결정에 빨리 도달할 수 있는 장점이 있다.
각 CN은 코어 셀 참여자로서 자신이 운영하고 관리해서 믿을 수 있는 PN을 앞에 내세워 접근하는 컨셉을 가지고 있다.

엔트포인트 노드(Endpoint Node, EN)들은 코어 셀 안에 있는 PN과 연결해서 정보를 주고 받을 수 있다. 물론 EN끼리도 연결해서 정보를 주고 받을 수도 있다.
하지만 EN이 PN과 연결하면 더 빠르고 신뢰도 높은 정보와 블록을 받을 수 있다.
EN이 되기 위한 조건은 없으며, 아무나 EN이 되어 웹이나 모바일 같은 클라이언트들에게 정보를 제공할 수 있다. 즉, 서비스 제공자로서의 역할을 한다.

PN/EN/CN Bootnode들는 새로운 들어온 노드가 네트워크에 등록하고 다른 노드와 연결할 수 있도록 도움을 주는 클레이튼에서 운영하는 특수 유형 노드들이다.

  • CN Bootnode: CN 네트워크 안에 존재하면서 공개되지 않는다.
  • PN Bootnode: 공개되며, 허용된 PN들만 등록할 수 있게 한다. 또한 EN과 연결할 수 있게 도움을 준다.
  • EN Bootnode: 공개되며, 어떤 PN과 연결해야 되는지 EN들에게 정보를 제공하는 역할

코어 셀 (Core Cell)

합의를 담당하는 코어 셀에서 사용자가 많아져서 확장이 필요할 경우가 존재할 것이다.

  • 일반적인 경우
    • 서버를 늘리고 Request 분할 처리
  • 블록체인의 경우
    • 노드를 늘려도 늘인큼 정보를 각 노드들에게 더 전달해야하기 때문에 처리 속도가 더 늘어날 수 있다. 즉, 가 늘어난다고 해서 성능이 늘어나지 않는다.
    • 노드 자체의 성능을 늘린다. 예를 들어 램이나 CPU의 성능을 늘이는 것이다.

CN (합의 노드) 참여 조건

  • Phsical core가 40개 이상
  • 256 GB RAM
  • 1년치의 데이터 약 14 TB 저장
  • 10 G 네트워크

그러나 참여자의 합의 노드들 중 한 노드의 성능이 특별히 좋다고 해서 코어 셀의 네트워크가 빨라지는 것은 아니다.
성능이 더 낮은 노드들은 자신의 스펙에 맞게 운영하고 있기 때문이다.
즉, 코어 셀에 더 높은 성능 향상을 위해서는 전체가 다 똑같은 스펙에 맞춰서 성능 향상을 시켜야 한다.

코어 셀의 구조에서 하나의 CN과 여러대의 PN으로 이루어져 있다.
PN이 여러 대 존재하는 이유는 CN은 연결에 필요한 자원이 제한적이고 CN의 수가 제한적인다. 따라서 PN을 이용해 EN의 연결을 지원하는 것이다.

즉, CN은 합의를 담당하는 노드이기 때문에 네트워크 연결로 인한 성능에 저하가 일어나면 안된다.
그래서 PN이 CN을 보호해주는 역할이고, PN을 여러 대 둠으로써 확장성 문제도 해결할 수 있다.

서비스 체인 (Service Chain)

클레이튼의 서비스 체인은 메인 넷(Main Network)과 연결된 독립적으로 운영되는 블록체인이다.

확장성을 기반으로 나온 아이디어로 아래 상황에서 사용된다.

  • 특별한 노드환경에서 설정되어야 하거나
  • 보안 수준 맞춤형으로 설정해 운영하고 싶을 때 (ex. Private 블록체인을 운영하고 싶을 때)
  • 많은 처리량을 요구하는 서비스라서 메이넷에 배포 시 경제성이 낮을 것으로 판단될 때

서비스 체인이 메인 체인에 신뢰를 고정시킨다고 보면 된다.
서비스 체인과 메인 체인간의 소통이 자유로운 것은 아니고 오직 제한된 트랜젝션만이 사용될 수 있다.

즉, 서비스 체인은 독립된 서비스 공간을 구축해 필요할 때 메인 넷에 신뢰를 고정하는 것이다.

이더리움 vs 클레이튼

이더리움(Ethereum)

  • 단일 네트워크이다. 즉, 네트워크 구성원 간의 구분이 없다.
  • 누구나 블록을 만들 수 있지만, 가장 먼저 블록을 만들고 많이 전파해야 한다.
  • 블록을 추가하게 되면 보상을 받게 되는 구조이다. 즉, 합의 프로토콜로 Proof-of-Work(작업 증명)을 채택하고 있다.
  • 이더리움에서는 마이닝 노드(mining node) 즉, 블록을 쓰고 네트워크에 전파하는 노드(채굴하는 노드)가 누가 될 지 모르기 때문에 최대한 많은 노드들에게 붙어야 한다.(정보를 빠르게 받기 위해)

클레이튼(Klaytn)

  • 단일 네트워크가 아닌 두 개의 레이어를 가지고 있는 Two Layer Architecture Trust Model
  • 매 라운드마다 합의 노드들 중 하나가 제안자(Proposer)로 뽑혀 블록을 생성하고 추가한다.
  • EN이 코어 셀에 붙어 정보를 받아온다.
  • 메인 넷과 부분적으로 소통할 수 있으며, 독립된 서비스 공간을 구축하는 서비스 체인이 있다.

참고 자료
"SEJONG IT EDU 강사님", 인프런 Klaytn 클레이튼 블록체인 어플리케이션 만들기 - 이론과 실습
클레이튼 공식문서
라운드 로빈 스케줄링(Round Robin Scheduling, PR) 위키백과

0개의 댓글