Hyperledger Fabric - (b)

zzwwoonn·2022년 4월 11일
0

Block Chain

목록 보기
2/4

Transaction Flow

하이퍼레저 패브릭 공식 홈페이지에서 가지고 온 이미지이다. 이 그림을 완벽하게 이해한다면 하이퍼레저 패브릭의 개요에 대해서는 완벽하게 이해를 했다고 봐도 무방하다.

오늘의 목표는 하이퍼레저 패브릭에서의 transaction flow에 대해 공부하고 위 그림을 완벽하게 이해하는 것이다.

< 정답 미리 보기 >

  1. 클라이언트 어플리케이션이 피어에 연결한다.
  2. 연결이 되면 트랜잭션을 생성(transaction proposal)해서 피어의 endorser에게 보낸다.
  3. 피어는 받은 거래제안(transaction proposal)에 대하여 체인코드를 확인한다.
  4. 체인코드는 원장에 대한 쿼리 거래(ledger query transaction)의 경우 즉시 결과를 반환한다.
  5. update와 같은 원장(ledger)에 대한 변경이 있는 거래 제안이었을 경우 피어는 받은 거래 제안에 대한 응답(response)을 한다.
  6. 응답을 받은 클라이언트는 해당 거래를 오더러(Orderer,OSN)에 보낸다.
  7. 오더러는 합의 알고리즘에 의거해서 블록을 생성하고 이를 피어로 보낸다.
  8. 피어의 앵커(Anchor)는 오더러(Orderer)로부터 받은 거래블럭(Transaction block)을 받고 커미터(Committer)가 트랜잭션을 확정한다. 또한 이를 이용해서 피어(Peer)는 원장(Ledger)을 업데이트 한다. 이후 클라이언트에게 업데이트 이벤트를 보낸다.
  9. 클라이언트는 업데이트 이벤트를 받고 트랜잭션 과정이 끝난다.

이전 포스팅을 보고 이 포스팅을 봤는데도 위의 과정이 이해가 안되고 모르겠으면... 어쩔 수 있나? 그냥 통째로 외우자 먼저 외운 다음 이해를 하는 방법도 상당히 괜찮다고 생각한다.

간단하게 도식화

  • 유저와 Peer가 연결 (인터넷에 연결), 유저(App, Client)가 거래를 만든다. (Transaction Proposal)

  • 거래를 Peer에게 보낸다. (Transaction Proposal)
    위 그림에서의 1.proposals ,(거래 제안) 에 해당한다.

  • 피어는 이 거래를 가지고 시뮬레이팅을 한다. (스마트 컨트랙트를 실행해보고, 체인코드를 실행해보고, ~~ )
    합의를 통해 OK(합의, 허락)를 떨궈준다. (Proposal Response)
    (투표, BFT-비잔티움 장애 허용, 3명 중에 2명이 합의를 해야한다~ 4명 중에 3명이 okay 해야한다~ )
    이 때 피어들에게 허락을 받는 과정을 Check endorsement policies 라고 한다.

  • 피어1, 피어2, 피어3 여러가지의 피어들이 있다. 그 중에서 허락을 받은 트랜잭션(거래)들만 패키지로 모아서 Orderer에게 보낸다.
    => 위 그림에서의 2.Proposal Package에 해당한다.

  • Orderers 한테 보낼 수 있다.
    => "이것들은 검증을 받은 트랜잭션들(거래)이니까~~" Orderer 한테 보내서 "이제 블럭에 넣어줘!!" 한다.

  • Orderer는 거래들을 계속 모은다. OK를 확인해보고 Block을 생성한다.
    => 받은 거래들은 피어들한테 허락을 받았는지만 검증을 한다. 스마트 컨트랙트가 어떤 내용으로 실행되었는지!? 어떻게 어떤 방식으로 검증이 되었는지!? 그 안에 어떤 내용이 있는지는 검증하지 않는다.

  • Orderer는 만든 블럭을 Peer들에게 준다.
    => 3. Block 전파에 해당한다.

  • Peer는 블럭을 받아서 자기 블럭체인에 연결하고 자기의 월드 스테이트를 업데이트한다. (Ledger Update)

정리

App(유저)이 거래를 만들어 Peer에 보내면(proposals) 블록에 바로 들어가는게 아니라 시뮬레이팅을 하게 된다.

이 때 거래를 승인하게되면 시뮬레이팅을 하게되고 OK 사인을 App(유저)에게 보낸다. 이 OK 사인이 패브릭에서의 합의 방식 BFT이다. 간단하게는 3명중 2명이 투표를 하면 된다. 위처럼 App이 Peer들에게 허락을 받는걸 endorsement policies라고 한다.

합의를 통해 검증을 받은 트랜잭션은 Orderer에게 블록에 넣어달라고 요청된다.(proposal package)

Orderer는 트랜잭션(거래)들을 계속 모아서 Peer들에게 허락을 받았는지만 검증한다. 스마트컨트랙트가 어떤 내용으로 실행되었는지, 어떤 내용이 있는지는 검증하지 않는다.

트랜잭션을 계속 모아서 블럭을 생성한다. 만든 블록을 Peer들에게 전달한다. (Block 전파)

Peer는 블록을 받아서 블록체인에 연결하고 자신의 world state를 업데이트하게 된다.

비트, 이더에서는 하나의 노드가 거래를 모으고, 블록도 만들고 모든 일을 다하는데 반면, Fabric은 Peer와 Orderer로 나뉘어져 각자의 역할을 수행한다.

Flow Diagram

하이퍼레저 패브릭에서의 트랜잭션 흐름이 완벽하게 이해가 됐다면 위의 플로우 다이어그램을 이해하는 것도 큰 무리는 없을 것이다.

0개의 댓글