成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

利用Hyperledger Fabric開發(fā)你的第一個(gè)區(qū)塊鏈應(yīng)用

李濤 / 3330人閱讀

摘要:使用開發(fā)一個(gè)簡單的應(yīng)用程序。而且,當(dāng)鍵值對(duì)是以形式存在的時(shí)候,世界狀態(tài)可以通過配置使用數(shù)據(jù)庫例如來支持富查詢。每一個(gè)交易都使用一組比如來和賬本進(jìn)行交互。

原文地址:https://www.xuanzhangjiong.to...

作者:TopJohn

利用Hyperledger Fabric開發(fā)你的第一個(gè)區(qū)塊鏈應(yīng)用
本文示例源于fabric-samples中的fabcar
https://github.com/hyperledge...

在這個(gè)例子中,我們通過一個(gè)簡單的示例程序來了解Fabric應(yīng)用是如何運(yùn)行的。在這個(gè)例子中使用的應(yīng)用程序和智能合約(鏈碼)統(tǒng)稱為FabCar。這個(gè)例子很好地提供了一個(gè)開始用于理解Hyperledger Fabric。在這里,你將學(xué)會(huì)如何開發(fā)一個(gè)應(yīng)用程序和智能合約來查詢和更新賬本,如何利用CA來生成一個(gè)應(yīng)用程序需要的用于和區(qū)塊鏈交互的X.509證書。

我們使用應(yīng)用程序SDk來執(zhí)行智能合約中的查詢更新賬本的操作,這些操作在智能合約中借助底層接口實(shí)現(xiàn)。

我們將通過3個(gè)步驟來進(jìn)行講解:

搭建開發(fā)環(huán)境。我們的應(yīng)用程序需要和網(wǎng)絡(luò)交互,因此我們需要一個(gè)智能合約和應(yīng)用程序使用的基礎(chǔ)網(wǎng)絡(luò)。

學(xué)習(xí)一個(gè)簡單的智能合約,F(xiàn)abCar。我們使用JavaScript開發(fā)智能合約。我們通過查看智能合約來學(xué)習(xí)應(yīng)用程序如何使用智能合約發(fā)送交易,如何使用智能合約來查詢和更新賬本。

使用FabCar開發(fā)一個(gè)簡單的應(yīng)用程序。我們的應(yīng)用程序會(huì)使用FabCar智能合約來查詢及更新賬本上的汽車資產(chǎn)。我們將進(jìn)入應(yīng)用程序的代碼中去了解如何創(chuàng)建交易,包括查詢一輛汽車的信息,查詢一批汽車的信息以及創(chuàng)建一輛汽車。

設(shè)置區(qū)塊鏈網(wǎng)絡(luò)
注意:下面的部分需要進(jìn)入你克隆到本地的fabric-samples倉庫的first-network子目錄。

如果你已經(jīng)學(xué)習(xí)了 Building Your First Network,你應(yīng)該已經(jīng)下載了fabric-samples而且已經(jīng)運(yùn)行起了一個(gè)網(wǎng)絡(luò)。在你進(jìn)行本教程之前,你需要停止這個(gè)網(wǎng)絡(luò):

./byfn.sh down

如果你之前運(yùn)行過這個(gè)教程,使用下面的命令關(guān)掉所有停止或者運(yùn)行的容器。注意,這將關(guān)掉所有的容器,不論是否和Fabric有關(guān)。

docker rm -f $(docker ps -aq)
docker rmi -f $(docker images | grep fabcar | awk "{print $3}")

如果你沒有這個(gè)網(wǎng)絡(luò)和應(yīng)用相關(guān)的開發(fā)環(huán)境和構(gòu)件,請(qǐng)?jiān)L問 Prerequisites頁面,確保你的機(jī)器安裝了必要的依賴。

接下來,如果你還沒有這樣做的話,請(qǐng)瀏覽 Install Samples, Binaries and Docker Images頁面,跟著上面的操作進(jìn)行。當(dāng)你克隆了fabric-samples倉庫,下載了最新的穩(wěn)定版Fabric鏡像和相關(guān)工具之后回到教程。

如果你使用的是Mac OS和Mojava,你需要安裝Xcode。

啟動(dòng)網(wǎng)絡(luò)
下面的部分需要進(jìn)入fabric-samples倉庫的fabcar子目錄。

使用startFabric.sh來啟動(dòng)你的網(wǎng)絡(luò)。這個(gè)命令將啟動(dòng)一個(gè)區(qū)塊鏈網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)由peer節(jié)點(diǎn)、排序節(jié)點(diǎn)、證書授權(quán)服務(wù)等組成。同時(shí)也將安裝和初始化javascript版本的FabCar智能合約,我們的應(yīng)用程序?qū)⑼ㄟ^它來操作賬本。我們將通過本教程學(xué)習(xí)更過關(guān)于這些組件的內(nèi)容。

./startFabric.sh javascript

現(xiàn)在,我們已經(jīng)運(yùn)行起來了一個(gè)示例網(wǎng)絡(luò),還安裝和初始化了FabCar智能合約。為了運(yùn)行我們的應(yīng)用程序,我們需要安裝一些依賴,同時(shí)讓我們看一下它們是如何工作的。

安裝應(yīng)用程序
注意:下邊的章節(jié)需要進(jìn)入你克隆到本地的fabric-samples倉庫的fabcar/javascript子目錄。
下面的命令來安裝應(yīng)用程序所需的Fabric有關(guān)的依賴。大概將話費(fèi)1分鐘左右的時(shí)間:
npm install

這個(gè)指令用于安裝應(yīng)用程序所需的依賴,這些依賴被定義在package.json中。其中最重要的是fabric-network類;它使得應(yīng)用程序可以使用身份、錢包和連接到通道的網(wǎng)關(guān),以及提交交易和等待通知。本教程也將使用fabric-ca-client類來注冊用戶以及他們的授權(quán)證書,生成一個(gè)fabric-network使用的合法的身份。

一旦npm install執(zhí)行成功,運(yùn)行應(yīng)用程序所需的一切就準(zhǔn)備好了。在這個(gè)教程中,你將主要使用fabcar/javascript目錄下的JavaScript文件來操作應(yīng)用程序。讓我們來了解一下里面有哪些文件:

ls

你將看到下列文件:

enrollAdmin.js  node_modules       package.json  registerUser.js
invoke.js       package-lock.json  query.js      wallet

里面也有一些其他編程語言的文件,比如fabcar/typescript目錄中。當(dāng)你使用過JavaScript示例之后-其實(shí)都是類似的。

如果你在使用Mac OS而且運(yùn)行的是Mojava你需要[安裝Xcode](https://hyperledger-fabric.readthedocs.io/en/latest/tutorial/installxcode.html)。

登記管理員用戶
下面的部分涉及執(zhí)行和CA服務(wù)器通訊的過程。你在執(zhí)行下面的程序的時(shí)候,打開一個(gè)終端執(zhí)行docker logs -f ca.example.com來查看CA的日志,會(huì)是十分有幫助的。

當(dāng)我們創(chuàng)建網(wǎng)絡(luò)的時(shí)候,一個(gè)叫admin的用戶已經(jīng)被授權(quán)服務(wù)器(CA)創(chuàng)建為登記員。我們第一步要做的是使用enroll.js程序?yàn)?b>admin生成私鑰,公鑰和x.509證書。這個(gè)程序使用一個(gè)證書簽名請(qǐng)求 (CSR)--先在本地生成私鑰和公鑰,然后把公鑰發(fā)送到CA,CA會(huì)發(fā)布一個(gè)應(yīng)用程序使用的證書。這三個(gè)憑證會(huì)保存在錢包中,以便于我們以管理員的身份使用CA。

接下來我們會(huì)注冊和登記一個(gè)新的應(yīng)用程序用戶,我們將使用這個(gè)用戶來通過應(yīng)用程序和區(qū)塊鏈進(jìn)行交互。

讓我們登記一個(gè)admin用戶:

node enrollAdmin.js

這個(gè)命令將CA管理員證書保存在wallet目錄。

注冊和登記user1

現(xiàn)在我們在錢包里放了管理員的證書,我們可以登記一個(gè)新用戶--user1--用這個(gè)用戶來查詢和更新賬本:

node registerUser.js

和登記管理員類似,這個(gè)程序使用了CSR來登記user1并把它的證書保存到admin所在的錢包中?,F(xiàn)在我們有了2個(gè)獨(dú)立的用戶--adminuser1--它們都將用于我們的應(yīng)用程序。

接下來是賬本交互時(shí)間...

查詢賬本

區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都擁有一個(gè)賬本的副本,應(yīng)用程序可以通過執(zhí)行智能合約查詢賬本上的最新舒徐來實(shí)現(xiàn)查詢賬本操作,將結(jié)果返回給應(yīng)用程序。

這是一個(gè)如何查詢的簡單闡述:

應(yīng)用程序使用查詢從ledger讀取數(shù)據(jù)。最常見的就是查詢當(dāng)前賬本中的最新值--世界狀態(tài)。世界狀態(tài)是一個(gè)鍵值對(duì)的集合,應(yīng)用程序可以根據(jù)一個(gè)鍵或者多個(gè)鍵來查詢數(shù)據(jù)。而且,當(dāng)鍵值對(duì)是以JSON形式存在的時(shí)候,世界狀態(tài)可以通過配置使用數(shù)據(jù)庫(例如CouchDB)來支持富查詢。這個(gè)特性對(duì)于查詢匹配特定的鍵的值是很有幫助的,比如查詢一個(gè)人的所有汽車。

首先,讓我們使用query.js程序來查詢賬本上的所有汽車。這個(gè)程序使用我們的第二個(gè)身份--user1--來操作賬本。

node query.js

輸出結(jié)果如下:

Wallet path: ...fabric-samples/fabcar/javascript/wallet
Transaction has been evaluated, result 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"}}]

讓我們近距離看一下這個(gè)程序。使用文本編輯器(如atom或者visual studio)打開query.js

應(yīng)用程序開始的時(shí)候就從fabric-network模塊引入了兩個(gè)關(guān)鍵的類FileSystemWalletGateway。這兩個(gè)類將用于定位錢包中user1的身份,并且使用這個(gè)身份連接網(wǎng)絡(luò):

const { FileSystemWallet, Gateway } = require("fabric-network");

應(yīng)用程序使用網(wǎng)關(guān)連接網(wǎng)絡(luò):

const gateway = new Gateway();
await gateway.connect(ccp, { wallet, identity: "user1" });

這段代碼創(chuàng)建了一個(gè)新的網(wǎng)關(guān),然后通過它來讓應(yīng)用程序連接網(wǎng)絡(luò)。cpp描述了網(wǎng)關(guān)通過wallet中的user1來連接網(wǎng)絡(luò)。打開 ../../basic-network/connection.json來查看cpp是如何解析一個(gè)JSON文件的:

const ccpPath = path.resolve(__dirname, "..", "..", "basic-network", "connection.json");
const ccpJSON = fs.readFileSync(ccpPath, "utf8");
const ccp = JSON.parse(ccpJSON);

如果你想了解更多關(guān)于連接配置文件的結(jié)構(gòu)以及它是怎么定義網(wǎng)絡(luò)的,請(qǐng)查閱 the connection profile topic

一個(gè)網(wǎng)絡(luò)可以被拆分成很多個(gè)通道,代碼中下一個(gè)很重要的地方是將應(yīng)用程序連接到特定的通道mychannel上:

在這個(gè)通道中,我們可以通過fabcar智能合約來和賬本進(jìn)行交互:

const contract = network.getContract("fabcar");

fabcar中有許多不同的交易,我們的應(yīng)用程序先使用queryAllCars交易來查詢賬本的世界狀態(tài):

const result = await contract.evaluateTransaction("queryAllCars");

evaluateTransaction方法呈現(xiàn)了一種和區(qū)塊鏈網(wǎng)絡(luò)中的智能合約交互的最簡單的方法。它只是根據(jù)配置文件中的定義連接一個(gè)節(jié)點(diǎn),然后向節(jié)點(diǎn)發(fā)送請(qǐng)求,在節(jié)點(diǎn)內(nèi)執(zhí)行該請(qǐng)求。智能合約查詢了節(jié)點(diǎn)賬本上的所有汽車,然后把結(jié)果返回給應(yīng)用程序。這次交互并沒有更新賬本。

FabCar智能合約

讓我們看一看FabCar智能合約里的交易。進(jìn)入fabric-samples下的子目錄chaincode/fabcar/javascript/lib,然后用你的編輯器打開fabcar.js。

看一下我們的智能合約是如何通過Contract類來定義的:

class FabCar extends Contract {...

在這個(gè)類結(jié)構(gòu)中,你將看到定義了以下交易: initLedgerqueryCar,queryAllCars,createCarchangeCarOwner。例如:

async queryCar(ctx, carNumber) {...}
async queryAllCars(ctx) {...}

讓我們更進(jìn)一步看一下 queryAllCars ,看一下它是怎么和賬本交互的。

async queryAllCars(ctx) {

  const startKey = "CAR0";
  const endKey = "CAR999";

  const iterator = await ctx.stub.getStateByRange(startKey, endKey);

這段代碼定義了 queryAllCars 將要從賬本獲取的汽車的范圍。從 CAR0 到 CAR999 的每一輛車 -- 一共 1000 輛車,假定每個(gè)鍵都被合適地錨定了 -- 將會(huì)作為查詢結(jié)果被返回。 代碼中剩下的部分,通過迭代將查詢結(jié)果打包成 JSON 并返回給應(yīng)用。

下邊將展示應(yīng)用程序如何調(diào)用智能合約中的不同交易。每一個(gè)交易都使用一組 API 比如 getStateByRange 來和賬本進(jìn)行交互。了解更多API請(qǐng)閱讀detail。

你可以看到我們的queryAllCars交易,還有另一個(gè)叫做createCar。我們稍后將在教程中使用他們來更新賬本,和添加新的區(qū)塊。

但是在那之前,返回到query程序,更改evaluateTransaction的請(qǐng)求來查詢?yōu)?b>CAR4。query程序現(xiàn)在如下:

const result = await contract.evaluateTransaction("queryCar", "CAR4");

保存程序,然后返回到fabcar/javascript目錄?,F(xiàn)在,再次運(yùn)行query程序:

node query.js

你應(yīng)該會(huì)看到如下所示:

Wallet path: ...fabric-samples/fabcar/javascript/wallet
Transaction has been evaluated, result is:
{"colour":"black","make":"Tesla","model":"S","owner":"Adriana"}

如果你查看一下之前queryAllCars的交易結(jié)果,你會(huì)看到CAR4Adriana黑色 Tesla model S,也就是這里返回的結(jié)果,是一樣的。

我們可以使用queryCar交易來查詢?nèi)我馄?,使用它的鍵(比如CAR0)得到車輛的制造商、型號(hào)、顏色和車主等相關(guān)信息。

非常好?,F(xiàn)在你應(yīng)該已經(jīng)了解了智能合約中基礎(chǔ)的查詢交易,也手動(dòng)修改了查詢程序中的參數(shù)。

是時(shí)候進(jìn)行更新賬本了。

更新賬本

現(xiàn)在我們已經(jīng)完成一些賬本的查詢操作,添加了一些代碼,我們已經(jīng)準(zhǔn)備好更新賬本了。有很 的更新操作我們可以做,但是我們從創(chuàng)建一輛新車開始。

從一個(gè)應(yīng)用程序的角度來說,更新一個(gè)賬本很簡單。應(yīng)用程序向區(qū)塊鏈網(wǎng)絡(luò)提交一個(gè)交易, 當(dāng)交易被驗(yàn)證和提交后,應(yīng)用程序會(huì)收到一個(gè)交易成功的提醒。但是在底層,區(qū)塊鏈網(wǎng)絡(luò)中各組件中不同的共識(shí)程序協(xié)同工作,來保證賬本的每一個(gè)更新提案都是合法的,而且有一個(gè)大家一致認(rèn)可的順序。

上圖中,我們可以看到完成這項(xiàng)工作的主要組件。同時(shí),多個(gè)節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)都擁有一份賬本的副本,并可選的擁有一份智能合約的副本,網(wǎng)絡(luò)中也有一個(gè)排序服務(wù)。排序服務(wù)保證網(wǎng)絡(luò)中交易的一致性;它也將連接到網(wǎng)絡(luò)中不同的應(yīng)用程序的交易以定義好的順序生成區(qū)塊。

我們對(duì)賬本的的第一個(gè)更新是創(chuàng)建一輛新車。我們有一個(gè)多帶帶的程序叫做invoke.js,用來更新賬本。和查詢一樣,使用一個(gè)編輯器打開程序定位到我們構(gòu)建和提交交易到網(wǎng)絡(luò)的代碼段:

await contract.submitTransaction("createCar", "CAR12", "Honda", "Accord", "Black", "Tom");

看一下應(yīng)用程序如何調(diào)用智能合約的交易createCar來創(chuàng)建一輛車主為Tom的黑色Honda Accord汽車。我們使用CAR12作為這里的鍵,這也說明了我們不必使用連續(xù)的鍵。

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

node invoke.js

如果執(zhí)行成功,你將看到類似輸出:

Wallet path: ...fabric-samples/fabcar/javascript/wallet
2018-12-11T14:11:40.935Z - info: [TransactionEventHandler]: _strategySuccess: strategy success for transaction "9076cd4279a71ecf99665aed0ed3590a25bba040fa6b4dd6d010f42bb26ff5d1"
Transaction has been submitted

注意inovke程序使用的是submitTransactionAPI和區(qū)塊鏈網(wǎng)絡(luò)交互的,而不是evaluateTransaction

await contract.submitTransaction("createCar", "CAR12", "Honda", "Accord", "Black", "Tom");

submitTransactionevaluateTransaction要復(fù)雜的多。不只是和單個(gè)節(jié)點(diǎn)交互,SDK將把submitTransaction提案發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中每一個(gè)必要的組織的節(jié)點(diǎn)。每一個(gè)節(jié)點(diǎn)都將根據(jù)這個(gè)提案執(zhí)行請(qǐng)求的智能合約,并生成一個(gè)該節(jié)點(diǎn)簽名的交易響應(yīng)并返回給SDK 。SDK將所有經(jīng)過簽名的交易響應(yīng)收集到一個(gè)交易中,這個(gè)交易將會(huì)被發(fā)送到排序節(jié)點(diǎn)。排序節(jié)點(diǎn)搜集并排序每個(gè)應(yīng)用的交易,并把這些交易放入到一個(gè)交易區(qū)塊。然后排序節(jié)點(diǎn)將這些區(qū)塊分發(fā)到網(wǎng)絡(luò)中的節(jié)點(diǎn),每一筆交易都會(huì)在節(jié)點(diǎn)中進(jìn)行驗(yàn)證和提交。最后,SDK會(huì)后到提醒,并把控制權(quán)返回給應(yīng)用程序。

submitTransaction也會(huì)包括一個(gè)監(jiān)聽器用于確保交易已經(jīng)被校驗(yàn)和提交到賬本里了。應(yīng)用程序需要利用監(jiān)聽器或者使用submitTransaction接口,它內(nèi)部已經(jīng)實(shí)現(xiàn)了監(jiān)聽器。如果沒有監(jiān)聽器,你可能無法確定交易是否被排序校驗(yàn)以及提交。

應(yīng)用程序中的這些工作由submitTransaction完成!應(yīng)用程序、智能合約、節(jié)點(diǎn)和排序服務(wù)一起工作來保證網(wǎng)絡(luò)中賬本一致性的程序被稱為共識(shí)。

為了查看這個(gè)被寫入賬本的交易,返回到query.js并將參數(shù)CAR4更改為CAR12。

換句話說就是將:

const result = await contract.evaluateTransaction("queryCar", "CAR4");

改為:

const result = await contract.evaluateTransaction("queryCar", "CAR12");

再次保存,然后查詢:

node query.js

將返回:

Wallet path: ...fabric-samples/fabcar/javascript/wallet
Transaction has been evaluated, result is:
{"colour":"Black","make":"Honda","model":"Accord","owner":"Tom"}

恭喜。你創(chuàng)建了一輛汽車并驗(yàn)證了它記錄在賬本上!

現(xiàn)在我們已經(jīng)完成了,我們假設(shè)Tom很大方,想把他的Honda Accord送給一個(gè)叫Dave的人。

為了完成這個(gè),返回到invoke.js然后利用輸入的參數(shù),將智能合約的交易從createCar改為changeCarOwner

await contract.submitTransaction("changeCarOwner", "CAR12", "Dave");

第一個(gè)參數(shù) ---CAR12--- 表示將要易主的車。第二個(gè)參數(shù) ---Dave--- 表示車的新主人。

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

node invoke.js

現(xiàn)在我們來再次查詢賬本,以確定Dave和CAR12鍵已經(jīng)關(guān)聯(lián)起來了:

node query.js

將返回如下結(jié)果:

Wallet path: ...fabric-samples/fabcar/javascript/wallet
Transaction has been evaluated, result is:
{"colour":"Black","make":"Honda","model":"Accord","owner":"Dave"}

CAR12的主人已經(jīng)從Tom變成了Dave。

在實(shí)際的應(yīng)用中,智能合約有權(quán)限控制邏輯。舉個(gè)例子,只有有權(quán)限的用戶可以創(chuàng)建新車,只有車子的擁有者可以轉(zhuǎn)移車輛所屬權(quán)。
總結(jié)

現(xiàn)在我們已經(jīng)完成了賬本的查詢和更新,你也應(yīng)該比較了解如何通過智能合約和區(qū)塊鏈進(jìn)行交互來查詢賬本和更新賬本了。在教程中已經(jīng)講解了查詢和更新的智能合約,API和SDK,想必你對(duì)其他商業(yè)場景也有了一定的了解和認(rèn)識(shí)。

通過FabCar這個(gè)例子,我們可以快速學(xué)習(xí)如何基于Node SDK開發(fā)應(yīng)用程序。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/24628.html

相關(guān)文章

  • Hyperledger Fabric(目錄)

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

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

    摘要:還提供創(chuàng)建通道的功能,允許一組參與者創(chuàng)建單獨(dú)的交易分類賬。共識(shí)交易必須按照發(fā)生的順序?qū)懭敕诸愘~,即使它們可能位于網(wǎng)絡(luò)中不同的參與者組之間。 介紹 Hyperledger Fabric是分布式分類賬解決方案的平臺(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
  • Java開發(fā)區(qū)塊的三大sdk庫

    摘要:是企業(yè)與區(qū)塊鏈相遇的地方。的框架旨在成為開發(fā)區(qū)塊鏈解決方案的支柱。以太坊,主要是針對(duì)工程師使用進(jìn)行區(qū)塊鏈以太坊開發(fā)的詳解。 如果你想將區(qū)塊鏈合并到一個(gè)Java項(xiàng)目中,現(xiàn)在我們來看看就是這個(gè)細(xì)分領(lǐng)域中三個(gè)最大的OSS玩家。 好的伙計(jì)們,我們都聽說過比特幣,以太坊或其他加密貨幣,其中有一些時(shí)髦的名字圍繞著我們常見的新聞,但我們作為Java開發(fā)人員知道如何輕松地與這些區(qū)塊鏈技術(shù)進(jìn)行交互嗎?以...

    iKcamp 評(píng)論0 收藏0
  • Hyperledger Fabric(介紹)

    摘要:比特幣和以太幣屬于一類區(qū)塊鏈,我們將其歸類為公共無許可的區(qū)塊鏈技術(shù)。例如,在單個(gè)企業(yè)中部署時(shí),或由受信任的權(quán)威機(jī)構(gòu)運(yùn)作,完全拜占庭容錯(cuò)的共識(shí)可能被認(rèn)為是不必要的,并且對(duì)性能和吞吐量造成過度的拖累。 介紹 一般而言,區(qū)塊鏈?zhǔn)且粋€(gè)不可變的交易分類賬,維護(hù)在一個(gè)分布式對(duì)等節(jié)點(diǎn)網(wǎng)絡(luò)中。這些節(jié)點(diǎn)通過應(yīng)用已經(jīng)由共識(shí)協(xié)議驗(yàn)證的交易來維護(hù)分類帳的副本,該交易被分組為包括將每個(gè)塊綁定到前一個(gè)塊的散列的塊...

    yunhao 評(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),無效的交易會(huì)被廢棄。負(fù)責(zé)權(quán)限管理,成員身份相關(guān)證書管理和維護(hù)交易相關(guān)證書管理等等。 今天的文章來自Wen Aviva, 坐Jerry面對(duì)面的程序媛。 Jerry在之前的公眾號(hào)文章《在SAP UI中使用純JavaScript顯示產(chǎn)品主數(shù)據(jù)的3D模型視圖》已經(jīng)介紹過Aviva了,SAP成都C4C開發(fā)團(tuán)...

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

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

0條評(píng)論

閱讀需要支付1元查看
<