#9. 패브릭 이벤트

ㅇ블록체인 상에서 발생한 사건들(블록생성, 스마트컨트랙트의 액션발생 ) 외부로 전달가능함.

ㅇ다른 네트워크의 이벤트

  -이더리움 : 웹소켓 사용하여 이벤트를 주기적 전달 받거나, RPC콜로 이벤트 질문 가능.

  -비트코인 : 자신의 지갑주소로 돈이 들어왔을  알림 기능  서버에서 SDK 사용 .

 

ㅁ이벤트. 블록이 새로 생겼다? ”

 ㅇ다양한 레벨의 이벤트 수신 가능 , SDK 이용 PEER 부터 이벤트를 수신하며-

 

  -grpc 통해서 가능한 것임. 해쉬넷grpc”

https://developer.ibm.com/kr/cloud/blockchain/blockchain-special-series/2018/11/11/hyperledger-fabric-architecture-5-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EA%B3%BC-grpc/

 

[Hyperledger Fabric] Architecture: 5 트랜잭션과 gRPC - IBM Developer

chaincode 작성의 최대 챌린지인 gRPC 뽀개기 얼마전에 blockchain 프로젝트 수행을 위한 회사 내부 교육을 이수했습니다. go-lang으로 chaincode를 실제로 개발하면서 가장 많이 부딪혔던 문제는, gRPC의 버전 문제와 gRPC 인터페이스 처리였습니다. 사실 gRPC 자체를 아예 잘 몰랐던 터라 어떻게 동작하는지 알기 어려워서 겪었던 문제였죠. 그래서 도대체 왜 Hyperledger Fabric은 HTTP 통신이 아니라 gRPC

developer.ibm.com

  -() fabric-samples - balance transfer - artifacts - docker-compose.yaml

    개의 포트가 열려있음. ports : 7051:7051(오더러와 소통) , 7053:7053(외부 앱과의 소통)

 

  -() fabric-samples - balance transfer - artifacts - network-config.yaml

   my channel - peers :  피어 별로 설정 가능 부분. EventSource  true ,

   SDK에서 해당 .yaml  갖고 사용할 때에 해당 피어는 이벤트를 수여 가능하다고 보고 만들기 가능.

   그럼 해당 peer eventURL  가지고 설정 하는 . : 이것이 grpc 통해서 이벤트 푸쉬 받는 것임.

 

 ㅇ이벤트 기능

  -이벤트 받을 , 시작 블록  블록 설정 혹은 블록 넘버지정으로 이벤트를 요청가능.

   놓친 이벤트도 ‘replay’ 기능으로 가져올  있다.
   block from ~ to 가능(replay 가능)

  -1.1 이후, ‘ Channel based event ’ 추가: SDK에서 해당 채널에 관련된 정보주면 채널 관련 이벤트만 SDK 받아올  있음. 유져입장에서 유용한 기능이 추가된 .

    (1.0 까지는 이벤트 허브로 이벤트 서비스를 제공해서- 채널 상관없이 블락을 정렬없이 받았음-)

 

 ㅇ엔터프라이즈 블록체인의 아키텍쳐(보통)

 

 

 ㅇ패브릭 이벤트의 종류

  -블록 이벤트: 블록 새로 생성 됐을 , 이벤트 발생. SDK에서 생성된 채널.

   Full block : 전체 내용을 가지고 .

   Filtered block : event 있는 payload 안가지고 .

  -TX 이벤트: 유져가 트랜잭션 제출 했을 , 해당 트랜잭션이 커밋 가능한 지에 대한 여부 확인.

  -체인코드 이벤트: 체인코드 내부에서  이벤트 사용 가능.

   chainCode  SetEvent(eventname, payload) : 이벤트 네임 찍고, 그것이 발생했을 때에 무엇을  것인지.

       ※이벤트 네임을 특수하게 짓든지, 식별자를 두어야 .

#2. 패브릭 Write& Read

ㅁ패브릭의 사용방식

ㅇKVS. 키밸류스토어 방식. -값 한쌍으로- 키를 기반해서 값을 저장가능.

ㅇLevelDB(속도), CouchDB(복잡성) 사용

ㅇChaincode : 한 블록 내에서 하나의 키 값을 여러 번 읽고 수정 불가

 

Read Set, Write Set

한 블락에서 한번 수정 가능. ( 한 블록 내에서 ) 한번 Write 한 키에 대해서는 Read를 하면 실패한다.

peer가 시뮬레이팅 하는데 블록생성 않기 때문에 블록을 오더러 에게 받기 전에는 잘못된 값을 불러온다.

일반적인 상황에서는 굉장히 불편하게 만드는 제약

 

ㅁ그래서 패브릭이 선택한 방법은 Fabric - high through put network.

태그를 사용하여 여러 번의 읽고 수정해도 값이 제대로 나올 수 있도록 하는 기능

UTXO를 사용하기도 함

 

 

#3. 패브릭 스터디 가이드

어디서 부터 시작해야 하나-”

1. 패브릭 read the doc. ( https://hyperledger-fabric.readthedocs.io/en/release-1.4/whatis.html )

1) key concepts

2) Architecture Reference

3) Writing Your First Application

4) Building Your First Network (BYFN) : 로그 확인

-운영자 과정(operation Guides)과 개발자 과정이 있으니 필요따라-

 

2. 패브릭 samples

ㅇmarbles, balance-transfer, high-throughput, unit test

퍼스트 네트워크, 밸런스 트랜스퍼 예제 순으로 진행

ㅇBalance Transfer : 패브릭 SDK사용하여 체인코드 접근하는 예제

ㅇhigh-throughput : 패브릭에서의 고성능 체인코드 작성 위한 기능

 

3. 하이퍼렛져 프로젝트

패브릭이 가장 많이 사용되긴 하지만.

버로우(이더리움 기반. 쿼럼), 그리드(웹어셈블리), 인디(DID), 이로하(활발..), 캘리퍼(TPS 측정), 첼로(배포)

패브릭 블락 익스플로어(block explorer) : 이더스캔 같은 기능 하는 듯.

컴포져(composer) : 패브릭보다 간소화한 블록체인 툴. 패브릭 기반의 완전히 다른 아키텍쳐.

- 컴포져(composer) : 온라인의 플레이 그라운드 라는 풀 제공중. 바나나파일의 기능 사용하여 프로젝트 가능.

. Kubernetes : IBM에서 만들고 있는. 구글의 네트워크 관리(배포).

+ Recent posts