A sentimental robot

Transaction Process 본문

Hyperledger fabric

Transaction Process

GOD03219 2019. 7. 11. 15:00

하이퍼레저에서의 트랜잭션 처리 과정

 

  • 읽기

 

Jello가 가 패브릭 네트워크 상 피어A에 연결되어 있다고 가정.

 

1. Jello가 트랜잭션 요청

2.DApp은 피어A가 호스팅하는 분산 원장에 접근하기 위해 Jello의 인증서를 이용해 인증을 거친 후, 피어A와 연결

3.DApp은 피어A에 설치된 체인코드의  Query함수를 호출

4.피어A는 요청받은 체인코드의 함수를 실행하여 자신의 로컬저장소에 저장되어 있는 분산 원장의 데이터를 DApp에 전달

* 데이터 읽기 과정에서는 DApp으로부터 Query함수 실행을 요청받은 피어A 외 다른 피어들은 쿼리함수 실행을 위한 어떠한 동작도 하지않음

 

  • 기록

분산원장에 데이터를 기록하는 작업은 크게 3단계로 구분되며 각 단계는 독립적으로 실행되기 때문에 동시성을 보장한다.

*읽기 과정의 3단계까지는 같다.(쿼리 함수 대신 update 함수이다.)

 

4. 피어A는 요청받은 체인코드의 update함수를 실행

5. 피어A는 트랜잭션 입력값에 대한 결과값과 보증정책을 확인하는 작업을 수행 후 ( 피어A는 Endorsing peer이군! ), 결과값과 보증 조건을 충족시키면 디지털 인증서와 결과값을 DApp에게 전달 (*보증 정책에 따라 하나 혹은 여러 대의 피어에게 허가를 받아야 하는 등 경우가 있다.) [ 1단계: 트랙잭션 제출 ]

6. DApp은 트랜잭션 결과값, 피어A의 디지털 인증서, 트랜잭션을 orderer노드로 전송

7. 이렇게 orderer노드는 (자신이 속한 채널 내의 )다른 DApp에서도 전송한 모든 트랜잭션을 순서에 맞게 정렬하여 블록체인의 최신 블록을 생성 [ 2단계: 블록 패키징 ]

8. 생성한 블록을 자신이 속한 네트워크의 모든 피어에게 전달한다.(*orderer는 트랜잭션 검증을 하지 않는다.)

9. 피어들은 orderer노드로부터 전달받은 최신 블록에 포함된 모든 트랜잭션에 대한 결과값과 인증서를 검증한다.( Committing peer이군! ) 문제 없을 시 자신의 로컬 저장소의 분산 원장을 업데이트한다. [ 3단계: 검증 ]

10. 피어A는 분산원장 업데이트 결과를 DApp에게 알려준다.

'Hyperledger fabric' 카테고리의 다른 글

Docker  (0) 2019.07.12
Mac OS 기본적인 터미널 명령어  (0) 2019.07.12
Hyperledger fabric 주요 개념  (0) 2019.07.10
Hyperledger fabric 구조  (0) 2019.07.10
Token economics  (0) 2019.07.10