• 沒有找到結果。

第三章 系統架構

第三節 Composer 網絡部署

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第三節 Composer 網絡部署

一、 創建 Composer business network – 以基本網絡為例

Hyperledger Composer 的關鍵概念是 business network definition(BND),

定義了資料模型(model.cto)、交易邏輯(logic.js)以及權限控制規則 (permissions.acl)。

model(.cto)裡面包括了 assets、participants 以及 transaction。Access control(permissions.acl)定義存取權限。script(logic.js)包含交易運算邏輯。

package.json 包含網絡的 metadata。以下為各個檔案的程式範例:

圖 27 model 檔案範例: org.example.mynetwork.cto

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 28 logic.js 檔案範例: logic.js (資料來源: Hyperledger Composer 官網)

圖 29 permissions.acl 檔案範例: permissions.acl (資料來源: Hyperledger Composer 官網)

具備以上檔案後,使用 composer archive create –t dir –n . 指令產生 business network archive(.bna)檔,這是之後用來部署到 Fabric 或 playground 上的網絡檔。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

二、 部署 Composer network 到單一節點的 Fabric 網絡

首先要經由 Fabric 網絡完整的安裝程序,安裝完成後,才可以把 Composer 部署到 Fabric 網絡上。再來要完成本節中第一部分的.bna 檔的產 生。完成上述兩個步驟後,開始進入部署 Composer network 的步驟。

(一) 建立 connection profile,在本範例中叫做 connection.json,裡面包括 peers、ca、orderer、organization、channels、client 的 url 及相關設定。

"peers":{

"peer0.org1.example.com": {

"url": "grpc://localhost:7051",

"eventUrl": "grpc://localhost:7053"

}

},

"certificateAuthorities": {

"ca.org1.example.com": {

"url": "http://localhost:7054",

"caName": "ca.org1.example.com"

(二) 創建 administrator 的 business network card – PeerAdmin@fabric-network.card,指令如下:

composer card create –p connection.json –u PeerAdmin –c Admin@org1.example.com-cert.pem –k

114aab0e76bf8c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457_sk –r PeerAdmin –r ChannelAdmin

(三) 引入剛才產生的 card 檔,讓我們可以用 admin 的身分執行指令,指令 如下:

composer card import –f PeerAdmin@fabric-network.card

(四) 安裝 Composer network 也就是.bna 檔到 fabric peer 上,這也相當於是 fabric 安裝步驟中的 install chaincode,指令如下:

composer network install –c PeerAdmin@fabric-network –a tutorial-network@0.0.1.bna

(五) 啟動區塊鏈網絡,同時會產生一個使用者 card 檔,之後需要用這個 card 檔來執行交易,這步相當於 fabric 安裝步驟中的 instantiate chaincode,指令 如下:

composer network start –networkName tutorial-network –networkVersion 0.0.1 –A admin –S adminpw –c PeerAdmin@fabric-network

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

(六) 引入使用者 card 檔,指令如下:

composer card import –f admin@tutorial-network.card

(七) 測試區塊鏈網絡是否完成,指令如下:

composer network ping –c admin@tutorial-network

三、 產生 REST API server

利用 composer-rest-server 指令產生對 composer 區塊鏈網絡相連的 REST API,會根據我們的 model、logic 產生相對應的 API,使用這些 API 即可以跟區 塊鏈溝通。

圖 30 REST API 畫面

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

四、 建立應用程式

(一) 可以利用 yo hyperledger-composer:angular 指令快速產生一個利用 yeoman generator 產生的應用程式。

(二) 在第四章,本研究使用 nodejs 串接本研究架設的 REST API 與 Fabric 溝 通,建立了區塊鏈程式市集平台網站。

較熟悉的 javascript,但在開發上會思考 Fabric sdk go 是不是具備比較完整的 功能,且由於之前的 Channel 以及 Chaincode 的安裝都是透過手動下指令去 完成,如果可以透過程式完成,將會方便許多,所以本研究參考 ChainHero[17]

的文章及程式,完成 Fabric sdk go 的測試,但目前 ChainHero 的在 Fabric 1.1.0 版本尚未完成,因此採用 Fabric 1.0.5 版本。

二、

Fabric sdk go 測試

在系統架構章節有提到 Fabric 的安裝流程以及相關 config 檔的說明,

在這節是利用 Fabric sdk go 去讀取 config 檔完成 Channel 的 create 以及 join,

還有 Chaincode 的 install 以及 instantiate。

在 chainHero/heroes-service/blockchain/setup.go 這支程式中,import 了 Fabric sdk go 中的"github.com/hyperledger/fabric-sdk-go/pkg/config" 去讀取 我們的 config 檔,以及"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" 達

相關文件