基於ubuntu16.04部署IBM開源區塊鏈項目-彈珠資產管理(Marbles)





前言

本教程基本上是對Marbles項目的翻譯過程. 若是英文比較好的話,建議根據官方操做說明,一步步進行環境部署。固然你也能夠參考本教程在本身的主機上部署該項目。html

Marbles 介紹

關於 Marbles

  • 這個應用程序的基礎網絡是 Hyperledger Fabric,後者是一個 Linux Foundation 項目。 您可能想查閱如下操做說明來稍微瞭解一下 Hyperledger Fabric
  • 本演示旨在幫助開發人員瞭解鏈代碼的基礎知識以及如何使用 Fabric 網絡開發應用程序
  • 這是一個很是簡單的資產轉移演示。多個用戶能夠建立並相互轉移彈珠。
    mark

版本

各類版本的 marbles 同時存在。 本版本兼容 Hyperledger Fabric v1.1x。 你能夠經過檢出別的分支來獲取別的版本的 marble,這裏演示使用的是ae4e37d分支node

應用程序背景

請你們集中注意力,這個應用程序將演示如何利用 Hyperledger Fabric 在許多彈珠全部者之間轉移彈珠。 咱們將在 Node.js 中使用一些 GoLang 代碼完成此任務。 該應用程序的後端將是在咱們的區塊鏈網絡中運行的 GoLang 代碼。 從如今開始,這些 GoLang 代碼將稱爲「鏈代碼」或「cc」。 該鏈代碼自己會建立一顆彈珠,將它存儲到鏈代碼狀態中。 該鏈代碼自己能夠將數據做爲字符串存儲在鍵/值對設置中。 所以,咱們將字符串化 JSON對象,以便存儲更復雜的結構.react

彈珠的屬性包括:linux

  • ID(惟一字符串,將用做鍵)
  • 顏色(字符串,CSS 顏色名稱)
  • 尺寸(int,以毫米爲單位)
  • 全部者(字符串)

咱們將建立一個用戶界面,它能夠設置這些值並將它們存儲在區塊鏈的帳本中。 彈珠其實是一個鍵值對。 鍵爲彈珠 ID,值爲一個包含(上面列出的)彈珠屬性的 JSON 字符串。 與 cc 的交互是經過對網絡上的一個對等節點使用 gRPC 協議來完成的。 gRPC 協議的細節由一個名爲 Hyperledger Fabric Client SDK 的 SDK 處理。 請查看下圖瞭解拓撲結構細節。
markgit

應用程序通訊流

  • 1.管理員將在他們的瀏覽器中與咱們的 Node.js 應用程序 Marbles 進行交互
  • 2.此客戶端 JS 代碼將打開一個與後端 Node.js 應用程序的 Websocket 鏈接,管理員與該站點交互時,客戶端 JS 將消息發送到後端
  • 3.讀取或寫入帳本稱爲提案,這個提案由 Marbles (經過SDK)構建,而後發送到一個區塊鏈對等節點.
  • 4.該對等節點將與它的 Marbles 鏈代碼容器進行通訊. 鏈代碼容器將運行/模擬該交易. 若是沒有問題, 它會對該交易進行背書,並將其發回咱們的Marbles程序.
  • 5.而後, Marbles (經過SDK)將背書後的提案發送到訂購服務.訂購方未來自整個網絡的許多提案打包到一個區塊中. 而後它將新的區塊廣播到網絡中的對等節點
  • 6.最後,對等節點會驗證該區塊並將它寫入到本身的帳本中,該交易如今已經生效,全部後續讀取都會反映此更改.

Marbles 項目環境配置

這裏使用的是本地的 Hyperledger Fabric 網絡來部署項目,若是想使用 IBM Cloud IBM Blockchain 服務來部署該項目,請參考前言中給的官方文檔.github

  • 注意:本教程使用的系統環境是: ubuntu16.04

設置 Chaincode(鏈碼) 開發環境

若是您經過本人的上一篇博客基於ubuntu16.04快速構建Hyperledger Fabric網絡已經搭建好了一個 Hyperledger Fabric 網絡,那麼這裏只須要安裝 Node.js 的環境並驗證環境是否正確便可,若是您沒有在本地搭建 Hyperledger Fabric 網絡,建議您經過上述博客先在本地構建好網絡環境.docker

驗證 Git 環境

通常來講 linux 系統都是自帶 Git ,若是系統裏沒有裝,可使用以下命令來進行安裝npm

$ sudo apt-get install git

安裝完成後驗證一下json

$ git --version
git version 2.7.4

驗證 GO 環境

Go安裝安裝了一組Go CLI工具,這些工具在編寫連接代碼時很是有用。例如,該 go build 命令容許您在嘗試將其部署到網絡以前檢查鏈代碼是否實際編譯.gulp

  • 驗證安裝環境
$ go version
go version go1.10 linux/amd64
$ echo $GOPATH
/home/ubuntu/go

這裏的 ubuntu是個人用戶名,表示個人 GOPATH 目錄是個人主目錄下的 go 文件夾,固然你的 GOPATH 不須要匹配上面的那個。它只是很重要的,但你必須把這個變量設置爲文件系統上的有效目錄.

安裝 Node.js 環境

首先能夠先使用 node -vnpm -v 命令來驗證系統中是否有 Node.js 環境,若是沒有安裝則須要使用以下命令進行安裝:

$ sudo apt-get install nodejs
$ sudo apt install nodejs-legacy
$ sudo apt install npm

安裝完成以後使用 node -vnpm -v 命令來查看版本信息:

$ node -v
v4.2.6
$ npm -v
3.5.2

遺憾的是經過這種方式安裝的 Node.js 版本都比較低,並且並不符合咱們項目的環境要求(官網文檔中出現的版本爲:node:v6.10.1;npm:3.10.10),爲了不因軟件版本不一樣而引發的問題,咱們還須要對 Node 以及 npm 的版本進行升級操做

  • 先配置 npm 倉庫,由於國內的網絡環境,直接從 npm 官方源安裝軟件包速度會特別慢
$ npm install -g nrm
  • 安裝完成以後,列出可用的軟件源
$ nrm ls
  npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/
  • 能夠切換到淘寶的源,這個速度在國內仍是很快的
$ nrm use taobao
Registry has been set to: https://registry.npm.taobao.org/
  • 安裝 node 版本管理工具 n
$ npm install -g n
  • 經過 n 安裝指定版本
$ n 6.10.1
  • 再次使用 node -v 命令,查看當前版本
$ node -v
v6.10.1
  • 升級 npm 的版本號
$ npm install -g npm@3.10.10
  • 再次使用 npm -v 命令,查看當前版本
$ npm -v
3.10.10

至此,Node.js的環境就算是搭建完成了

Hyperledger Fabric 版本切換

官方文檔中提供了三種選擇,一種是不想對鏈碼進行修改的,下面操做能夠沒必要執行.而想要本身修改鏈碼的並且想使用最新版本 Fabric 的能夠切換到最新的分支,雖說該項目兼容 Hyperledger Fabric v1.1x,可是出於避免出現未知的錯誤,建議將分支切換到文檔中使用的版本ae4e37d.切換步驟命令以下

  • 將此版本與網絡/ Fabric 的提交哈希匹配(前7個字符將起做用)
$ cd $GOPATH/src/github.com/hyperledger/fabric
$ git checkout ae4e37d

若是按照個人上篇博客配置的,這裏的 $GOPATH 既用戶主目錄下的 go 文件夾,

  • 使用git分支確認級別。它應該顯示與您提供的相符的提交級別
$ git branch
  (HEAD detached at ae4e37d)
  release-1.1

顯示已經切換到ae4e37d分支,當前最新發布版本爲1.1. 固然,你若是想知道ae4e37d分支的具體信息,能夠經過以下命令查看:

$ git log -p
commit ae4e37dbafe74997534ab317dec5c3f4f53b6a84
Author: Gari Singh <gari.r.singh@gmail.com>
Date: Mon Aug 7 17:50:39 2017 -0400

    FAB-5652 Prepare fabric for 1.0.2 release
    
    -base version = 1.0.2
    -prev version = 1.0.1
    -is_release = false
    
    Change-Id: Ibce2a81193b09015eef896391b0e8166d40e7102
    Signed-off-by: Gari Singh <gari.r.singh@gmail.com>

diff --git a/Makefile b/Makefile
index d1febaa..ffe51f3 100755
--- a/Makefile
+++ b/Makefile
@@ -36,9 +36,9 @@
 #   - unit-test-clean - cleans unit test state (particularly from docker)
 
 PROJECT_NAME   = hyperledger/fabric

經過上面的命令輸出結果能夠看到,該分支是基於1.0.2版本的.切換到該分支後,還須要驗證結構安裝

  • 打開命令提示符/終端輸入一下命令
$ cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
$ go build --tags nopkcs11 ./

它應該返回沒有錯誤/警告。您還應該看到在該目錄中建立了可執行文件。
請注意,nopkcs11標籤很重要。PKCS 11是您不太可能在您的系統上使用的公鑰加密標準。 請記住在開發/構建鏈碼時使用此標誌
對編寫鏈碼 IDE 的選擇官方文檔推薦了兩個 Visual Studio CodeAtom,具體的 IDE 開發環境配置能夠在網上搜索.

搭建一個本地的Hyperledger網絡

這裏是構建一個本地的Hyperledger網絡,而後測試該網絡步驟過程.

先下載 Marbles 項目

咱們須要將 Marbles 下載到本地系統。 讓咱們使用 Git 經過克隆此存儲庫來完成該任務。 即便您計劃將 Marbles 託管在 IBM Cloud 中,也須要執行這一步,運行如下命令便可

$ cd ~
$ git clone https://github.com/IBM-Blockchain/marbles.git --depth 1
$ cd marbles

注意:我這裏將 Marbles 克隆到了用戶主目錄下,你能夠選擇任意合適的目錄

下載 Hyperledger Fabric 官方例子

咱們將使用 Hyperledger Fabric 例子運行本地網絡。他們的代碼具備 Fabric 網絡的設置以及連接代碼示例。咱們只會使用網絡設置部分。
使用如下命令下載它們的節點示例:

$ git clone https://github.com/hyperledger/fabric-samples.git
$ cd fabric-samples

若是以前沒有下載各類結構組織的 Docker 鏡像,那麼可使用下面的命令進行下載

$ curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/release-1.1/scripts/bootstrap-1.1.0-preview.sh -o setup_script.sh
$ sudo bash setup_script.sh

請務必經過運行如下命令或將其粘貼到您的.profile文件中,將這些二進制文件添加到PATH變量中

  • 運行命令
$ export PATH=$PWD/bin:$PATH
  • 若想永久將這些二進制文件添加到PATH變量中,能夠加入到系統環境變量中
$ vim ~/.profile

打開後在最後一行插入插入export PATH=/home/ubuntu/fabric-samples/bin:$PATH,這裏能夠先使用 pwd 命令來獲取您本地fabric-samples的目錄,而後將上面命令中的 $PWD 換成該目錄便可,最後使用 :wq 保存退出,執行下面命令刷新一下

$ source  ~/.profile

啓動網絡

接下來,咱們須要啓動Fabric。運行下面的腳原本讓全部的事情都發生

$ cd ./fabcar
 $ sudo ./startFabric.sh

一兩分鐘後,命令提示符將返回,運行結果以下圖所示
mark

如今運行該命令 docker ps 查看當前正在運行的Docker容器。您應該看到相似於如下內容的內容:

CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                                            NAMES
01cdf948b39c        dev-peer0.org1.example.com-fabcar-1.0   "chaincode -peer.add…"   2 minutes ago       Up 2 minutes                                                         dev-peer0.org1.example.com-fabcar-1.0
2f79bac1371e        hyperledger/fabric-tools                "/bin/bash"              3 minutes ago       Up 3 minutes                                                         cli
648da0074a8d        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.org1.example.com
868e0f78f80e        hyperledger/fabric-ca                   "sh -c 'fabric-ca-se…"   3 minutes ago       Up 3 minutes        0.0.0.0:7054->7054/tcp                           ca.example.com
4c385bb6aa9d        hyperledger/fabric-couchdb              "tini -- /docker-ent…"   3 minutes ago       Up 3 minutes        4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp       couchdb
4b9a2b2b0718        hyperledger/fabric-orderer              "orderer"                3 minutes ago       Up 3 minutes        0.0.0.0:7050->7050/tcp                           orderer.example.com
  • 若是你沒有看到所有6個容器在運行,那麼有些問題是錯誤的。在繼續以前,您須要排除故障。我建議進入一個已中止的容器的日誌sudo docker logs peer0(替換名稱爲w / e的peer0已中止)。

  • 若是您看到containerID already exists正在運行的Docker工具 - 組成,那麼您須要刪除現有的容器。該命令將刪除全部容器docker rm -f $(docker ps -aq)

安裝並實例化鏈代碼

很好,就快要完成了!如今,咱們須要運行咱們的 Marbles 鏈碼。 請記住,鏈碼是一個關鍵組件,它最終會在帳本上建立咱們的 Marbles 事務。 該鏈碼是須要安裝在對等節點上,而後在一個通道上實例化的 GoLang 代碼。 已爲您編寫好該代碼! 咱們只須要運行它

準備

咱們須要一些彈珠依賴來運行安裝/實例化腳本。經過返回 Marbles 目錄的根目錄並輸入這些命令來安裝彈珠 npm 依賴關係:

$ cd ~/marbles
$ npm install

重要的是安裝沒有錯誤返回(警告是好​​的)。若是你有 npm 安裝錯誤,在繼續以前你必須解決並修復這些錯誤

生成證書與密鑰文件

這是一個很是重要步驟! 安裝和實例化操做須要管理員證書和私鑰。若是找不到這些文件,您將沒法運行任何操做。

  • 第1步:在終端/命令提示符中更改路徑到fabric-samples/fabcar目錄:
$ cd ../fabric-samples/fabcar
  • 第2步:運行命令:
$ node enrollAdmin.js
 Store path:/home/ubuntu/fabric-samples/fabcar/hfc-key-store
Successfully enrolled admin user "admin"
Assigned the admin user to the fabric client ::{"name":"admin","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"9b6f84a7672908c0629d9b3ad0bf23437d624089061e937af0b0476ec6dec81d","identity":{"certificate":"-----BEGIN CERTIFICATE-----\nMIIB8DCCAZegAwIBAgIUeQVhK98LQFSz5Dz0bt3bB9Baom8wCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwNTE1MTA1ODAwWhcNMTkwNTE1MTA1\nODAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBPlS00VDvBQpsmMFUGnNzEAQd7lgpTNgEDpzJGk4/xfBuechE8cfNH6WuibJtXxh\nsEQ4uLAlDcOAP1nfXq9oEtWjbDBqMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8E\nAjAAMB0GA1UdDgQWBBShJWerMoKEE2u+dn08UBkGs4tWzjArBgNVHSMEJDAigCBC\nOaoNzXba7ri6DNpwGFHRRQTTGq0bLd3brGpXNl5JfDAKBggqhkjOPQQDAgNHADBE\nAiAmqy0J0M1aZlvuv6cDK8GjeMTMjN0V5dZIW/uBv+whtAIgCMbyQRtE+PDwsoSS\nG40hZ4UOoNS2tvIXHRglMMHvKjs=\n-----END CERTIFICATE-----\n"}}}
  • 第3步:運行命令:
$ node registerUser.js 
 Store path:/home/ubuntu/fabric-samples/fabcar/hfc-key-store
Successfully loaded admin from persistence
Successfully registered user1 - secret:PfPGkGQmNgfw
Successfully enrolled member user "user1" 
User1 was successfully registered and enrolled and is ready to intreact with the fabric network
  • 第4步:仔細檢查文件夾中是否建立了一些密鑰和證書文件 fabric-samples/fabcar/hfc-key-store
  • 第5步:接下來,咱們須要驗證鏈接配置文件中的文件路徑是否與您的安裝相匹配。
    • 打開你的鏈接配置文件<marbles root>/config/connection_profile_local.json
    • 在這個JSON裏找到這三個字段:
      • organizations -> x-adminCert -> path
      • organizations -> x-adminKeyStore -> path
      • client -> credentialStore -> path
    • 每一個字段中 path 的值須要反映您的環境(您的目錄結構)。你能夠瀏覽這些文件夾和文件以驗證它們是否存在。
    • 您可能須要根據您放置fabric-samples目錄的位置以及密鑰存儲數據所在的位置來更改這些值。一旦路徑有效,您能夠繼續。
  • 第6步:你完成了!將路徑更改回彈珠根目錄:cd ~/marbles並繼續執行下面的安裝連接代碼說明。

安裝鏈碼

完成以後,咱們須要將鏈代碼放到 peer 節點的文件系統中。記住 chaincode 定義了什麼彈珠(資產)是咱們系統交易的業務邏輯。你能夠在這個目錄中找到彈珠鏈碼<marbles root>/chaincode/src/。這個目錄下的文件就是鏈碼文件。

咱們將使用位於scripts文件夾中的腳本install_chaincode.js。它會讀取咱們的彈珠配置文件和鏈接配置文件數據。您能夠經過編輯install_chaincode.js文件來更改本項目鏈代碼ID或版本。若是您想編輯這些文件並想要更多關於其內容的信息,請打開下面的配置和鏈接配置文件自述文件。若是您對默認設置沒有問題,那麼只需將這些文件單獨保存並運行下面的命令便可。

$ cd ./scripts
$ node install_chaincode.js

  ......
..........
#這裏省略了許多輸出信息
..........
  ......


---------------------------------------
info: Now we install
---------------------------------------
debug: [fcw] Installing Chaincode
debug: [fcw] Sending install req targets=[grpc.http2.keepalive_time=300, grpc.keepalive_time_ms=300000, grpc.http2.keepalive_timeout=35, grpc.keepalive_timeout_ms=3500, grpc.max_receive_message_length=-1, grpc.max_send_message_length=-1, grpc.primary_user_agent=grpc-node/1.10.1, _url=grpc://localhost:7051, addr=localhost:7051, , _request_timeout=90000, , _name=null], chaincodePath=marbles, chaincodeId=marbles, chaincodeVersion=v4
info: [packager/Golang.js]: packaging GOLANG from marbles
debug: [fcw] Successfully obtained transaction endorsement
---------------------------------------
info: Install done. Errors: nope
---------------------------------------

出現上述輸出結果,說明鏈碼安裝成功

實例化鏈碼

接下來咱們須要實例化鏈碼。這會讓您的 channel(通道) 啓動彈珠鏈碼mychannel。一旦完成,咱們準備使用區塊鏈網絡來記錄咱們的系統(Marbels)活動。使用下面的命令完成實例化:

$ node instantiate_chaincode.js  

  ......
..........
#這裏省略了許多輸出信息
..........
  ......

---------------------------------------
info: Now we instantiate
---------------------------------------
debug: [fcw] Instantiating Chaincode peer_urls=[grpc://localhost:7051], channel_id=mychannel, chaincode_id=marbles, chaincode_version=v4, cc_args=[12345], ssl-target-name-override=null, pem=null, grpc.http2.keepalive_time=300, grpc.keepalive_time_ms=300000, grpc.http2.keepalive_timeout=35, grpc.keepalive_timeout_ms=3500
debug: [fcw] Sending instantiate req targets=[grpc.http2.keepalive_time=300, grpc.keepalive_time_ms=300000, grpc.http2.keepalive_timeout=35, grpc.keepalive_timeout_ms=3500, grpc.max_receive_message_length=-1, grpc.max_send_message_length=-1, grpc.primary_user_agent=grpc-node/1.10.1, _url=grpc://localhost:7051, addr=localhost:7051, , _request_timeout=90000, , _name=null], chaincodeId=marbles, chaincodeVersion=v4, fcn=init, args=[12345], 0=214, 1=155, 2=127, 3=34, 4=197, 5=82, 6=208, 7=191, 8=141, 9=140, 10=57, 11=113, 12=46, 13=90, 14=76, 15=231, 16=170, 17=118, 18=197, 19=137, 20=186, 21=212, 22=64, 23=33, _transaction_id=d550ed194a2d798f2a6c2924c0302fdc6323fba2835e128f3dc541f1b6754525
debug: [fcw] Successfully obtained transaction endorsement
debug: [fcw] Successfully ordered instantiate endorsement.
---------------------------------------
info: Instantiate done. Errors: nope
---------------------------------------

出現上述輸出結果,說明實例化鏈碼成功

運行 Marble 項目

經過上述操做,咱們全部的環境都已經配置完成了,接下來就是運行本項目

安裝依賴

打開命令提示符/終端並導航到 Marbles 目錄,並執行下面的幾個命令:

$ cd ~/marbles
$ sudo npm install gulp -g
$ sudo npm install

安裝依賴成功後,而且沒有錯誤返回(警告是好​​的).若是你有 npm 安裝錯誤,在繼續以前你必須解決並修復這些錯誤

運行項目

使用以下命令運行項目:

$ gulp marbles_local

  ......
..........
#這裏省略了許多輸出信息
..........
  ......

----------------------------------- Server Up - localhost:3001 -----------------------------------
Welcome aboard:  United Marbles
Channel:     mychannel
Org:         Org1MSP
CA:      fabric-ca
Orderer:     fabric-orderer
Peer:        fabric-peer-org1
Chaincode ID:    marbles
Chaincode Version:  v4
------------------------------------------ Websocket Up ------------------------------------------


info: [fcw] Going to enroll peer_urls=[grpc://localhost:7051], channel_id=mychannel, uuid=marblesDockerComposeNetworkmychannelOrg1MSPfabricpeerorg1, ca_url=http://localhost:7054, orderer_url=grpc://localhost:7050, enroll_id=admin, enroll_secret=adminpw, msp_id=Org1MSP, kvs_path=/home/ubuntu/.hfc-key-store
info: [fcw] Successfully loaded enrollment from persistence
debug: added peer grpc://localhost:7051
debug: [fcw] Successfully got enrollment marblesDockerComposeNetworkmychannelOrg1MSPfabricpeerorg1
info: Success enrolling admin
debug: Checking if chaincode is already instantiated or not 1

info: Checking for chaincode...
debug: [fcw] Querying Chaincode: read()
debug: [fcw] Sending query req: chaincodeId=marbles, fcn=read, args=[selftest], txId=null
debug: [fcw] Peer Query Response - len: 5 type: number
debug: [fcw] Successful query transaction.

----------------------------- Chaincode found on channel "mychannel" -----------------------------


info: Checking chaincode and ui compatibility...
debug: [fcw] Querying Chaincode: read()
debug: [fcw] Sending query req: chaincodeId=marbles, fcn=read, args=[marbles_ui], txId=null
warn: [fcw] warning - query resp is not json, might be okay: string 4.0.1
debug: [fcw] Successful query transaction.
info: Chaincode version is good
info: Checking ledger for marble owners listed in the config file

info: Fetching EVERYTHING...
debug: [fcw] Querying Chaincode: read_everything()
debug: [fcw] Sending query req: chaincodeId=marbles, fcn=read_everything, args=[], txId=null
debug: [fcw] Peer Query Response - len: 30 type: object
debug: [fcw] Successful query transaction.
debug: This company has not registered marble owners
info: We need to make marble owners


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
info: Detected that we have NOT launched successfully yet
debug: Open your browser to http://localhost:3001 and login as "admin" to initiate startup
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

出現上述輸出信息,則表示項目啓動成功,如今你能夠在瀏覽器中輸入 http://localhost:3001來訪問本項目,而且您不須要輸入密碼或更改預先填寫的用戶名admin.

注意: 本人在使用gulp marbles_local命令啓動項目的過程當中出現了以下圖的錯誤,有可能你在運行時也會出現這個錯誤:
mark
查看 Issues:208能夠發現有人已經遇到過這種問題, 閱讀後發現這個bug是由fabric-sdk-node https://jira.hyperledger.org/browse/FAB-2593 引發的, 須要將hfc-key-store目錄複製到您的主目錄$HOME / .hfc-key-store,而後從新配置connection_profile_local.jsonclient.credentialStore.path. 若是你也遇到了這個問題,能夠參考以下步驟.

  • 先將hfc-key-store目錄複製到您的主目錄$HOME / .hfc-key-store:
$ cd ~/fabric-samples/fabcar
$ cp -r hfc-key-store  ~/.hfc-key-store
  • 從新配置connection_profile_local.jsonclient.credentialStore.path:
$ cd ~/marbles/config
$ vim connection_profile_local.json

在文件中定位到下面的片斷:

"client": {
        "organization": "Org1MSP",
        "credentialStore": {
            "path": "/$HOME/.hfc-key-store"
        }
     },

path改成上面的路徑(/$HOME/.hfc-key-store)便可.

  • 返回 Marbles 主目錄,從新運行本項目
$ cd ~/marbles
$ gulp marbles_local

若是這樣,還不能運行,你能夠在 issues 裏找找看有沒有相同的錯誤, 若是有解答過程,能夠按照解答的過程,本身試着解決這些問題.

運行配置截圖

  • 開始
    mark
    點擊選擇右邊的按鈕Guided, 經過這種方式便可以瞭解 Fabric 又能自定義一些設置

  • 第一步:檢查鏈接配置數據
    mark

第一步是檢查你的鏈接配置JSON文件。 檢查的文件是:marbles/config/marbles_local.json和`marbles/config/connection_profile_local.json

  • 第二步:註冊管理員
    mark

接下來,咱們嘗試將您註冊爲貴公司的管理員。此步驟與您的證書頒發機構(CA)聯繫並從您的鏈接配置文件中提供了enrollIDenrollSecret

  • 第三步:查找 Chaincode
    mark

如今咱們須要在您的channel(通道)上找到鏈碼。檢查或修改您的鏈接配置文件裏配置的鏈碼名爲彈珠的通道mychannel

  • 第四步:建立資產
    mark

做爲一個彈珠貿易公司,您能夠攜帶新的彈珠業主。這些彈珠業主表明您的用戶羣。
這一步將建立彈珠用戶而且每一個用戶擁有3個彈珠。

  • 進行下一步前,請點擊Create進行建立

  • 第五步:配置完成,點擊Enter進入系統
    mark

進入系統後,你能夠按照本教程開頭,或者下面的Gif動畫演示的那樣爲一個用戶建立彈珠資產,或者將一個彈珠資產轉移給另外一個用戶;也能夠刪除這個彈珠資產.

  • 在每次點擊建立,刪除,交易資產時其實都是在進行調用鏈碼操做,並且本項目還有動畫進行調用鏈碼的演示:
    mark
    固然,還有更多的功能, 你能夠在部署後盡情體驗!

參考

相關文章
相關標籤/搜索