超級(jí)賬本Fabric區(qū)塊鏈用彈珠游戲Marbles 部署

Marbles 演示

Marbles GitHub地址

關(guān)于 Marbles

  • 這個(gè)應(yīng)用程序的基礎(chǔ)網(wǎng)絡(luò)是 Hyperledger Fabric,后者是一個(gè) Linux Foundation 項(xiàng)目。您可能想查閱以下操作說(shuō)明來(lái)稍微了解一下 Hyperledger Fabric。

  • 本演示旨在幫助開(kāi)發(fā)人員了解鏈代碼的基礎(chǔ)知識(shí)以及如何使用 Fabric 網(wǎng)絡(luò)開(kāi)發(fā)應(yīng)用程序。

  • 這是一個(gè)非常簡(jiǎn)單的資產(chǎn)轉(zhuǎn)移演示。多個(gè)用戶可以創(chuàng)建并相互轉(zhuǎn)移彈珠。

  • Marbles - 分支 v4.0.2 (Latest)(您將看到這個(gè)分支?。?/p>

    1. 兼容 Hyperledger Fabric v1.0.1、v1.0.0 和 v1.0.0-rc1

    2. 兼容 IBM Blockchain Bluemix 服務(wù) - IBM Blockchain Platform - Enterprise 計(jì)劃

應(yīng)用程序背景

請(qǐng)大家集中注意力,這個(gè)應(yīng)用程序?qū)⒀菔救绾卫?Hyperledger Fabric 在許多彈珠所有者之間轉(zhuǎn)移彈珠。
我們將在 Node.js 中使用一些 GoLang 代碼完成此任務(wù)。
該應(yīng)用程序的后端將是在我們的區(qū)塊鏈網(wǎng)絡(luò)中運(yùn)行的 GoLang 代碼。
從現(xiàn)在開(kāi)始,這些 GoLang 代碼將稱為 ‘鏈代碼’ 或 ‘cc’。
該鏈代碼本身會(huì)創(chuàng)建一顆彈珠,將它存儲(chǔ)到鏈代碼狀態(tài)中。
該鏈代碼本身可以將數(shù)據(jù)作為字符串存儲(chǔ)在鍵/值對(duì)設(shè)置中。
因此,我們將字符串化 JSON 對(duì)象,以便存儲(chǔ)更復(fù)雜的結(jié)構(gòu)。

彈珠的屬性包括:

  1. ID(唯一字符串,將用作鍵)
  2. 顏色(字符串,CSS 顏色名稱)
  3. 尺寸(int,以毫米為單位)
  4. 所有者(字符串)

我們將創(chuàng)建一個(gè)基于 Web 的用戶界面,它可以設(shè)置這些值并將它們存儲(chǔ)在區(qū)塊鏈中。
這顆彈珠是在區(qū)塊鏈存儲(chǔ)(也稱為賬本)中以鍵值對(duì)的形式創(chuàng)建的。
鍵為彈珠 ID,值為一個(gè)包含(上面列出的)彈珠屬性的 JSON 字符串。
與 cc 的交互是通過(guò)對(duì)網(wǎng)絡(luò)上的一個(gè)節(jié)點(diǎn)使用 gRPC 協(xié)議來(lái)完成的。
gRPC 協(xié)議的細(xì)節(jié)由一個(gè)名為 Hyperledger Fabric Client SDK 的 SDK 處理。
請(qǐng)查看下圖了解拓?fù)浣Y(jié)構(gòu)細(xì)節(jié)。

應(yīng)用程序通信流

  1. 管理員將在他們的瀏覽器中與我們的 Node.js 應(yīng)用程序 Marbles 進(jìn)行交互。
  2. 此客戶端 JS 代碼將打開(kāi)一個(gè)與后端 Node.js 應(yīng)用程序的 Websocket 連接。管理員與該站點(diǎn)交互時(shí),客戶端 JS 將消息發(fā)送到后端。
  3. 讀取或?qū)懭胭~本稱為提案。這個(gè)提案由 Marbles(通過(guò) SDK)構(gòu)建,然后發(fā)送到一個(gè)區(qū)塊鏈節(jié)點(diǎn)。
  4. 該節(jié)點(diǎn)將與它的 Marbles 鏈代碼容器進(jìn)行通信。鏈代碼將運(yùn)行/模擬該交易。如果沒(méi)有問(wèn)題,它會(huì)對(duì)該交易進(jìn)行背書(shū),并將其發(fā)回我們的 Marbles 程序。
  5. 然后,Marbles(通過(guò) SDK)將背書(shū)后的提案發(fā)送到訂購(gòu)服務(wù)。訂購(gòu)方將來(lái)自整個(gè)網(wǎng)絡(luò)的許多提案打包到一個(gè)區(qū)塊中。然后,它將新的區(qū)塊廣播到網(wǎng)絡(luò)中的節(jié)點(diǎn)。
  6. 最后,節(jié)點(diǎn)會(huì)驗(yàn)證該區(qū)塊并將它寫(xiě)入自己的賬本中。該交易現(xiàn)在已經(jīng)生效,所有后續(xù)讀取都會(huì)反映此更改。
  • 鏈代碼部分 - 這是在區(qū)塊鏈網(wǎng)絡(luò)上運(yùn)行的/包含節(jié)點(diǎn)的 GoLang 代碼。也稱為 cc。所有彈珠/區(qū)塊鏈交互最終都會(huì)在這里進(jìn)行。這些文件位于 /chaincode 中。

  • 客戶端 JS 部分 - 這是在用戶瀏覽器中運(yùn)行的 JavaScript 代碼。用戶界面交互在這里執(zhí)行。這些文件位于 /public/js 中。

  • 服務(wù)器端 JS 部分 - 這是運(yùn)行應(yīng)用程序的后端的 JavaScript 代碼,即為 Marbles 的核心的 Node.js 代碼!有時(shí)該代碼也稱為我們的節(jié)點(diǎn)或服務(wù)器代碼。它充當(dāng) Marbles 管理員與我們的區(qū)塊鏈之間的連接器。這些文件位于 /utils 和 /routes 中。

Marbles 設(shè)置

0.設(shè)置本地環(huán)境

安裝Fabric環(huán)境要求配置

1.下載 Marbles

git clone https://github.com/IBM-Blockchain/marbles.git 
cd marbles
git checkout v4.0.2

2.啟動(dòng)Fabric網(wǎng)絡(luò)

版本: Hyperledger Fabric v1.0.0
fabric-samples

cd fabric-samples/fabcar
./startFabric.sh
node enrollAdmin.js
node registerUser.js
node query.js

3.安裝并實(shí)例化Marbles的鏈代碼

npm install
cd ./scripts
./build_marbles_image.sh
node install_chaincode.js
node instantiate_chaincode.js

4.啟動(dòng) Marbles

npm install gulp -g
npm install
gulp marbles_local

使用 Marbles

啟動(dòng)后訪問(wèn)http://ip:3001

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容