이전자료
•
이전 까지는 기존 블록체인의 문제점을 파악을 하였다.
•
여기서부터 클레이튼을 이해하는 내용을 기술한다.
•
합의에 도달하는 종류는 여러가지가 있다.
◦
보통 Public 블록체인에서 많이 사용하는 PoW, PoS 등등
◦
Private 블록체인에서 많이 사용하는 pBFT, Raft 등등
•
보통 효율성 Private >> Public
•
Private 기반의 BFT (비잔티움 결함 허용)
◦
참여 노드 수 제한 / 성능 높임
◦
합의 노드 수를 제한하여 분산화를 약화, 투명성이 저하되는 단점이 있다.
•
클레이튼은 BFT의 이점을 잘 살려서 Public 블록체인과 잘 결합할 수 있다는 개념으로 IBFT를 합의 알고리즘으로 선택한다.
•
IBFT = 이스탄불 비잔티움 결함 허용
•
투명성을 유지하면서 Public 블록체인을 구축하고자 하였다.
•
이를 위해 다음과 같은 신뢰 모델을 선택하였다.
◦
공개를 통한 개인적인 합의 신뢰 모델
◦
Private Consensus with Public Disclosure
•
즉 합의를 달성하기 위한 소수의 Private 노드들과
•
+
•
블록 생성 결과 접근 및 검증 노드들로 구성되어있다.
IBFT
대표도
•
IBFT의 단계는 Propose, Pre-prepare, Prepare, Commit, Reply가 있다.
•
(Propose 단계)라운드 로빈방식을 선택해서 매 라운드 마다 합의 노드들 중에 Proposer를 뽑는다.
•
나머지 노드들중에 Proposer로 뽑히지 않은 노드들은 Validator라고 한다.
•
(악의적, 네트워크 단절, 고장 등)그림에서 Validator3의 역할은 검증자로서 똑바로 일을 못하는 상태이다.
•
(Pre-prepare 단계)Proposer이 다른 노드들에게 제안을 하게 되는 단계이다.
•
(Prepare 단계)Proposer에게 제안을 받은 노드들은 자신을 제외한 다른 노드들에게 잘 받았다고 연락을 하게 된다.
•
(Commit 단계)서로 요청 받은 내용에 대해 수락할 것인지, 즉 다른 노드들과 이야기해서 판단한 각자의 응답을 보낸다. 여기서 대다수가 승인하면 OK
•
Commit 단계에서 확실하게 결정이 된다. (합의 노드들끼리 통신을 이끌어내어 확신을 가진다.)
•
노드가 많아질수록 오래걸릴수도 있기 때문에 몇개의 노드만 선점한다.
◦
Validator가 엄청 많아지면 너무 오래 걸림, 정확도는 올라가지만 현실과 이상치에 절충하는 방법