新聞中心
什么是超級賬本?
超級賬本(hyperledger)是Linux基金會于2015年發(fā)起的推進區(qū)塊鏈數(shù)字技術(shù)和交易驗證的開源項目。通過創(chuàng)建通用的分布式賬本技術(shù),協(xié)助組織擴展、建立行業(yè)專屬應(yīng)用程序、平臺和硬件系統(tǒng)來支持成員各自的交易業(yè)務(wù)。
公司專注于為企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、成都商城網(wǎng)站開發(fā),重慶小程序開發(fā),軟件按需網(wǎng)站制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
區(qū)塊鏈中超級賬本是什么?
超級賬本(hyperledger)是Linux基金會于2015年發(fā)起的推進區(qū)塊鏈數(shù)字技術(shù)和交易驗證的開源項目,30家初始企業(yè)成員(包括IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco等)。目標是讓成員共同合作,共建開放平臺,滿足來自多個不同行業(yè)各種用戶案例,并簡化業(yè)務(wù)流程。
hyperledger
當下是區(qū)塊鏈快速發(fā)展的時代,各行各業(yè)包括醫(yī)療、文化、物聯(lián)網(wǎng)等等,都在尋求利用區(qū)塊鏈技術(shù)解決各自的行業(yè)痛點。要支持各種行業(yè)的應(yīng)用,就意味著區(qū)塊鏈應(yīng)該具有企業(yè)級屬性,保密性和吞吐量都是要考慮的問題。
超級賬本在區(qū)塊鏈中的位置:
- 比特幣- 代表數(shù)字貨幣、區(qū)塊鏈思想的誕生,提供了區(qū)塊鏈技術(shù)應(yīng)用的原型
- 以太坊- 掙脫數(shù)字貨幣的枷鎖,智能合約的誕生,延伸了區(qū)塊鏈技術(shù)的功能
- 超級賬本- 進一步引入權(quán)限控制和安全保障,首次將區(qū)塊鏈技術(shù)引入到分布式聯(lián)盟賬本的應(yīng)用場景。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準的“區(qū)塊鏈技術(shù)專業(yè)”試點工作站。專業(yè)站立足為學(xué)生提供多樣化成長路徑,推進專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
(譯)超級賬本官方文檔 基本概念(三) - 節(jié)點(Peer)
超級賬本是Linux基金會發(fā)起的項目,意在提供一套企業(yè)級區(qū)塊鏈應(yīng)用框架,便于大家開發(fā)基于區(qū)塊鏈技術(shù)的應(yīng)用。
Fabric的基本概念
最開始,應(yīng)用程序會選出一組peer來生成賬本更新提議。哪些peer會被選出來是依據(jù)的背書策略,這個背書策略決定了哪些組織需要在廣播賬本更新提議前對更新提議進行背書。這會影響到共識方式,任何一個關(guān)心更新提議是否背書的組織都會在廣播給peer更新提議并被peer接受前確認提議是否有背書。
peer對一個提議響應(yīng)進行背書,就是把自己的數(shù)字簽名加入到響應(yīng)中,并用自己的私鑰對整個響應(yīng)簽名。背書內(nèi)容隨后可以被用于證明這個響應(yīng)是某個組織的peer生成的。在我們的例子中,如果peer P1屬于組織1(Org1),那么背書E1就相當于可以證明L1上的交易T1和響應(yīng)R1是由Org1的peer P1提供的。
當應(yīng)用程序得到了足夠多的簽名的提議響應(yīng)時,第一階段就結(jié)束了。
我們注意到peer可能返回不同的信息,因此同一筆交易可能有不一致的返回信息。這可能由于響應(yīng)是在不同時間,不同peer,在不同賬本狀態(tài)下生成的,大多數(shù)情況下應(yīng)用程序可以多次請求更新的提議響應(yīng)。另外更嚴重,但概率很小的原因是因為鏈碼的不確定性導(dǎo)致的響應(yīng)不一致。不確定性是鏈碼和賬本的大敵,如果這種情況發(fā)生了,對提議交易來說是很嚴重的,不一致的提議響應(yīng)肯定不能提交到賬本中。一個獨立的節(jié)點是不可能知道交易結(jié)果是非確定性的交易,在檢測到非確定性交易前,必須將交易匯總比較(嚴格地說,即使這還不夠,但我們將此討論推遲到交易部分,其中詳細討論了非確定性)。
在第一階段結(jié)束時,如果應(yīng)用程序希望如此的話,可以放心丟棄不一致的響應(yīng)以提前結(jié)束交易流程。后面我們會看到如果應(yīng)用程序使用不一致的響應(yīng)提交到賬本時,會被拒絕。
過程2 打包
第二個交易流程是打包。Orderer節(jié)點這個過程關(guān)鍵的點,它接收來自很多應(yīng)用傳來的背書過的提議交易響應(yīng)。Orderer對交易進行排序,并將大量的交易打包進區(qū)塊,并準備將區(qū)塊分發(fā)到所有連接到Orderer的peer,包括背書peer。
orderer的第一個角色就是打包賬本更新提議。在上圖的例子中,應(yīng)用A1發(fā)送給Orderer O1一個被E1和E2背書的交易T1。同時,應(yīng)用A2發(fā)送給Orderer O1一個被E1背書的交易T2。O1將A1傳來的交易和A2傳來的交易以及其它交易共同打包進區(qū)塊B2。我們可以看到區(qū)塊B2里的交易排序是T1,T2,T3,T4,T6,T5,并不一定是按照到達orderer節(jié)點的順序(這個例子展示了一個非常簡單的orderer配置)。
Orderer節(jié)點會同時收到網(wǎng)絡(luò)Channel中不同應(yīng)用程序發(fā)送的賬本更新提議。Orderer節(jié)點的任務(wù)就是按照事先定義好的順序整理這些更新提議,并把它們打包進區(qū)塊,為下一步的分發(fā)做準備。這些區(qū)塊將構(gòu)成區(qū)塊鏈。一旦Orderer節(jié)點生成了期望大小的區(qū)塊,或者超過最大等待時間,Orderer會向連接到它特定Channel的Peer發(fā)送區(qū)塊。第三個過程會詳述這個流程。
區(qū)塊中的交易排列順序和交易到達Orderer節(jié)點的順序沒有直接關(guān)系。交易在區(qū)塊中可以是任意的排列順序,這個次序就是交易執(zhí)行的順序。重點是有一個嚴格的交易排序,但具體是怎樣的排序并不重要。
區(qū)塊中的嚴格交易順序排列使得Fabric與公鏈中一筆交易可以被打包進多個不同區(qū)塊的情況不同。在Fabric中,這不可能發(fā)生,由多個Orderer生成的區(qū)塊就是最終的區(qū)塊,因為交易被寫入?yún)^(qū)塊后,交易的位置順序就確定了。這意味著Fabric不會存在分叉。一旦交易被寫入?yún)^(qū)塊,以后就不能再重寫了。
我們可以看到,peer是存儲賬本和鏈碼的,orderer完全不會存儲這些。每一筆交易到達orderer時,orderer只是機械的將交易打包進區(qū)塊,而不會理會交易的價值,額度等。這是Fabric的一個重要特性,所有交易都會按照一個嚴格的順序進行整理,沒有交易會被拋棄掉。
到第二階段結(jié)束時,我們可以了解到orderer的責(zé)任就是進行必要的,簡單的收集交易更新提議,將他們排序,打包進區(qū)塊,準備分發(fā)出去。
過程3 認證
最后一個交易工作流程是分發(fā)和驗證從orderer到peer的區(qū)塊,如果驗證成功,將會被提交到賬本中。
特別的,在每個peer中,在區(qū)塊中的每一筆交易在更新到賬本之前都是驗證過的,以保證所有交易都是由相關(guān)的組織背書過的。失敗的交易會保留,作為日后審查用,并不會更新到賬本中。
Orderer除了在過程2中的打包角色外,在過程3中還負責(zé)分發(fā)區(qū)塊到peer節(jié)點。在這個例子中,O1分發(fā)區(qū)塊到P1和P2。P1處理區(qū)塊2,然后將區(qū)塊2添加到P1的賬本L1中。同時,P2處理區(qū)塊2,然后將區(qū)塊2添加到P2的賬本L1中。一旦操作完成,賬本L1在P1和P2中都被更新了,每個Peer都可以向連接到他們的應(yīng)用程序發(fā)送處理結(jié)果。
Orderer向連接到他的Peer分發(fā)區(qū)塊是過程3的開始。連接到orderer節(jié)點的某個渠道的peer,會收到orderer生成的新區(qū)塊的一份拷貝。每個peer節(jié)點都會獨立的處理收到的區(qū)塊,但所有peer處理區(qū)塊的方式都是相同的。采用這種方式,不同peer中的賬本可以達成共識。并不是所有的peer都必須連接到orderer節(jié)點,peer和peer之間可以通過gossip協(xié)議來傳遞區(qū)塊,這樣peer也可以獨立的處理相同區(qū)塊。
收到一個區(qū)塊后,peer會按照交易在區(qū)塊中出現(xiàn)的順序依次處理。對于每一筆交易,peer會按照生成這筆交易的鏈碼背書策略檢查交易是否被與之相關(guān)組織的背書。例如,某些交易可能只需要一個組織背書,而另一些交易需要多個組織同時背書才有效。這個驗證過程驗證了所有相關(guān)組織產(chǎn)生的結(jié)果或者輸出是否一致。同時請注意,第三階段的驗證和第一階段不同,階段一只是應(yīng)用程序收到背書節(jié)點的響應(yīng),判斷是否需要發(fā)送交易提議。如果應(yīng)用程序發(fā)送錯誤的交易,違反了背書策略,在第三階段的驗證過程中peer還是可以拒絕本次交易。
如果交易背書正確,peer將嘗試把交易提交到賬本中。為了能寫賬本,peer必須進行賬本一致性檢查,保證當前賬本的狀態(tài)與賬本更新后的狀態(tài)一致。這個狀態(tài)并不總會是一致的,即使交易擁有完整的背書。舉個栗子,另外一筆交易可能已經(jīng)更新了賬本中的同一個資產(chǎn),以至于我們正要更新的交易將永遠不會被寫入賬本。這樣的話,每個節(jié)點中的賬本必須通過網(wǎng)絡(luò)保持共識,每個節(jié)點的驗證方式是一樣的。
在peer驗證完每筆獨立交易后,將更新賬本。失敗的交易會保存下來作為審查資料。這意味著peer中的區(qū)塊和從orderer中收到的區(qū)塊一致,除了區(qū)塊中指示交易成功或失敗的標志。
我們也要注意到,第三階段并沒有執(zhí)行鏈碼,這一步只會在第一階段完成,這很重要。這意味著鏈碼只在背書節(jié)點可用,而不是整個網(wǎng)絡(luò)中都可用,這保證了鏈碼在背書組織中的安全及私密。這和收到鏈碼的執(zhí)行結(jié)果不同,執(zhí)行結(jié)果會分享到所有在Channel里的peer,不論他是否能背書交易。背書節(jié)點的這種設(shè)計方式是為了方便擴展。
最后,每次區(qū)塊被提交到peer的賬本中時,這個peer會生成對應(yīng)的事件。區(qū)塊事件包含區(qū)塊的所有內(nèi)容,而區(qū)塊交易事件只包含簡要信息,比如每筆區(qū)塊中的交易是否有效。由鏈碼的執(zhí)行而產(chǎn)生的鏈碼事件也可以在這個時候發(fā)布。應(yīng)用程序可以注冊這些事件,當這些事件發(fā)生時,可以收到通知。這些通知在交易工作流程的第三階段和最后階段完成。
總的來說,我們可以知道第三階段由orderer產(chǎn)生的區(qū)塊被不斷地同步到賬本中。區(qū)塊中交易的嚴格排序能讓每個peer在區(qū)塊鏈網(wǎng)絡(luò)中始終如一地驗證交易并提交到賬本中。
Orderer和共識
整個交易工作流程被稱為共識,因為所有peer都認同交易的排序和內(nèi)容,在執(zhí)行過程中由orderer節(jié)點來協(xié)調(diào)。共識是多步驟的過程,應(yīng)用程序只會在共識過程結(jié)束時收到通知,但通知的時間在不同的peer上可能不同。
我們將會在后面更多的探討orderer,現(xiàn)在,把orderer僅僅當做從應(yīng)用程序收集、分發(fā)賬本更新提議到peer,由peer進行驗證及更新賬本的過程。
網(wǎng)站題目:超級賬本的nosql,超級賬本的首批成員大多來自于什么行業(yè)
當前鏈接:http://fisionsoft.com.cn/article/dsspjsh.html