하이퍼레져란 무엇인가!?(2. Hyperledger Fabric)

in #blockcahin6 years ago (edited)

안녕하세요!

이어서 바로 하이퍼레져 패브릭에 대해서 포스팅하려고합니다 ㅎㅎ

어려워요.. 저는 개념잡기가 조금 어려웠어요.. 새로운, 낯선 용어에 적응하는데 조금 시간이 걸렸답니다

하이퍼 레져의 특징

  1. 허가형 블록체인 (허가된 사용자만 사용가능, 각각 기관및 피어에 대해 권한 설정 가능)
    -멤버십 관리 서비스를 통해 허가된 참여자만 접근 가능
    -참여자의 블록체인네트워크에 대한 권한을 설정 가능
    -참여자의 어떤 행위에 대한 책임소재가 분명함
    -높은 거래 완료성(거래가 승인이 완료되는 즉시 거래가 완료됨,블록을 생성함에있어 시간이 걸리지않음)

  2. 일반 프로그래밍 언어 사용
    -체인코드=>하이퍼레져의 Smart Contract
    -Go,nodejs사용

  3. 내부 가상통화 부재(가상화폐가 필요없음, 필요에따라 구축가능)
    -허가된 사용자만 네트워크에 접근 가능 하기때문, Dos공격및 수수료에 대한 고려 할필요가 없음

  4. 높은 성능(쓸모없이 채굴같은 자원소모가 없음)

  5. 멀티 블록체인 지원
    -전체 시스템을 다수의 채널로 구분(각 기관은 한개 혹은 다수의 채널에 가입 가능)
    -채널별로 독립적인 블록체인 유지 가능


그리고 하이퍼레져에서는 노드에 대해서도 이해하고 있어야합니다
크게 클라이언트노드, 피어노드, 오더러노드, MSP(Membership Service Procider) 네가지가 있어요!
각각에 대해서 설명 드릴게요 ㅎ

클라이언트 노드(Client Node)
-사용자를 대신하여 거래를 생성하고, 체인코드 실행을 호출하는 노드
-클라이언트 노드는 거래를 생성해 endorsing node에게 제출함으로써 거래의 보증을 확인받음

피어노드(Peer Node) & Endorsing Node
-피어노드는 거래를 확정하는 역할
-거래 정보를 저장하는 원장과 거래 실행 결과에 따른 상태정보를 저장하는 상태저장소로 구성되는
블록체인을 유지
-Ordering Service Node로부터 블록형태로 거래와 상태정보를 수신
-일부 피어만이 Endorsing Node역할을 수행
-Endorsing Node는 클라이언트의 보증 요청에 따라 체킨코드를 실행하고, 결과를 보증함
-보증 노드와 보증 방법은 해장 체인코드와 연계된 보증 정책에 의해 결정됨

Ordering Service Node
-합의 알고리즘에 따라 클라이언트노드로부터 제안되는 거래들을 블록에 저장시키기 위해 순서대로 정렬시킴
-클라이언트에게 채널을 통해 받은 tx를 정렬후, 모든 피어에게 전달

MSP(Membership Service Provider)
-네트워크에 접속하는 노드의 신원을 확인후, 그에 맞는 자격을 발급
-PKI(Public Key Infrastructure)기반의 인증기관(CA)를 통해 서비스에 맞는 개인키를 발급

MSP나 PKI에 대해서는 다룰게 더 많아요... 나중에 Fabric에 대한 간단한 실습을 진행할때 더 자세히 다루도록 하겠습니다!

여기까지만 봐도 용어가 굉장히 어렵죠....
사진한장 보시면 이해가 좀더 쉬울거라 생각되요!

각 노드에 대한 동작방식에 대해서
https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html
이곳에서 굉장히 자세하게 설명해주고있습니다!
용어를 익히신후 가서 보시면 동작방식, 각 노드들및 채널들에 대한 이해하기에 훨씬 도움이 될거예요


거래의 처리방식

Excute->Order->Validate&Commit
-실행후 실행결과과 포함된 거래를 포스팅
-동일한 순서대로 저장될 수 있도록 Ordering작업
-Orderer에 의해 순서가 정해지면, 각 피어에게 전파후 피어들이 실행 결과를 검증
-피어들이 결과를 검증후 타당한 거래내역이라면 블록에 저장

이런식으로 검증과정을 거친후 블록에 저장되는 구조입니다. 제가썼는데도 뭔가 어렵게 설명 드린거 같아요..

더 쉽게 순서대로 설명드릴게요!

  1. 클라이언트가 Tx를 발생
  2. Endorsing node가 클라이언트로부터 Tx를 전달받아 실행후 클라이언트로 결과를 전달
  3. 클라이언트는 전달받은 결과를 Ordering Service Node에게 전달
  4. Ordering Service Node는 각 클라이언트에게 전달받은 Tx를 순서화및 검증후 예비 블록을 생성
  5. Ordering Service Node는 생성한 예비블록을 Committing Peer Node에게 전달
  6. Committing Peer Node는 전달받은 예비블록을 검증후, 타당하다면 블록에 저장!

좀더 쉽게 썼는데 이해가 되시려나요..... 어렵죠... 저도알아요 ㅋㅋㅋㅋ 저도 어렵게 공부했어요 ㅠ

Hyperledger에 대해서는 정말 할이야기가 많고 공부할 내용도 정말 많아요.

제가 설명드린 내용들은 블록체인을 공부하시는 분이라면 기본적으로 알고가야 하는 내용들이고,
정말로 Hyperledger에 관심이 생겨서 더 알고싶으신분들은 IBM 사이트인 https://hyperledger-fabric.readthedocs.io
에 들어가셔서 쭉 따라서 해보시길 권장드릴게요!

어려운내용 주저리주저리 설명드렸는데 마지막까지 따라와주셔서 제가 감사드립니다...

다음시간에는 Hyperledger Composer 실습을 해볼예정입니다.

Hyperledger Fabric 실습이 먼저인지는 알지만 제 노트북에서 준비해야할게좀 있어서 다음에 실습하도록 할게요!

감사합니다!