하이퍼레저 패브릭의 합의 알고리즘은 어떤 방식인가요?
현재 블록체인 내 다양한 합의 알고리즘이 진화, 발전하고 있는데요.
아무리 봐도 하이퍼레저 패브릭의 합의 알고리즘에 대해서 이해하기가 어려워서 이곳 아하 전문가님께 질문 드립니다.
즉, 하이퍼레저 패브릭의 합의 알고리즘은 어떤 방식인가요?
답변 부탁드립니다. 감사합니다!
하이퍼레저 패브릭의 경우 Kafka와 SBFT를 합의 알고리즘으로 활용합니다. 그리고 이러한 합의는 전체적인 틀 속에서 이루어진다기보다 트랜젝션의 플로우의 과정에서 적용됩니다. 본 답변에서는 트랜젝션 플로우를 따라가면서 설명을 드리도록 하겠습니다. 하이퍼레저 패브릭의 트랜젝션은 아래와 같은 과정을 통해 처리가 됩니다.
우선 클라이언트가 거래를 제안(Transaction Proposal)합니다.
보증 피어(Endorsing peer)가 서명을 확인하여 트랜젝션의 유효성을 확인한 후 체인코드를 실행합니다. 그리고 그 실행 결과인 RWSet(Read/Write Set)에 서명한후 제안 응답(Proposal Response)을 클라이언트로 전송합니다.
클라이언트가 다시 보증 정책(Endorsement Policy)에 따라 보증 피어로부터 받은 거래 제안에 대한 응답 결과(Proposal Response)를 검토합니다. 이 과정에서 보증 정책에 따라 1차적인 검증과 합의를 거치게 됩니다. 그 후 트랜젝션(거래 제안, 제안 응답, RWSet, 보증 피어의 서명 포함)을 Ordering Service로 보냅니다.
Ordering Service에서 Orderer가 제안된 트랜젝션의 순서를 Kafka(분산 메시징 시스템)을 통해 빠르게 시간 순으로 정렬하고 SBFT(SimpleBFT) 알고리즘에 따라 3분의 2 이상의 합의에 도달한 후 블록을 생성합니다. 그리고 블록을 Committing Peer에 전파합니다.
블록이 Committing Peer(확정 노드)에게 전달 되면 트랜젝션을 검증하고 유효성이 확인되면 거래를 확정짓게 됩니다.
끝으로 각 조직의 피어들은 자신의 거래 장부(Ledger)에 앞서 생성된 블록을 연결시키며 트랜젝션의 처리 결과를 클라이언트에게 알립니다.
답변이 도움이 되길 바랍니다.