HyperledgerFabric/Core Concept

02. Fabric Read&Write Set

서견 2023. 6. 23. 22:25

목표 ! Fabric 에서 체인코드가 어떤식으로 읽고 쓰는지 ( read&Write set) 알아보기

이 부분을 이해해야 체인코드를 작성하고 체인코드 스트럭처 를 설계 할 수 있다.

TPS 가 높은 체인코드를 설계 가능


Fabric이 사용하는 방식은 KVS( Key-Value Store)

Level, Couch ( 레벨디비는 속도가 빠르고 카우치디비는 복잡한 쿼리문 작성 가능)

체인코드안에서는

A :100 , B : hello ( 체인코드에서 값을 저장하는 방식) ( key - value )

다른점 ? : 한 블록 내에서 하나의 키 값을 여러 번 읽어서 바꿔 쓸 수가 없다.( 한 블락에서 한번 작성 )

Read Set , Write Set (https://hyperledger-fabric.readthedocs.io/en/release-2.5/readwrite.html?highlight=read write)

 

 

한 block 내에서 한번 write 한 키에 대해서는 Read를 하면 실패한다.

  1. T1 -> 둘다 쓰기 만 했기 때문에 k1 k2 의 값이 v1, v2 로 바뀐다 ( 성공 )
  2. T2 -> k1은 T1에서 이미 쓰기 작업을 했기 때문에 읽기를 할 수 없다 ( 실패 )
  3. T3 -> k2는 읽기 작업을 하지 않았기 때문에 k2의 값은 v2'' 로 바뀐다 ( 성공 )
  4. T4 -> k2를 위에서 이미 쓰기 작업을 했기 때문에 read 작업을 할 수가 없다 . ( 실패 )
  5. T5 -> k5는 위에서 작업을 하지 않았기때문에 읽기 가능 ( 성공 )

비트 , 이더의 경우

한 block 내에서 아래의 경우가 가능함. ( [Hyperledger Fabric Core Concept] 02. Fabric Read&Write Set ( 6:47초 )

A = 100

A = A + 100 ( A  => 200 )

A = A + 100 ( A => 300 )

이더에서는 block을 생성하는 얘 ( 마이너 ) 가 트랜잭션이 외부에서 들어올 때 마다 보관 하고 있다가 POW 가 성공 하면 block를 던진다.

새로운 블럭의 트랜잭션을 다 보관하고 있기 때문에 히스토리를 다 알고있다.

 

패브릭의 경우

피어가 block을 만들지 않기때문에 검증한 트랜잭션을 보관하지 않는다.

 

App 에서 트랜잭션 제안 >> 피어에서 받아서 체인코드 시뮬레이팅 ( ex. 월드스테이트 : a = 100 , 체인코드 : a = a +100 ( a => 200) ) >>> 피어가 체인코드 시뮬레이팅 후 오더러피어에게 전송 ( ex. a= a+ 100 ) >>> 새로운 트랜잭션 제안 >>> a = a + 100 >>> 피어가 시뮬레이팅 후 오더러에게 전송 ( ex. a = a +100 ) >>> 오더러피어에서 두번째 트랜잭션을 FAIL 처리 함.

 

FAIL 처리 된 트랜잭션은 버려지지는 않고 block에 전달됨.

피어가 시뮬레이팅을 하는데 피어가 block을 만들지 않기 때문.

오더러는 block을 만들면서 체인코드를 시뮬레이팅 하지 않는다. 오더러는 오더러 렛저를 따로 가지고 있다

 

왜 ? : 문제가 생겼을때 ( 피어들이 다 끊겼을때 )  새로 block 만들어서 배포하기 위해 저장 만하고있다.

또한 검증하는건 피어들이 검증 잘 했는지 피어들의 시그니쳐만 확인한다. ( 체인코드는 확인 X )

Fabric - high through put network

  • 태깅을 이용함
  • A : 100 ( 이전 블록 )
  • A1 : +100 (태깅 1)
  • A2 : +-50 (태깅 2)
  • A3 : +100 (태깅 3)
  • A : 250 ( 태깅은 빼고 A 만 보고 수집하여 계산 )
  • high through put network 을 통해서 수준높은 TPS 구현 가능
  • 이러한 방식을 사용하지 않으면 한 블럭에 한 트랜잭션만 생성 >> 오버헤드가 엄청 커진다.

 

본 게시글은 Dapp Campus 의 강의를 보고 정리한 내용입니다! 


https://www.youtube.com/watch?v=FN2zoG3LRwU&list=PLlYCl1UOH8dima_f8QOIeY1ieuOAYKo_G&index=2

 

'HyperledgerFabric > Core Concept' 카테고리의 다른 글

06 . Fabric Identity - 2  (0) 2023.07.14
05. FabricIdentity - 1  (0) 2023.06.23
04. Fabric Network Setting Guide  (0) 2023.06.23
03.Fabric Study Guide  (0) 2023.06.23
01.Fabric Structure  (0) 2023.06.23