您好,登錄后才能下訂單哦!
這篇文章主要介紹了hyperledger composer開(kāi)發(fā)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
將引導(dǎo)您從頭開(kāi)始構(gòu)建Hyperledger Composer區(qū)塊鏈解決方案。在幾個(gè)小時(shí)的時(shí)間內(nèi),您將能夠從破壞性區(qū)塊鏈創(chuàng)新的想法轉(zhuǎn)變?yōu)獒槍?duì)真正的Hyperledger Fabric區(qū)塊鏈網(wǎng)絡(luò)執(zhí)行交易,并生成/運(yùn)行與區(qū)塊鏈網(wǎng)絡(luò)交互的示例Angular 2應(yīng)用程序。
1.1 最簡(jiǎn)單的入門(mén)方法是使用Yeoman生成器創(chuàng)建骨架業(yè)務(wù)網(wǎng)絡(luò)。這將創(chuàng)建一個(gè)包含業(yè)務(wù)網(wǎng)絡(luò)的所有組件的目錄,使用Yeoman創(chuàng)建一個(gè)骨架業(yè)務(wù)網(wǎng)絡(luò)。此命令將需要業(yè)務(wù)網(wǎng)絡(luò)名稱,說(shuō)明,作者姓名,作者電子郵件地址,許可證選擇和命名空間
yo hyperledger-composer:businessnetwork
1.2 輸入 tutorial-network
網(wǎng)絡(luò)名稱以及所需的描述信息,作者姓名和作者電子郵件。描述,姓名,郵件隨便寫(xiě)。
1.3 選擇 Apache-2.0
作為許可證
1.4 選擇 org.example.mynetwork
作為命名空間
1.5 選擇 No
當(dāng)被問(wèn)及是否生成一個(gè)空網(wǎng)絡(luò)時(shí)。
業(yè)務(wù)網(wǎng)絡(luò)由資產(chǎn),參與者,交易,訪問(wèn)控制規(guī)則以及可選的事件和查詢組成。在前面步驟中創(chuàng)建的骨架業(yè)務(wù)網(wǎng)絡(luò)中,有一個(gè)model(.cto
)文件,其中將包含業(yè)務(wù)網(wǎng)絡(luò)中所有資產(chǎn),參與者和事務(wù)的類定義。骨架業(yè)務(wù)網(wǎng)絡(luò)還包含permissions.acl
具有基本訪問(wèn)控制規(guī)則的訪問(wèn)控制()文檔,logic.js
包含事務(wù)處理器功能的腳本()文件以及package.json
包含業(yè)務(wù)網(wǎng)絡(luò)元數(shù)據(jù)的文件。
將前兩篇博客講到的工具使用下,導(dǎo)入剛剛的項(xiàng)目文件,然后修改它的配置文件
2.1 打開(kāi) org.example.mynetwork.cto
模型文件,并替換成以下內(nèi)容,最后保存
/** * My commodity trading network */ namespace org.example.mynetwork asset Commodity identified by tradingSymbol { o String tradingSymbol o String description o String mainExchange o Double quantity --> Trader owner } participant Trader identified by tradeId { o String tradeId o String firstName o String lastName } transaction Trade { --> Commodity commodity --> Trader newOwner }
2.2 在模型文件中,Trade
定義了事務(wù),指定與資產(chǎn)和參與者的關(guān)系。事務(wù)處理函數(shù)文件包含執(zhí)行模型文件中定義的事務(wù)的JavaScript邏輯。該Trade
交易旨在簡(jiǎn)單地接受Commodity
正在交易的資產(chǎn)的標(biāo)識(shí)符以及Trader
要設(shè)置為新所有者的參與者的標(biāo)識(shí)符。
打開(kāi) logic.js
腳本文件,替換以下內(nèi)容,最后保存
/** * Track the trade of a commodity from one trader to another * @param {org.example.mynetwork.Trade} trade - the trade to be processed * @transaction */ async function tradeCommodity(trade) { trade.commodity.owner = trade.newOwner; let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity'); await assetRegistry.update(trade.commodity); }
2.3 添加訪問(wèn)控制,替換文件中的以下訪問(wèn)控制規(guī)則 permissions.acl
/** * Access control rules for tutorial-network */ rule Default { description: "Allow all participants access to all resources" participant: "ANY" operation: ALL resource: "org.example.mynetwork.*" action: ALLOW } rule SystemACL { description: "System ACL to permit all access" participant: "ANY" operation: ALL resource: "org.hyperledger.composer.system.**" action: ALLOW }
現(xiàn)在已經(jīng)定義了業(yè)務(wù)網(wǎng)絡(luò),它必須打包到可部署的業(yè)務(wù)網(wǎng)絡(luò)存檔(.bna
)文件中
3.1 使用命令行,導(dǎo)航到 tutorial-network
目錄,從tutorial-network
目錄中運(yùn)行以下命令
composer archive create -t dir -n .
該命令運(yùn)行后,tutorial-network@0.0.1.bna
在該tutorial-network
目錄中創(chuàng)建了一個(gè)調(diào)用的業(yè)務(wù)網(wǎng)絡(luò)存檔文件。
創(chuàng)建.bna
文件后,業(yè)務(wù)網(wǎng)絡(luò)可以部署到Hyperledger Fabric實(shí)例。通常情況下,來(lái)自Fabric管理員的信息需要?jiǎng)?chuàng)建一個(gè)PeerAdmin
身份,具有將鏈接代碼安裝到對(duì)等體的權(quán)限以及在composerchannel
通道上啟動(dòng)鏈接代碼的權(quán)限。但是,作為開(kāi)發(fā)環(huán)境安裝的一部分,PeerAdmin
已經(jīng)創(chuàng)建了一個(gè)身份
4.1 要從目錄安裝業(yè)務(wù)網(wǎng)絡(luò)tutorial-network
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
4.2 要啟動(dòng)業(yè)務(wù)網(wǎng)絡(luò)
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
4.3 要將網(wǎng)絡(luò)管理員標(biāo)識(shí)導(dǎo)入為可用的業(yè)務(wù)網(wǎng)卡,請(qǐng)運(yùn)行以下命令
composer card import --file networkadmin.card
4.4 要檢查業(yè)務(wù)網(wǎng)絡(luò)是否已成功部署,請(qǐng)運(yùn)行以下命令以ping網(wǎng)絡(luò)
composer network ping --card admin@tutorial-network
Hyperledger Composer可以基于業(yè)務(wù)網(wǎng)絡(luò)生成定制的REST API。為了開(kāi)發(fā)Web應(yīng)用程序,REST API提供了一個(gè)有用的語(yǔ)言無(wú)關(guān)抽象層
5.1 要?jiǎng)?chuàng)建REST API,請(qǐng)導(dǎo)航到 tutorial-network
目錄并運(yùn)行以下命令:
composer-rest-server
5.2 輸入 admin@tutorial-network
作為名片
5.3 選擇 決不詢問(wèn)是否在生成的API中使用名稱空間時(shí)使用名稱空間。
5.4 選擇 沒(méi)有 當(dāng)被問(wèn)及是否保護(hù)生成的API
5.5 選擇 是 當(dāng)被問(wèn)及是否啟用事件發(fā)布時(shí)。
5.6 選擇 沒(méi)有 當(dāng)被問(wèn)及是否啟用TLS安全。
訪問(wèn)路徑
Hyperledger Composer還可以生成針對(duì)REST API運(yùn)行的Angular 4應(yīng)用程序
6.1 要?jiǎng)?chuàng)建您的Angular 4應(yīng)用程序,請(qǐng)導(dǎo)航至 tutorial-network
目錄并運(yùn)行以下命令:
yo hyperledger-composer:angular
6.2 選擇 是 當(dāng)被要求連接到運(yùn)行業(yè)務(wù)網(wǎng)絡(luò)時(shí)
6.3 輸入標(biāo)準(zhǔn)package.json
問(wèn)題(項(xiàng)目名稱,說(shuō)明,作者姓名,作者電子郵件,許可證)
6.4 輸入 admin@tutorial-network
為商業(yè)網(wǎng)卡
6.5 選擇連接到現(xiàn)有的REST API
6.6 輸入 http://localhost
為REST服務(wù)器地址。
6.7 輸入 3000
用于服務(wù)器端口。
6.8 選擇名稱空間不被使用
如圖:
6.9 然后,Angular generator將為該項(xiàng)目創(chuàng)建腳手架并安裝所有依賴項(xiàng)。要運(yùn)行該應(yīng)用程序,請(qǐng)導(dǎo)航到您的角度項(xiàng)目目錄并運(yùn)行 npm start
。這將引發(fā)一個(gè)針對(duì)您的REST API運(yùn)行的Angular 4應(yīng)用程序 http://localhost:4200
在這個(gè)目錄下,angular-app
$ cd ../angular-app
$ npm start
執(zhí)行成功:
訪問(wèn)頁(yè)面,如圖:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“hyperledger composer開(kāi)發(fā)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。