'fabric 블록체인 네트워크'의 첫시작은, 일단! cryptogen 과 configtxgen 을 사용하는것입니다. 함 보까요?
- cryptogen
- fabric에서는 'X.509 인증서', '공개키 비밀키' 등을 기반으로 'digital identity'를 갖추게됨으로, 일단... 이 관련파일들 어떻게든 다 갖춰야겠죠?
- 바로 이 'digital identity' 관련파일을 자동으로 알아서 편히 다 생성해주는 것이 'cryptogen 바이너리' 입니다.
- 그럼 일단 바로 사용법부터 보자면, 아래와 같습니다.
- 예) cryptogen generate --config=./crypto-config.yaml
- 저는 https://github.com/bysssss/fabric13 의 crypto-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 와 그 하위가 있음.
- ordererOrganizations
- 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 |