Hyperledger Fabric [2] (Algorithm, Protocol, Architecture)

2023. 6. 13. 21:47Blockchain/Hyperledger Fabric

728x90
반응형

※ 원글 작성 : 22년 4월 27일

MVCC conflict

  • MVCC : DBMS가 다수 사용자 사이에 작용 시 상호 간섭으로부터 DB를 보호
    • DB에서 데이터 업데이트 시 기존 항목을 새로운 데이터가 overwrite하고 데이터 항목의 새로운 버전 생성
  • Fabric 상에서 MVCC_READ_CONFLICT err 발생
    • Fabric도 MVCC를 이용해 state DB 관리
    • 미사용 데이터 버전 정리 및 데이터 버전 충돌을 어플리케이션 영역에서 해결
    • 해당 err는 데이터 버전 충돌로 발생, Fabric에서 블록을 peer에 최종적으로 commit 전 블록 내의 transaction을 검증하는 단계에서 발생
  • 해결책
    • 동일한 키에 대해 서로 다른 값을 업데이트하는 transaction들을 한 블록에 담지 않도록함
      • Batchtimeout 시간을 조절하여 transaction이 한 블록안에 담길 확률을 낮춤
      • MVCC_READ_CONFLICT 에러를 캐치하여 해당 트랜잭션에 대해 재전송 후 처리
      • Queue를 통해 한 트랜잭션 씩 전송

MSP

  • Membership Service Provider
    • 인증서 발급/검증, 사용자 및 서비스의 신원 확인 수행
    • MSP 내 이름/ID 존재하여 해당 항목들을 토대로 membership rule을 따름
    • 수행 역할
      • 시스템 레벨 : 채널 생성 수행
      • 채널 레벨에 : Read/Write 컨트롤
      • 체인코드 레벨 : 함수호출 제한
  • Global/Local MSP
    • Global MSP : Chain network 및 channel에 참여한 모든 구성원에 적용
      • Channel MSP : 채널에 참여하는 Org를 식별, 채널 관리권한 설정(by channel policy)
      • Network MSP : 네트워크 참여 Org를 식별, Org 또는 user가 BC 네트워크에 참여할지 확인, 네트워크 관리 권한(e.g. 채널 생성) 보유 참여자 식별
    • Local MSP : peer/orderer 등 시스템에 탑재, MSP를 통해 식별이나 제어 가능한 대상이 탑재된 노드에 한정
      • Peer MSP : 피어 파일 시스템에 탑재, channel MSP와 비슷하지만 관리 범위는 해당 peer에 한정, 소속 Org의 노드를 식별하거나 체인코드 설치 가능 피어인지 검증
      • Orderer MSP : OSN에 탑재되어 자신이 소속된 조직의 신뢰 가능한 노드 식별

CA

  • Fabric CA가 docker container 상에서 ps 존재
  • MSP를 구성
  • MSP를 통해 channel 관리 권한이나 접근 권한을 컨트롤

Leader peer/Anchor peer

  • Leader peer
    • Orderer로 부터 수신한 블록을 다른 peer로 공유
    • Leader peer에 문제가 생기면 리더 선출을 통해 새로운 리더피어 선출, orderer에게 변경 사실 전달
  • Anchor peer
    • Org 간의 peer 정보 교환
    • 어떤 조직의 peer 하나에 proposal을 보내도 모두에게 적용
    • Update 후 anchor peer는 설정하지않아도 된다

Gossip protocol

  • Orderer가 블록 생성 후 commiter에게 전달하고 이 블록을 검증 저장할 때 gossip 사용
  • Orderer는 모든 peer와 comm 하는게 아니라 Org 별 대표 peer 하나에 알리면 해당 peer(leader peer)가 gossip을 통해 전체로 전달
  • Peer 간 sync를 맞추는데도 사용

참고
https://hamait.tistory.com/983
https://velog.io/@byron1st/Hyperledger-Fabric%EC%97%90%EC%84%9C%EC%9D%98-MVCC-Read-Conflict

728x90
반응형

'Blockchain > Hyperledger Fabric' 카테고리의 다른 글

Hyperledger Fabric [1] (Transaction, Block)  (0) 2023.06.13