Hyperledger Explorer是一個簡單易用的開源工具,可以用於監視 區塊鏈網絡中的活動。Hyperledger Explorer支持Fabric、Iroha等 多種區塊鏈,可以運行在MocOS和Ubuntu下。
Hyperledger Fabric區塊鏈開發教程:
Fabric區塊鏈Node.js開發詳解Fabric區塊鏈Java開發詳解Fabric區塊鏈Golang開發詳解
1.0 Hyperledger Explorer與Fabirc版本對應關係說明
Hyperledger Explorer和Fabric以及NodeJS之間的版本對應關係如下:
2.0 Hyperledger Explorer源代碼目錄結構
<code>blockchain-explorer
|
├── app Application backend root, Explorer configuration
| ├── rest REST API
| ├── persistence Persistence layer
| ├── fabric Persistence API (Hyperledger Fabric)
| └── platform Platforms
| | └── fabric Explorer API (Hyperledger Fabric)
| └── test Application backend test
|
└── client \t Web UI
├── public Assets
└── src Front end source code
├── components React framework
├── services Request library for API calls
├── state Redux framework
└── static Custom and Assets/<code>
3.0 Hyperledger Explorer的依賴說明
在安裝和運行Hyperledger Explorer之前需要先滿足以下依賴條件:
- Nodejs 8.11.x(注意目前v9.x還不支持)
- PostgreSQL 9.5或更高版本
- jq
- 基於Linux的操作系統,例如Ubuntu或MacOS
以下版本的Docker已經驗證過支持Hyperledger Explorer:
- Docker CE 18.09.2或更高版本
- Docker Compose 1.14.0
4.0 克隆Hyperledger Explorer的Git倉庫
執行以下命令克隆Hyperledger Explorer的Git倉庫以獲得最新版本:
<code>git clone https://github.com/hyperledger/blockchain-explorer.git
cd blockchain-explorer/<code>
5.0 PostgreSQL數據庫設置
首先進入app目錄:
<code>cd blockchain-explorer/app/<code>
然後修改explorerconfig.json以更新PostgreSQL數據庫的配置:
<code>"postgreSQL": {
"host": "127.0.0.1",
"port": "5432",
"database": "fabricexplorer",
"username": "hppoc",
"passwd": "password"
}/<code>
配置數據庫的另一種替代方式是使用環境變量,例如:
<code>export DATABASE_HOST=127.0.0.1
export DATABASE_PORT=5432
export DATABASE_DATABASE=fabricexplorer
export DATABASE_USERNAME=hppoc
export DATABASE_PASSWD=pass12345/<code>
注意:在每次執行git pull之後,你可能需要修改數據庫目錄的 權限。執行以下命令進行權限修改:
<code>cd blockchain-explorer/app/persistence/fabric/postgreSQL
chmod -R 775 db//<code>
接下來運行數據庫創建腳本。
在Ubuntu下執行如下命令:
<code>cd blockchain-explorer/app/persistence/fabric/postgreSQL/db
sudo -u postgres ./createdb.s/<code>
在MacOS執行如下命令:
<code>cd blockchain-explorer/app/persistence/fabric/postgreSQL/db
./createdb.sh/<code>
現在可以連接到PostgreSQL數據庫,運行DB狀態命令:
- \\l:查看創建的fabricexplorer數據庫
- \\d:查看創建的數據表
如果你的Postgresql啟用了TLS,請參考Postgresql官方文檔。
5.1 Hyperledger Explorer身份授權配置
首先進入瀏覽器應用目錄:
<code>cd blockchain-explorer/app/<code>
然後修改explorerconfig.json以更新授權配置(JWT):
<code>"jwt": {
"secret" : "a secret phrase!!",
"expiresIn": "2 days"
}/<code>
其中:
- secret:用於簽名消息載荷的密文
- expiresIn:過期時間,以秒為單位的數值或一個時間字符串,例如:60,2 days,10h,7d等,可參考zeit/ms
6.0 Fabric網絡設置
注意:完成這一部分的設置需要一定的時間。
首先參考Hyperledger官方文檔Building Your First Network 搭建好你自己的網絡。
然後修改配置文件/blockchain-explorer/app/platform/fabric/config.json裡的 對應的值。
Hyperledger Explorer默認使用fabric-samples/first-network
請確保在docker-compose.yaml文件中為每個Peer節點都設置了 環境變量CORE_PEER_GOSSIP_BOOTSTRAP和CORE_PEER_GOSSIP_EXTERNALENDPOINT。 這些設置用來啟用Fabric發現服務,Hyperledger Explorer依賴於該服務來 自動發現Fabric區塊鏈網絡的拓撲結構。
6.1 為Hyperledger Explorer配置運維服務
請參考 CONFIG-OPERATIONS-SERVICE-HLEXPLORER.md來 為Hyperledger Explorer配置運維服務。
7.0 配置Hyperledger Fabric
開啟另一個終端,進入以下目錄:
<code>cd blockchain-explorer/app/platform/fabric/<code>
修改config.json文件來定義fabric網絡的連接配置文件:
<code>{
"network-configs": {
"first-network": {
"name": "firstnetwork",
"profile": "./connection-profile/first-network.json",
"enableAuthentication": false
}
},
"license": "Apache-2.0"
}/<code>
- first-network:是連接配置的名稱,可以隨意修改
- name:你的fabric網絡的名字
- profile:你的連接配置文件的路徑
修改JSON文件first-network.json中的連接配置信息:
- 修改fabric-path指向你的fabric網絡硬盤路徑:1/blockchain-explorer/app/platform/fabric/connection-profile/first-network.json
- 為adminPrivateKey配置選項提供完整的磁盤路徑,它通常 以_sk結尾,例如:1"/fabric-path/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/aaacd899a6362a5c8cc1e6f86d13bfccc777375365bbda9c710bb7119993d71c_sk"
- adminUser是網絡的管理用戶
- adminPassword是管理用戶的密碼
- enableAuthentication標誌用來啟用登錄頁,設置為false將跳過 身份驗證
7.1 為Hyperledger Explorer配置Fabcar示例,可選
參考Hyperledger Fabric示例中的Fabcar Sample Network 為Hyperledger Explorer設置連接Fabcar示例網絡。
- 確保在docker-compose.yaml文件中為每個peer節點都是遏制了 CORE_PEER_GOSSIP_BOOTSTRAP和CORE_PEER_GOSSIP_EXTERNALENDPOINT 環境變量。這些設置用於啟用fabric的自動發現服務。
- 參考CONFIG-FABCAR-HLEXPLORER.md 配置Fabcar示例網絡
7.2 為Hyperledger Explorer配置Balance Transfer示例
參考Hyperledger Fabric示例中的[]Balance Transfer Sample(https://github.com/hyperledger/fabric-samples/tree/release-1.4/balance-transfer) 為Hyperledger Explorer設置對Balance Transfer網絡的訪問。
參考文檔:CONFIG-BALANCE-TRANSFER-HLEXPLORER.md
8.0 Hyperledger Composer 設置
TODO
9.0 Hyperledger Cello設置
TODO
10.0 構建Hyperledger Explorer
注意,請在每次git pull之後重複以下步驟!
在終端執行如下命令安裝、測試並構建項目
<code>./main.sh install/<code>
在終端執行如下命令清理/node_modules、client/node_modules\\ client/build、client/coverage、app/test/node_modules目錄
<code>./main.sh clean/<code>
在終端執行如下命令測試REST API、UI組件並生成代碼覆蓋報告;
<code>./main.sh test/<code>
或者:
<code>cd blockchain-explorer
npm install
cd blockchain-explorer/app/test
npm install
npm run test
cd client/
npm install
npm run test:ci -- -u --coverage
npm run build/<code>
10.1 配置Hyperledger Explorer啟用HTTPS
參考:CONFIG-HTTPS-HLEXPLORER.md
11.0 運行Hyperledger Explorer
首先進入應用目錄:
<code>cd blockchain-explorer/app/<code>
然後修改explorerconfig.json來更新同步屬性,例如同步類型、平臺等。
如果修改了explorerconfig.json中的參數,請重新啟動同步進程。
如果同步進程和Hyperledger Explorer不在同一臺主機上,那麼在 Explorer的explorerconfig.json中應當將同步類型設置為host:
<code>"sync": {
"type": "host"
}/<code>
如果同步進程和Hyperledger Explorer安裝在同一臺主機上,則設置 為local類型:
<code>"sync": {
"type": "local"
}/<code>
另外開啟一個終端:
- cd blockchain-explorer/
- ./start.sh 啟動後臺
- ./start.sh debug 以調試方式啟動後臺
- ./start.sh print 顯示幫助信息
- 在瀏覽器中打開http(s)://localhost:8080
- ./stop.sh 終止node服務器
如果Sync進程在單獨主機中,那麼在新的終端中:
- cd blockchain-explorer/
- ./syncstart.sh 啟動同步節點
- ./syncstop.sh 停止同步節點
- 如果之前在瀏覽器中訪問了hyperledger explorer,請先清理瀏覽器緩存
- 如果Hyperledger Fabric網絡部署在另一臺機器上,請切換start.sh/syncstart.sh 中的DISCOVERY_AS_LOCALHOST標誌位false
11.1 Hyperledger Explorer日誌配置
使用如下的環境變量,可以控制Hyperledger Explorer中每個組件 (例如app、db和console)的日誌輸出等級,例如: ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF。 每個文件按時間(7天)和大小(8MB)滾動。
- LOG_LEVEL_APP:應用層日誌等級,日誌寫入logs/app/app.log,默認為DEBUG
- LOG_LEVEL_DB:後端日誌等級,日誌寫入logs/db/db.log,默認為DEBUG
- LOG_LEVEL_CONSOLE:控制檯日誌等級,日誌寫入logs/console/console.log,默認為INFO
- LOG_CONSOLE_STDOUT :iang控制檯日誌目標從文件切換為標準輸出設備,默認值:false
12.0 使用Docker運行Hyperledger Explorer
如果以下條件滿足的話,可以利用docker自動部署Hyperledger Explorer:
- 安裝了bash
- 在部署機器上安裝有docker
- 在部署機器上安裝有docker compose
12.1 Docker倉庫
Hyperledger Explorer docker倉庫: https://hub.docker.com/r/hyperledger/explorer/
Hyperledger Explorer PostgreSQL docker 倉庫: https://hub.docker.com/r/hyperledger/explorer-db
12.2 使用docker compose運行Hyperledger Explorer
修改示例docker-compose.yaml文件以匹配你自己的環境:
- networks > mynetwork.com > external > name
<code>networks:
mynetwork.com:
external:
name: net_byfn/<code>
- services > explorer.mynetwork.com > volumes
<code>volumes:
- ./examples/net1/config.json:/opt/explorer/app/platform/fabric/config.json
- ./examples/net1/connection-profile:/opt/explorer/app/platform/fabric/connection-profile
- ./examples/net1/crypto:/tmp/crypto/<code>
- 如果Hyperledger Explorer是通過橋接網絡連接到Fabric網絡 的,你需要設置DISCOVERY_AS_LOCALHOST為false以便禁止將 主機名映射為localhost:
<code>explorer.mynetwork.com:
...
environment:
...
- DISCOVERY_AS_LOCALHOST=false/<code>
- 在啟動Fabric網絡後,運行如下命令啟動Hyperledger Explorer和explorer-db服務
<code>cd /blockchain-explorer docker-compose up -d/<code>
- 運行如下命令停止服務但不刪除持久化數據:
<code>docker-compose down/<code>
- 在docker-compose.yaml中,為持久化數據分配了兩個命名 卷(用於postgresql數據和用戶錢包),運行以下命令清理 這些數據:
<code>docker-compose down -v /<code>
12.3 ~ 18.0
TODO
原文鏈接:http://blog.hubwiz.com/2020/03/09/hyperledger-explorer-tutorial/
閱讀更多 新缸中之腦 的文章