HyperledgerFabric/Core Concept

06 . Fabric Identity - 2

서견 2023. 7. 14. 10:44

목표! : Identity 들이 Fabric에서 어떤식으로 로지컬하게 역할을 하고 있는지 알아보자!

Fabric 블락 안에 시그니쳐들 개념적으로 알아보자 !

 

MSP ( Membership Service Provider )

  • 패브릭에서 제공해주는 여러가지 권한들에 대한 가장 큰 부분을 차지함.
  • 패브릭에서 노드들 간에 어떤 권한이 있는지 서로 분리주고 서로간의 인증 ,권한 이런것의 전체적인 개념을 제공.
  • X.509 인증서 기반의 PKI 시스템으로 구현이 되어 있음.
  • Fabric에서 노드/유저/채널 등등, 서로 간의 인증, 권한 관리를 해주는 기본적인 개념 또는 서비스
  • 노드(Peer, Orderer, user) -> directory (MSP) 안에 있는 인증서를 가지고 한다.
    • 노드, 오더러 들은 실제로 msp 폴더를 들고 있어야 한다 . (도커로 띄워질때 msp 폴더를 들고 들어가야 한다.)
    • Docker - compose.yaml 에 보면 volumes에 명시되어 있음.(노드)
  • 채널/네트워크 -> 다른 여러가지 방법을 통한 멤버쉽 관리.

Block Structure

 

패브릭은 PKI 기반으로 인증서(X.509)기반으로 서로를 인증하고 트랜잭션 사인하고 시그니쳐 확인하고

트랜잭션을 모아서 블럭을 쌓게된다.

인증서 관련 파일은 Crypto-config안의 MSP 폴더들을 각각 노드들이 들고 들어감.

 

 

질문

질문 하나 하고 싶습니다. fabric-samples의 balance-transfer를 디렉토리 내부의 runApp.sh와 testAPI를 통해 테스트 해보았습니다.

혹시 하나의 로컬 pc에서 container 기반으로 실행되는 이 환경을

실제 서비스 환경처럼 물리적pc 대신  vm을 이용하여 각각의 ca, peer, orderer를 물리적으로 나눠보고싶은데

이런경우에도 일반적으로 서버 위에 docker를 이용하여 container로 각 peer,  orderer, ca등을 실행시키나요?

아직 제가 container에서 실행시키는 이미지파일을 완전히 분석 해보지는  못했지만

"하이퍼레저 패브릭으로 배우는 블록체인" 이라는 서적을 통해서 VM으로 각 peer, orderer, ca 노드를 구분지어 환경 설정을 해보았습니다.

그래서 container 안의 환경을 모두 리눅스 위에 설치하여 p2p 통신이 가능 할 것으로 보여 container를 사용 안할 수 있는지 혹은 사용하는것이 바람직한지 궁금합니다.

그리고 질문 하나만 더 해도 될까요..

balance-transfer 디렉토리 이하의 org1.yaml 이라던지 network-config.yaml의 config는 각 노드들이 물리적으로 분리되었을때

모든 노드의 path, 설정이 담긴 config를 해당하는 노드에 전부 복사해주어야 하나요?

아니면 그 해당 노드에 대한 정보만 분리해서 따로 config를 생성해주는 것인가요?...

fabric 열심히 공부중인데 정보가 많이 없는듯 하여 어렵습니다..ㅜ

답변

안녕하세요? ^^ 조금 늦게 보게 되었네요

물리적으로 나눠서 실행가능한데 따로 띄우는 것보다는 도커스웜이나 쿠버네티스같은 툴을 이용하여 배포하는게 편리할 것 같고 vm 환경에 맞게 방화벽을 포함한 네트워크 설정을 잘 잡아주셔야 할 것 같습니다

두번째 질문 같은 경우에 제가 서적을 읽어보진 못해서 서적에선 어떤 것을 했는지는 말씀드리기 힘들지만 질문 내용으로 보아선 컨테이너를 사용하지 않아도 상관없습니다. 다만 패브릭에서 제공해주는 관련 예제들이 도커로 되어있어 이용하는게 편할 것으로 보이고, 버전이 업데이트 된다든지 피어개수나 디비 구성 바꾸는 등의 테스트를 고려한다면 도커를 이용하는 쪽이 편하시지 않을까 생각됩니다

마지막 질문 같은 경우 밸런스 트랜스퍼의 네트워크 정보들은 원래 분리되어 있는게 맞지만 사용하는 정보들이 좀 혼합되어 있어서 네트워크 정보를 비롯한 관련 설정파일이 많이 필요합니다. 도커관련 파일들을 보시면 어떤 설정 폴더를 같이 들고 들어가는지 파악하실 수 있습니다.

질문

안녕하세요. 질문드릴게있는데요ㅠㅠ1. 처음 네트워크 구성할 때 인증서를 발급 한다고 강의에서 본것 같은데 user는 네트워크에 안들어 가 있는걸로 이해하고 있었거든요. user의 개인키 공개키는 어떻게 생성된건가요?2. 이미 네트워크가 구성이 완료된 후에 새로운 user을 추가하고 싶다면 공개키,개인키발급은 어떤식으로 이루어 지는 건가요?3. 트랜잭션이 peer들에게 endorse를 받고 다시 user에게 돌아가 orderer에 request한다고 배웠는데 이부분은 자동적으로 이루어 지는건가요? 혹시 이부분에서 user가 peer에게 endorse받고 response 받은 후에 orderer에게 안보내도 되는건가요?(즉, peer에게 transaction endorse만 받고 블록에는 안쓸수있는가요)

답변

  1. 영상에 있는 crypto-config 파일을 cryptogen 을 이용해서 만들어진 파일입니다. 이 때, cryptogen 에서 원하는 유저수 만큼 키를 생성해주기도 합니다.
  2. 공개키 개인키는 개인(서버)이 포멧에 맞춰 직접 생성하시고 ca 에 인증을 받으시면 됩니다. 실제로 위 영상의 balance transfer 예제에서 사용한 node sdk 에서도 이런 방식을 사용하고 있습니다.
  3. 자동적으로 이루어지지 않고 직접 orderer 에 보내야 합니다. 질문하신대로 user 가 orderer 에게 transaction 을 안보낼 수 있습니다.

 

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

https://www.youtube.com/watch?v=10uaSz-vYdM&list=PLlYCl1UOH8dima_f8QOIeY1ieuOAYKo_G&index=6

 

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

08. Fabric Gossip Protocol  (0) 2023.07.14
07. Fabric Channel  (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