成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Hyperledger Fabric(編寫(xiě)你的第一個(gè)應(yīng)用程序)

Hydrogen / 3550人閱讀

摘要:一個(gè)更新提案,認(rèn)可,然后返回到應(yīng)用程序,然后將其發(fā)送給每個(gè)對(duì)等點(diǎn)的分類(lèi)帳我們對(duì)分類(lèi)賬的第一次更新將是創(chuàng)建一輛新車(chē),我們有一個(gè)多帶帶的程序我們將用它來(lái)進(jìn)行更新。

編寫(xiě)第一個(gè)應(yīng)用程序
如果你還不熟悉Fabric網(wǎng)絡(luò)的基本架構(gòu),則可能需要在繼續(xù)之前訪問(wèn)“介紹”和“構(gòu)建你的第一個(gè)網(wǎng)絡(luò)”文檔。

在本節(jié)中,我們將介紹一些示例程序,以了解Fabric應(yīng)用程序的工作原理,這些應(yīng)用程序(以及他們使用的智能合約) - 統(tǒng)稱(chēng)為fabcar - 提供了Fabric功能的廣泛演示。值得注意的是,我們將展示與證書(shū)頒發(fā)機(jī)構(gòu)進(jìn)行交互并生成注冊(cè)證書(shū)的過(guò)程,之后我們將利用這些身份來(lái)查詢和更新分類(lèi)帳。

我們將經(jīng)歷三個(gè)主要步驟:

1.設(shè)置開(kāi)發(fā)環(huán)境。我們的應(yīng)用程序需要一個(gè)網(wǎng)絡(luò)進(jìn)行交互,因此我們將下載一個(gè)僅限于我們所需的注冊(cè)/登記,查詢和更新的組件:

2.學(xué)習(xí)我們的應(yīng)用程序?qū)⑹褂玫氖纠悄芎霞s的參數(shù)。我們的智能合約包含各種功能,使我們能夠以不同的方式與分類(lèi)帳進(jìn)行交互,我們將進(jìn)入并檢查該智能合約,以了解我們的應(yīng)用程序?qū)⑹褂玫墓δ堋?/p>

3.開(kāi)發(fā)應(yīng)用程序以便能夠在分類(lèi)帳上查詢和更新資產(chǎn)。我們將進(jìn)入應(yīng)用程序代碼本身(我們的應(yīng)用程序已用Javascript編寫(xiě))并手動(dòng)操作變量以運(yùn)行不同類(lèi)型的查詢和更新。

完成本教程后,你應(yīng)該基本了解應(yīng)用程序如何與智能合約一起編程,以與Fabric網(wǎng)絡(luò)上的分類(lèi)帳(即對(duì)等方)進(jìn)行交互。

設(shè)置開(kāi)發(fā)環(huán)境

如果你已經(jīng)完成了構(gòu)建你的第一個(gè)網(wǎng)絡(luò),你應(yīng)該已經(jīng)設(shè)置了你的開(kāi)發(fā)環(huán)境,并且已經(jīng)下載了fabric-samples以及隨附的工件。要運(yùn)行本教程,你現(xiàn)在需要做的就是拆除現(xiàn)有的任何網(wǎng)絡(luò),你可以通過(guò)發(fā)出以下命令來(lái)執(zhí)行此操作:

./byfn.sh down

如果你沒(méi)有開(kāi)發(fā)環(huán)境以及網(wǎng)絡(luò)和應(yīng)用程序的附帶工件,訪問(wèn)“前提條件”頁(yè)面,確保你的計(jì)算機(jī)上已安裝必要的依賴(lài)項(xiàng)。

接下來(lái),如果你還沒(méi)有這樣做的話,訪問(wèn)”安裝示例、二進(jìn)制文件和Docker鏡像“頁(yè)面并按照提供的說(shuō)明進(jìn)行操作。克隆fabric-samples存儲(chǔ)庫(kù)后返回本教程,并下載最新的穩(wěn)定Fabric鏡像和可用實(shí)用程序。

此時(shí)所有的都應(yīng)該已安裝,導(dǎo)航到fabric-samples存儲(chǔ)庫(kù)中的fabcar子目錄,并查看內(nèi)部的內(nèi)容:

cd fabric-samples/fabcar  && ls

你應(yīng)該看到以下內(nèi)容:

enrollAdmin.js     invoke.js       package.json    query.js        registerUser.js startFabric.sh

在開(kāi)始之前,我們還需要做一些家務(wù),運(yùn)行以下命令以終止任何陳舊或活動(dòng)容器:

docker rm -f $(docker ps -aq)

清除所有緩存的網(wǎng)絡(luò):

# Press "y" when prompted by the command

docker network prune

最后,如果你已經(jīng)完成本教程,你還需要?jiǎng)h除fabcar智能合約的基礎(chǔ)鏈碼鏡像,如果你是第一次瀏覽此內(nèi)容的用戶,那么你的系統(tǒng)上將不會(huì)顯示此鏈碼鏡像:

docker rmi dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba
安裝客戶端并啟動(dòng)網(wǎng)絡(luò)
以下說(shuō)明要求你位于fabric-samples repo的本地克隆中的fabcar子目錄中,在本教程的其余部分中,保留在此子目錄的根目錄下。

運(yùn)行以下命令以安裝應(yīng)用程序的Fabric依賴(lài)項(xiàng),我們關(guān)注fabric-ca-client,它允許我們的應(yīng)用程序與CA服務(wù)器通信并檢索身份資料,還有fabric-client,它允許我們加載身份資料并與對(duì)等點(diǎn)和排序服務(wù)交流。

npm install

使用startFabric.sh shell腳本啟動(dòng)網(wǎng)絡(luò),此命令將啟動(dòng)我們的各種Fabric實(shí)體,并為Golang編寫(xiě)的鏈碼啟動(dòng)智能合約容器:

./startFabric.sh

你還可以選擇針對(duì)Node.js中編寫(xiě)的鏈碼運(yùn)行本教程,如果你想追求這條路線,請(qǐng)發(fā)出以下命令:

./startFabric.sh node
請(qǐng)注意,Node.js鏈碼場(chǎng)景大約需要90秒才能完成;也許更長(zhǎng)。腳本沒(méi)有掛起,而是增加的時(shí)間是在構(gòu)建鏈碼鏡像時(shí)安裝fabric-shim的結(jié)果。

好了,現(xiàn)在你有一個(gè)示例網(wǎng)絡(luò)和一些代碼,讓我們來(lái)看看不同的部分如何組合在一起。

應(yīng)用程序如何與網(wǎng)絡(luò)交互

要更深入地了解我們fabcar網(wǎng)絡(luò)中的組件(以及它們?nèi)绾尾渴穑┮约皯?yīng)用程序如何在更精細(xì)的級(jí)別上與這些組件進(jìn)行交互,請(qǐng)參閱了解Fabcar網(wǎng)絡(luò)。

開(kāi)發(fā)人員更有興趣了解應(yīng)用程序的作用 - 以及查看代碼本身以查看應(yīng)用程序的構(gòu)建方式 - 應(yīng)該繼續(xù)下去,目前,最重要的是要知道應(yīng)用程序使用軟件開(kāi)發(fā)工具包(SDK)來(lái)訪問(wèn)允許查詢和更新分類(lèi)帳的API。

登記管理員用戶
以下兩節(jié)涉及與證書(shū)頒發(fā)機(jī)構(gòu)的通信,你可能會(huì)發(fā)現(xiàn)當(dāng)運(yùn)行即將到來(lái)的程序時(shí)流式傳輸CA日志很有用。

要流式傳輸CA日志,請(qǐng)拆分終端或打開(kāi)新shell并發(fā)出以下命令:

docker logs -f ca.example.com

現(xiàn)在回到帶著fabcar內(nèi)容的終端……

當(dāng)我們啟動(dòng)我們的網(wǎng)絡(luò),管理員用戶 - admin - 已在我們的證書(shū)頒發(fā)機(jī)構(gòu)注冊(cè),現(xiàn)在我們需要向CA服務(wù)器發(fā)送登記調(diào)用,并為該用戶檢索登記證書(shū)(eCert)。我們不會(huì)在這里深入研究登記詳情,但只需說(shuō)SDK和擴(kuò)展我們的應(yīng)用程序需要此證書(shū)才能為管理員形成用戶對(duì)象,然后我們將使用此管理員對(duì)象隨后注冊(cè)并登記新用戶,發(fā)送管理員登記調(diào)用到CA服務(wù)器:

node enrollAdmin.js

該程序?qū)⒄{(diào)用證書(shū)簽名請(qǐng)求(CSR)并最終將eCert和密鑰材料輸出到新創(chuàng)建的文件夾 - hfc-key-store - 該項(xiàng)目的根目錄下,當(dāng)我們的應(yīng)用需要為各種用戶創(chuàng)建或加載身份對(duì)象時(shí)會(huì)查看此位置。

注冊(cè)并登記user1

使用我們新生成的管理員eCert,我們現(xiàn)在將再次與CA服務(wù)器通信以注冊(cè)和登記新用戶。此用戶 - user1 - 將是我們?cè)诓樵兒透路诸?lèi)帳時(shí)使用的身份。這里需要注意的是,管理員身份是為我們的新用戶發(fā)出注冊(cè)和登記調(diào)用(即該用戶扮演注冊(cè)員的角色),發(fā)送為user1注冊(cè)并登記的調(diào)用:

node registerUser.js

與管理員登記類(lèi)似,該程序調(diào)用CSR并將密鑰和eCert輸出到hfc-key-store子目錄中,所以現(xiàn)在我們有兩個(gè)獨(dú)立用戶的身份資料 - adminuser1,是時(shí)候與分類(lèi)賬互動(dòng)了......

查詢分類(lèi)帳

查詢是你從分類(lèi)帳中讀取數(shù)據(jù)的方式,該數(shù)據(jù)存儲(chǔ)為一系列鍵值對(duì),并且你可以查詢單個(gè)鍵,多個(gè)鍵的值,或者 - 如果分類(lèi)帳是以JSON等豐富的數(shù)據(jù)存儲(chǔ)格式編寫(xiě)的 - 對(duì)其執(zhí)行復(fù)雜搜索(例如,查找包含特定關(guān)鍵字的所有資產(chǎn))。

這是查詢?nèi)绾喂ぷ鞯谋硎荆?/p>

首先,讓我們運(yùn)行query.js程序,返回分類(lèi)帳中所有汽車(chē)的清單,我們將使用我們的第二個(gè)身份 - user1 - 作為此應(yīng)用程序的簽名實(shí)體,我們程序中的以下行將user1指定為簽名者:

fabric_client.getUserContext("user1", true);

回想一下,user1登記資料已經(jīng)放入我們的hfc-key-store子目錄中,所以我們只需要告訴我們的應(yīng)用程序獲取該身份,隨著用戶對(duì)象的定義,我們現(xiàn)在可以從分類(lèi)賬中繼續(xù)讀取。一個(gè)查詢所有汽車(chē)的功能,queryAllCars,已預(yù)先加載到應(yīng)用程序中,因此我們可以簡(jiǎn)單地按原樣運(yùn)行程序:

node query.js

它應(yīng)該返回這樣的東西:

Successfully loaded user1 from persistence
Query has completed, checking results
Response is  [{"Key":"CAR0", "Record":{"colour":"blue","make":"Toyota","model":"Prius","owner":"Tomoko"}},
{"Key":"CAR1",   "Record":{"colour":"red","make":"Ford","model":"Mustang","owner":"Brad"}},
{"Key":"CAR2", "Record":{"colour":"green","make":"Hyundai","model":"Tucson","owner":"Jin Soo"}},
{"Key":"CAR3", "Record":{"colour":"yellow","make":"Volkswagen","model":"Passat","owner":"Max"}},
{"Key":"CAR4", "Record":{"colour":"black","make":"Tesla","model":"S","owner":"Adriana"}},
{"Key":"CAR5", "Record":{"colour":"purple","make":"Peugeot","model":"205","owner":"Michel"}},
{"Key":"CAR6", "Record":{"colour":"white","make":"Chery","model":"S22L","owner":"Aarav"}},
{"Key":"CAR7", "Record":{"colour":"violet","make":"Fiat","model":"Punto","owner":"Pari"}},
{"Key":"CAR8", "Record":{"colour":"indigo","make":"Tata","model":"Nano","owner":"Valeria"}},
{"Key":"CAR9", "Record":{"colour":"brown","make":"Holden","model":"Barina","owner":"Shotaro"}}]

這些是10輛車(chē),Adriana擁有的黑色特斯拉Model S,Brad擁有的紅色福特Mustang,Pari擁有的紫羅蘭菲亞特Punto,等等。分類(lèi)帳是基于鍵值的,在我們的實(shí)現(xiàn)中,鍵是CAR0CAR9,這將在一瞬間變得特別重要。

讓我們仔細(xì)看看這個(gè)程序,使用編輯器(例如atom或visual studio)并打開(kāi)query.js。

應(yīng)用程序的初始部分定義了某些變量,例如通道名稱(chēng),證書(shū)存儲(chǔ)位置和網(wǎng)絡(luò)端點(diǎn),在我們的示例應(yīng)用中,這些變量已被植入,但在真正的應(yīng)用程序中,這些變量必須由app dev指定。

var channel = fabric_client.newChannel("mychannel");
var peer = fabric_client.newPeer("grpc://localhost:7051");
channel.addPeer(peer);

var member_user = null;
var store_path = path.join(__dirname, "hfc-key-store");
console.log("Store path:"+store_path);
var tx_id = null;

這是我們構(gòu)造查詢的塊:

// queryCar chaincode function - requires 1 argument, ex: args: ["CAR4"],
// queryAllCars chaincode function - requires no arguments , ex: args: [""],
const request = {
  //targets : --- letting this default to the peers assigned to the channel
  chaincodeId: "fabcar",
  fcn: "queryAllCars",
  args: [""]
};

當(dāng)應(yīng)用程序運(yùn)行時(shí),它調(diào)用了對(duì)等點(diǎn)的fabcar鏈碼,在其中運(yùn)行queryAllCars函數(shù),并且沒(méi)有傳遞任何參數(shù)。

要了解我們智能合約中的可用功能,導(dǎo)航到fabric-samples根目錄下的chaincode/fabcar/go子目錄,并在編輯器中打開(kāi)fabcar.go

這些相同的功能在fabcar鏈碼的Node.js版本中定義。

你將看到我們可以調(diào)用以下函數(shù):initLedgerqueryCar,queryAllCarscreateCarchangeCarOwner。

讓我們仔細(xì)看看queryAllCars函數(shù),看看它如何與分類(lèi)帳交互。

func (s *SmartContract) queryAllCars(APIstub shim.ChaincodeStubInterface) sc.Response {

      startKey := "CAR0"
      endKey := "CAR999"

      resultsIterator, err := APIstub.GetStateByRange(startKey, endKey)

這定義了queryAllCars的范圍,CAR0CAR999之間的每輛車(chē) - 總共1,000輛車(chē),假設(shè)每個(gè)鍵都已正確標(biāo)記 - 將由查詢返回。

下面是一個(gè)應(yīng)用程序如何在鏈碼中調(diào)用不同函數(shù)的表示,每個(gè)函數(shù)都必須在鏈碼shim接口中針對(duì)可用的API進(jìn)行編碼,這反過(guò)來(lái)又允許智能合約容器與對(duì)等點(diǎn)分類(lèi)帳正確連接。

我們可以看到我們的queryAllCars函數(shù),以及一個(gè)名為createCar的函數(shù),它將允許我們更新分類(lèi)帳并最終在一瞬間將新區(qū)塊附加到鏈中。

但首先,返回query.js程序并編輯構(gòu)造函數(shù)請(qǐng)求以查詢CAR4,我們通過(guò)將query.js中的函數(shù)從queryAllCars更改為queryCar并將CAR4作為特定鍵傳遞來(lái)完成此操作。

query.js程序現(xiàn)在看起來(lái)應(yīng)該是這樣的:

const request = {
  //targets : --- letting this default to the peers assigned to the channel
  chaincodeId: "fabcar",
  fcn: "queryCar",
  args: ["CAR4"]
};

保存程序并導(dǎo)航回fabcar目錄,現(xiàn)在再次運(yùn)行程序:

node query.js

你應(yīng)該看到以下內(nèi)容:

{"colour":"black","make":"Tesla","model":"S","owner":"Adriana"}

如果你回過(guò)頭來(lái)看看我們之前查詢過(guò)每輛車(chē)的結(jié)果,你可以看到CAR4是Adriana的黑色特斯拉型號(hào)S,這是在這里返回的結(jié)果。

使用queryCar函數(shù),我們可以查詢?nèi)魏捂I(例如CAR0)并獲取與該車(chē)相對(duì)應(yīng)的任何品牌,型號(hào),顏色和所有者。

很好,此時(shí)你應(yīng)該熟悉智能合約中的基本查詢功能以及查詢程序中的少數(shù)參數(shù),是時(shí)候更新分類(lèi)帳.....

更新分類(lèi)帳

現(xiàn)在我們已經(jīng)完成了一些分類(lèi)帳查詢并添加了一些代碼,我們準(zhǔn)備更新分類(lèi)帳,我們可以做很多潛在的更新,但讓我們從創(chuàng)建汽車(chē)開(kāi)始吧。

下面我們可以看到這個(gè)過(guò)程如何運(yùn)作。一個(gè)更新提案,認(rèn)可,然后返回到應(yīng)用程序,然后將其發(fā)送給每個(gè)對(duì)等點(diǎn)的分類(lèi)帳:

我們對(duì)分類(lèi)賬的第一次更新將是創(chuàng)建一輛新車(chē),我們有一個(gè)多帶帶的Javascript程序 - invoke.js - 我們將用它來(lái)進(jìn)行更新。就像查詢一樣,使用編輯器打開(kāi)程序并導(dǎo)航到我們構(gòu)造調(diào)用的代碼塊:

// createCar chaincode function - requires 5 args, ex: args: ["CAR12", "Honda", "Accord", "Black", "Tom"],
// changeCarOwner chaincode function - requires 2 args , ex: args: ["CAR10", "Barry"],
// must send the proposal to endorsing peers
var request = {
  //targets: let default to the peer assigned to the client
  chaincodeId: "fabcar",
  fcn: "",
  args: [""],
  chainId: "mychannel",
  txId: tx_id
};

你將看到我們可以調(diào)用兩個(gè)函數(shù)之一 - createCarchangeCarOwner,首先,讓我們創(chuàng)建一個(gè)紅色雪佛蘭Volt并將其交給名為Nick的所有者,我們的分類(lèi)帳上有CAR9,所以我們?cè)谶@里使用CAR10作為識(shí)別鍵,編輯此代碼塊如下所示:

var request = {
  //targets: let default to the peer assigned to the client
  chaincodeId: "fabcar",
  fcn: "createCar",
  args: ["CAR10", "Chevy", "Volt", "Red", "Nick"],
  chainId: "mychannel",
  txId: tx_id
};

保存并運(yùn)行程序:

node invoke.js

終端中會(huì)有一些關(guān)于ProposalResponse和promises的輸出,但是,我們所關(guān)注的是這條消息:

The transaction has been committed on peer localhost:7053

查看該交易是否已寫(xiě)入,返回query.js并將參數(shù)從CAR4更改為CAR10。

換句話說(shuō),改變這一點(diǎn):

const request = {
  //targets : --- letting this default to the peers assigned to the channel
  chaincodeId: "fabcar",
  fcn: "queryCar",
  args: ["CAR4"]
};

為這樣:

const request = {
  //targets : --- letting this default to the peers assigned to the channel
  chaincodeId: "fabcar",
  fcn: "queryCar",
  args: ["CAR10"]
};

再次保存,然后查詢:

node query.js

應(yīng)該返回這些:

Response is  {"colour":"Red","make":"Chevy","model":"Volt","owner":"Nick"}

恭喜,你創(chuàng)造了一輛車(chē)!

所以現(xiàn)在我們已經(jīng)做到了,讓我們說(shuō)Nick感到很慷慨,他想把他的雪佛蘭伏特送給名叫Dave的人。

要做到這一點(diǎn),請(qǐng)返回invoke.js并將函數(shù)從createCar更改為changeCarOwner并輸入如下參數(shù):

var request = {
  //targets: let default to the peer assigned to the client
  chaincodeId: "fabcar",
  fcn: "changeCarOwner",
  args: ["CAR10", "Dave"],
  chainId: "mychannel",
  txId: tx_id
};

第一個(gè)參數(shù) - CAR10 - 反映了將改變擁有者的汽車(chē),第二個(gè)參數(shù) - Dave - 定義了汽車(chē)的新?lián)碛姓摺?/p>

再次保存并執(zhí)行程序:

node invoke.js

現(xiàn)在讓我們?cè)俅尾樵兎诸?lèi)帳并確保Dave現(xiàn)在與CAR10鍵相關(guān)聯(lián):

node query.js

它應(yīng)該返回這個(gè)結(jié)果:

Response is  {"colour":"Red","make":"Chevy","model":"Volt","owner":"Dave"}

CAR10的所有權(quán)已從Nick改為Dave。

在現(xiàn)實(shí)世界的應(yīng)用程序中,鏈碼可能具有一些訪問(wèn)控制邏輯,例如,只有某些授權(quán)用戶可以創(chuàng)建新車(chē),并且只有車(chē)主可以將車(chē)轉(zhuǎn)移給其他人。
總結(jié)

現(xiàn)在我們已經(jīng)完成了一些查詢和一些更新,你應(yīng)該非常清楚應(yīng)用程序如何與網(wǎng)絡(luò)交互,已經(jīng)看到了智能合約,API和SDK在查詢和更新中扮演的角色的基礎(chǔ)知識(shí),你應(yīng)該了解如何使用不同類(lèi)型的應(yīng)用程序來(lái)執(zhí)行其他業(yè)務(wù)任務(wù)和操作。

在隨后的文檔中,我們將學(xué)習(xí)如何實(shí)際編寫(xiě)智能合約,以及如何利用其中一些更低級(jí)別的應(yīng)用程序功能(特別是與身份和成員資格服務(wù)相關(guān))。

其他資源

Hyperledger Fabric Node SDK repo是深入文檔和示例代碼的絕佳資源,你還可以在Hyperledger Rocket Chat上咨詢Fabric社區(qū)和組件專(zhuān)家。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24238.html

相關(guān)文章

  • Hyperledger Fabric(目錄)

    摘要:企業(yè)區(qū)塊鏈平臺(tái)企業(yè)級(jí)許可的分布式分類(lèi)賬平臺(tái),為廣泛的行業(yè)用例提供模塊化和多功能性。這些節(jié)點(diǎn)通過(guò)應(yīng)用已經(jīng)由共識(shí)協(xié)議驗(yàn)證的交易來(lái)維護(hù)分類(lèi)帳的副本,該交易被分組為包括將每個(gè)塊綁定到前一個(gè)塊的散列的塊中。 企業(yè)區(qū)塊鏈平臺(tái) 企業(yè)級(jí)許可的分布式分類(lèi)賬平臺(tái),為廣泛的行業(yè)用例提供模塊化和多功能性。 介紹 一般而言,區(qū)塊鏈?zhǔn)且粋€(gè)不可變的交易分類(lèi)賬,維護(hù)在一個(gè)分布式對(duì)等節(jié)點(diǎn)網(wǎng)絡(luò)中。這些節(jié)點(diǎn)通過(guò)應(yīng)用已經(jīng)由共...

    trigkit4 評(píng)論0 收藏0
  • Hyperledger Fabric(關(guān)鍵概念介紹)

    摘要:還提供創(chuàng)建通道的功能,允許一組參與者創(chuàng)建單獨(dú)的交易分類(lèi)賬。共識(shí)交易必須按照發(fā)生的順序?qū)懭敕诸?lèi)賬,即使它們可能位于網(wǎng)絡(luò)中不同的參與者組之間。 介紹 Hyperledger Fabric是分布式分類(lèi)賬解決方案的平臺(tái),采用模塊化架構(gòu),提供高度機(jī)密性,彈性,靈活性和可擴(kuò)展性,它旨在支持不同組件的可插拔實(shí)現(xiàn),并適應(yīng)整個(gè)經(jīng)濟(jì)生態(tài)系統(tǒng)中存在的錯(cuò)綜復(fù)雜的事物和復(fù)雜性。 我們建議首次使用的用戶首先閱讀下...

    joy968 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.41 - 深入學(xué)習(xí)區(qū)塊鏈

    摘要:和比特幣協(xié)議有所不同的是,以太坊的設(shè)計(jì)十分靈活,極具適應(yīng)性。超級(jí)賬本區(qū)塊鏈的商業(yè)應(yīng)用超級(jí)賬本超級(jí)賬本是基金會(huì)下的眾多項(xiàng)目中的一個(gè)。證書(shū)頒發(fā)機(jī)構(gòu)負(fù)責(zé)簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開(kāi)始 一個(gè)故事告訴你比特幣的原理及運(yùn)作機(jī)制 這篇文章的定位會(huì)比較科普,盡量用類(lèi)比的方法將比特幣的基本原理講出來(lái)...

    qianfeng 評(píng)論0 收藏0
  • Hyperledger Fabric(構(gòu)建的第一個(gè)網(wǎng)絡(luò))

    摘要:構(gòu)建你的第一個(gè)網(wǎng)絡(luò)方案提供了一個(gè)包含兩個(gè)組織的示例網(wǎng)絡(luò),每個(gè)組織維護(hù)兩個(gè)對(duì)等節(jié)點(diǎn),以及一個(gè)獨(dú)立排序服務(wù)。它還將啟動(dòng)一個(gè)容器來(lái)運(yùn)行腳本執(zhí)行,該執(zhí)行將對(duì)等點(diǎn)連接到一個(gè)通道,部署和實(shí)例化鏈碼并驅(qū)動(dòng)針對(duì)部署的鏈碼執(zhí)行交易。 構(gòu)建你的第一個(gè)網(wǎng)絡(luò) 這些說(shuō)明已經(jīng)過(guò)驗(yàn)證,可以與最新的穩(wěn)定Docker鏡像和提供的tar文件中預(yù)編譯的安裝實(shí)用程序一起工作,如果使用當(dāng)前主分支中的鏡像或工具運(yùn)行這些命令,則可...

    XUI 評(píng)論0 收藏0
  • Hyperledger Fabric on SAP Cloud Platform

    摘要:在她的幫助下,原型發(fā)布順利完成。節(jié)點(diǎn)收到一個(gè)交易后,會(huì)根據(jù)判斷標(biāo)準(zhǔn)對(duì)該交易進(jìn)行有效性校驗(yàn),無(wú)效的交易會(huì)被廢棄。負(fù)責(zé)權(quán)限管理,成員身份相關(guān)證書(shū)管理和維護(hù)交易相關(guān)證書(shū)管理等等。 今天的文章來(lái)自Wen Aviva, 坐Jerry面對(duì)面的程序媛。 Jerry在之前的公眾號(hào)文章《在SAP UI中使用純JavaScript顯示產(chǎn)品主數(shù)據(jù)的3D模型視圖》已經(jīng)介紹過(guò)Aviva了,SAP成都C4C開(kāi)發(fā)團(tuán)...

    codergarden 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<