하이퍼레저 패브릭의 경우 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)에 앞서 생성된 블록을 연결시키며 트랜젝션의 처리 결과를 클라이언트에게 알립니다.