前言

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)

v2.2, v2.4, v2.5

^12.13.1, ^14.13.1, ^16.14.1

根据官方解释,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


使用blockchain-explorer

。。。。。。(待补)

参考