banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

Hyperledger白皮書中文版

摘 本文介紹了一些區塊鏈原理性的使用案例,並概括了其基本要求及高層架構。區塊鏈技術在不斷演變中,Hyperledger 的設計正運用了這項技術構架。

在相同網絡的企業競爭合作中,Hyperledger 作為商對商 (B2B)、商對客 (B2C) 的一種交易協議,既符合規章制度,又能夠支持各類要求的實現。其設計(下面會詳述)的核心元素是智能合約(又稱鏈上代碼)、數字資產、記錄儲存庫、中心化共識網絡、加密安全。此外,區塊鏈主要產品還涉及行業性能要求、身份識別、私下機密交易、以及便攜式共識模型等。更名多關於 Hyperledger 術語的問題,請查閱術語表。

背景 區塊鏈是一種新興技術,它能夠徹底改變融資、供應鏈、及其他交易網絡,為創新與發展帶去新的機遇,同時還能減少運營成本,降低風險。自 2009 年來比特幣在交易領域迅速崛起,許多企業及行業投入了大量資源來研究其底層技術,從而傳播這廣受歡迎但又頗具爭議的加密幣。區塊鏈是一種點對點分布式賬本技術,它是第一個在金融領域獲得動力的技術,因為它能夠有效而安全地發行、交易、管理、服務資產。在記錄系統 (SoR) 範圍內,生態系統中的每一位成員都需要維護好自己的賬本系統,並審核與其他成員的交易進展,這個過程既低效,又昂貴,而且沒有內部組織操作流標準。而分布式賬本則完全不同,它能夠減少成本,使業務網絡的建立更加容易,並且不再需要提供中心點控制。

由於共享賬本概念在商業領域越來越受關注,區塊鏈智能合約也因此引起了人們的注意。智能合約是各種商業規則的集合,它在區塊鏈上運行,由一組利益相關方共有並進行驗證。智能合約在商業自動化過程中非常管用,而且誠信可靠,它能夠使利益相關方以團體形式處理並驗證合約條款。Hyperledger 就是採用鏈上代碼 (chaincode) 執行智能合約的。比特幣及其他加密幣的開發就是用來對抗任何形式的審查的一一任何人都能參與,而且不需要建立身份,只要貢獻一點時間來完成運算周期就行。

在比特幣區塊鏈模型中,沒有中心機構來發放許可,因為這些網絡是非授權的。他們要進行無數工作量證明運算,成本非常高。Hyperledger 對傳統區塊鏈模型進行了革新,其中包括管理參與者的訪問許可權。換句話說,Hyperledger 是有權限的共享賬本。Hyperledger 為身份識別、審核及隱私提供了一個安全、健康的模型,從而縮短運算周期,實現有效擴展,應對業內各種運用要求。

進入 2016 年,關於區塊鏈的認識越來越多,研究出一個適用且可擴展的解決方案變得日益緊迫。

為什麼是個新構架 作為一項剛開發的技術,區塊鏈還不能滿足商業交易中各類複雜要求。其可擴展性還存在問題,也不能支持私下機密交易,這些限制都使其難以在眾多以業務為主的應用程序中運行自如。

為了應對各種各樣的市場需求,Hyperledger 的設計以產業應用為重點,解決了現有缺點,擴展了業內先行者原有的功能。我們的設想 我們設想了區塊鏈技術會為現代商業交易帶來的革新與改變,分析了業內的使用案例及密鑰要求,設計並建立了一套系統來推動區塊鏈技術的廣泛運用。

注:建議您先回顧下術語表再繼續閱讀以下材料。 一個涵蓋眾多網絡的世界

我們希望能夠出現眾多區塊鏈網絡,使每個網絡賬本都能執行不同的業務。基於這一期望,我們開發了 Hyperledger。現在單一普遍的通用網絡或許已經出現,但是要想網絡賬本核心功能的運行依靠其他網絡來完成,還尚未有實例。Hyperledger 除了能夠實現這種網絡獨立運行之外,它還有一個尋址系統,能夠通過一個賬本的交易,發現並利用另一賬本中的正當交易與智能合約(鏈上代碼 chaincode)。

image

對網絡權限的需求日益增加 有權限的網絡是通過已知白名單組織來運行驗證與非驗證節點的,由網絡發行機關來授予交易者一個識別身份。發行機關根據網絡的目的來確定適當的訪問權限,而這種權限需要進行身份識別,然後才能在網絡進行交易。這一網絡能夠公開運行,並且很容易就能融入到移動應用。它也能完全私下運行,受邀參與者只有通過驗證,才能獲悉其情況。

因為 Hyperledger 構架的設計符合各種目的,能夠允許各網絡之間互相訪問,而且其協議也能夠滿足各類使用要求,並且還設有不同級別的權限。隱私及機密的重要性 我們相信任何區塊鏈構架都有一個基本要求,那就是網絡上任何一方的身份及行為模式,都不能允許未經授權的人通過賬本來打探情況。我們也希望能夠保證區塊鏈用戶的業務邏輯及其他交易參數的機密性,做到除了合約涉及的利益相關方或交易中的資產,沒有人能夠訪問這些數據。 行業用例 我們編寫了一套區塊鏈初步要求,這些對接下來介紹的使用案例來說至關重要。(注:下述用例能推動指導架構及測試驅動的開發。這些案例雖然還在發展中,但是所有參與者都應該認同其內容及技術層次的優先順序。

如果您覺得哪裡不盡人意,就可以提出進行改變。請不要超過四個抽象用例,最好是三個。)

商務合同#

商務合同能夠通過編碼,使雙方或更多參與者自動執行合約條款,並且保證誠信。雖然區塊鏈上的信息本質上是公開的,但是商對商合約要求具備隱私保護的機制,來保護敏感的商業信息,防止信息泄露給同樣能夠訪問賬本的外部人員。雖然說保密協議對商業案例來說很重要,但是也有很多場合需要也應該做到合約公開,從而保證賬本上所有人員都能輕鬆獲取消總:比如,用來確定報價以供競標的賬本。這種合約就需要標準化,這樣競標人就可以很快獲取信息。

資產存管#

金融證券之類的資產必須在區塊鏈網絡上實現去中心化,這樣所有同種資產的利益相關方就能直接訪問每一資產,從而發起交易,獲取相關信息,而不再需要通過層層中間人來進行。交易基本實現實時結算,而且也必須保證所有利益相關方能夠實時掌握資產情況。對任何資產種類,利益相關方都應有權增加商務規則,這樣也能通過自動化邏輯應用來減少運營成本。創造資產的人必須像用例保證的那樣,實現資產及相關交易規則保密或者公開。

供應鏈 區塊鏈框架必須保證每一位供應鏈網絡中的參與者都能夠:輸入並追蹤原材料來源:記錄部件生產的遙測數據:追蹤航運商品的來源:保證包括成品生產、儲存、銷售及後續事宜在內的所有記錄都不可改變。除了之前描述過的商務合約及資產存管模式,供應鏈這一用例更多強調的是其深度搜索性,保證可以在過去層層交易中追溯所需記錄。其核心是為每一個從其他組件品中製造出來的商品創建來源。如果您想了解這些用例如何嵌入區塊鏈系統的,或者想了解更多關於這些用例的要求,請點擊此處 特色要求 下面提到的特色要求以健全產業的用例為基礎,推動了 Hyperledger 構架的開發。這些要求包括身份識別與可審核性、私下交易、保密合約、模塊共識、性能績效、可擴展性、鏈上代碼 (chaincode) 以及智能合約。 身份識別與可審核性 交易的隱私性固然重要,但是區塊鏈商業用途也要遵守一定的規章制度,使監管方能夠訪問調查交易記錄。事後(有時得好幾年後)交易一方必須提供身份識別以及資產所有權,在沒有機制的情況下,通過身份識別來確定當事人身份以及其在賬本上的活動。

於是 Hyperledger 協議順勢而生,它在註冊機關登記了一個加密證書,從而鎖定用戶的機密數據。註冊機關能夠發布並撤銷網絡參與者的身份驗證。針對每一個身份,協議都會生成一個秘鑰,供成員在網絡上進行交易,而且不會透露交易方的身份,保障網絡隱私。 關於身份識別及可審核性還有疑問的話,請參考問答環節身份管理部分。 私下交易及保密合約 如果交易模式能夠進行公開觀察與分析,那麼共享賬本就會洩露商業關係的細節,而這些細節本不應透露給競爭者的。供應方或買方的圈子本來就小,支持雙方貿易的系統就更不應該洩露任何一方的交易情況。因此,運用於商業活動的區塊鏈就必須提供一個機制,來保證未授權的第三方不能獲悉有關身份、交易模式、以及保密合約等條款。 Hyperledger 可以通過加密交易來保證其內容的機密性,只有利益相關方能夠對其進行解密並執行。此外,業務邏輯(通過智能合約來實現)也做了加密處理來確保安全(如果利益相關方要求機密的話),並且只有在運行的時候才能加載、破解。關於這一點,會在之後架構部分詳細闡明。 其他關於機密性的问题请参考问答环节的机密性部分。 模塊共識 由於不同行業及領域有各自的網絡要運行,所以不同的網絡也要配置不同的共識算法來滿足不同的使用要求。Hyperledger 協議下的共識必須運用可插入式算法,使用戶自行在配置中自行選擇共識算法。Hyperledger 協議的首次發行將提供拜占庭容錯算法 (BFT),這種算法採用的是實用拜占庭容錯算法 (PBFT) 協議。我們期待今後社區中能有更多人分享其他共識算法模型。 更多關於共識及 Hyperledger 預包裝共識措施的問題請參考問答環節的達遲部分。

邏輯 = 鏈上代碼 = 智能合約

區塊鏈邏輯,或者我們常說的 “智能合約”,是各方之間自動執行的協議,其中所有相關條款都由代碼編成,能夠進行自動結算,今後通過簽名或其他觸發事件來執行。在 Hyperledger 項目中,我們把它叫做 “鏈上代碼”(chaincode),通過鏈上代碼來建立並區分區塊鏈邏輯及其書面合約。(這個術語還在檢測中,可能會有所改變。)鏈上代碼 (chaincode) 概念比智能合約還要再寬泛一些,智能合約這一概念是由 Nick Szabo 提出來的。鏈上代碼能夠通過任何主流編程語言進行編寫,並且在 Hyperledger 的上下文背景層內執行。鏈上代碼能夠定義智能合約模塊語言(類似 Velocity 或者 Jade),限制環境函數的執行以及其運算靈活度,從而滿足法律合約的要求。 更多相關問題請參考問答環節鏈上代碼部分。 性能績效以及可擴展性 如果從經濟角度來認識區塊鏈框架的網絡應用,那麼在設計過程中就必須把長期的業績考慮進去。一個賬本或一套賬本必須能夠持續運作 100 多年,並且在用戶可獲取的時效內,允許客戶使用其發據、搜索、身份識別及其他功能。

不過隨著時間的推移,指定網絡的節點數量及交易人員也會越來越多,因此,其框架還必須在保證性能表現的前提下,解決這些問題。 更多相關問題請參考問答環節用法部分 架構 下面圖 2 將為您展示 Hyperledger 所參考的架構,包括三大類:會員制、區塊鏈、鏈上代碼。這些都是邏輯結構,而不是對獨立步驟、地址空間或者(虛擬)機器中分區組件的物理描述。

image

圖 2參考架構 會員制服務負責管理的是網絡上的身份識別、隱私與機密。參與者通過註冊來獲取身份,然後屬性授權機構才能發放密鑰來進行交易。聲譽管理器能夠使審計人員瀏覽某參與者的交易情況,如果審計人員已經獲得參與者授予的適當訪問權限的話。 區塊鏈服務負責管理分布式賬本,通過在超文本傳輸協議 2.0 建立的點對點協議進行。數據結構經過優化能夠有效維護眾參與者重複的整體狀態。不同的共識算法或將嵌入每一個配置中,以保證高度一致性(通過拜占庭容錯算法來處理錯誤,通過崩潰容忍來處理延遲與中斷,或借助工作量證明方案來應對審查)。 鏈上代碼 (Chaincode) 服務負責提供安全又輕便的沙盒裝載路徑,供鏈上代碼執行驗證節點。整個環境是一個封鎖且安全的容器,內含一個簽署過的圖片庫,包括安全的操作系統及鏈上代碼語言,以及 Golang(準備期)、Java(計劃期)、Node.js(計劃期)等軟件開發工具包組圖與執行環境。如果有需要的話,也能添加其他程序語言。

image

image

分布式賬本運用 RocksDB 來長久保存數據集,並且為了符合其三大屬性,它還建立了一個內部數據結構來反映狀態。大型文件(文檔等)存儲在區塊鏈賬本之外的儲存庫中,而其散列值則能夠作為交易的一部分存放在鏈內,這是為了保證文件的完整性。

Hyperledger 能夠支持兩種交易:代碼部署交易以及代碼調用交易。代碼部署交易能夠執行一條鏈上代碼的提交、更新或者終止等命令,其驗證節點必須保護代碼及其執行環境的真實性與完整性。相比之下,代碼調用交易則是一種用來執行鏈上代碼函數的應用程序界面,其過程類似於運用統一資源標識符來調用 JEE 的小型服務程序。值得注意的是,其中每一個鏈上代碼都負責維護自己的狀態,而且函數調用是改變鏈上代碼狀態的一個常見辦法。 共識管理器是一個抽象概念,它定義了共識算法與其他 Hyperledger 組件之間的接口。共識管理器接收交易,根據算法來決定如何組織以及何時執行這些交易。交易成功執行後就會在賬本上反映變化。Hyperledger 執行的是拜占庭協議,其在容錯與擴展性方面都有強大優勢。Event Hub 是一個去中心化網絡,它的屬性很複雜,因為同一事件可能會多次出現,而且每次都會覆蓋到每個對等節點。回調函數能夠終止接收同一事件的多次調用,這樣一來,對等節點(最好是非驗證的本機節點)就能夠管理應用程序相關的發布或訂閱事件了。

只要條件滿足,對等節點就發動事件,順序不分先後。這些事件不會永遠存在,所以應用程序如果有需要就得及時捕捉。

image

鏈上代碼交易是有時間限定的,並且在鏈上代碼裝置過程中是按特定形式裝配的,這和數據庫調用或網站服務調用類似。如果超過交易時限,那麼就按出錯處理,不會給賬本狀態帶去任何改變。如果調用的函數有相同保密範圍限制的話,一個鏈上代碼函數就能夠調用另一鏈上代碼函數一一也就是說,如果兩個機密鏈上代碼之間,有相同的一組驗證器,那麼它們之間就能互相調用。 新區塊進行交易時,會維持區塊鏈上最後區塊的整體狀態差量。如果當前區塊達到共識,那麼變量就會提交到數據庫,之後整體狀態的區塊數量就會增加 1 個。如果節點沒有達到共識,那麼差量就不會算入,數據庫也不會進行修改。

應用編程界面 Hyperledger 包括了 REST、JSON RPC 應用程序界面、事件以及連接網絡的應用程序軟件開發工具包。典型的一點是,應用程序與一個對等節點進行交互需要通過某種形式來驗證該個體的正當權限,其中客戶的信息是有其身份識別簽名的,而且要經過節點的核實。

image

Hyperledger 有一套命令行界面 (CLI) 來管理運行網絡。這套命令行界面也可以用於鏈上代碼測試過程中。REST 應用程序界面以及軟件開發工具包 (SDK) 是建立在 JSON-RPC 應用程序界面上的,這也是現在最完整的應用程序界面層。軟件開發工具包則能夠適用於 Golang,JavaScript,Java 等語言中,如果有需要,也可以添加其他編程語言。 這一應用程序界面能夠分成以下幾類:・身份識別一通過登記來獲得或撤銷認證 尋址一一定位並追蹤交易來源 交易一 — 賬本上的執行單元 鏈上代碼一一 — 在區塊鏈上運行的程序 區塊鏈一 — 賬本的內容 網絡一 — 區塊鏈網絡的信息 存儲庫一一文件或文檔的外部儲存 事件一 — 區塊鏈上的訂閱或發行事件

應用模型#

image

網絡技術 有三種潛在配置模型:

雲伺服器托管的單一網絡、雲伺服器托管的多個網絡,以及參與者托管的內聯網。雲伺服器托管的單一網絡是最簡易、最高效的拓撲結構,其中每一位參與者都有一組對等節點,包括驗證節點。儘管網絡在雲環境下運行並且托管給物理硬件廠商,參與者還是能夠根據合約來控制運算資源,從而在中心化環境中實現去中心化配置。

雲伺服器托管的多個網絡能夠使參與者通過雲供應商管理對等節點,如果這些節點能夠在超文本傳輸協議 (HyperledgerTTP) 下互相連接的話。參與者托管的內聯網通過超文本傳輸協議來使用參與者所有的網絡。

結論 Hyperledger 的任務是將區塊鏈技術引入大眾市場。回顧了可行的區塊鏈解決方案,也了解了業界領先者及技術推廣者給出的相關用例後,我們相信區塊鏈將會成為至關重要的技術模型,推動眾多工業與企業進行革新。我們注意到,業內目前急需一套為企業打造的區塊鏈框架,做到既高效,又可擴展,並且能夠為隱私與機密相關的需求提供企業級的支持。我們也發現了各種不同的用例,而每一用例可能需要不同的區塊鏈底層實現。 為了全面發掘區塊鏈技術的潛能,並且開創一套能滿足各種使用需求的標準,我們設計了靈活且可延伸的 Hyperledger 構架。

此外,我們還在引導 Hyperledger 協議的默認實現,其中涉及了各種計算機科學學科的先進成果。

為了增進您對 Hyperledger 協議的理解,您可以閱讀我們的協議使用說明,它能夠幫助您運用 Hyperledger 創建您的應用程序,並推動項目發展。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。