區塊鏈研究實驗室 | 如何使用Hyperledger在區塊鏈上創建應用程序
火幣網(huobi.com)最新可用網址(點擊下圖直達註冊!)
火必交易所,曾经的火币交易所!
欧易OKX三大交易所,稳定好用!
币安全球第一大交易所!安全!
我們將使用Hyperledger Composer構建數字銀行。
在開始之前,您需要確保所使用的機器配備瞭必需的配置。您可能需要下載某些先決條件並設置基本的開發環境。以下是執行此操作的鏈接。在開始開發應用程序之前,請執行以下步驟,否則,您肯定會遇到愚蠢的錯誤。
首先安裝Hyperledger Composer,然後安裝開發環境。
安裝環境時,無需啟動Playground。
確保docker正在運行,並且在運行./startFabric.sh時將花費幾分鐘。所以要耐心點。
現在您的機器已經準備就緒,我們可以開始編碼瞭!
1.概述您的業務網絡
業務網絡定義(BND)由數據模型,事務邏輯和訪問控制規則組成。數據模型和訪問控制規則以特定域的語言編碼(非常容易掌握)。交易邏輯將使用JavaScript進行編碼。
要創建BND,我們需要在磁盤上創建合適的項目結構。我們將使用Yeoman創建一個基本的業務網絡。要創建項目結構,請打開您的終端並運行以下命令:
yo hyperledger-composer
這將引發一系列問題,如下所示。您將需要使用箭頭鍵瀏覽答案。
在您喜歡的文本編輯器中打開該項目。我正在使用Visual Code。文件結構如下所示:
刪除test / logic.js的內容。我們暫時不會使用它。
2.編制我們的業務網絡(models / test.cto)
首先,我們將定義models / test.cto。它包含業務網絡中所有資產,參與者和交易的類定義。該文件是用Hyperledger Composer建模語言編寫的。
namespace test
asset Account identified by accountId {o String accountId--> Customer ownero Double balance}
participantCustomeridentifiedbycustomerId{oStringcustomerIdoStringfirstNameoStringlastName}
transactionAccountTransfer{-->Accountfrom-->AccounttooDoubleamount}
帳戶是一種由accountId唯一標識的資產。每個帳戶相鏈接的客戶誰是所有者的帳戶。帳戶具有餘額屬性,該屬性指示帳戶隨時擁有多少資金。
客戶是一個由customerId唯一標識的參與者。每個客戶都有firstName和lastName。
AccountTransfer是可能發生的交易,以從一個帳戶多少錢要轉賬存儲。
3.編制業務網絡(lib / logic.js)
在此文件中,我們將在JavaScript中添加事務邏輯。
/***Sampletransaction*@param{test.AccountTransfer}accountTransfer*@transaction*/
functionaccountTransfer(accountTransfer){if(accountTransfer.from.balance<accountTransfer.to.balance){thrownewError("Insufficientfunds");}
accountTransfer.from.balance-=accountTransfer.amount;accountTransfer.to.balance+=accountTransfer.amount;
returngetAssetRegistry('test.Account').then(function(assetRegistry){returnassetRegistry.update(accountTransfer.from);}).then(function(){returngetAssetRegistry('test.Account');}).then(function(assetRegistry){returnassetRegistry.update(accountTransfer.to);});
}
@param {test.AccountTransfer} accountTransfer是我們放在文件頂部的裝飾器,用於將交易與我們的JavaScript函數鏈接在一起。然後,我們驗證資金所在的帳戶中是否有足夠的資金。否則,將引發錯誤。然後,我們對帳戶餘額執行基本的加法和減法。
此時,最重要的步驟是在區塊鏈上進行更新。為此,我們調用資產的getAssetRegistry API,即Account。然後,我們為分配資金的帳戶和接收資金的帳戶更新檢索到的assetRegistry。
4.生成業務網絡存檔(BNA)
現在已經定義瞭業務網絡,必須將其打包到可部署的業務網絡存檔(
.bna
)文件中。
4.1 在您的終端中導航到測試銀行應用程序。
4.2 運行以下命令:
composer archive create -t dir -n .
這將在測試銀行文件夾中創建一個.bna文件。
5.在結構上部署業務網絡存檔文件
5.1 安裝Composer運行時
test-bank composerruntimeinstall--cardPeerAdmin@hlfv1--businessNetworkName
5.2 部署業務網絡
$composernetworkstart--cardPeerAdmin@hlfv1--networkAdminadmin--networkAdminEnrollSecretadminpw--archiveFiletest-bank@0.0.1.bna--filenetworkadmin.card
(確保您位於測試銀行文件夾中)。
5.3 將網絡管理員身份導入為可用的商務網卡
$ composer card import --file networkadmin.card
5.4 要檢查業務網絡是否已成功部署,請運行以下命令ping網絡:
test-bank composernetworkping--cardadmin@
6.公開RESTful API
要從命令行創建RESTful API,請運行以下命令:
composer-rest-server
這將引發很多問題。
現在,將瀏覽器指向http:// localhost:3000 / explorer。
您將看到區塊鏈API。
現在讓我們添加兩個客戶。
讓我們添加一個名為Niharika Singh的客戶:
我們得到一個200的響應碼。
現在,我們將以類似的方式添加名為Tvesha Singh的客戶。
要檢查是否正確添加瞭它們,請獲取它們。
您將在響應正文中看到兩個客戶。
現在,我們添加鏈接到這兩個客戶的2個帳戶。
通過這種方式添加賬戶。現在,獲取它們以檢查是否正確添加瞭它們。
現在讓我們將75從Niharika轉移到Tvesha。
讓我們通過獲取帳戶信息來檢查餘額是否已更新。
Niharika現在有25,而Tvesha有125。
7.有角前端
要自動創建Angular腳手架,請在test-bank文件夾中運行以下命令:
yo
這將問多個問題。
這將需要幾分鐘。
導航到銀行應用程序。
npm start
這將啟動Angular服務器。
Angular文件結構的創建如下:
將瀏覽器指向http:// localhost:4200。那就是魔術發生的地方!您會看到以下屏幕:
現在,轉到右上角的“資產”,然後點擊“賬戶”。
這些是我們創建的確切賬戶。
因此,現在您可以嘗試一下。
您已經準備好前端和後端!
在localhost:3000上發生的所有事務都反映在localhost:4200上,反之亦然。而這一切都在區塊鏈上。
作者:鏈三豐,來源:區塊鏈研究實驗室