《LINUX教學:使用Hyperledger Composer十分鐘搭建區塊鏈概念驗證環境》要點:
本文介紹了LINUX教學:使用Hyperledger Composer十分鐘搭建區塊鏈概念驗證環境,希望對您有用。如果有疑問,可以聯系我們。
很多人是通過比特幣等暗碼學貨幣體系首次接觸到區塊鏈這一概念的,這種點對點支付體系很大程度上不受法規約束,抵制單點控制機制.然而近年來,區塊鏈(比特幣體系背后所用的分布賬技術)已經被越來越多的企業所接受,并用在數字化貨幣體系之外的不同領域.本文將介紹企業在業務中使用區塊鏈技術的目的,以及Linux基金會Hyperledger Composer如何幫助應用開發者輕松打造適用于企業的區塊鏈解決方案.
比特幣是區塊鏈技術的第一個主流應用方式,最早在2008年由中本聰(Satoshi Nakamoto)提出.隨后區塊鏈技術的應用快速增長,而“區塊鏈”這個詞甚至被用于稱謂所有分布賬應用程序,那么本文也就沿用相同的稱謂了.
區塊鏈應用大受歡迎,公眾(通常為匿名)網絡和私有(企業)網絡均有廣泛應用.雖然這兩種模式均可提供很大的價值,但企業區塊鏈技術的需求與公眾用途有很大分歧,原因主要有三點:
1) 企業通常需要在受管控的環境中運營,而諸如反洗錢(AML)以及了解客戶(KYC)等制度要求企業必須對與本身進行交易的參與者身份有著充分了解.比特幣是全匿名(確切來說,是基于假名[Pseudonymity])的,雖然可以看到事務的具體情況,但幾乎不可能確定對方身份.而企業需求通常與之截然相反:需要隱私,用戶需要知道網絡中參與者的身份并且可以信任對方,但并非必須了解所完成的具體事務.
2) 在假名區塊鏈中,必須防止不可信任的參與者破壞網絡.目前,比特幣以及其他主流的公用區塊鏈體系通常會使用一種名為“工作證明(Proof of Work)”的概念大幅增加進行欺詐行為的難度,但這會增加事務的處理成本,最明顯的體現就是電力的消耗.事務驗證程序(Transaction validator)會通過計算非常困難的暗碼學運算,并將計算后的答案告知整個網絡,借此證明自己是真實可信的,這種方式很好地解決了信任問題,但會導致處理能力的使用效率大幅降低.私鏈并不需要這樣做,因為參與者都是已知并且可信的.如果事務最終被證明無效,業務網絡中的參與者會聲譽受損甚至面臨經濟損失.?
3) 私鏈的應用范圍也有所不同.諸如比特幣等公鏈最初的設計主要圍繞點對點支付,但企業的“賬本”需要能用于描述任何有價值的東西.通常業務網絡的規模也更小,是一種封閉的系統(例如可以類比供應鏈網絡).這一點與非企業用途的區塊鏈大為不同,非企業用途的區塊鏈通常可被任何有計算機的人所拜訪.
仔細看看目前業務網絡的運轉方式就可以了解這些需求.通過商品和服務創造的財富在業務網絡內流動,這些商品和服務的轉移會以一系列事務(交易)的方式記錄在賬本中.賬本是一種極為有用的記錄系統,其中描述了業務的所有投入和產出,以及因此產生的財政狀況.自從15世紀甚至更早以前,就已經出現了各種形式的賬本.
企業區塊鏈技術意在為業務中的這些基本原則建立模型.目前,賬本由企業自己所擁有,業務規則決定了商品和服務在網絡中的流動.在企業區塊鏈技術的贊助下,賬本和業務規則都可以在業務網絡內共享,借此可降低開展業務過程中遇到的摩擦(以及相應的成本).
企業區塊鏈應用可以通過在業務網絡內共享的資產、介入者,以及事務來描述:
通過將這些組件結合在一起,即可打造一種分布式處理系統,也叫做設施(Fabric),借此對區塊鏈應用的運行進行管控.智能合約(用于實現事務的業務規則匯編后的產物)實際上是一種存儲的過程調用,可在網絡中多個節點上運行,運行后輸出的結果通過合意過程被所有網絡成員認可.
目前最大的挑戰在于,如何將區塊鏈辦理方案中的資產、參與者以及事務與此類區塊鏈處理系統的現實技術進行映射.區塊鏈應用的實現需要極高成本,因為需要通過大量工作實現用于定義業務目標的邏輯,同時需要讓智能合約能夠順利使用區塊鏈所提供的服務.
Linux基金會托管的Hyperledger項目所提供的Hyperledger Composer致力于辦理這樣的問題,借此區塊鏈開發者可以輕松地對業務資產、參與者以及事務建模,將這些模型變成可行的區塊鏈應用.Hyperledger項目始于2015年12月,包含了一系列適用于企業,先進的跨行業開源區塊鏈技術.這是Linux基金會有史以來發展速度最快的項目,而Hyperledger“聯盟”目前已包含多種技術,如Hyperledger Fabric和Hyperledger Sawtooth等區塊鏈框架,以及提供監視、身份、開發和部署等服務的工具.Hyperledger Composer正是其中的一種工具.
與所有Hyperledger產物類似,Hyperledger Composer完全開源,并使用了一種開放的治理模式,任何人都可以為其做貢獻或決定未來的發展方向.
Hyperledger Composer為資產、參與者,以及事務的建模提供了一種面向特定領域,非常簡單的建模語言,開發者可以通過JavaScript編寫實現事務邏輯的辦法.開發者可以在自己慣用的任何開發環境中編寫這些文件(針對大部分編輯器提供了必要的插件),并可在一種基于Web的“試驗場(Playground)”幫助下開發、打包、部署并測試這些項目,同時還為腳本環境提供了所需的命令行工具.應用程序可部署至Hyperledger Fabric實例,或在Web瀏覽器中進行本地模擬.
Hyperledger Composer還可針對分歧資產生成骨架(Skeleton)命令行或Angular2應用,對Loopback的支持使得我們可以通過RESTful與應用交互,這樣區塊鏈即可連接至現有記錄系統,例如可使用集成中間件,如Node.RED或IBM Integration Bus進行連接.
為了展示Hyperledger Composer的運用,我們將使用該技術創建一個基于區塊鏈的汽車拍賣辦理方案.這是一種很棒的區塊鏈應用,因為已經具備妥善定義的業務網絡,適用于高價值資產,因此對信任的要求更高,必須明確知道(a)不同時間里車的所有者是誰,以及(b)不同參與者的現金收支情況.從中也可以清楚地知道這樣的應用如何能輕松擴展并運用在其他高價值資產領域.
首先考慮組成這個業務網絡的資產、介入者,以及事務:
(點擊放大圖像)
圖1 – 汽車拍賣應用中的資產、介入者和事務
上述內容定義了組成該區塊鏈解決方案不同組件所需的類型(Type).為了測試我們的區塊鏈解決方案,我們會創建這些類型的實例,并將其存儲在注冊機構(Registry)內,注冊機構是Hyperledger Composer中另一個重要概念.我們將向機動車、機動車清單、成員,以及拍賣商等注冊機構中填入數據,并可提交上文提到的兩類事務.所有實例和事務數據均將通過區塊鏈存儲和拜訪,這樣便可被網絡中的參與者共享和信任.解決方案的開發者可以通過拜訪控制列表決定哪些參與者可以看到哪些資產.
Hyperledger Composer的所有組件均可下載并本地運行,此外還有一個在線版本的“試驗場”,無需安裝任何軟件即可使用.如果希望從本地副本著手嘗試,可參閱Hyperledger Composer文檔頁提供的快速上手指導;如果希望使用在線試驗場,可直接拜訪Hyperledger Composer Playground頁面.
初次啟動試驗場并關掉歡迎界面后,會看到類似下圖所示的界面(與其他正在活躍開發的項目一樣,這個界面后續可能有所改動).
(點擊放年夜圖像)
頁面左側顯示了構成區塊鏈項目的所有文件:
界面右側的主區域顯示了所選文件的編輯器或查看器.此外頁面頂部的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.
本文永久更新鏈接地址:
歡迎參與《LINUX教學:使用Hyperledger Composer十分鐘搭建區塊鏈概念驗證環境》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9811.html