클레이튼의 태생
이더리움의 비잔티움 버전 fork해서 만듬
합의
1. 합의 알고리즘 종류
- Public 블록체인 : PoW, PoS 등등
- Private 블록체인 : PBFT, Raft 등등
* BFT(비잔티움 결함 허용)
- 참여 node 수 제한/성능 높임
- 분산화 약화/투명성 저하
2. 클래이튼 합의 알고리즘
- IBFT(이스탄불 비잔티움 결함 허용)
- 공개를 통한 개인적인 합의 신뢰 모델(private consensus with public disclosure)
3. IBFT 설명
1. 핵심 : 한 node가 블록을 생성하고 그걸 나머지 node가 증명하는 방식
이때 블록을 생성하는 node는 라운드 로빈 방식으로 선택됩니다.
2. 총 5단계로 합의가 결정됨
1) propose
- 합의에 참여하는 node 중 블록을 생성할 node를 선정
2) pre-prepare
- 블록을 생성한 node가 다른 node들에게 블록을 제안하는 단계
3) prepare
- 검증자 node들이 블록 제안을 잘 받았다고 자신을 제외한 node들에게 메시지를 보내는 단계
- 이 단계에서 시스템은 총 몇 개의 node가 살아있는지 확인할 수가 있다.
4) commit
- proposer에게 받은 블록을 수락할 것인지 다른 node들과 소통하면서 결정하는 단계
- 자신을 제외한 node에게 proposer에게서 받은 블록이 괜찮은지 잘못되었는지 응답을 보낸다.
- 즉, 이 단계에서 finality가 정리가 된다.
5) reply
- 만약 3분의 2 이상이 블록 승인을 하면 다음 단계로 넘어간다.
3. IBFT 장/단점
장점 : 합의가 이루어지면 그 즉시 완결성을 갖는다.
단점 : 합의 node가 많아지면 통신량이 기하급수 적으로 늘어난다.
3. 도식
- proposer(블록을 생성하는 node)
- validator (생성된 블록을 검증하는 node)
3. 클래이트 노드의 구성
- 합의를 이루는 소수 private 노드
- 블록 생성 결과 접근 및 검증 노드
블록 생성 및 전파
1. 블록 생성 주기 및 간격
- 블록 생성 주기 : Round라고 명칭 한다.
- 블록 생성 간격 : 1초
즉, 매 round마다 블록이 생성된다.
2. proposer과 vaildator 선정 과정
- proposer 선정 조건
- 무작위로 Goverance Coucil node 중에서 뽑음
- 각각의 합의 node가 가장 최근의 block header에서 파생된 난수를 사용하여
자신이 round에서 proposer로 선택되었다는 것을 증명한다.
* Goverance Coucil node
- 모든 합의 노드들
* vaildator
- Goverance Coucil node들 중에서 합의에 참여하는 node.
3. block 제안과 검증
1) proposer는 자신이 proposer로 뽑힌 증거는 다른 합의 node들에게 알립니다.
* 사용하는 증거는 제안자의 공개키를 통해 입증 가능한 암호 증명을 사용합니다 (전자서명 방식)
2) validator들은 proposer에게 왜 자신들이 Goverance Coucil node들 중에서 validator 뽑혔는지 증거와 함께 알려준다.
3) proposer는 proposer와 validator들이 정해지면 transaction pool에서 transaction을 가져와서 block을 생성
4) 최종적으로 proposer와 합의하며 새로 생성된 block에 동의하며 마무리
4. 블록 전파
- validator들이 합의에 도달하게 되면 새로운 block이 모든 Goverance Coucil node에 전파가 되면서 round가 끝납니다.
- 이후에는 proxy node들을 통해서 end point node들에게 block이 전파됩니다.
네트워크 구조
CNN : 합의를 담당하는 node들 network
PNN : CN이 운영하는 Core Cell에 속해 있는 PN들 간의 network
Bootnode : 새로 등록된 node가 network에 등록되고 또 다른 node에 연결할 수 있도록 돕는 클레이튼에서 운영하는
특수한 node입니다.
- CN Bootnode : 공개 안됨.
- PN, EN Bootnode : 공개됨.
- PN bootnode : 허용된 proxy node만 등록할 수 있게 해 줌, EN과 연결할 수 있도록 도와줌
- EN bootnode : 어떤 proxy node에 연결해야 할지 end point node들에게 정보를 제공
1. EN이 Block 정보를 얻는 방법
1) Core Cell Network에 존재하는 PN을 통해서 Block 정보를 얻는다. (이 방식이 더 빠르고 신뢰도 높은 Block 정보를 받는다)
2) 연결된 EN을 통해서 Block 정보를 얻는다.
코어 셀
1. 역할
- 합의를 담당합니다.
2. 운영 방식
- 하나의 core ceil은 하나의 CN이 운영을 합니다.
- Core cell은 한 개의 CN(Consensus Node)와 여러 개의 PN(Proxy Node)로 운영이 됩니다
3. 구조
- CN + PN으로 구성되어 있음
- Node가 CN이 되기 위해서는 까다로운 조건이 필요하며, CN는 합의를 빠르게 하기 위해서 각자가 다 연결되어있는 구조
CN은 외부와 직접 접촉이 안된다.
4. CN이 되는 조건
- Physical core : 40개 이상
- RAM : 256G 이상
- HDD : 14TB 이상 (1년 치 데이터양)
- Network : 10G 이상
5. 접근 방법
- CN에 접근할 수 있는 방법은 CN 운영하는 Core cell안에 있는 PN을 통해서 접근이 가능하다.
6. Core Cell Nework위 구조
- 1대의 CN
- 2대 이상 PN
- PN의 존재 이유
- EN들이 CN에 바로 붙게 되면 CN의 합의를 처리하는 과정에 부하를 주기 때문에 PN이 대신 EN과의 연결을 처리합니다.
- PN은 CN을 보호해주는 역할입니다.
성능 향상 및 확장 방법
1. 확장이 필요할 때
- 일반적 : 서버 늘리고 requrest 분할 처리, 그러나 block 체인에서는 node를 늘리면 늘린 만큼 정보를 각 node에게 전달
해야 돼서 느려진다. 그래서 node가 늘어난다고 성능이 늘어나진 않는다.
- 클레이튼 : node 자체의 성능을 올림.
2. 성능 향상 조건
- 하나의 CN이 빠르다고 해서 Core cell의 성능이 올라가는 것은 아니다.
- 전체가 다 동일한 스펙에 맞추어야 성능 향상이 되어야 한다.
서비스 체인
1. 정의
- 메인 넷과 연결된 독립적으로 운영되는 블록체인
2, 존재 이유
- 확장성을 위해서 나옴
3. 언제 쓰나?
- 특별한 node환경에서 BApp이 설정되어야 하는 경우
- 보안 수준을 맞춤으로 설정해서 운영하고 싶을 때
- 많은 처리량을 요구해서 메인 넷에 배포시 경제성을 낮을 때
- 독립된 서비스 공간을 구축해서 필요할 때 메인넷에 신뢰를 고정시킬 때 사용.
4. 제한 사항
- 제한된 transaction 만 사용
- 클레이 전송도 제약됨.
5. 서비스 체인 구조
이더리움과 클레이튼의 차이
1. 이더리움
- 단일 네트워크
- 누구나 블록을 생성할 수 있음
- 가장 먼저 블록을 만들고 많이 전파해야 함. (PoW 방식)
* 마이닝 node : 블록을 쓰고 네트워크에 전하한 노드
2. 클레이튼
- Tow Layer Architecture Trust Model
(Core Cell Network + End Point Network)
- 매 round마다 합의 node들 중 하나가 뽑혀서 블록을 씀
'내맘대로 Study > 블록체인' 카테고리의 다른 글
[블록체인] token 과 coin 비교 (0) | 2022.04.20 |
---|---|
[solidity] 개발자를 위한 속성 문법 (2) | 2022.04.11 |
[클레이튼] smart contract 배포 과정 이해하기 (0) | 2022.04.05 |
[클레이튼] 테스트 klaytn wallet 만들기 (0) | 2022.04.04 |
[클레이튼] 기존 플랫폼과의 비교 (0) | 2022.03.29 |