這篇文章主要介紹了使用Hyperledger composer創(chuàng)建一個(gè)新的業(yè)務(wù)網(wǎng)絡(luò),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目前累計(jì)服務(wù)客戶超過千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
在1的地方,輸入自己的名字,我寫的是tutorial-network
然后點(diǎn)擊2,最后在右面3選擇Deploy進(jìn)行部署,成功之后截圖:
現(xiàn)在我們已經(jīng)創(chuàng)建并部署了業(yè)務(wù)網(wǎng)絡(luò),您應(yīng)該會(huì)在我們的錢包中看到一個(gè)名為admin的新業(yè)務(wù)網(wǎng)絡(luò)卡,用于我們的業(yè)務(wù)網(wǎng)絡(luò)教程 - 網(wǎng)絡(luò)。錢包可以包含業(yè)務(wù)網(wǎng)卡以連接到多個(gè)部署的業(yè)務(wù)網(wǎng)絡(luò)。
連接到外部區(qū)塊鏈時(shí),業(yè)務(wù)網(wǎng)卡代表連接到業(yè)務(wù)網(wǎng)絡(luò)所需的所有內(nèi)容。它們包括連接詳細(xì)信息,身份驗(yàn)證資料和元數(shù)據(jù)。
要連接到我們的業(yè)務(wù)網(wǎng)絡(luò),請(qǐng)點(diǎn)擊我們業(yè)務(wù)網(wǎng)絡(luò)卡下的立即連接。
我這里已經(jīng)連接過了,所以是灰色的,你們第一次的話都是深顏色,可以點(diǎn)擊進(jìn)入頁(yè)面如圖:
點(diǎn)擊1那個(gè)文件,然后編輯2,將里面的內(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 }
最后執(zhí)行3
該域模型定義了單個(gè)資產(chǎn)類型Commodity
和單個(gè)參與者類型Trader
以及Trade
用于修改商品所有者的單個(gè)交易類型。
現(xiàn)在已經(jīng)定義了域模型,我們可以定義業(yè)務(wù)網(wǎng)絡(luò)的事務(wù)邏輯。Composer使用JavaScript函數(shù)表達(dá)業(yè)務(wù)網(wǎng)絡(luò)的邏輯。這些功能在交易提交處理時(shí)自動(dòng)執(zhí)行。
4.1 點(diǎn)擊添加文件按鈕
4.2 單擊腳本文件并單擊添加
4.3 刪除腳本文件中的代碼行并將其替換為以下代碼
/** * 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); }
此功能僅owner
根據(jù)newOwner
收到的Trade
交易的財(cái)產(chǎn)更改商品的財(cái)產(chǎn)。然后它將修改Commodity
后的內(nèi)容保存到資產(chǎn)注冊(cè)表中,用于存儲(chǔ)Commodity
實(shí)例。
訪問控制文件定義了業(yè)務(wù)網(wǎng)絡(luò)的訪問控制規(guī)則。我們的網(wǎng)絡(luò)很簡(jiǎn)單,所以默認(rèn)的訪問控制文件不需要編輯?;疚募楫?dāng)前參與者提供了networkAdmin
對(duì)業(yè)務(wù)網(wǎng)絡(luò)和系統(tǒng)級(jí)操作的完全訪問權(quán)限。雖然可以有多個(gè)模型或腳本文件,但在任何業(yè)務(wù)網(wǎng)絡(luò)中只能有一個(gè)訪問控制文件。
現(xiàn)在我們有模型,腳本和訪問控制文件,我們需要部署和測(cè)試我們的業(yè)務(wù)網(wǎng)絡(luò)。
單擊部署更改以升級(jí)業(yè)務(wù)網(wǎng)絡(luò)。
其實(shí)就是左下角的那個(gè)Deploy,我們每一步都做了,不必執(zhí)行
接下來,我們需要建立一些參與者(在這種情況下,以測(cè)試我們的業(yè)務(wù)網(wǎng)絡(luò)交易商),創(chuàng)造了一個(gè)素材資源(商品),然后使用我們的貿(mào)易交易改變所有權(quán)的商品。執(zhí)行下面的那個(gè)test
跳轉(zhuǎn)到test,界面發(fā)生改變
8.1 確保您在左側(cè)選擇了交易者選項(xiàng)卡,然后點(diǎn)擊右上角的創(chuàng)建新參與者
因此刪除那里的代碼并粘貼以下內(nèi)容,下面兩個(gè)代碼是創(chuàng)建兩個(gè)參與者?。?!就是執(zhí)行兩遍操作,但是輸入不同的內(nèi)容,保證兩個(gè)參與者,千萬(wàn)不要寫在一起!?。?!
{ "$class": "org.example.mynetwork.Trader", "tradeId": "TRADER1", "firstName": "Jenny", "lastName": "Jones" }
{ "$class": "org.example.mynetwork.Trader", "tradeId": "TRADER2", "firstName": "Amy", "lastName": "Williams" }
9.1 現(xiàn)在我們有兩個(gè)交易者參與者,我們需要他們交易的東西。創(chuàng)建資產(chǎn)與創(chuàng)建參與者非常相似。我們正在創(chuàng)建的商品將擁有一個(gè)所有者屬性,表明它屬于交易者,并且tradeId是TRADER1
9.2 點(diǎn)擊資產(chǎn)下的商品標(biāo)簽,然后點(diǎn)擊創(chuàng)建新資產(chǎn),刪除資產(chǎn)數(shù)據(jù)并將其替換為以下內(nèi)容
{ "$class": "org.example.mynetwork.Commodity", "tradingSymbol": "ABC", "description": "Test commodity", "mainExchange": "Euronext", "quantity": 72.297, "owner": "resource:org.example.mynetwork.Trader#TRADER1" }
成功截圖:
現(xiàn)在我們有兩個(gè)交易員和一個(gè)商品在他們之間進(jìn)行交易,我們可以測(cè)試我們的交易交易。事務(wù)是Hyperledger Composer業(yè)務(wù)網(wǎng)絡(luò)中所有變化的基礎(chǔ),請(qǐng)嘗試從“ 我的業(yè)務(wù)網(wǎng)絡(luò)”屏幕創(chuàng)建另一個(gè)業(yè)務(wù)網(wǎng)絡(luò)并使用更高級(jí)的業(yè)務(wù)網(wǎng)絡(luò)模板。
10.1 點(diǎn)擊左側(cè)的Submit Transaction按鈕,確保交易類型為交易,將交易數(shù)據(jù)替換為以下內(nèi)容,或者更改詳細(xì)信息,最后點(diǎn)擊提交
{ "$class": "org.example.mynetwork.Trade", "commodity": "resource:org.example.mynetwork.Commodity#ABC", "newOwner": "resource:org.example.mynetwork.Trader#TRADER2" }
10.2 檢查我們的資產(chǎn)已經(jīng)改變所有權(quán)從TRADER1
到TRADER2
,通過擴(kuò)大資產(chǎn)數(shù)據(jù)部分。你應(yīng)該看到所有者被列為resource:org.example.mynetwork.Trader#TRADER2
10.3 要查看我們業(yè)務(wù)網(wǎng)絡(luò)的完整交易歷史記錄,請(qǐng)點(diǎn)擊左側(cè)的所有交易。以下是每個(gè)交易提交時(shí)的清單。您可以看到,我們使用用戶界面執(zhí)行的某些操作(例如創(chuàng)建交易參與者和商品資產(chǎn))被記錄為交易,即使它們未在我們的業(yè)務(wù)網(wǎng)絡(luò)模型中定義為交易。這些事務(wù)被稱為“系統(tǒng)事務(wù)”,并且對(duì)于所有業(yè)務(wù)網(wǎng)絡(luò)都是通用的,并且在Hyperledger Composer運(yùn)行時(shí)中定義
現(xiàn)在交易已成功運(yùn)行,我們應(yīng)該注銷商業(yè)網(wǎng)絡(luò),最終在我們開始的“ 我的商家網(wǎng)絡(luò)”屏幕上結(jié)束。
在屏幕的右上角是一個(gè)標(biāo)有admin的按鈕。這將列出您當(dāng)前的身份,注銷,單擊管理以打開下拉菜單,然后單擊我的商業(yè)網(wǎng)絡(luò)。
介紹:
在本地使用Playground,您可以使用連接到在瀏覽器本地存儲(chǔ)中工作的“Web瀏覽器”,或者您可以使用連接到通常在名為“hlfv1”的組中使用真實(shí)結(jié)構(gòu)的連接
如果你連接到一個(gè)真正的 Fabric,那么你很可能已經(jīng)創(chuàng)建了一個(gè)卡,用于PeerAdmin和ChannelAdmin角色的身份 - 這通常稱為PeerAdmin。這是您用于使用Composer部署和更新網(wǎng)絡(luò)的卡。
當(dāng)您將網(wǎng)絡(luò)部署到真正的 Fabric時(shí),需要完成其他字段才能點(diǎn)擊“ 部署”按鈕 - 您需要提供網(wǎng)絡(luò)管理員的詳細(xì)信息。
滾動(dòng)到部署屏幕的底部以查找網(wǎng)絡(luò)管理員的憑據(jù)。對(duì)于簡(jiǎn)單的開發(fā)結(jié)構(gòu)和許多測(cè)試網(wǎng)絡(luò),您可以提供ID和秘密。注冊(cè)ID - 管理員注冊(cè)密碼 - adminpw
當(dāng)指定ID和秘密時(shí),您可以單擊“ 部署”按鈕并在第三步中繼續(xù)教程。
如果您正在使用自定義或生產(chǎn)結(jié)構(gòu) - 請(qǐng)聯(lián)系您的結(jié)構(gòu)管理員以獲取網(wǎng)絡(luò)管理員的詳細(xì)信息。
當(dāng)您使用真實(shí)光纖網(wǎng)并單擊部署更改時(shí),您將看到一個(gè)添加彈出式對(duì)話框,要求您從下拉列表中指定安裝卡和升級(jí)卡。通常,您指定與用于部署初始網(wǎng)絡(luò)相同的PeerAdmin卡。如果您不確定,請(qǐng)聯(lián)系您的Fabric Administrator。
選擇卡片,然后點(diǎn)擊升級(jí)按鈕。請(qǐng)注意,在真正的Fabric上,這可能需要幾分鐘才能完成。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“使用Hyperledger composer創(chuàng)建一個(gè)新的業(yè)務(wù)網(wǎng)絡(luò)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!