1. Hyperledger Explorer 환경
Explorer 버전
Hyperledger Explorer Version | Fabric Version | NodeJS Version |
v1.1.8 (Aug 14, 2021) | v1.4 to v2.3 | ^12.13.1, ^14.13.1, ^16.14.1 |
2. Hyperledger Explorer 도커 구축
2.1 Explorer 구축 시작
필요한 파일들 Explorer디렉토리에 복사
# 경로 fabric-samples/my-network
mkdir explorer
cd explorer
# docker-compose.yaml외 파일 설치
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/config.json
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/connection-profile/test-network.json -P connection-profile
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/docker-compose.yaml
my-network의 조직들의 키값들 Exploere디렉토리에 복사
cp -r ../fabric-samples/my-network/organizations/
docker-compose.yaml파일의 환경변수 설정
export EXPLORER_CONFIG_FILE_PATH=./config.json
export EXPLORER_PROFILE_DIR_PATH=./connection-profile
export FABRIC_CRYPTO_PATH=./organizations
- docker-compose.yaml
ports: -> 포트설정 9999
# explorer/docker-compose.yaml
# SPDX-License-Identifier: Apache-2.0
version: '2.1'
volumes:
pgdata:
walletstore:
networks:
mynetwork.com:
external:
name: fabric_test
services:
explorerdb.mynetwork.com:
image: hyperledger/explorer-db:latest
container_name: explorerdb.mynetwork.com
hostname: explorerdb.mynetwork.com
environment:
- DATABASE_DATABASE=fabricexplorer
- DATABASE_USERNAME=hppoc
- DATABASE_PASSWORD=password
healthcheck:
test: "pg_isready -h localhost -p 5432 -q -U postgres"
interval: 30s
timeout: 10s
retries: 5
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- mynetwork.com
explorer.mynetwork.com:
image: hyperledger/explorer:latest
container_name: explorer.mynetwork.com
hostname: explorer.mynetwork.com
environment:
- DATABASE_HOST=explorerdb.mynetwork.com
- DATABASE_DATABASE=fabricexplorer
- DATABASE_USERNAME=hppoc
- DATABASE_PASSWD=password
- LOG_LEVEL_APP=info
- LOG_LEVEL_DB=info
- LOG_LEVEL_CONSOLE=debug
- LOG_CONSOLE_STDOUT=true
- DISCOVERY_AS_LOCALHOST=False
- PORT=${PORT:-9999}
volumes:
- ${EXPLORER_CONFIG_FILE_PATH}:/opt/explorer/app/platform/fabric/config.json
- ${EXPLORER_PROFILE_DIR_PATH}:/opt/explorer/app/platform/fabric/connection-profile
- ${FABRIC_CRYPTO_PATH}:/tmp/crypto
- walletstore:/opt/explorer/wallet
ports:
- ${PORT:-9999}:${PORT:-9999}
depends_on:
explorerdb.mynetwork.com:
condition: service_healthy
networks:
- mynetwork.com
- connection-profile/test-network.json
{
"name": "test-network",
"version": "1.0.0",
"client": {
"tlsEnable": true,
"adminCredential": {
"id": "exploreradmin",
"password": "exploreradminpw"
},
"enableAuthentication": true,
"organization": "Org1MSP",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
},
"orderer": "300"
}
}
},
"channels": {
"mychannel": {
"peers": {
"peer0.org1.example.com": {}
}
}
},
"organizations": {
"Org1MSP": {
"mspid": "Org1MSP",
"adminPrivateKey": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk"
},
"peers": ["peer0.org1.example.com"],
"signedCert": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem"
}
}
},
"peers": {
"peer0.org1.example.com": {
"tlsCACerts": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
},
"url": "grpcs://peer0.org1.example.com:7051"
}
}
}
- config.json
{
"network-configs": {
"test-network": {
"name": "Test Network",
"profile": "./connection-profile/test-network.json"
}
},
"license": "Apache-2.0"
}
2.2 Docker 실행
백그라운드 실행시 'docker-compose up -d' 명령어 입력
# 도커 실행
docker-compose up
# 프로젝트 이름을 선정했으면 아래 이름을 추가하고 실행
COMPOSE_PROJECT_NAME=net docker-compose up
IP:9999 입력하면 해당 블록체인 모니터링 웹 접속가능
설정한 ID/PW는 'connection-profile/test-network.json'에서 확인가능
※ 구축하시다가 서버키면 아래오류나시는 분들 혹시나 계시면 한번 확인해보세여
Error: Failed to connect before the deadline on Endorser- name: peer0.org1.example.com, url:grpcs://localhost:7051, connected:false, connectAttempted:true
얼추 저 오류 삽질하면서 찾아보니까 기존에있는 Fabric-network들의 컨테이너들과 연결이 안되서 나는 오류같더라구요
그래서 Organizations 컨테이너 실행시키는 docker-compose.yaml파일 들어가서 확인해보니까 name 설정을 안해놔서
추가하니까 되더라구요. 안되시는 분들 한번 확인해보시는것도 좋은거 같습니다.
- fabric-samples/my-network/docker/docker-compose.yaml [Fabric 도커 파일]
이름을 ''fabric_test"로 지정합니다.
다른 피어들 environment의 CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_test 이 부분도 같게
- my-network/explorer/docker-compose.yaml [Explorer 도커파일]
이름 설정하고 하니까 Failed to connect before the deadline on Endorser | grpc연결 안되는 오류 안뜨고 문제없이
연결해서 실행됐습니다.
- 참고자료
'보안 및 블록체인 > 블록체인' 카테고리의 다른 글
Blockchain(블록체인)과 보안요소 특징 (0) | 2023.04.19 |
---|---|
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - Hyperledger Dapp블록생성자 변경 (0) | 2022.09.16 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - #5 node.js Application구축 (0) | 2022.08.31 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - #4 go언어 체인코드 개발 (0) | 2022.08.19 |
블록체인 보안이슈 및 위협요소 정리 51%공격 #2 (0) | 2022.08.16 |