devops

Klaytn의 합의 방식과 블록, 네트워크 구조 본문

개발/Blockchain

Klaytn의 합의 방식과 블록, 네트워크 구조

vata500 2022. 8. 30. 20:50
반응형

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

높은 보안과 투명성을 유지하면서, 공개를 통한 합의 신뢰모델을 채택하고 있다. 이는 합의 달성이 가능한 소수의 private 노드와 블록 생성 결과에 접근과 검증이 가능한 노드로 구성된다.

매 라운드마다 Proposer를 뽑고, 나머지 노드는 Validator가 되어 검증을 하게된다. x된 Validator3은 검증자로서 제대로 작동을 못하는 상태로 가정한다. (악의적인 공격도 포함)

Proposer는 pre-prepare 단계에서 블록을 만들어서 다른 노드에 제안을 하게된다. prepare 단계에서 validator 1, 2은 자신을 제외한 다른 노드들에게 잘받았다는 메시지를 다시 보낸다. 단, Validator 3은 보내지 못한다. 

마지막 commit 단계에서 proposer에서 받은 블록을 수락할 것인지 소통하여 결정하는 단계다. 각자 블록 검증 응답을 보낸다. 만약 2/3 가 승인하면 넘어가게된다.

블록 생성 사이클

블록 생성 주기를 라운드(round)라고 한다. 클레이튼의 경우, 블록 생성 간격은 1초 정도 소요된다. proposer를 무작위적으로 거버넌스 카운슬 노드들 중에서 뽑는다. 그리고 복수의 Validator도 선택된다. 

거버넌스 카운슬, 셀트리온과 아모레퍼시픽, LG International은 어떻게 참여를 하게 된건지...

각각의 합의 노드가 최근 블록 헤더에서 파생된 난수를 사용해서 자기가 라운드에 선택되었는지 증명하는 과정을 거친다.

Proposer가 제안자가 되면, 자신이 제안자라는 증거를 다른 노드에 전달해서 알린다.

  • 제안자의 공개키를 통해 입증가능한 암호 증명을 사용
  • 제안자와 위원회가 알려지는 제안자가 블록을 만들고 합의

합의를 통해 블록을 생성하게 되면, 프록시 노드를 통해서 앤드포인트 노드들에게 블록을 전파한다. 

클레이튼 네트워크 구조

  • Core Cell Network : 전체 네트워크안에 존재하는 코어셀 네트워크 (빨간색)
  • Endpoint Node Network : Core Cell을 둘러싼 Endpoint Node Network가 존재 (파란색)
  • CNN : Consensus Node Network
  • PNN : Proxy Node Network
  • ENN : Endpoint Node Network

CN은 까다로운 조건에 맞춰서 합의하는 노드이며, CN에 다수의 PN이 연결되어 있다.

CN은 외부와 직접적인 연결이 불가하며, 빠르게 블록 생성해야한다. CN은 PN을 통해서 외부와 통신한다.

외부의 EN은 Core Cell 내부의 PN과 통신하여 메시지를 주고 받는다. EN은 PN와 연결되면 신뢰도 높은 블록을 받을 수 있다. 

EN은 누구나 될 수 있다. 서비스 제공자 역할을 하는 것이 Endpoin Node다.

PN Bootnode, EN Bootnode는 신규 진입 노드들이 타 노드들과 연결될 수 있도록 도와주는 역할을 한다.

코어 셀(Core Cell)

사용자가 많아져서 확장이 필요하면, 일반적으로 서버를 늘리거나, 요청을 분할 처리한다. 그러나 블록체인은 노드를 늘릴 수록 처리속도가 줄어들게 된다. 그래서 노드 자체의 성능을 높여야한다.

CN(합의노드) 조건

  • Physical core 40개 이상
  • 256GB RAM
  • 1년 약 14TB 저장
  • 10G 네트워크

Core Cell의 구조는 하나의 CN과 여러 대의 PN으로 구성되어 있다. BN은 연결에 필요한 자원이 제한적이며, 수도 제한적이다. 그래서 CN은 PN을 연결을 통해서 외부 Endpoin와 통신한다. 

PN은 CN을 보호함과 동시에, 여러대로 확장하여 처리속도를 높이는 방식을 활용한다.

서비스 체인

https://docs.klaytn.foundation/node/service-chain

  • 메인넷과 독립된 개별 체인, 특별한 노드환경에서 설정하거나 보안 수준을 맞춤형으로 설장하고 싶을 때 사용
  • 많은 처리량을 요구하거나, 메인넷 배포시 경제성이 낮을 때 사용
  • 가스비를 요구하지 않을 수 있음

간단히 말해서, 메인넷의 보안성을 활용해서 높은 확장성을 올릴 수 있다. 대체로 사이드체인 개념과 비슷하며 주로 P2E 등 높은 처리량이 필요한 프로젝트에 많이 활용된다.

반응형
Comments