搭建區塊鏈瀏覽器——基於hyperledger fabric 1.0,MySQL容器

搭建區塊鏈瀏覽器——基於hyperledger fabric 1.0,MySQL容器

Contents
html

區塊鏈瀏覽器是hyperledger官方項目,可以可視化的查看區塊鏈的詳細信息,包括區塊信息/詳情,交易信息/詳情,節點信息,鏈碼信息等...本文介紹如何搭建區塊鏈瀏覽器node

環境要求

分支選擇

  • 注意根據本身部署的fabric版本以及數據庫類型來選擇不一樣的分支。目前支持的數據庫類型有兩種:
    • PostgreSQL
    • MySQL
      由於感受MySQL相對廣泛一些,因此我選擇的是MySQL。查看各個分支的README文件,reactbranch這個分支符合個人要求(fabric1.0+MySQL)

克隆倉庫

# 進入本身開發的目錄(這裏只是例子,能夠改爲本身想要的目錄)
$ cd /home/chy
# 克隆倉庫
$ git clone https://github.com/hyperledger/blockchain-explorer.git
# 切換到合適的分支
$ git checkout reactbranch
  • 倉庫中README文件已經講述了基本的部署步驟。這些部分我就再也不贅述,主要是介紹我實際搭建過程當中與他的步驟不一樣的地方。
    • 我並無直接安裝MySQL在宿主機,而是使用docker容器
    • 我使用的是本身以前搭建好的網絡,而不是他提供的sample網絡

數據庫搭建

  • 做爲一個web應用,區塊鏈瀏覽器須要鏈接單獨的數據庫,用於存儲一些運行產生的數據。
  • 本着不折騰的原則,我這裏單獨開了一個Mysql的docker容器,經過端口映射的方式訪問。
# 拉取MySQL鏡像,版本號>=5.7
$ docker pull MySQL:5.7
# 啓動MySQL容器
# -v 掛載目錄,將剛纔克隆的目錄掛載到docker容器下
# -p 將docker的3306端口映射到宿主機的33060端口
# -d 後臺運行
$ docker run --name MySQL-Explorer -e MYSQL_ROOT_PASSWORD=password -v /home/chy/blockchain-explorer:/explore -p 33060:3306 -d mysql
  • 啓動數據庫容器後,進入容器,導入數據庫
# 進入容器終端
$ docker exec -it MySQL-Explorer bash
# 導入數據庫(用戶名,密碼,sql文件路徑換成本身的)
$ mysql -u<username> -p < db/fabricexplorer.sql

修改配置文件

  • 在項目目錄中,有一個config.json文件,這個文件規定了區塊鏈網絡各類參數mysql

    • 每一個節點,組織,用戶的tls,msp憑證
    • 各節點的地址grpcs://IP:port
  • 這個config.json要根據本身建立網絡之初的那些配置文件來寫,必須徹底對應起來,才能跑通react

一個節點的配置示例
一個節點的配置示例

  • 鏈接數據庫的配置git

    • 在config.json裏邊的mysql字段修改
    • mysql字段
      mysql字段
  • 我所遇到的一個問題github

    • db/mysqlservice.js中端口號默認是3306,因此沒有連上個人容器
    • 解決:如下是個人修改方式,僅供參考
      • 個人修改方式
        個人修改方式

運行服務

$ npm install
$ ./start.sh

訪問本機的8080端口,最終結果如圖web

運行效果
運行效果

附錄:個人配置文件

僅供參考sql

{
    "network-config": {	
        "org1": {
            "name": "sy_org1",
            "mspid": "SyOrg1MSP",
            "peer1": {
                "requests": "grpcs://127.0.0.1:7051",
                "events": "grpcs://127.0.0.1:7053",
                "server-hostname": "peer0.org1.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org1.qklszzngsy.com/peers/peer0.org1.qklszzngsy.com/tls/ca.crt"
            },	
            "peer2": {
                "requests": "grpcs://127.0.0.1:8051",
                "events": "grpcs://127.0.0.1:8053",
                "server-hostname": "peer1.org1.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org1.qklszzngsy.com/peers/peer1.org1.qklszzngsy.com/tls/ca.crt"
            },		
            "peer3": {
                "requests": "grpcs://127.0.0.1:8054",
                "events": "grpcs://127.0.0.1:8056",
                "server-hostname": "peer2.org1.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org1.qklszzngsy.com/peers/peer2.org1.qklszzngsy.com/tls/ca.crt"
            },		
            "admin": {
                "key": "../MilkTrace/crypto-config/peerOrganizations/org1.qklszzngsy.com/users/Admin@org1.qklszzngsy.com/msp/keystore",
                "cert": "../MilkTrace/crypto-config/peerOrganizations/org1.qklszzngsy.com/users/Admin@org1.qklszzngsy.com/msp/signcerts"
            }
        },
        "org2": {
            "name": "sy_org2",
            "mspid": "SyOrg2MSP",
            "peer1": {
                "requests": "grpcs://127.0.0.1:9051",
                "events": "grpcs://127.0.0.1:9053",
                "server-hostname": "peer0.org2.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org2.qklszzngsy.com/peers/peer0.org2.qklszzngsy.com/tls/ca.crt"
            },	
            "peer2": {
                "requests": "grpcs://127.0.0.1:10051",
                "events": "grpcs://127.0.0.1:10053",
                "server-hostname": "peer1.org2.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org2.qklszzngsy.com/peers/peer1.org2.qklszzngsy.com/tls/ca.crt"
            },		
            "peer3": {
                "requests": "grpcs://127.0.0.1:10073",
                "events": "grpcs://127.0.0.1:10075",
                "server-hostname": "peer2.org2.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org2.qklszzngsy.com/peers/peer2.org2.qklszzngsy.com/tls/ca.crt"
            },		
            "admin": {
                "key": "../MilkTrace/crypto-config/peerOrganizations/org2.qklszzngsy.com/users/Admin@org2.qklszzngsy.com/msp/keystore",
                "cert": "../MilkTrace/crypto-config/peerOrganizations/org2.qklszzngsy.com/users/Admin@org2.qklszzngsy.com/msp/signcerts"
            }
        },
        "org3": {
            "name": "sy_org3",
            "mspid": "SyOrg3MSP",
            "peer1": {
                "requests": "grpcs://127.0.0.1:10054",
                "events": "grpcs://127.0.0.1:10066",
                "server-hostname": "peer0.org3.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org3.qklszzngsy.com/peers/peer0.org3.qklszzngsy.com/tls/ca.crt"
            },	
            "peer2": {
                "requests": "grpcs://127.0.0.1:10067",
                "events": "grpcs://127.0.0.1:10069",
                "server-hostname": "peer1.org3.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org3.qklszzngsy.com/peers/peer1.org3.qklszzngsy.com/tls/ca.crt"
            },		
            "peer3": {
                "requests": "grpcs://127.0.0.1:10070",
                "events": "grpcs://127.0.0.1:10072",
                "server-hostname": "peer2.org3.qklszzngsy.com",
                "tls_cacerts": "../MilkTrace/crypto-config/peerOrganizations/org3.qklszzngsy.com/peers/peer2.org3.qklszzngsy.com/tls/ca.crt"
            },		
            "admin": {
                "key": "../MilkTrace/crypto-config/peerOrganizations/org3.qklszzngsy.com/users/Admin@org3.qklszzngsy.com/msp/keystore",
                "cert": "../MilkTrace/crypto-config/peerOrganizations/org3.qklszzngsy.com/users/Admin@org3.qklszzngsy.com/msp/signcerts"
            }
        }	
    },
   "host":"localhost",
   "port":"8080",
   "channel": "mychannel",
   "GOPATH":"../artifacts",
   "keyValueStore":"/tmp/fabric-client-kvs",
   "eventWaitTime":"30000",     
   "mysql":{
      "host":"localhost",
      "port":"33060",
      "database":"fabricexplorer",
      "username":"root",
      "passwd":"password"
   }
}
相關文章
相關標籤/搜索