前言
blockchain-explorer作为Hyperledger的辅助孵化Fabric开发工具,位于
hyperledger-labs/blockchain-explorer
路径下。本教程中测试的是2.0.0版本,对应的Fabric及NodeJS版本如下表所示:
Explorer Version | Fabric Version Supported | NodeJS Version Supported |
v2.0.0 (Sep 05, 2023) |
根据官方解释,blockchain-explorer是一个简单、强大、易于使用、维护良好的开源实用程序,用于浏览底层区块链网络上的活动。用户可以在macOS和Ubuntu上配置和构建Hyperledger Explorer。
截止今日,最新官方提供的安装方案有二:基于Docker;基于代码基(重新编译——高级方式)。本文介绍基于Docker的安装使用方案。
先决条件
- Docker
- Docker Compose
注意(适用于v2.0.0及更高版本):当启动docker compose时,以下docker映像会自动从GHCR而不是docker Hub中提取。
- Hyperledger Explorer ghcr存储库
- Hyperledger Explorer PostgreSQL ghcr存储库
注意(适用于v1.18及以下版本):以下docker镜像是在启动docker compose时自动从docker Hub中提取的。
Hyperledger Explorer docker存储库
Hyperledger Explorer PostgreSQL docker存储库
启动Hyperledger Fabric网络
本文假设您已经按照Hyperledger Fabric官方教程启动了测试网络!
配置
创建新目录(例如explorer)
mkdir explorer
cd explorer
从存储库复制以下4个文件:
- .env
- docker-compose.yaml
- examples/net1/connection-profile/test-network.json
- examples/net1/config.json
共使用3个命令:
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
然后,从您的结构网络(例如,fabric samples/test network)复制整个加密工件目录(organizations/):
cp -r ../fabric-samples/test-network/organizations/ .
现在,您应该拥有以下文件和目录结构:
docker-compose.yaml
config.json
connection-profile/test-network.json
organizations/ordererOrganizations/
organizations/peerOrganizations/
在docker-compose.yaml中编辑环境变量以与您的环境保持一致:
networks:
mynetwork.com:
external:
name: fabric_test
...
services:
explorer.mynetwork.com:
...
volumes:
- ./config.json:/opt/explorer/app/platform/fabric/config.json
- ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
- ./organizations:/tmp/crypto
- walletstore:/opt/explorer/wallet
另一种选择是在shell中导出环境变量:
export EXPLORER_CONFIG_FILE_PATH=./config.json
export EXPLORER_PROFILE_DIR_PATH=./connection-profile
export FABRIC_CRYPTO_PATH=./organizations
当您通过网桥网络将Explorer连接到Fabric网络时,需要将DISCOVERY_AS_LOCALHOST设置为false,以禁用到LOCALHOST的主机名映射。
services:
...
explorer.mynetwork.com:
...
environment:
- DISCOVERY_AS_LOCALHOST=false
接下来,将用户的证书替换为连接配置文件(test-network.json)中的管理员证书和秘密(私有)密钥。您需要在Explorer容器上指定绝对路径。
之前:
"adminPrivateKey": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk"
}
之后应该变成:
"adminPrivateKey": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"
}
请确保替换所有路径。
启动容器服务
启动Fabric网络后,运行以下操作以启动explorer和explorer-db服务:
$ docker-compose up -d
清理
要停止服务而不删除持久数据,请运行以下操作:
$ docker-compose down
在docker-compose.yaml中,为持久数据(Postgres数据和用户钱包)分配了两个命名卷。如果要清除这些命名卷,请运行以下操作:
$docker compose down-v