하이퍼렛저와 Kafka

허정·2022년 3월 5일
0

블록체인

목록 보기
14/38

1. 하이퍼렛저

하이퍼렛저는 리눅스재단이 이끌고 있는 가장 유명한 Private Blockchain 기술입니다. 스마트 컨트랙트를 구현할 수 있는 오픈 소스 프로젝트입니다. IBM 등 글로벌 대기업이 개발에 참여했으나, 현재는 이더리움 등의 Public Blockchain에 밀려서 사실상 개발이 중단된 상황입니다.

기업이 블록체인을 사용하는 이유는 기업 간에 거래를 하는데 발생하는 비용을 절약하기 위함입니다. 특히 private blockchain을 사용하면 거래 비용을 아낄 수 있습니다. 블록체인을 이용하면 신용 보증 기관이 없어도 되기 때문에 비용 측면에서 효율적입니다.

블록이 추가되는 과정

하이퍼렛저는 Execute-Order-Validate 구조를 갖습니다. 다른 플랫폼들은 Order-Execute 구조를 갖습니다. 이를 바탕으로 트랜잭션을 처리하는 과정을 살펴봅시다.

Phase 1: Client A가 트랜잭션 요청

  • endorsement policy로 정의되어 있는, 거래를 승인해야 하는 피어를 확인
  • 거래에 대한 요청을 transaction proposal 형태로 전송
  • Client의 SDK는 이를 gRPC 프로토콜로 전송할 수 있는 프로토콜 버퍼 형태로 변형
  • 사용자의 신원 정보를 서명 형태로 proposal에 삽입

Phase 2: Endorsing Peers가 서명을 확인하고 트랜잭션 실행

  • endorsing Peer는 트랜잭션을 전달 받으면 형식, 기록, 서명, 권한을 확인
  • transaction proposal을 인자로 받아서 체인 코드를 실행
  • 반환된 결과값을 proposal response에 담아서 Client SDK로 전송

Phase 3: Proposal responses 검토

  • Client SDK가 endorsing peer의 서명을 확인
  • 각 peer로부터 Proposal response를 비교

Phase 4: Client가 트랜잭션 전달

  • 검토가 완료되면 Client가 transaction message에 proposal과 proposal response를 담아서 ordering service에 전송
  • 트랜잭션에는 read/write set이 담겨있으며, endorsing peer의 서명과 채널 ID가 포함됨

Phase 5: Committing Peer에서 트랜잭션을 검증 후 커밋

  • 트랜잭션 블록이 해당 채널의 모든 committing peer에게 전달됨
  • 트랜잭션이 각각의 endorsement policy를 준수하고, world state 값의 read-set 버전이 맞는지 확인
  • 검사 과정 종료 후, 해당 블록 내의 트랜잭션에 valid/invalid 값을 태그

Phase 6: Ledger Updated

  • 각 peer는 최종 검증을 마친 블록을 채널 내의 체인에 연결
  • 유효한 트랜잭션은 write-set이 state DB에 입력
  • 모든 과정이 종료되면 이벤트를 발생시켜 Client에게 작업 결과 알림

2. Kafka

하이퍼렛저의 합의 알고리즘을 살펴봅시다. 하이퍼렛저의 프로젝트 중 하나이면서 플랫폼인 하이퍼렛저 패브릭은 Kafka를 사용합니다. 카프카는 엄밀히 이야기하면 블록체인 합의 알고리즘이 아닙니다.

(1) Kafka란

  • Linkedin에서 개발한 분산 메시징 시스템
  • 실시간 대용량 로그 처리에 특화
  • 순서만 정확하게 쌓아올림
  • CFT(Crash Fault Tolerance)

(cf) 대부분의 다른 합의 알고리즘들은 BFT입니다.

(2) Kafka를 선택한 이유

  • HLF(historical log file)의 성능 향상을 위한 아키텍처적 해결책
  • peer들이 리슨하고 있다가 클라이언트 이벤트가 발생되면 액션을 취하는 Pub-sub 구조 내에서 빠르게 메시지를 풀(Pull) 방식으로 전달하여 수신 피어 측의 부담을 최소화하고 속도를 향상시켜 기존의 문제를 해결
  • BFT적 검증은 할 수 없지만 Permissioned Blockchain의 성격을 적극 활용해 CA단에 위험을 1차 차단하고, 추가로 배서(endorsement) 정책을 통해 구멍 없이 보완하는 방식으로 문제를 해결

참고자료
하이퍼렛저 https://blog.naver.com/mage7th/221493540794

0개의 댓글