안녕하세요, 햅뽀이입니다.
어제에 이어 오늘도 클레이튼에 대해서 알아보는 시간을 가져봅니다.
1편에서는 클레이튼의 확장성(Scalability), 완료성(Finality), 합의(Consensus), 이스탄불 비잔티움 결함 허용(IBFT) 까지 알아보았습니다.
이번에는 블럭생성 및 전파, 네트워크 구조 까지 알아보겠습니다.
1. 블럭생성 및 전파
- 클레이튼의 블럭생성 사이클는 라운드(Round)라고 명명 합니다.
- 각 라운드는 끝나는 동시에 새로운 라운드가 시작이 됩니다.(연속해서 라운드 시작/종료를 반복합니다.)
- 각 라운드 간격(블록 생성시간)은 대략 1초 정도 됩니다.
- 라운드 시작시 최초 제안노드는 무작위로 **클레이튼 합의노드(Governance Countil)들 중에서 선정됩니다.
- 여기서 잠깐..!! **합의노드(Klaytn Governance Council)이란?
: Klaytn Governance Council (KGC)은 클레이튼 노드를 운영하고 클레이튼 개발을위한 의사 결정에 참여하는 조직입니다. 클레이튼 네트워크의 실질적인 운영자라고 할 수 있습니다. KGC는 주로 클레이튼에서 초대받은 신뢰할 수있는 아시아 기업으로 이루어져 있습니다. 클레이튼 메인넷 출시 시점은 18 개의 기업으로 시작되며 현재 논의중인 기업이 참여하고 곧 약 30 개로 확장 될 것입니다. 메인넷 이후 네트워크 안전성이 확인되고 컨센서스 알고리즘에 문제가없는 경우, KGC 회원들을 추가로 받아 들일 수도 있습니다. - 아래 그림에서 동그라미가 각각의 합의노드들 이라고 볼 수 있습니다. 그중에서 파란색 노드가 현재 라운드의 제안자로 선정된 것이라고 보고 나머지 노드는 검증자 노드라고 보시면 됩니다.
- 각각 노드들(제안노드, 검증노드)은 자신이 제안/검증 노드라는 사실을 Public Key를 통해 입증가능한 암호증명 방법으로 증명합니다. 그래서 서로 문제가 없다는 것이 확인되면 블록 생성단계를 진행합니다.
- 생성된 블럭은 PN을 통해 최종 EN에 까지 블럭이 전파됩니다.(PN, EN은 아래에서 설명)
2. 네트워크 구조
아래 그림과 같이 클레이튼 네트워크는 크게 CNN/PNN/ENN 세개의 그룹으로 이루어집니다.
CNN(Consensus Node Network)은 블록생성/검증을 위한 노드들의 집합입니다. CNN에서는 외부 네트워크망과 연동되지 않습니다. 적은 수의 노드들만 존재 하기 때문에 성능 향상을 가져 올 수 있습니다.
PNN(Proxy Node Network)은 CNN으로 부터 검증된 블럭을 전달받아 ENN으로 블럭데이터를 전송하는 역할을 합니다. PNN은 ENN에 블럭 전송의 기능만 맡기 때문에 수십 수백대의 ENN과 연동이 가능합니다.
ENN(Endpoint Node Network)은 최종 단위의 노드로써 PNN으로 부터 블럭 정보를 받아 최종 Client와 연동되는 노드들의 집합입니다. ENN은 블럭생성/전파에는 전혀 관여할 수 없습니다. ENN의 참여조건은 없기 때문에 누구나 구성할 수 있습니다.
Core Cell : 하나의 CNN과 이와 연동된 여러개의 PNN으로 이루어져 있고, 이 하나의 Set이 Governance Council 하나라고 보시면 됩니다. Core Cell에 참여하기위해서는 신뢰할 수 있는 기업급이 되어야합니다.
CN/PN/EN Bootnode : 각각의 네트워크망 안에는 Bootnode가 존재합니다. 각각 부트노드는 각각의 네트워크망 안에서 새로운 Node가 생기거나 사라지는 경우 이를 관리하는 노드이며, 클레이튼에서 직접 관리하고 있습니다.
블록체인 외부에서 서비스를 할 경우 EN과 서로 통신하며 서비스를 하면 됩니다.
클레이튼은 대체로 합리적인 방식을 채택한 것 같습니다. 성능과 확장성을 동시에 잡을 수 있는 방향으로 말이지요. CN을 신뢰할 수 있을만한 기업을 참여시킴으로써 네트워크 사용자에게 신뢰감을 올려 주며 많은 수의 노드로 운영되지 않기 때문에 성능을 극대화 할 수 있습니다.
거기에 각각 최소한의 PN을 두어 실제 최종 서비스에 운영되는 EN에 블록정보 전파를 전담 시키는 구조로 만들었습니다. PN은 블럭 전파의 업무를 전담하여 수많은 EN과 통신이 가능하도록 말이죠. 만약에 시스템 유저가 더 늘어나서 더 확장성이 필요하면, PN의 수를 더 늘려서 추가로 수많은 EN을 관리 할 수 있도록 됩니다.
오늘은 여기까지 정리하도록 하겠습니다.
읽어주셔서 대단히 감사합니다..!!
지난 글
[Klaytn, 클레이튼] 클레이튼에 대해서 알아보자 1편