hyperledger explorer是一个简单但功能强大,易于使用,高度维护的开源浏览器,用于查看底层区块链网络上的活动。
目录结构
├── app fabric GRPC interface
├── db the mysql script and help class
├── explorer_client Web Ui
├── first-network Basic fabric network setup
├── listener websocket listener
├── metrics metrics about tx count per minute and block count per minute
├── service the service
├── socket push real time data to front end
├── timer Timer to post information periodically
└── utils Various utility scripts
要求
以下是安装和运行超级用户资源管理器所需的软件依赖关系
- nodejs 6.9.x(请注意,v7.x尚不支持)
- MySQL 5.7或更高版本
- Hyperledger Explorer可与Hyperledger Fabric 1.0配合使用。安装以下软件依赖项来管理光纤网络。
- docker 17.06.2-ce [ https://www.docker.com/community-edition ]
- docker-compose 1.14.0 [ https://docs.docker.com/compose/ ]
安装
使用以下命令克隆blockchain explorer
的最新版本
git clone https://github.com/hyperledger/blockchain-explorer.git
cd blockchain-explorer
数据库设置
在区块存储中,使用mysql存储数据库,因此,确保系统已经安装了mysql
数据库server
端及client
端,数据库的脚本路径为db/fabricexplorer.sql
,通过下面的命令建立数据库并插入表结构等:
mysql -u<username> -p < db/fabricexplorer.sql
其中<username>
为具体的数据库用户名字,上面命令输入后回车,会要求输入具体的<username>
用户的密码,输入密码回车,即可执行数据库脚本。
结构网络设置
在这个blockchain-explorer
的版本库中,提供了示例代码first-network
,如下:
1. cd first-network
2. ./bootstrap-1.0.2.sh --这将下载必要的二进制文件和hyperledger的镜像
3. mkdir -p ./channel-artifacts
4. ./byfn.sh -m generate -C mychannel
5. ./byfn.sh -m up -C mychannel
这将带来渠道名称为mychannel
的组织网络,如果已经通过hyperledger-fabric
创建了自己的网络的话,可采取fabric
自己的网络。一旦设置了网络,必须修改config.json
文件。
运行blockchain explorer浏览器
开启另一个终端,将路径切换到blockchain-explorer
文件路径:
cd blockchain-explorer/
- 修改config.json的文件中的
channel
渠道、mysql
数据库的用户名username
和密码passwd
"channel ": "mychannel",
"mysql":{
"host": "127.0.0.1",
"database": "fabricexplorer",
"username": "root",
"passwd": "root"
}
其中channel
的字段,在hyperledger-fabric
中可以通过下面的路径找到当前bnd
的路径:
- 在当期用户下,找到
.composer
文件夹:
--显示所有文件夹,包含.composer等隐藏文件
ls -la
- 进入该目录:
cd .composer
目录结构如下:
.
|-- cards
| |-- PeerAdmin@fabric-network
| | `-- credentials
| |-- PeerAdmin@hlfv1
| | `-- credentials
| |-- admin@tutorial-network
| | `-- credentials
| `-- admin@vehicle-lifecycle-network
| `-- credentials
`-- client-data
|-- PeerAdmin@fabric-network
|-- PeerAdmin@hlfv1
|-- admin@tutorial-network
`-- admin@vehicle-lifecycle-network
在改文件下可以看到所有的业务网络的信息,进入cards
路径,选择具体的某个业务网络文件,如admin@tutorial-network
, 该文件包含以下内容:
.
|-- connection.json
|-- credentials
`-- metadata.json
其中connection.json
包含了连接hyperledger
的信息:
{
"name": "hlfv1",
"type": "hlfv1",
"orderers": [
{
"url": "grpc://localhost:7050"
}
],
"ca": {
"url": "http://localhost:7054",
"name": "ca.org1.example.com"
},
"peers": [
{
"requestURL": "grpc://localhost:7051",
"eventURL": "grpc://localhost:7053"
}
],
"channel": "composerchannel",
"mspID": "Org1MSP",
"timeout": 300
}
其中channel
则为具体的通道值,拷贝composerchannel
并填入config.json
对应的channel
值中,如下:
{
"network-config": {
"org1": {
"name": "peerOrg1",
"mspid": "Org1MSP",
"peer1": {
"requests": "grpc://127.0.0.1:7051",
"events": "grpc://127.0.0.1:7053",
"server-hostname": "dev-peer0.org1.example.com-tutorial-network-0.16.3"
},
"admin": {
"key": "/first-network/keystore",
"cert": "/first-network/signcerts"
}
}
},
"host":"localhost",
"port":"8081",
"channel": "composerchannel",
"GOPATH":"../artifacts",
"keyValueStore":"/tmp/fabric-client-kvs",
"eventWaitTime":"30000",
"mysql":{
"host":"127.0.0.1",
"port":"3306",
"database":"fabricexplorer",
"username":"root",
"passwd":"root"
}
}
如果连接的是非TLS的peer节点,则需要修改peer
的URL协议(grpcs->grpc
)和端口(9051->9050
),然后删除tls_cacerts
。根据这个值,应用程序决定是采用TLS
或者非TLS
录像访问hyperledger
网络。
3. 安装npm的依赖
在blockchain-explorer
的文件下,输入以下命令安装npm
依赖包:
npm install
安装完毕,则启动区块链浏览器:
./start.sh
执行上面命令,会把日志输出在当期目录下的log.log
文件里,可以通过tail -f log.log
命令查看日志变化。
在浏览器上启用url
访问:
http://localhost:8080
系统截图
这里是区块链浏览器的样子,特别高大上
监控进程
为了保证blockchain explorer
浏览器的稳定运行,在blockchain-explorer
的文件夹下,有个监控进程的脚本monitor.sh
定时的扫描进程是否存在,若不存在,则重启服务:
while [ 1 ];do
sleep 10
process_num=$(ps -elf | grep -v grep | grep main.js | wc -l)
if [ ${process_num} -eq 0 ];then
echo "restart..."
./start.sh
echo "start ok~"
fi
done
搭配着区块链浏览器,更让人轻松的访问查看区块链上的区块信息。
2018-1-27
完。