1. 程式人生 > >IBM-Blockchain之marbles專案搭建執行

IBM-Blockchain之marbles專案搭建執行

前言

Marbles專案的底層網路是Hyperledger Fabric(分散式的超級賬本),該專案最終會呈獻給我們通過圖形化介面,可以用來操作marbles。可以新增使用者,新增marble,刪除marble,交易marble,這些操作都會記錄到區塊鏈上。
  啟動專案之前需要一些指定的設定,並且我們選擇搭建本地的Hyperledger Network來執行專案。我的系統環境:Ubuntu16.04。

設定

1 環境搭建

  • 需要安裝(版本號要嚴格按照下面的來設定):

    • Git
    • GoLang - 1.7.0 or higher(要設定好GOPATH)
    • Docker - v1.13 or higher
    • Node.js - node v6.2.0 - v6.10.0 (v7+不支援)
  • 驗證安裝:

     	$  git  --version
     	git version 2.7.4
     	  
     	$  go version
     	go version go1.8.3 linux/amd64
     	
     	$  echo $GOPATH
     	/media/jiang/newspace/project/mygo
     	
     	$   docker -v
     	Docker version 17.06.0-ce, build 02c1d87
     	
     	$  docker-compose  -v
     	docker-compose version 1.14.0, build c7bdf9e
     	
     	$  node -v
     	v6.10.0
     	
     	$  npm -v
     	3.10.10
    

2 下載marbles倉庫

  • 定位到存放目錄,執行命令:

     git clone https://github.com/IBM-Blockchain/marbles.git --depth 1
     git checkout v3.0
    

3 設定本地區塊鏈網路

  •  cd marbles/scripts
     chmod +x download-dockerimages.sh
     sudo ./download-dockerimages.sh
    
    • 指令碼完成後會在命令列面板裡看到:

      hyperledger/fabric-ca          latest               35311d8617b4        3 weeks ago         240 MB
      hyperledger/fabric-ca          x86_64-1.0.0-alpha   35311d8617b4        3 weeks ago         240 MB
      hyperledger/fabric-couchdb     latest               f3ce31e25872        3 weeks ago         1.51 GB
      hyperledger/fabric-couchdb     x86_64-1.0.0-alpha   f3ce31e25872        3 weeks ago         1.51 GB
      hyperledger/fabric-kafka       latest               589dad0b93fc        3 weeks ago         1.3 GB
      hyperledger/fabric-kafka       x86_64-1.0.0-alpha   589dad0b93fc        3 weeks ago         1.3 GB
      hyperledger/fabric-zookeeper   latest               9a51f5be29c1        3 weeks ago         1.31 GB
      hyperledger/fabric-zookeeper   x86_64-1.0.0-alpha   9a51f5be29c1        3 weeks ago         1.31 GB
      hyperledger/fabric-orderer     latest               5685fd77ab7c        3 weeks ago         182 MB
      hyperledger/fabric-orderer     x86_64-1.0.0-alpha   5685fd77ab7c        3 weeks ago         182 MB
      hyperledger/fabric-peer        latest               784c5d41ac1d        3 weeks ago         184 MB
      hyperledger/fabric-peer        x86_64-1.0.0-alpha   784c5d41ac1d        3 weeks ago         184 MB
      hyperledger/fabric-javaenv     latest               a08f85d8f0a9        3 weeks ago         1.42 GB
      hyperledger/fabric-javaenv     x86_64-1.0.0-alpha   a08f85d8f0a9        3 weeks ago         1.42 GB
      hyperledger/fabric-ccenv       latest               91792014b61f        3 weeks ago         1.29 GB
      hyperledger/fabric-ccenv       x86_64-1.0.0-alpha   91792014b61f        3 weeks ago         1.29 GB
      
  • 設定Fabric Node SDK

     cd marbles/scripts
     bash setup_sdk.sh
    

    指令碼執行完成後,會在scripts目錄下生成fabric-sdk-node資料夾。

    • 那麼這個指令碼都執行了什麼操作呢,請看下面:

       #!/bin/bash
       set -e
       
       # 1 下載 SDK
       git clone https://github.com/hyperledger/fabric-sdk-node.git
       sleep 1
       cd ./fabric-sdk-node
       git checkout v1.0.0-alpha
       git branch
       sleep 1
       
       # 2 安裝依賴
       npm install
       npm install -g gulp
       gulp ca
       
       # 3 拷貝docker-compose 檔案到SDK指定資料夾
       cd ../
       cp ./docker-compose-marblesv3.yaml fabric-sdk-node/test/fixtures
       
       # 4 拷貝配置檔案到SDK指定資料夾
       cp ./config.json fabric-sdk-node/test/integration/e2e
          
      
  • 啟動網路

     docker rm -f $(docker ps -aq)
     cd ./fabric-sdk-node/test/fixtures
     docker-compose -f docker-compose-marblesv3.yaml up -d
    
    • 一旦執行成功,執行docker ps命令,會看到docker中有8個執行中的容器:

       CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                       PORTS                                            NAMES
       e61cf829f171        hyperledger/fabric-peer      "peer node start -..."   3 minutes ago       Up 2 minutes        0.0.0.0:7056->7051/tcp, 0.0.0.0:7058->7053/tcp   peer1
       0cc1f5ac24da        hyperledger/fabric-peer      "peer node start -..."   3 minutes ago       Up 2 minutes        0.0.0.0:8056->7051/tcp, 0.0.0.0:8058->7053/tcp   peer3
       7ab3106e5076        hyperledger/fabric-peer      "peer node start -..."   3 minutes ago       Up 3 minutes        0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp   peer0
       2bc5c6606e6c        hyperledger/fabric-peer      "peer node start -..."   3 minutes ago       Up 3 minutes        0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp   peer2
       513be1b46467        hyperledger/fabric-ca        "sh -c 'fabric-ca-..."   3 minutes ago       Up 3 minutes        0.0.0.0:8054->7054/tcp                           ca_peerOrg2
       741c363ba34a        hyperledger/fabric-orderer   "orderer"                3 minutes ago       Up 3 minutes        0.0.0.0:7050->7050/tcp                           orderer0
       abaae883eb13        couchdb                      "tini -- /docker-e..."   3 minutes ago       Up 3 minutes        0.0.0.0:5984->5984/tcp                           couchdb
       2c2d51fe88c0        hyperledger/fabric-ca        "sh -c 'fabric-ca-..."   3 minutes ago       Up 3 minutes        0.0.0.0:7054->7054/tcp                           ca_peerOrg1
      
  • 設定網路

定位到fabric-sdk-node/目錄下

  • 建立channel

    	rm -rf /tmp/hfc-*
    	rm -rf ~/.hfc-key-store
    	
    	node test/integration/e2e/create-channel.js
    
  • 加入channel

    	node test/integration/e2e/join-channel.js
    

4 安裝/初始化Chaincode

  • 定位到marbles/下,安裝npm依賴

      npm install 	 
    
  • 定位到marbles/scripts/下,安裝Chaincode

      node install_chaincode.js
    
  • 定位到marbles/scripts/下,初始化Chaincode

      node instantiate_chaincode.js
    

5 啟動Marbles

  • 啟動命令

      gulp marbles3
    
  • 出現下面關鍵字,說明啟動成功了(在瀏覽器開啟localhost:3001

      ------------------------------------------ Server Up - localhost:3001 ------------------------------------------
      ------------------------------------------ Websocket Up ------------------------------------------