'fabric 블록체인 네트워크'의 첫시작은, 일단! cryptogen 과 configtxgen 을 사용하는것입니다. 함 보까요?

  • cryptogen
    • fabric에서는 'X.509 인증서', '공개키 비밀키' 등을 기반으로 'digital identity'를 갖추게됨으로, 일단... 이 관련파일들 어떻게든 다 갖춰야겠죠?
    • 바로 이 'digital identity' 관련파일을 자동으로 알아서 편히 다 생성해주는 것이 'cryptogen 바이너리' 입니다.
    • 그럼 일단 바로 사용법부터 보자면, 아래와 같습니다.
      • 예)  cryptogen generate --config=./crypto-config.yaml
    • 저는 https://github.com/bysssss/fabric13crypto-config.yaml 을 기반으로 실습을 진행 했습니다.
      • 참여하는 'orderer organization' 과 'peer organization' 을 셋팅하는 내용입니다.
      • 'EnableNodeOUs' 라는것은~ MSP에서 지원하는 OUs(organizational units)라는 개념 기억하시죠?
      • 그 의미로 보아, 각 node별 해당 organization의 단위역할지정 활성화를 하는 셋팅 일 것 같습니다.
    • 결과적으로 아래와 같은 각종파일들이 생성 되었습니다.
      • ordererOrganizations
        • ca : (아마도) Fabric-CA으로부터 발급받은 '인증서' 와 '비밀키' 가 생성됨. (블록체인용)
        • tlsca : (아마도) Fabric-CA으로부터 발급받은 '인증서' 와 '비밀키' 가 생성됨. (보안통신용)
        • msp
          • channel MSP
          • cacerts : MSP에서 지원하는 CA 개념으로, CA식별을 위한 '인증서' 가 생성됨. (/ca 폴더의 '인증서' 와 동일함)
          • tlscacerts : MSP에서 지원하는 TLS 개념으로, 신뢰하는 보안통신을 위한 '인증서' 가 생성됨. (/tlsca 폴더의 '인증서' 와 동일함)
          • admincerts : MSP에서 지원하는 Administrator 개념으로, 해당 organization에서 어드민역할을 위한 '인증서' 가 생성됨.
        •  orderers
          • (아마도) '기본 어드민용 1개' + 'template 갯수' 만큼의 관련파일이 생성됨.
          • msp
            • local MSP
            • cacerts : 해당 node에 "/msp/cacerts 폴더의 인증서"를 넣어줌.
            • tlscacerts : 해당 node에 "/msp/tlscacert 폴더의 인증서"를 넣어줌.
            • admincerts : 해당 node에 "/msp/admincerts 폴더의 인증서"를 넣어줌.
            • signcerts : MSP에서 지원하는 개념으로, 'digital identity'에 사용되는 '인증서' 가 생성됨. 
            • keystore : MSP에서 지원하는 개념으로, 'difital identity'에 사용되는 '비밀키' 가 생성됨.
          • tls
            • ca.crt : "/orderer/.../msp/tlscacerts 폴더의 인증서" 와 동일함.
            • server.crt : 각 node의 보안통신 '인증서'
            • server.key : 각 node의 보안통신 '비밀키'
        • users
          • (아마도) '기본 어드민용 1개' + 'users 갯수' 만큼의 관련파일이 생성됨.
          • msp
            • cacerts : 동일
            • tlscacerts : 동일
            • admincerts : 어드민용은 동일 , 유저용은 다름
            • signcerts : ???
            • keystore : ???
          • tls
            • ca.crt : 동일
            • client.crt : 각 사용자의 보안통신 '인증서'
            • client.crt : 각 사용자의 보안통신 '비밀키'
      • peerOrganizations
        • ca : ordererOrganization 과 마찬가지임.
        • tlsca : ordererOrganization 과 마찬가지임.
        • msp (channel MSP)
          • 마찬가지로... admincerts, cacerts, tlscacerts 가 있음.
          • EnableNodeOUs 에 따른 config.yaml 도 있음. (// TODO : 내부내용설명)
        • peers (local MSP)
          • (아마도) 'template 갯수' 만큼의 관련파일이 생성됨.
          • 마찬가지로... msp, tls 와 그 하위가 있음.
          • EnableNodeOUs 에 따른 config.yaml 도 있음. (// TODO : 내부내용설명)
        • users
          • (아마도) '기본 어드민용 1개' + 'users 갯수' 만큼의 관련파일이 생성됨.
          • 마찬가지로... msp, tls 와 그 하위가 있음.
  • configtxgen
    • 이제 'fabric 블록체인 네트워크' 구축에 필요한 기초파일들을 생성하면 됩니다.
    • 바로 'configtxgen 바이너리'를 사용해, 'genesis Bolck' 과 'channel Tx' 등을 생성 할 수 있는데~ 이것이 바로 'fabric 블록체인 네트워크' 에 기본이되는 파일들 입니다.
    • 사용법은 아래와 같습니다.
      • 예)
      • echo $PWD
      • export FABRIC_CFG_PATH=${PWD}
      • echo $FABRIC_CFG_PATH
      • configtxgen -profile FabtestGenesis -outputBlock ./configtx/genesis.block
      • configtxgen -profile FabtestChannel -outputCreateChannelTx ./configtx/channel.tx -channelID ftchannel
      • configtxgen -profile FabtestChannel -outputAnchorPeersUpdate ./configtx/anchorSamsung.tx -channelID ftchannel -asOrg Samsung
      • configtxgen -profile FabtestChannel -outputAnchorPeersUpdate ./configtx/anchorHyundai.tx  -channelID ftchannel -asOrg Hyundai
    • 저는 https://github.com/bysssss/fabric13 의 configtx.yaml 을 기반으로 실습을 진행 했습니다.
      • 'blockchain network'를 구성하는 기초내용을 담는 'genesis Block' 과 'channel Tx' 관련 내용 입니다.
      • 기본적으로 참여하는 orderer 및 peer 에 organization 관련정보를 적용합니다.
      • 그리고, 'genesis Block' 와 'channel Tx' 생성에 사용되는 profile를 직접 정의합니다.
      • 'genesis Block' 프로파일
        • Orderer으로써 참여하는 'orderer organization'를 정하며, 해당 'channel MSP' 정보도 참조 될 것 같습니다.
        • Consortiums으로써 참여하는 'peer organization'을 정하며, 해당 'channel MSP' 정보도 참조 될 것 같습니다.
      • 'channel Tx' 프로파일
        • Consortium을 특정하는것 같습니다.
        • Application으로써 참여하는 'peer organization'을 정하며, 해당 'channel MSP' 및 'Anchor Peers' 정보도 참조 될 것 같습니다.
      • ...
    • 결과적으로 아래와 같은 기초파일들이 생성 되었습니다.
      • genesis.block : 이것에 해당 'blockchain network'의 첫블록이 됩니다. 아주 근본적인 정보를 가지고 있겠죠? (// TODO : 상세히)
      • channel.tx : 해당 'blockchain network'에서 하나의 channel을 ... (// TODO : 상세히)
      • anchorSamsung.tx : // TODO : 상세히
      • anchorHyundai.tx : // TODO : 상세히

// TODO : 타configtx의 Capabilities ???

// TODO : configtx.yaml 공식가이드 없나???

-끝-

'hyperledger > fabric.실습' 카테고리의 다른 글

fabric 실습3 : channel & chaincode  (0) 2019.05.12
fabric 실습2 : docker 와 docker-compose  (0) 2019.05.10
fabric 실습0 : 준비  (0) 2019.05.09

+ Recent posts