HyperLedger如何實現鏈碼開發實例FabCar

這篇文章主要為大家展示了“HyperLedger如何實現鏈碼開發實例FabCar”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“HyperLedger如何實現鏈碼開發實例FabCar”這篇文章吧。

網站設計、成都網站設計的開發,更需要了解用戶,從用戶角度來建設網站,獲得較好的用戶體驗。創新互聯多年互聯網經驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網絡公司,打造的就是網站建設產品直銷的概念。選擇創新互聯,不只是建站,我們把建站作為產品,不斷的更新、完善,讓每位來訪用戶感受到浩方產品的價值服務。

應用程序與鏈碼開發 —FabCar

編寫第一個應用程序

通過幾個實例程序,了解 Fabric 應用的工作原理。
SDK 來調用智能合約(關于二者的詳細信息在 SDK 應用程序和智能合約處理兩個章節)

三步驟

  1. 建立開發環境。**使用first-network搭建基本的網絡(兩個組織和一個排序節點;兩組之間有一個 mychannel)

  2. 了解智能合約示例 Fabcar.**查看智能合約如何運行,以及應用程序如何使用它們來查詢和更新分類賬

  3. 開發使用 Fabcar 的示例應用程序。**應用程序使用智能合約查詢和更新賬面上的汽車資產。利用應用程序創建事務 — 查詢汽車、創建新汽車。

完成本教程應該學習到:應用程序如何與智能合約交互,Fabric 網絡中對等實體上托管和復制分類賬的交互過程。


docker rm -f (docker ps -aq)
docker rmi -f (docker images | grep fabcar | awk '{print 3}')
使用上述命令終止先前運行的所有 fabric 容器。

cd xxx/fabric-samples/FabCar/ && ./startFabric.sh javascript
上述命令將自動初始化 first-network, 與此同時部署 JavaScript 版本的 chaincode 到兩個對等節點上。
cd ./javascript && npm install
node enrollAdmin.js
創建一個管理員用戶(稱為管理員實際上為證書頒發機構 CA 的注冊商)
node registerUsre.js
通過管理員憑據來注冊新用戶(可使用該用戶來查詢和更新分類賬)user1
node query.js
查詢賬面信息

解析 Fabcar 的 javascript 應用程序

const { FileSystemWallet, Gateway} = require('fabric-network')從 fabric-network 模塊引入 FileSystemWallet 和 Gateway 兩個關鍵類。
cosnt gateway = new Gateway()
await gateway.connect(ccp,{wallet,identity:'user1'})
使應用程序連接到網絡(用 user1 的身份). 其中的 ccp 表示的是網關將訪問的網絡。 ccp 通過如下代碼配置:

const ccpPath = path.resolve(__dirname,'..','..','first-network','connection.json')
const ccpJSON = fs.readFileSync(ccpPath,'utf8')
const ccp = JSON.parse(ccpJSON)
  • (關于網絡配置文件的結構和定義網絡的方式可以查看連接配置文件) - 接到網絡后我們需要連接特定的 channel , 以期獲得特定世界狀態的權限
    const network = await gateway.getNetwork('mychannel')
    接入 channel 之后需要連接特定的 chaincode , 以期通過智能合約與世界狀態交互。
    const contact = network.getContract('fabcar')

Fabcar 中定義了許多的事務 (transaction)

  1. 使用const result = await contact.evaluateTransaction('queryAllCars')來查詢世界狀態。
    上述操作是最簡單的智能合約交互,它選取一個在連接配置文件中定義的節點發送請求,節點執行評估命令 –>智能合約查詢節點賬本副本所記載的所有汽車信息 –>返回結果給應用

  2. 使用contract.submitTransaction('createCar','CAR12','Honda','Accord','Black','Tom')來創建一輛新車的信息。 submitTransaction() 表示提交交易,它比 evaluateTransaction 復雜很多,它的工作原理如下:首先將 submitTransaction 天發送給每一個對等實體 –>每一個對等實體執行命令,返回結果給 SDK–>SDK 收集所有回復合成一個交易發給 Order 節點 –>Order 收集并造塊廣播 –>每個事務都得到驗證和提交之后允許它將控制權返回到應用程序 (submitTransaction 包括了一個偵聽器).

  3. 使用await contract.submitTransaction('changeCarOwner','CAR12','Dave')命令改變汽車車主

解析 Fabcar 的 javascript 智能合約

cd xxx/fabric-samples/chaincode/fabcar/javascript/lib/fabcar.js
了解如何使用 Contract 類來定義智能合約
class FabCar extends Contract{}

在此結構中將定義如下事務: initLedger , queryCar , queryAllCars , createCar 和 changeCarWoner .
async queryCar(ctx, carnumber){...}
async queryAllCars(ctx) {...}

分析 querAllCars 這個交易

async queryAllCars(ctx){
    const startKey = 'CAR0'
    const endKey = 'CAR999'
    cosnt iterator = await ctx.stub.getStateByRange(starKey,endKey)
    ...
}

這段代碼遍歷訪問每輛車,并將結果打包成 JSON 返回到應用程序當中。 getStateByRange() 是事務的 API , 關于 API 可以訪問 javascript 智能合約 API

以上是“HyperLedger如何實現鏈碼開發實例FabCar”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!

分享名稱:HyperLedger如何實現鏈碼開發實例FabCar
文章轉載:http://m.kartarina.com/article26/gspgcg.html

成都網站建設公司_創新互聯,為您提供App設計網站制作、用戶體驗手機網站建設、微信小程序、全網營銷推廣

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設
主站蜘蛛池模板: 日韩成人无码影院| 亚洲成A∨人片在线观看无码| 亚洲最大av资源站无码av网址| 99热门精品一区二区三区无码 | 一本色道久久综合无码人妻| 无码中文2020字幕二区| 中文有码vs无码人妻| 亚洲精品自偷自拍无码| 亚洲AV无码乱码国产麻豆穿越 | 人妻无码一区二区视频| 久久亚洲AV无码精品色午夜| 永久无码精品三区在线4| 人妻精品久久无码专区精东影业| 无码精品人妻一区二区三区免费 | 亚洲av永久中文无码精品| 亚洲日韩精品A∨片无码| 无码精品人妻一区| 国产在线拍揄自揄拍无码视频| 无码视频一区二区三区在线观看| 波多野结AV衣东京热无码专区| 亚洲a无码综合a国产av中文| 人妻少妇乱子伦无码视频专区 | 亚洲的天堂av无码| 亚洲爆乳精品无码一区二区三区 | 亚洲av无码一区二区三区天堂古代| 国产激情无码一区二区三区| 久久精品日韩av无码| 精品人妻无码一区二区三区蜜桃一| 精品国产a∨无码一区二区三区| 亚洲AV永久青草无码精品| 国产办公室秘书无码精品99 | 色情无码WWW视频无码区小黄鸭| 国产aⅴ无码专区亚洲av麻豆| AV无码小缝喷白浆在线观看 | 99无码人妻一区二区三区免费| 人妻av无码一区二区三区| 亚洲一区二区三区无码国产| 中文字幕精品三区无码亚洲| 无码H黄肉动漫在线观看网站 | 成人无码区免费视频观看| 亚洲av成本人无码网站|