[Hyperledger Tools] 1. Explorer 사용해보기 (feat. BYFN)

Ella Lim
EmBlock Tech
Published in
11 min readFeb 28, 2020

[Note] 📣Hyperledger Explorer는 현재 리눅스 계열 OS만 지원합니다. 본 튜토리얼은 MacOS Catalina, Hyperledger Explorer Version v.1.0.0-rc2, Fabric 1.4.4, Node.js 8.11.4 기준으로 작성되었습니다.

Hyperledger Explorer란?

하이퍼레저 툴 프로젝트 중 하나인 Hyperledger Explorer는 블록체인의 블록, 트랜잭션, 네트워크 정보 등을 조회할 수 있는 웹 애플리케이션 형태의 모니터링 툴입니다. 현재 기준으로 15개의 버전이 존재하며 최신 버전은 v.1.0.0-rc2입니다.

모니터링 대상: Fabric first-network

익스플로러를 사용하기 위해서는 모니터링 할 대상이 필요합니다. 이를 위해 패브릭 프로젝트 fabric-samples를 이용하여 대상 네트워크를 구축하겠습니다. 이때 Fabric 공식 문서에서 제공하는 BYFN(Building Your First Network) 튜토리얼을 참조합니다.

본 실습을 위해 우선 패브릭 프로젝트를 사용하여 네트워크를 구축한 후 익스프로러 프로젝트를 네트워크와 연동해보겠습니다. 😎

네트워크 구축하기

Step 1: Fabric Prerequisites

가장 먼저 패브릭 네트워크 구축을 위한 필수 도구를 설치하고 환경변수를 설정하겠습니다. 버전에 유의하여 설치를 완료합니다. 자세한 내용은 이 링크 문서를 참조하세요.

[NOTE] Step 4에서 설치할 Explorer의 Prerequisites도 충족하기 위해 도커 버전은 패브릭 공식 문서와는 다르게 명시되어 있습니다.

$ export GOPATH=$HOME/go           # GOPATH 설정
$ export PATH=$GOPATH/bin:$PATH # PATH 설정
  • Node.js (8.11.4)
    (기존에 다른 버전이 이미 설치되어 있는 경우 Node Version Manager를 활용하면 필요한 버전으로 쉽게 바꿔 사용할 수 있습니다. $ nvm use 8.11.4)
  • npm (5.6.0)

Step 2: BYFN를 위한 패브릭 패키지 설치

샘플 코드와 바이너리 설치

Fabric 프로젝트가 제공하는 공식 튜토리얼을 참조하여 fabric-samples, 도커 이미지를 다운로드하고 쉽게 예제 네트워크를 실행해 볼 수 있습니다.

현재 익스플로러 프로젝트의 깃허브 문서에 따르면 가장 최신 버전인 v.1.0.0-rc2가 패브릭 1.4.0-1.4.4를 지원한다고 되어있으므로 우리는 패브릭 1.4.4 버전 패키지를 다운로드해 보겠습니다.

터미널 상에서 작업할 경로로 이동한 후 다음 명령을 실행합니다.

$ curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.4 1.4.4 0.4.18 

bash -s -- 뒤 숫자는 버전을 명시한 것으로 차례로 <패브릭 패키지 버전>, <CA 버전>, <도커 이미지 버전>을 나타냅니다.

패브릭 바이너리 전역 실행을 위한 환경변수 설정

다운로드된 fabric-samples폴더 하위 bin 폴더에는 configtxgen,configtxlator,cryptogen,discover,idemixgen,orderer,peer, fabric-ca-client 8가지 바이너리가 있습니다. 해당 바이너리들을 전역적으로 사용하기 위해서는 환경변수를 설정해야 합니다.

$ export PATH=<path to download location>/bin:$PATH

올바른 버전의 도커 이미지가 다운로드 되었는지도 확인합니다.

$ docker images

Step 3: BYFN 구동

터미널 상에서 Step 2에서 다운받은fabric-samples/first-network 폴더로 이동 후 다음 명령을 수행합니다.

$ ./byfn.sh generate

해당 명령어를 통해 네트워크 구동에 필요한 인증서를 발급하고, 오더러 채널 구동에 필요한 channel-artifacts를 생성합니다.

위 명령어 실행 후 터미널에서 Y/n 여부를 물어보면 Y로 대답합니다.

Generating certs and genesis block for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n]

패브릭 노드들의 인증서와 키가 발급되고 Ordering 서비스를 구동하기 위한 제네시스 블록과 채널 설정에 필요한 configuration transaction들이 생성됩니다. (crypto-configchannel-artifacts 폴더에서 확인할 수 있습니다. )

다음 명령으로 패브릭 네트워크를 구동하고 중지시킬 수 있습니다.

$ ./byfn.sh up
$ ./byfn.sh down

Docker Dashboard나 docker ps 명령어를 통해 up 명령어로 구동된 도커 컨테이너를 확인해 봅시다.

아래와 같이 Peer 4개와 Orderer 1개, 네트워크와 인터랙션하기 위한 cli 컨테이너가 net이라는 패브릭 네트워크를 구성하고 있고 채널(mychannel)에 설치된 체인코드(mycc)를 위한 컨테이너 3개도 볼 수 있습니다.

네트워크 구동 후 Docker Dashboard
네트워크 구동 후 Docker Dashboard

이제 패브릭 네트워크가 구동되었으니 익스플로러를 붙여보겠습니다!🥳

익스플로러 연동하기

Step 4: Explorer Prerequisites

익스플로러를 동작시키기 위한 추가 도구를 설치합니다. [Dependencies Guide]

  • PostgreSQL (9.5 or greater)
  • jq

익스플로러 Github 문서를 참조하여 익스플로러 프로젝트를 다운로드하고 익스플로러가 사용할 데이터베이스를 준비합니다.

  • 4.0 Clone Git Repository
    다운로드를 완료하면 blockchain-explorer가 나타납니다. 다운받은 프로젝트의 package.json파일을 확인하여 패브릭 관련 패키지 버전이 대상 네트워크 구성 버전과 맞는지 확인합니다.(dependenciefabric-ca-client, fabric-client, fabric-network1.4.4로 되어있는지 확인합니다.)
  • 5.0 Database Setup
    Step 4에서 설치한 PostgreSQL가 실행 상태인지 확인 후 진행해야 합니다.

대상 네트워크 설정 변경

익스플로러 설치에 앞서 네트워크 설정을 해보겠습니다.
익스플로러는 fabric-samples/first-network를 활용하는 것으로 기본 설정 되어있습니다. 하지만 프로젝트 경로인증서, 키 파일 이름은 저마다 다르기 때문에 설정 파일을 수정해야 합니다.

다운받은 익스플로러 프로젝트의 blockchain-explorer/app/platform/fabric/connection-profile/first-network.json파일을 수정하겠습니다.

기관 사용자의 MSP가 제대로 입력되도록 인증서와 키 파일의 full path를 정확하게 입력해줍니다. first-network.json파일에서는 다음 부분을 변경합니다.

  • Org1MSP의 adminPrivateKey.path의 값, signedCert.path 파일
  • peer0.org1.example.com의 tlsCACerts 파일

‘/fabric-path’로 된 부분들을 fabric-samples 가 위치한 다운로드 한 경로로 바꿔주고 해당 *_sk 파일을 로컬에 새로 생성된 파일명으로 변경합니다.

"organizations": {
"Org1MSP": {
"mspid": "Org1MSP",
"fullpath": true,
"adminPrivateKey": {
"path": "/fabric-path/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/1bebc656f198efb4b5bed08ef42cf3b2d89ac86f0a6b928e7a172fd823df0a48_sk"
},
"signedCert": {
"path": "/fabric-path/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem"
}
}
},
"peers": {
"peer0.org1.example.com": {
"tlsCACerts": {
"path": "/fabric-path/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
},
"url": "grpcs://localhost:7051",
"eventUrl": "grpcs://localhost:7053",
"grpcOptions": {
"ssl-target-name-override": "peer0.org1.example.com"
}
}

🎉Final Step: Explorer 설치와 실행!

blockchain-explorer 경로의 main.sh스크립트를 이용하여 익스플로러를 설치합니다.

$ ./main.sh install

필요한 패키지 설치 다운로드, 테스트, build가 실행됩니다.

[NOTE] build 완료 후 출력 로그를 보고 npm update 를 실행하면 안됩니다. 현재 패브릭의 가장 최신 버전은 1.4.6으로 익스플로러의 요구사항인 1.4.4와 호환되지 않아 실행시 오류가 발생하게 됩니다.

Browserslist: caniuse-lite is outdated. Please run next command `npm update`

실행 전 blockchain-explorer/app/explorerconfig.jsonsync 프로퍼티가local로 되어있는지 확인합니다.

"sync": {
"type": "local"
}

blockchain-explorer경로에서 start.shLOG_CONSOLE_STDOUT 옵션을 true로 변경하여 콘솔에서 로그를 바로 볼 수 있도록 하겠습니다.

$ export LOG_CONSOLE_STDOUT=true

start.sh스크립트를 이용하여 익스플로러를 실행합시다.

$ ./start.sh   

stop.sh로 중지할 수 있습니다.

$ ./stop.sh   

./start.sh실행 후 브라우저를 열어 http://localhost:8080/ 으로 접속하여 익스플로러를 이용합니다.

익스플로러 진입하기

브라우저를 통해 익스플로러로 접근하면 아래와 같이 로그인 창이 나타납니다.

User와 Password는 blockchain-explorer/app/platform/fabric/connection-profile/first-network.json에 설정되어 있습니다. 특별히 바꾸지 않았다면 default로 지정되어있는 admin/adminpw를 사용하여 익스플로러 메인 화면으로 진입할 수 있습니다.

sign in

드디어 아래와 같이 익스플로러의 메인화면에 진입하였습니다! 🥳👏👏👏

익스플로러 메인화면

--

--

Ella Lim
EmBlock Tech

EmBlock Front-end (Vue.js) Engineer & Blockchain newbie