[Hyperledger Fabric] fabric 버전을 확인하는 방법

지난번 포스트에서 Windows10에 docker와 hyperledger fabric samples 실행을 성공했다고 언급한적이 있습니다.
그리고는 제대로 테스트하기 위해서 제 github에 올라가있는 basic-netowrk를 다운받아 실행했습니다.
항상 공부용 맥북에서만 개발,테스트 후 원격 저장소에 푸쉬했기 때문에 Windows에서도 문제없이 돌아갈지 궁금했거든요.

start.sh로 실행했는데.. 시작부터 에러가 발생합니다.

1
2
3
4
5
6
7
8
9
10
11
$ ./start.sh
org1.example.com
2020-05-29 11:56:21.048 KST [common.tools.configtxgen] main -> FATA 001 Missing channelID, please specify it with '-channelID'
2020-05-29 11:56:21.116 KST [common.tools.configtxgen] main -> INFO 001 Loading configuration
2020-05-29 11:56:21.142 KST [common.tools.configtxgen.localconfig] Load -> INFO 002 Loaded configuration: C:\Users\KimYongTaek\hyperledger-fabric-basic-network\configtx.yaml
2020-05-29 11:56:21.142 KST [common.tools.configtxgen] doOutputChannelCreateTx -> INFO 003 Generating new channel configtx
2020-05-29 11:56:21.142 KST [common.tools.configtxgen] main -> FATA 004 Error on outputChannelCreateTx: could not generate default config template: error parsing configuration: error adding policies to channel group: no policies defined
2020-05-29 11:56:21.189 KST [common.tools.configtxgen] main -> INFO 001 Loading configuration
2020-05-29 11:56:21.225 KST [common.tools.configtxgen.localconfig] Load -> INFO 002 Loaded configuration: C:\Users\KimYongTaek\hyperledger-fabric-basic-network\configtx.yaml
2020-05-29 11:56:21.225 KST [common.tools.configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Generating anchor peer update
2020-05-29 11:56:21.225 KST [common.tools.configtxgen] main -> FATA 004 Error on inspectChannelCreateTx: error parsing profile as ch

그럼 그렇지.. 쉽게 될리가..

에러 로그는 configtxgen을 실행하면서 -channelID 인자를 넣어주지 않아서 생기는 문제였습니다.

1
configtxgen -profile OneOrgOrdererGenesis -outputBlock ./config/genesis.block

configtxgen 명령어를 뚫어져라 쳐다보고있는데..

어? 이상하다..

configtxgen의 위치를 찾아보니 최신 버전으로 설치한 fabric-samples/bin안에 있는 파일을 참조하고 있었습니다.
최신 fabric 버전과 구버전 실행 스크립트간의 버전 불일치로 발생한 문제로 보입니다.
맥북의 fabric-samples는 5개월 전쯤에 1.4버전대로 설치한것으로 기억합니다.

설치한 fabric의 버전을 알기 위해 맥북(MacOs)과 데스크탑(Windows)의 cryptogen의 version을 확인해봅니다.

MacOs

1
2
3
4
5
6
7
% cd fabric-samples/bin
bin % ./cryptogen version
cryptogen:
Version: 1.4.3
Commit SHA: b8c4a6a
Go version: go1.11.5
OS/Arch: darwin/amd64

Windows

1
2
3
4
5
6
7
$ cd fabric-samples/bin
$ cryptogen version
cryptogen:
Version: 2.1.0
Commit SHA: 1bdf97537
Go version: go1.14.1
OS/Arch: windows/amd64

역시 예상한 대로 버전이 상이합니다.

Windows에 깔려있는 fabric-samples를 1.4.3버전으로 재설치 후 다시 실행해보니 정상 작동합니다.

야호!

이제 basic-network의 fabric-samples/bin 폴더의 의존성을 끊기 위해 1.4.3버전의 bin 폴더를 basic-network안에 복사해 넣고
start.sh의 bin폴더 경로를 방금 복사한 1.4.3 버전의 bin 폴더로 지정했습니다.
앞으로 다른 환경에서도 잘 동작할겁니다 :)