首頁 > 軟體

使用Hyperledger Composer十分鐘搭建區塊鏈概念驗證環境

2020-06-16 17:10:22

主要結論

  • 很多人是通過位元幣等密碼學貨幣體系首次接觸到區塊鏈這一概念的。然而區塊鏈(位元幣體系背後所用的分佈賬技術)已經被越來越多的企業所接受,並用在數位化貨幣體系之外的不同領域。
  • 企業對區塊鏈的需求與公眾有很大不同:參與者的身份必須是已知的,私鏈(Permissioned blockchain)無需“工作證明”,同時私鏈的適用範圍也有所不同。
  • 企業區塊鏈應用可通過業務網路內共用的資產、參與者,以及事務來定義。通過將這些元件結合在一起,即可打造一種分散式處理系統,也叫做設施(Fabric),藉此對區塊鏈應用的執行進行管控。
  • 智慧合約(用於實現事務的業務規則組合後的產物)實際上是一種儲存的過程呼叫(Procedure call),可在網路中多個節點上執行,執行後輸出的結果通過合意(Consensus)過程被所有網路成員認可。
  • 目前最大的挑戰在於,如何將區塊鏈解決方案中的資產、參與者以及事務與此類區塊鏈處理系統的現有技術進行對映。Linux基金會託管的Hyperledger專案提供的Hyperledger Composer致力於解決這樣的問題。
  • 為了展示Hyperledger Composer的使用,我們會用它建立一個基於區塊鏈的汽車拍賣解決方案。

很多人是通過位元幣等密碼學貨幣體系首次接觸到區塊鏈這一概念的,這種對等支付體系很大程度上不受法規約束,抵制單點控制機制。然而近年來,區塊鏈(位元幣體系背後所用的分佈賬技術)已經被越來越多的企業所接受,並用在數位化貨幣體系之外的不同領域。本文將介紹企業在業務中使用區塊鏈技術的目的,以及Linux基金會Hyperledger Composer如何幫助應用開發者輕鬆打造適用於企業的區塊鏈解決方案。

區塊鏈技術在企業領域的飛速增長

位元幣是區塊鏈技術的第一個主流應用方式,最早在2008年由中本聰(Satoshi Nakamoto)提出。隨後區塊鏈技術的應用快速增長,而“區塊鏈”這個詞甚至被用於稱呼所有分佈賬應用程式,那麼本文也就沿用相同的稱呼了。

區塊鏈應用大受歡迎,公眾(通常為匿名)網路和私有(企業)網路均有廣泛應用。雖然這兩種模式均可提供很大的價值,但企業區塊鏈技術的需求與公眾用途有很大不同,原因主要有三點:

1) 企業通常需要在受管控的環境中運營,而諸如反洗錢(AML)以及了解客戶(KYC)等制度要求企業必須對與自己進行交易的參與者身份有著充分了解。位元幣是全匿名(確切來說,是基於假名[Pseudonymity])的,雖然可以看到事務的具體情況,但幾乎不可能確定對方身份。而企業需求通常與之截然相反:需要隱私,使用者需要知道網路中參與者的身份並且可以信任對方,但並非必須了解所完成的具體事務。

2) 在假名區塊鏈中,必須防止不可信任的參與者破壞網路。目前,位元幣以及其他主流的公用區塊鏈體系通常會使用一種名為“工作證明(Proof of Work)”的概念大幅增加進行欺詐行為的難度,但這會增加事務的處理成本,最明顯的體現就是電力的消耗。事務驗證程式(Transaction validator)會通過計算非常困難的密碼學運算,並將計算後的答案告知整個網路,藉此證明自己是真實可信的,這種方式很好地解決了信任問題,但會導致處理能力的使用效率大幅降低。私鏈並不需要這樣做,因為參與者都是已知並且可信的。如果事務最終被證明無效,業務網路中的參與者會聲譽受損甚至面臨經濟損失。 

3) 私鏈的應用範圍也有所不同。諸如位元幣等公鏈最初的設計主要圍繞對等支付,但企業的“賬本”需要能用於描述任何有價值的東西。通常業務網路的規模也更小,是一種封閉的系統(例如可以類比供應鏈網路)。這一點與非企業用途的區塊鏈大為不同,非企業用途的區塊鏈通常可被任何有計算機的人所存取。

仔細看看目前業務網路的運轉方式就可以了解這些需求。通過商品和服務創造的財富在業務網路內流動,這些商品和服務的轉移會以一系列事務(交易)的方式記錄在賬本中。賬本是一種極為有用的記錄系統,其中描述了業務的所有投入和產出,以及因此產生的財務狀況。自從15世紀甚至更早以前,就已經出現了各種形式的賬本。

企業區塊鏈技術意在為業務中的這些基本原則建立模型。目前,賬本由企業自己所擁有,業務規則決定了商品和服務在網路中的流動。在企業區塊鏈技術的幫助下,賬本和業務規則都可以在業務網路內共用,藉此可降低開展業務過程中遇到的摩擦(以及相應的成本)。

資產、參與者,以及事務

企業區塊鏈應用可以通過在業務網路內共用的資產、參與者,以及事務來描述:

  • 資產代表任何有價值,可以共用或交易的東西:從汽車、房屋、鑽石等有形資產,到有價證券、智慧財產權,甚至參考資料等無形資產,均可代表。現金本身也是一種資產。
  • 參與者則是指需要在業務網路內共用事務資訊的人員。參與者通常是指企業,但也可以包括普通人、監管人員,或其他利益相關者。
  • 事務可用於描述在業務網路內傳遞的過程中,可針對資產執行的具體操作。

通過將這些元件結合在一起,即可打造一種分散式處理系統,也叫做設施(Fabric),藉此對區塊鏈應用的執行進行管控。智慧合約(用於實現事務的業務規則組合後的產物)實際上是一種儲存的過程呼叫,可在網路中多個節點上執行,執行後輸出的結果通過合意過程被所有網路成員認可。

目前最大的挑戰在於,如何將區塊鏈解決方案中的資產、參與者以及事務與此類區塊鏈處理系統的現實技術進行對映。區塊鏈應用的實現需要極高成本,因為需要通過大量工作實現用於定義業務目標的邏輯,同時需要讓智慧合約能夠順利使用區塊鏈所提供的服務。

Hyperledger Composer

Linux基金會託管的Hyperledger專案所提供的Hyperledger Composer致力於解決這樣的問題,藉此區塊鏈開發者可以輕鬆地對業務資產、參與者以及事務建模,將這些模型變成可行的區塊鏈應用。Hyperledger專案始於2015年12月,包含了一系列適用於企業,先進的跨行業開源區塊鏈技術。這是Linux基金會有史以來發展速度最快的專案,而Hyperledger“聯盟”目前已包含多種技術,如Hyperledger FabricHyperledger Sawtooth等區塊鏈框架,以及提供監視、身份、開發和部署等服務的工具。Hyperledger Composer正是其中的一種工具。

與所有Hyperledger產品類似,Hyperledger Composer完全開源,並使用了一種開放的治理模式,任何人都可以為其做貢獻或決定未來的發展方向。

Hyperledger Composer為資產、參與者,以及事務的建模提供了一種面向特定領域,非常簡單的建模語言,開發者可以通過JavaScript編寫實現事務邏輯的方法。開發者可以在自己慣用的任何開發環境中編寫這些檔案(針對大部分編輯器提供了必要的外掛),並可在一種基於Web的“試驗場(Playground)”幫助下開發、打包、部署並測試這些專案,同時還為指令碼環境提供了所需的命令列工具。應用程式可部署至Hyperledger Fabric範例,或在Web瀏覽器中進行本地模擬。

Hyperledger Composer還可針對不同資產生成骨架(Skeleton)命令列或Angular2應用,對Loopback的支援使得我們可以通過RESTful與應用互動,這樣區塊鏈即可連線至現有記錄系統,例如可使用整合中介軟體,如Node.REDIBM Integration Bus進行連線。

設計基於區塊鏈的汽車拍賣解決方案

為了展示Hyperledger Composer的運用,我們將使用該技術建立一個基於區塊鏈的汽車拍賣解決方案。這是一種很棒的區塊鏈應用,因為已經具備妥善定義的業務網路,適用於高價值資產,因此對信任的要求更高,必須明確知道(a)不同時間裡車的所有者是誰,以及(b)不同參與者的現金收支情況。從中也可以清楚地知道這樣的應用如何能輕鬆擴充套件並運用在其他高價值資產領域。

首先考慮組成這個業務網路的資產、參與者,以及事務:

  • 資產:需要考慮兩類資產:機動車,對實體車輛的數位化呈現,可對其所有權進行追蹤;以及機動車清單,描述了某輛車正在(或已經)銷售,以及這一過程中的不同出價。
  • 參與者:包括代表機動車所有者或購買者,並且有足夠貨幣結餘的人或組織成員。此外可能會有一個可以關閉任何商品競拍的拍賣商。整個網路還可進一步擴充套件,將保險公司或監管機構包含在內。
  • 事務:兩種最重要的事務型別:為機動車出價的事務,以及關閉競拍的事務。

(點選放大影象)

圖1 – 汽車拍賣應用中的資產、參與者和事務

上述內容定義了組成該區塊鏈解決方案不同元件所需的型別(Type)。為了測試我們的區塊鏈解決方案,我們會建立這些型別的範例,並將其儲存在序號產生器構(Registry)內,序號產生器構是Hyperledger Composer中另一個重要概念。我們將向機動車、機動車清單、成員,以及拍賣商等序號產生器構中填入資料,並可提交上文提到的兩類事務。所有範例和事務資料均將通過區塊鏈儲存和存取,這樣便可被網路中的參與者共用和信任。解決方案的開發者可以通過存取控制列表決定哪些參與者可以看到哪些資產。

為區塊鏈汽車拍賣解決方案建模

Hyperledger Composer的所有元件均可下載並本地執行,此外還有一個線上版本的“試驗場”,無需安裝任何軟體即可使用。如果希望從本地副本著手嘗試,可參閱Hyperledger Composer文件頁提供的快速上手指導;如果希望使用線上試驗場,可直接存取Hyperledger Composer Playground頁面

首次啟動試驗場並關掉歡迎介面後,會看到類似下圖所示的介面(與其他正在活躍開發的專案一樣,這個介面後續可能有所改動)。

(點選放大影象)

頁面左側顯示了組成區塊鏈專案的所有檔案:

  • 一個About檔案 – Markdown格式的說明檔案,試驗場預設將顯示該檔案的內容。
  • 一個Model檔案 – 定義了專案中涉及的資產、參與者,以及事務。
  • 一個Script檔案 – 以JavaScript實現的事務邏輯。
  • 一個Access Control List – 決定了哪些參與者可以看到哪些資產。
  • 一個Add按鈕 – 必要時可向專案中新增額外的檔案。
  • 一個Deploy按鈕 – 可將對專案檔案的改動應用給當前已連線的區塊鏈範例或模擬器。
  • Import功能可將試驗場的內容替換為指定的其他內容。
  • Export功能可將整個解決方案打包為一個檔案,並轉移到其他環境中使用。

介面右側的主區域顯示了所選檔案的編輯器或檢視器。此外頁面頂部的Define/Test索引標籤可供我們在開發或測試模式之間切換。最後,頁面右上角可供我們(在本地版本中)模擬另一個區塊鏈使用者的身份,連線至自己的線上區塊鏈範例,或開始在Web瀏覽器中模擬。線上版試驗場目前僅支援模擬器模式。

首先我們需要將試驗場視窗中的檔案替換為汽車拍賣應用所需的檔案。此處打算使用預建立的範例。如果要開發自己的網路,通常最好匯入範例模板,以此為基礎著手進行。

點選“Import/Replace”按鈕。首先需要通過GitHub進行身份驗證,隨後將直接通過線上程式碼庫下載可用的範例。如果願意,也歡迎大家貢獻自己設計的網路。隨後選擇“carauction-network”並點選Deploy,這樣即可用Car Auction專案的檔案替換試驗場中的預設檔案。

選中Model檔案(model/org.acme.vehicle.auction.cto)可檢視有關資產、參與者,以及事務的定義。同理,Script檔案(lib/logic.js)包含了兩個事務型別的JavaScript實現。

重要的是,只需要50行簡單的特定領域語言程式碼以及100行JavaScript,我們就可以定義實現區塊鏈解決方案所需的全部元素。

測試區塊鏈汽車拍賣解決方案

單擊試驗場頂部的“Test”索引標籤,即可與參與者和資產序號產生器構互動,並能將事務提交至區塊鏈。該索引標籤下顯示的一切內容都是從Model檔案動態推導的。

首先在Member序號產生器構建立幾個參與者:為他們分配一定的初始金額(這裡是通過最簡單的整數實現的),以及用於進行唯一性區分的郵件地址,當然還有姓名。

隨後在Vehicle序號產生器構建立一輛機動車:VIN(機動車識別號)是一種具備唯一性的標識字串,初始所有者可以是已建立完成的某個所有者的郵件地址(因為模型已將郵件地址定義為唯一識別符號)。

最後建立一個Vehicle Listing:為其分配一個唯一的清單ID,填入底價和描述資訊。此時的狀態應該是“FOR_SALE”,建議清空報價陣列("offers" : [])。Vehicle欄位應包含所建立機動車的VIN字串,因為模型已將VIN欄位定義為唯一識別符號。

序號產生器構設定完畢後,即可通過提交事務的方式為該機動車新增報價。單擊“Submit Transaction”,選擇事務型別為“Offer”並填寫競標價格、列表(上文輸入的唯一列表ID)以及成員(出價的參與者對應的郵件地址)。這會導致Offer事務相關聯的JavaScript開始執行,將新的報價新增到相關清單的報價陣列中。

新增了幾個報價後,可以試著關閉競標。再次提交一個事務,這次選擇事務型別為“CloseBidding”,此時只需要指定唯一的清單ID。提交該事務會執行CloseBidding事務所關聯的JavaScript。這些程式碼會查詢超出底價最高的競拍價格,為賣家的餘額增加這一金額,並從買家的餘額中減去同樣金額,隨後轉移機動車的所有權。隨後如果重新切換回相應的Vehicle和Member序號產生器構就可以看到,這些操作會顯示為均已完成。

下一步

通過上述操作可以看到,只需花費少量時間以及幾行程式碼,就可以開發出一個完備的區塊鏈原型。如果想要將本文討論的概念應用在自己的區塊鏈專案中,也可以通過類似的方式著手。首先確定區塊鏈可以解決的現實業務挑戰:業務網路是必備的,當然還需要參與者之間有很強的信任關係。隨後可以考慮問題所涉及的資產、參與者以及事務。可以試著通過Hyperledger Composer建模,隨後進行測試並迭代完善。

當然,這種方法真正的價值在於,終端使用者的應用程式可以提交並查詢真實的業務事務。在著手編寫這樣的事務之前,建議閱讀Hyperledger Composer的應用程式生成器上手指南。藉此可通過業務網路存檔生成Angular2或命令列應用程式範例。這種方式無法實現任何完備的應用程式,但可以幫助你更專注於開發終端使用者應用程式邏輯,而非與區塊鏈的互動。

Hyperledger Composer的優勢不僅在於可以快速開發區塊鏈解決方案,而且在於可以幫助我們通過快速迭代滿足額外的需求,並能提供必要的技術,幫助我們盡可能簡單地向他人描述所發生的事情。

Hyperledger Composer是一個社群專案,該專案的成功離不開開發者社群的活躍貢獻。如果對於該專案你有喜歡的或不喜歡的地方,歡迎反饋給開發團隊。如果願意,你也可以參與進來,Hyperledger網站介紹了參與方法。

總結:區塊鏈的潛力

區塊鏈有著無窮的潛力。IBM認為區塊鏈對交易和事務的促進,完全比得上網際網路對交流和資訊流動的促進,因此我們也期待著這個技術能為商業帶來巨大的積極影響。作為區塊鏈技術的踐行者,我們完全可以讓這一切變為現實!

關於本文作者

Matt Lucas是IBM全球區塊鏈促進團隊成員,他主要幫助客戶理解並運用區塊鏈技術,因此會與各種新興的區塊鏈框架,例如Hyperledger Fabric、Ethereum,以及Hyperledger Composer等區塊鏈工具的開發團隊進行密切的合作。他在IBM赫斯利(Hursley)開發實驗室工作,過去20年來一直從事IBM各類整合中介軟體技術的相關工作。最近多年,他一直在從事有關IBM Integration Bus在產品架構中的應用以及相關的管理工作。你可以通過Twitter聯絡Matt:@mqmatt,或給他發郵件:lucas@uk.ibm.com。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-07/145524.htm


IT145.com E-mail:sddin#qq.com