Hyperledger Fabric 1.4 搭建区块链浏览器

1. 准备工作

  • 安装nodejs
    sudo apt-get install nodejs
    sudo apt install nodejs-legacy
    
    # 验证版本
    node -v
    
    # 更新 npm 包镜像源
    sudo npm config set registry https://registry.npm.taobao.org
    
  • 安装npm
    sudo apt-get install npm
    
    # 验证版本
    npm -v
    
  • 安装jq
    sudo apt-get install jq
    
    # 验证版本
    jq -V
    
  • 安装postgreSQL,过程中需设置密码
    # 更新 apt 包索引
    sudo apt-get update
    
    # 安装数据库,安装后会自动添加 postgres 的操作系统用户,密码是随机的
    sudo apt-get install postgresql
    
    # 打开客户端工具 psql
    sudo -u postgres psql
    
    # 修改 postgres 数据库用户的密码为123456
    postgres=# ALTER USER postgres WITH PASSWORD '123456'; 
    
    # 退出 psql
    postgres=# \q
    
    # 修改 ubuntu 操作系统的 postgres 用户的密码
    sudo passwd -d postgres
    sudo -u postgres passwd
    
    # 修改配置实现远程访问
    vi /etc/postgresql/9.5/main/postgresql.conf
    
    # 修改连接权限
    #listen_addresses = 'localhost' 改为 listen_addresses = '*'
    
    # 启用密码验证
    #password_encryption = on 改为 password_encryption = on
    
    # 设置所有用户可连接
    vi /etc/postgresql/9.4/main/pg_hba.conf
    
    # 在最后一行插入以下内容
    host all all 0.0.0.0/0 md5
    
    # 重启服务
    /etc/init.d/postgresql restart
    
  • git在上篇已经安装过了,不再赘述

2. 拉取项目

  • 进入文件目录
    cd ~
    cd go/hyperledger/
    
  • clone blockchain-explorer
    git clone https://github.com/hyperledger/blockchain-explorer.git
    
  • 修改文件夹权限
    sudo chmod -R 777 blockchain-explorer
    

3. 创建数据库

  • 修改配置文件
    cd ~
    
    # 进入配置文件目录
    cd go/hyperledger/blockchain-explorer/app/
    
    # 修改配置文件 username passwd
    vi explorerconfig.json
    
  • 进入数据库文件目录
    cd ~
    cd go/hyperledger/blockchain-explorer/app/persistence/fabric/postgreSQL/db/
    
  • 创建数据库
    sudo ./createdb.sh
    
  • 查看是否创建成功
    # 连接 postgresSQL
    sudo -u postgres psql
    
    # 查看已有数据库
    \l
    
    # 查看已创建表
    \d
    
    # 退出
    \q
    
    在这里插入图片描述

4. 启动first-network

  • 进入文件目录
    cd ~
    cd go/hyperledger/fabric/fabric-samples/first-network/
    
  • 启动网络
    ./byfn.sh up
    

5. 修改Explorer Fabric配置

  • 进入文件目录
    cd ~
    cd go/hyperledger/blockchain-explorer/app/platform/fabric/connection-profile/
    
  • 修改配置文件
    vi first-network.json
    
  • 修改 fabric_path 为实际目录在这里插入图片描述

6. 构建Hyperledger Explorer

官方示例:https://github.com/hyperledger/blockchain-explorer

  • 进入文件目录
    cd ~
    cd go/hyperledger/blockchain-explorer/
    
  • install, run tests, build project
    # 如果此步骤运行报错,请参照最下方异常处理,更换 node 版本
    # 更换成功后需先执行 ./main.sh clean 然后再重复此步骤
    ./main.sh install
    
  • test REST API, UI components
    ./main.sh test
    

7. 运行

cd ~

cd go/hyperledger/blockchain-explorer/
	
./start.sh

在这里插入图片描述


8. chaincode测试

  • 进入cli容器

    docker exec -it cli bash
    
  • 查询

    # -C,--channelID: 当前命令运行的通道
    # -n,--name: chaincode 的名字
    # -c, --ctor: JSON 格式的构造参数
    
    # 查询 A 账户余额,返回 90
    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
    
    # 查询 B 账户余额,返回 210
    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
    
  • 交易

    # -o, --orderer: orderer 节点的地址
    # -C,--channelID: 当前命令运行的通道
    # -n,--name: chaincode 的名字
    # -c, --ctor: JSON 格式的构造参数	
    # 	--tls: 通信时是否使用 tls 加密
    # 	--cafile: 当前 orderer 节点 pem 格式的 tls 证书文件,要使用绝对路径
    # 	--peerAddresses: 指定要连接的 peer 节点的地址
    # 	--tlsRootCertFiles: 连接的 peer 节点的 TLS 根证书
    
    # A 账户向 B 账户转账 10,成功返回 Chaincode invoke successful. result: status:200
    peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddress peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddress peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'
    
  • 交易执行后可再执行查询测试,区块浏览器数据即时更新。

    每执行一次交易,区块浏览器 BLOCKS & TRANSACTIONS 加一

    在这里插入图片描述


异常处理

  • 第6步./main.sh install报错,是因为Hyperledger Explorer需要Nodejs 8.11.x,需升级node版本
    cd ~
    
    # 进入文件目录
    cd /usr/local/
    
    # 下载 node-v8.11.4
    sudo wget https://npm.taobao.org/mirrors/node/latest-v8.x/node-v8.11.4-linux-x64.tar.xz
    
    # 解压
    sudo tar xvf node-v8.11.1-linux-x64.tar.xz
    
    # 返回根目录
    cd ~
    
    # 修改环境变量
    vi ~/.bashrc
    
    # 在最后一行加入以下内容
    export PATH=/usr/local/node-v8.11.4-linux-x64/bin:$PATH
    
    # 环境变量立即生效
    source ~/.bashrc
    
    # 查看 node 版本
    node -v
    
发布了8 篇原创文章 · 获赞 4 · 访问量 833

猜你喜欢

转载自blog.csdn.net/oafzzl/article/details/103878692