成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Hyperledger Fabric周周記:起源

hatlonely / 1983人閱讀

摘要:作為系列的新篇章,我選擇從超級賬本的開始。為什么選擇超級賬本作為起點我在之前的文章中曾說過會從超級賬本入手開始區(qū)塊鏈的學習和實踐,同時也給出了個人的理由。檢查事務提議的響應。為了降低區(qū)塊鏈應用的開發(fā)難度,超級賬本項目又引入了。

本著“以教帶學,Learning by Doing”的想法,我于上周加入了Bob組織的HiBlock區(qū)塊鏈技術布道群。這個群可不太好混,群規(guī)要求每個成員必需每周有輸出,連續(xù)兩次交白卷就要被踢出群。

在這樣的壓力之下,我決定開一個新坑:區(qū)塊鏈周周記,記錄下每周區(qū)塊鏈的學習成果和爬坑經(jīng)驗。作為系列的新篇章,我選擇從超級賬本的Fabric開始。

為什么選擇超級賬本作為起點?

我在之前的文章中曾說過會從超級賬本入手開始區(qū)塊鏈的學習和實踐,同時也給出了個人的理由。但作為一篇布道類文章,單單個人喜好是沒有說服力的。

在Fabric的文檔中,它強調了自己面向企業(yè)應用而生的理由:

企業(yè)希望跟身份確定的人做生意,而非像公鏈那樣完全匿名的對手方

并非人人都可加入的商業(yè)網(wǎng)絡

交易的私密性,比如,對于不同的渠道或經(jīng)銷商,他們各自拿到的折扣不一樣,這些信息必須是私密的,相互隔離。

性能和交易確認的時延

可以看得出,相比起公鏈激進的做法,以Fabric為代表的聯(lián)盟鏈要溫和的多,并且也容易為企業(yè)所接受。加上其給出的若干限制,技術上的落地也相對容易很多。

Fabric中的主要組件

關于區(qū)塊鏈本身的理論和介紹,目前已經(jīng)爛大街了,在此也就是不再贅述。在本節(jié),讓我們來看看Fabric是如何通過主要組件完成技術落地的。

從大的方面講,F(xiàn)abric的主要組件大致可劃分成這幾個部分:

分布式賬本,解決數(shù)據(jù)共享問題,讓所有參與方擁有共同的交易歷史。

智能合約,解決應用與賬本的交互問題,包括查詢和更新。

共識機制,解決數(shù)據(jù)同步問題,基于Endorsement Policy實現(xiàn)交易的傳播。

成員服務,解決參與方身份問題,只有可信成員之間才能完成交易。

分布式賬本

Fabric的分布式賬本狀態(tài)由兩部分組成:世界狀態(tài)(World State)和區(qū)塊鏈。前者代表賬本的當前狀態(tài),變更和查詢頻繁,往往以數(shù)據(jù)庫形式實現(xiàn);后者則用來捕獲前者的每次變更,作為交易的變更記錄,無法修改且極少查詢,常常實現(xiàn)為文件形式。

對于世界狀態(tài)的DB載體,當前版本有兩個選擇:內置的LevelDB和外置的CouchDB,如果想要獲得更靈活的查詢能力,選擇后者。由此大家應該可以猜出:世界狀態(tài)中保存的數(shù)據(jù)是以KV對的形式存在。

對于區(qū)塊鏈來講,它以Block的hash鏈組成,每個Block包含一組有序的交易。這個順序是交易順序,非常關鍵。

除了這兩個組件,F(xiàn)abric還引入了一個獨特的設計:Channel,用來解決不同組織間的賬本共享問題。假如組織A同時與組織B和組織C做生意,并且組織B和組織C是競爭對手,那么通過建立不同的Channel可以實現(xiàn)A和B,A和C分別共享各自的賬本。利用Channel,很好地解決了常見的B2B場景。

Channel抽象出了業(yè)務參與方的溝通,可視為業(yè)務網(wǎng)絡的子網(wǎng),實現(xiàn)了交易的相互隔離和業(yè)務私密性。

智能合約

Fabric的智能合約以“鏈碼(Chaincode)”的形式存在,外部客戶端利用它來完成對世界狀態(tài)的更改。與以太坊不同,鏈碼支持使用通用編程語言來書寫,當前版本支持Go和Node.js,但從Fabric Java SDK的源碼中可以看出,離支持Java應該也不遠了:

public enum Type {
    JAVA,
    GO_LANG,
    NODE
}

對于初學者需要注意的是:鏈碼 != Fabric SDK。前者運行于Fabric環(huán)境,執(zhí)行業(yè)務邏輯。后者則由被客戶端程序用來與鏈碼完成交互。打個類似的比方:

將Fabric環(huán)境視為Tomcat這樣的容器。

鏈碼則可視為運行于其中的Servlet。

Fabric SDK則類似HttpClient這樣的類庫被Java客戶端利用發(fā)起請求,實現(xiàn)于Servlet的交互。

由此可知,鏈碼本身實際上是一個應用,其生命周期可分為:package、install、instantiate、upgrade。同樣,鏈碼可以綁定任意任意數(shù)量的Channel,并獨立運行。

關于鏈碼的教程,文檔已經(jīng)給出了詳細的說明,在此就不再啰嗦。

共識機制

Fabric中有三類節(jié)點:

Client,代表最終用戶向endorser提交事務調用(Transaction Invocation),向ordering service廣播事務提議(Transaction Proposal)。

Peer,提交事務,維護世界狀態(tài)和賬本副本(區(qū)塊鏈)。其中,有一類特殊的Peer是Endorser。

Orderer,提供節(jié)點間的通信服務,保證消息的交付和順序,典型如Kafka隊列。

整個事務流程在文檔中有介紹:

client發(fā)起事務提議。

endorser peer驗證并執(zhí)行。

client檢查事務提議的響應。

若endorsement policy滿足,client將endorsement打包進事務,提交給ordering service。消息包括:endorser簽名、讀寫集和channel id。

事務被orderer提交給channel上所有的peer,它們會檢查并提交事務。

賬本更新。

從上面的流程可以看出,F(xiàn)abric的共識機制建立在endorsement policy之上,它可以通過命令行參數(shù)進行配置,并不需要Channel的所有Peer參與。

成員服務

成員服務負責參與方的身份許可和驗證,它建立于數(shù)字證書和信任鏈基礎之上。所謂成員,既可以是組織(Org),也可以是組織部門(OU)。Fabric的成員服務配置可以出現(xiàn)在兩處:Local(節(jié)點)和Channel(Channel級)。

從開發(fā)角度來講,引入成員服務帶來的作用就是:如果應用(Client和Chaincode)要參與到區(qū)塊鏈網(wǎng)絡中,則需要相應簽名和證書。

Fabric的開發(fā)套路

老實講,從上面的簡單介紹已經(jīng)看出,F(xiàn)abric的開發(fā)并不簡單,它至少涉及:

Client,提供UI、鏈碼交互以及其他輔助功能。

鏈碼,負責執(zhí)行業(yè)務邏輯。

業(yè)務網(wǎng)絡,定義參與方、Channel和Endorsement Policy。

成員管理,定義組織及其成員映射,這涉及到一系列證書的發(fā)放。

應用部署,將上面的各部分部署到Fabric環(huán)境。

這還不算完,如何測試也是一個大麻煩,相比起簡單的CRUD應用,光搭建Fabric的環(huán)境就讓人生畏。假如你對自己的要求更高點,想要實現(xiàn)一個持續(xù)集成環(huán)境,該怎么辦?

此外,開發(fā)之后的運維成本也不會低,除了Fabric本身的基礎設施,鏈碼的平滑升級也對開發(fā)和運維提出了高標準。

鑒于這些麻煩的事情,假如你沒有辦法說服業(yè)務合作方也同樣部署一套Fabric,我覺得完全沒有必要去基于它來開發(fā)應用。單組織內的區(qū)塊鏈應用,我個人認為是一個偽命題,沒有存在的價值。

關于示例教程,F(xiàn)abric的文檔已經(jīng)給出了范例,各位可以仔細閱讀。

為了降低區(qū)塊鏈應用的開發(fā)難度,超級賬本項目又引入了Composer。其目的在于加速應用的開發(fā)和部署,目前已經(jīng)支持Fabric,當前處于孵化階段。它建立在諸多框架和工具之上:

node.js + angular,幫助開發(fā)者完成全棧區(qū)塊鏈解決方案的開發(fā)。

yeoman,利用其模板功能快速搭建應用框架。

一套開發(fā)環(huán)境,實現(xiàn)應用的打包部署以及暴露成Restful Service。

看起來很不錯!

寫在最后

對于一個初學者來講,寫這篇文章真不容易!如文章存在錯誤,不要客氣,只管指出,:)。關于下一周的周記,我會去寫一個實際的Fabric應用的例子,同時給出Composer的例子,請保持關注。

附注:在寫此文的過程中,我還找到了一篇吐槽Fabric的文章,這里一并給出鏈接,方便大家客觀評定。

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

轉載請注明本文地址:http://systransis.cn/yun/24079.html

相關文章

  • Hyperledger Fabric記:Composer

    摘要:在上周周記的結尾,我曾經(jīng)說過本周要介紹的開發(fā)和應用。可在通讀完的文檔之后,我立即取消了原定計劃,直接介紹。讓其成為開發(fā)首選的理由只有一個對開發(fā)者友好。將發(fā)布到的暴露成,供外部調用,完全語言中立。而后者則是為測試而生的。 在上周周記的結尾,我曾經(jīng)說過本周要介紹Fabric的開發(fā)和應用。按照最開始的寫作計劃,我打算講講兩種開發(fā)模式:直接使用Fabric API和利用Composer框架???..

    quietin 評論0 收藏0
  • Hyperledger Fabric(目錄)

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

    trigkit4 評論0 收藏0
  • Hyperledger Fabric(入門)

    摘要:腳本列出了在結束時安裝的映像。在不同的體系結構,將用標識體系結構的字符串替換。提供了許多來支持各種編程語言,官方發(fā)布了兩款針對和的和文檔。。 入門 在我們開始之前,如果你還沒有這樣做,你可能希望檢查是否已經(jīng)在開發(fā)區(qū)塊鏈應用程序和/或運行Hyperledger Fabric的平臺上安裝了所有前提條件。 一旦安裝了前提條件,就可以下載并安裝HyperLedger Fabric了,當我們在F...

    SKYZACK 評論0 收藏0
  • Fabric環(huán)境搭建

    摘要:環(huán)境搭建快速入門前提安裝安裝安裝安裝查看版本信息輸出安裝查看版本信息輸出版本要求版本要求上傳解壓文件編輯環(huán)境變量文件添加如下內容輸出如果系統(tǒng)中有舊版本的則使用如下命令卸載舊版本的然后再重新安裝 環(huán)境搭建 快速入門: http://hyperledger-fabric.rea... 前提 安裝git $ sudo apt update $ sudo apt install git 安裝...

    fou7 評論0 收藏0
  • Hyperledger FabricHyperledger Fabric模型)

    摘要:資產(chǎn)在中表示為鍵值對的集合,狀態(tài)更改記錄為通道分類帳上的交易,資產(chǎn)可以用二進制和或格式表示。分類帳由區(qū)塊鏈鏈組成,用于以塊的形式存儲不可變的順序記錄,以及用于維護當前狀態(tài)的狀態(tài)數(shù)據(jù)庫。 Hyperledger Fabric模型 本節(jié)概述了編入Hyperledger Fabric的關鍵設計特性,實現(xiàn)了對全面但可定制的企業(yè)區(qū)塊鏈解決方案的承諾: 資產(chǎn) - 資產(chǎn)定義為可以通過網(wǎng)絡交換幾乎任...

    W_BinaryTree 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<