隨著探索如何把區(qū)塊鏈應(yīng)用在各種場(chǎng)景,許多人就想到,也許不需要全世界的人共同參與,也不需要挖礦,我們只需要用到區(qū)塊鏈的可信任、可追溯特性,通過較少節(jié)點(diǎn)達(dá)到拜占庭將軍容錯(cuò),于是私有鏈就誕生了。但私有鏈仍是中心化的,難以維持去中心化的優(yōu)勢(shì)。因此又有了為企業(yè)聯(lián)盟而生的聯(lián)盟鏈(consortium blockchain)。
公有鏈vs聯(lián)盟鏈vs私有鏈
公有鏈
公有鏈向全世界任何人公開,所有人都可訪問,發(fā)送、接收、認(rèn)證交易。所有人都能參與其中的區(qū)塊鏈——共識(shí)過程決定哪個(gè)區(qū)塊可被添加到區(qū)塊鏈中,也因此公有鏈通常被認(rèn)為是完全去中心化的。
特點(diǎn):不可篡改,匿名公開,技術(shù)門檻低,是真正的去中心化。每個(gè)參與者可以看到所有的帳戶余額和其所有的交易活動(dòng)。
缺點(diǎn):分布式治理仰賴共識(shí)決策,更新迭代慢、自行開發(fā)的話,目前技術(shù)發(fā)展框架,初期建設(shè)成本高昂。若企業(yè)直接采用公有鏈,則會(huì)受限于擴(kuò)容問題、以及企業(yè)需求無法滿足(通常會(huì)以側(cè)鏈妥協(xié),但側(cè)鏈則容易引起中心化隱患)。
舉例:以太坊、EOS、MAC多原鏈。
私有鏈
私有鏈?zhǔn)峭耆接械膮^(qū)塊鏈,指寫入權(quán)限僅限于在一個(gè)組織手里的區(qū)塊鏈。讀取權(quán)限或者對(duì)外開放,或者被一定程度地進(jìn)行了限制。整個(gè)網(wǎng)絡(luò)由成員機(jī)構(gòu)共同維護(hù),網(wǎng)絡(luò)接入一般通過成員機(jī)構(gòu)的網(wǎng)關(guān)節(jié)點(diǎn)接入,共識(shí)過程由預(yù)先選好的節(jié)點(diǎn)控制。這類區(qū)塊鏈被認(rèn)為是部分去中心化。
特點(diǎn):交易速度快,保護(hù)隱私,交易成本極低;仍保有不可篡改性。
缺點(diǎn):由于完全中心化的特性,私有鏈?zhǔn)堑拇鷰牛ㄈ粲邪l(fā)行的話)價(jià)格是可以被操作的,代碼也是可以修改的,集中風(fēng)險(xiǎn)較大。
在近年因?yàn)槠髽I(yè)對(duì)區(qū)塊鏈的探索與需求,發(fā)展出了在這兩種區(qū)塊鏈的混合,有一種區(qū)塊鏈稱為聯(lián)盟鏈,保有私有鏈的隱私性,又能維持多節(jié)點(diǎn)共識(shí)治理的特性。
聯(lián)盟聯(lián)
聯(lián)盟鏈適合于機(jī)構(gòu)間的交易、結(jié)算或清算等B2B場(chǎng)景。例如在銀行間進(jìn)行支付、結(jié)算、清算的系統(tǒng)就可以采用聯(lián)盟鏈的形式,將各家銀行的網(wǎng)關(guān)節(jié)點(diǎn)作為記帳節(jié)點(diǎn)。
通常情況下,外部觀察者可以查詢,但是不可交易,聯(lián)盟鏈?zhǔn)侵钙涔沧R(shí)過程受到預(yù)選節(jié)點(diǎn)控制的區(qū)塊鏈;區(qū)塊鏈或許允許每個(gè)人都可讀取,區(qū)塊的Root Hash及其API(應(yīng)用程式接口)對(duì)外公開,API可允許外界用來作有限次數(shù)的查詢和獲取區(qū)塊鏈狀態(tài)的資訊。這些區(qū)塊鏈可視為部分去中心化。
聯(lián)盟鏈與私鏈類似,其開放程度和去中心化程度是有所限制的,其讀寫權(quán)、記帳權(quán)由組織決定。與私有鏈最大的不同在于,聯(lián)盟鏈?zhǔn)菫橐粋€(gè)聯(lián)盟,比如一個(gè)行業(yè)服務(wù)的;而私鏈則是為一個(gè)組織,比如一家公司內(nèi)部服務(wù)。
區(qū)塊鏈目前正在四個(gè)方面進(jìn)行技術(shù)性的優(yōu)化。
一是共識(shí)算法,正在由低頻低效向高頻高效轉(zhuǎn)變;
二是治理方式,從鏈上處理到鏈上鏈下協(xié)同;
三是服務(wù)分片,由全員周知到范圍通知;
四是組織架構(gòu),從單一鏈條到多鏈組合。
究竟聯(lián)盟鏈的優(yōu)勢(shì)在哪里,該企業(yè)或組織該如何挑選適合自己商業(yè)模式的區(qū)塊鏈開發(fā)方式,接下來進(jìn)行比較。
公、私有區(qū)塊鏈有共同之處?
首先,兩者都是分散的對(duì)等網(wǎng)絡(luò),其中每個(gè)參與者都負(fù)責(zé)維護(hù)數(shù)字簽名交易的共享,并在每個(gè)節(jié)點(diǎn)附加分類帳的副本,而兩者都通過稱為共識(shí)的協(xié)議保持副本同步。
即使某些參與者懷有惡意,兩者都對(duì)帳本的不可改變性提供了一定程度上的保證。
也就是說,從區(qū)塊鏈本身架構(gòu)和主要屬性的角度提供了,我們?cè)跓o論公、私區(qū)塊鏈或其他公共分佈式帳本平臺(tái)下理解的特點(diǎn)與內(nèi)容(如去信任、不可篡改、去除中介、效率提升,只是規(guī)模上的不同)。
不過這也導(dǎo)致了一個(gè)有趣的問題,即:是什么特性把他們區(qū)別開來。
簡(jiǎn)單提出一個(gè)答案,區(qū)別主要在于誰被允許參與網(wǎng)絡(luò)、執(zhí)行共識(shí)協(xié)議和維護(hù)共享分類帳。這樣的解釋是部分正確的,但除了要求認(rèn)證和授權(quán)訪問區(qū)塊鏈之外,還要了解私有分佈式分類帳平臺(tái)的潛力。
因此,要區(qū)別鏈的公私有性,簡(jiǎn)單理解的話就是內(nèi)部參與節(jié)點(diǎn)與外部觀察者的訪問權(quán)限區(qū)分。但這樣去區(qū)分會(huì)出現(xiàn)的問題是,實(shí)際上鏈的治理與參與者的能見透明度,該怎么去制定會(huì)根據(jù)采用者的需求不同而有所權(quán)衡,實(shí)際上的影響這個(gè)平衡因素則在文章后半會(huì)提出。
企業(yè)的需求
在討論如何選擇區(qū)塊鏈之前,必須先讓我們先從典型的企業(yè)客戶需求開始。
保密性(Confidentiality)
保密性是確保只有參與特定交易的實(shí)體才具有該部分的知識(shí)和訪問權(quán)限的特性。一個(gè)企業(yè)中,在潛在競(jìng)爭(zhēng)者參與的聯(lián)盟網(wǎng)絡(luò)中,必須在同伴之間啟用區(qū)塊鏈通道,而這些通道對(duì)于聯(lián)盟的所有成員都不可見。使用密碼學(xué)或零知識(shí)證明(zero-knowledge-proof)方案可以在參與節(jié)點(diǎn)彼此之間保持?jǐn)?shù)據(jù)機(jī)密性。只需了解聯(lián)盟中同行之間需要透明的交易。在許多區(qū)塊鏈平臺(tái)上實(shí)現(xiàn)此要求非常困難,因?yàn)樗鼈兌鄶?shù)已經(jīng)寫定了交易執(zhí)行架構(gòu),其中網(wǎng)絡(luò)的每個(gè)成員在網(wǎng)絡(luò)的區(qū)塊中執(zhí)行交易以同步其狀態(tài)。一些私有和許可制區(qū)塊鏈解決方案(如Hyperledger)可以實(shí)現(xiàn)利用不同架構(gòu)(執(zhí)行順序驗(yàn)證)的機(jī)密性、以內(nèi)建本地端支持創(chuàng)建私有通道,并在共享區(qū)塊鏈基礎(chǔ)架構(gòu)上。
吞吐量(through-put)
吞吐量是按時(shí)間段處理的交易數(shù)量的度量標(biāo)準(zhǔn)。在區(qū)塊鏈結(jié)構(gòu)中是每秒寫入到區(qū)塊鏈上的速度。目前運(yùn)行在關(guān)聯(lián)數(shù)據(jù)庫或分佈式數(shù)據(jù)庫構(gòu)建的解決方案,已經(jīng)可以實(shí)現(xiàn)每秒數(shù)萬個(gè)事務(wù)(交易)的吞吐量(Visa的TPS:22000),而區(qū)塊鏈有較多的節(jié)點(diǎn)需要同步勢(shì)必會(huì)妥協(xié)到效率的表現(xiàn)。但有些人可能會(huì)認(rèn)為,倘若能建立信任、不變性等相比,較低的性能是可被妥協(xié)的在這方面,具有私有性質(zhì)的大多數(shù)公有區(qū)塊鏈都處于完全不同的境界。與大多數(shù)公有區(qū)塊鏈相比,私人區(qū)塊鏈提供了數(shù)量級(jí)更高的吞吐量,因?yàn)樗麄兊墓沧R(shí)設(shè)計(jì)不必包括對(duì)礦工的激勵(lì)(Incentives),且區(qū)塊鏈上成員的身份是已知的,激勵(lì)因此可能喪失可信度,私鏈的可擴(kuò)展性側(cè)重于吞吐量而不是節(jié)點(diǎn)數(shù)量。
終局性(finality)
在區(qū)塊鏈結(jié)構(gòu)中,終局性指的是對(duì)所有的塊一旦被提交到區(qū)塊鏈就不會(huì)被撤銷的結(jié)構(gòu)完整的確定性難度。當(dāng)用戶進(jìn)行交易時(shí),他們希望在交易完成后確信交易不能隨意更改或撤消。
終局性決定了企業(yè)必須等待多長(zhǎng)時(shí)間才能得到保證的結(jié)果,因?yàn)橛脜^(qū)塊鏈寫的交易是不可逆轉(zhuǎn)的,或企業(yè)提交的事務(wù)不會(huì)成為孤兒塊(orphaned block)。
這也是商業(yè)的重要考量標(biāo)準(zhǔn)。像許多業(yè)務(wù)流程一樣,如果區(qū)塊鏈網(wǎng)絡(luò)需要跟傳統(tǒng)業(yè)務(wù)流仇等待一個(gè)小時(shí)。大多數(shù)公共區(qū)塊鏈?zhǔn)褂没陔S機(jī)的的算法來選擇節(jié)點(diǎn)以提出新塊,這將會(huì)十分耗時(shí)。
因此,大多數(shù)私有區(qū)塊鏈都采用基于投票的共識(shí)算法。當(dāng)大多數(shù)節(jié)點(diǎn)投票時(shí),該塊就可以被最終確定。在公鏈上,由于共識(shí)需要更多的信息交換,它幾乎直接的限制了終局?jǐn)U展性。對(duì)于私有區(qū)塊鏈而言,這通常不是一個(gè)大問題,因?yàn)榕c一般公有鏈環(huán)境相比,參與者數(shù)量低了幾個(gè)數(shù)量級(jí),并且部署在具有低延遲和保證吞吐量的WAN中。
聯(lián)盟鏈介紹–以Hyperledger為例
Hyperledger(超級(jí)帳本)是一個(gè)旨在推動(dòng)區(qū)塊鏈跨行業(yè)應(yīng)用的開源項(xiàng)目,由Linux基金會(huì)在2015年12月主導(dǎo)發(fā)起該項(xiàng)目,成員包括金融,銀行,物聯(lián)網(wǎng),供應(yīng)鏈,制造和科技行業(yè)的領(lǐng)頭羊。
基本上各領(lǐng)域世界知名的企業(yè)或區(qū)塊鏈新創(chuàng)公司都是Hyperledger的成員之一:
區(qū)塊鏈新創(chuàng):ConsenSys,Digital Asset,R3,Onchain
知名科技公司:Cisco,F(xiàn)ujitsu,Hitachi,IBM,Intel,NEC,NTT DATA,Red Hat,VMware)
知名金融企業(yè):ABN AMRO,ANZ Bank,BNY Mellon,CLS Group,CME Group,the Depository Trust&Clearing Corporation(DTCC)
Linux基金會(huì)的超級(jí)賬本項(xiàng)目,希望創(chuàng)建一個(gè)軟體開發(fā)人員和公司社區(qū)會(huì)面和協(xié)調(diào)的環(huán)境,以構(gòu)建區(qū)塊鏈框架。它是一個(gè)基礎(chǔ)設(shè)施,通常采用Hyperledger進(jìn)行聯(lián)盟或私有鏈開發(fā)的相關(guān)項(xiàng)目,都是無幣的、產(chǎn)業(yè)級(jí)的應(yīng)用。
HyperLedger Fabric是什么?
Linux基金會(huì)在2015年創(chuàng)立了HyperLedger Fabric是一個(gè)許可制(Permissioned)的區(qū)塊鏈架構(gòu)(blockchain infrastructure)。其由IBM和Digital Asset最初貢獻(xiàn)給Hyperledger項(xiàng)目。
以推進(jìn)跨行業(yè)的區(qū)塊鏈技術(shù)(www.macblock.io)為目標(biāo),F(xiàn)abric并沒有制定單一的區(qū)塊鏈標(biāo)準(zhǔn),而是鼓勵(lì)一種合作的方式,通過社區(qū)開源的方式開發(fā)區(qū)塊鏈技術(shù),并隨著時(shí)間的推移采用關(guān)鍵標(biāo)準(zhǔn)。
HyperLedger Fabric是HyperLedger上的區(qū)塊鏈項(xiàng)目之一,就如同其它區(qū)塊鏈技術(shù)一樣,它有一個(gè)賬本,使用智能合約,并且是一個(gè)由參與者管理他們的交易的系統(tǒng)。
HyperLedger Fabric組織的成員必須通過註冊(cè)才能訪問,因此是私有的許可制聯(lián)盟鏈。可以通過一個(gè)Membership Service Provider(MSP,即成員服務(wù)提供者)來註冊(cè)。
HyperLedger Fabric還提供了幾個(gè)可插拔的組件。賬本數(shù)據(jù)可以以多種格式存儲(chǔ),一致的機(jī)制可以被轉(zhuǎn)換和輸出,并且支持不同的MSPs。
HyperLedger Fabric也提供了創(chuàng)建通道(channel)的能力,允許一組參與者創(chuàng)建一個(gè)單獨(dú)的共同維護(hù)的交易賬本。對(duì)于有些參與者可能是競(jìng)爭(zhēng)對(duì)手的網(wǎng)絡(luò)來説,這是一個(gè)特別重要的選擇,他們不希望自己的每筆交易都能被透明。舉個(gè)簡(jiǎn)單的例子,某間聯(lián)盟鏈里的參與者只想向其中一間公司提供交易資訊,他們的價(jià)格不愿被其他成員看見。
共享帳本
HyperLedger Fabric底下有分出兩大子系統(tǒng),包括:世界狀態(tài)(world state)和事務(wù)日志(transaction log)。
每個(gè)參與者都有一份帳本的副本到他們所屬的每一個(gè)HyperLedger Fabric的網(wǎng)絡(luò)上。
首先,世界狀態(tài)(world state)組件描述了總帳的狀態(tài),它是總帳本的數(shù)據(jù)庫。
世界狀態(tài)使程序可以輕松獲取目前帳本狀態(tài)的當(dāng)前值,而不必通過遍覽整個(gè)事務(wù)日志來計(jì)算它們。默認(rèn)情況下,Ledger狀態(tài)表示為Key-Value對(duì),Hyperledger Fabric在這方面提供了一定程度靈活性:世界狀態(tài)可以經(jīng)常變化,因?yàn)榭梢詣?chuàng)建、更新和刪除狀態(tài)。
其次,有一個(gè)區(qū)塊鏈,一個(gè)記錄決定世界狀態(tài)的所有變化的事務(wù)日志。事務(wù)在塊附加到區(qū)塊鏈中的塊內(nèi)收集,使您能夠了解是什么事務(wù)(交易)導(dǎo)致當(dāng)前世界狀態(tài)的更改歷史記錄。區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)與世界狀態(tài)非常不同,因?yàn)橐坏┚帉懀蜔o法修改。它是一個(gè)不可變的塊序列,每個(gè)塊都包含一組有序事務(wù)。
智能合約
HyperLedger Fabric的智能契約是用Chaincode編寫的,并且當(dāng)應(yīng)用進(jìn)程需要與帳本進(jìn)行交互時(shí),被應(yīng)用進(jìn)程外部的應(yīng)用進(jìn)程調(diào)用。在大多數(shù)情況下,Chaincode只與總帳的數(shù)據(jù)庫組件交互,例如世界狀態(tài)(查詢它),而不會(huì)與事務(wù)日志互動(dòng)。
Chaincode可以用幾種編程語言實(shí)現(xiàn),目前支持的chaincode編寫的是GO語言,在今后的發(fā)行版中將會(huì)逐步添加Java和其它語言的支持。
隱私
根據(jù)網(wǎng)絡(luò)的需要,企業(yè)對(duì)企業(yè)(B2B)網(wǎng)絡(luò)的參與者可能對(duì)他們所共享的信息非常敏感。對(duì)其他網(wǎng)絡(luò)來説,隱私不會(huì)成為首要關(guān)注的問題。
HyperLedger Fabric支持需要將隱私(使用信道)作為關(guān)鍵操作需求的網(wǎng)絡(luò),同時(shí)也是相對(duì)開放的網(wǎng)絡(luò)。
共識(shí)
事務(wù)必須按照它們發(fā)生的順序?qū)懺趲け旧希词顾鼈兛赡苁蔷W(wǎng)絡(luò)中不同的參與者生成的。要做到這一點(diǎn),必須創(chuàng)建事務(wù)的順序,并且必須在帳本中創(chuàng)建一種拒絕錯(cuò)誤事務(wù)(或惡意的)的方法。
共識(shí)機(jī)制是一個(gè)經(jīng)過徹底研究的計(jì)算機(jī)科學(xué)領(lǐng)域,目前有很多方法可以實(shí)現(xiàn)它,每一個(gè)都有不同的權(quán)衡。例如,PBFT(拜占庭式容錯(cuò))可以為文檔副本提供一種機(jī)制,使其能夠相互通訊,進(jìn)而保持每個(gè)副本的一致性,即使是在出現(xiàn)「節(jié)點(diǎn)腐敗」的情況下。
或者,在比特幣中,PoW(Proof-of-work)是通過一個(gè)名為「挖礦」的過程來實(shí)現(xiàn)的,在這個(gè)過程中,競(jìng)爭(zhēng)的計(jì)算機(jī)競(jìng)爭(zhēng)解決一個(gè)加密難題,該難題定義了所有流程隨后構(gòu)建的順序。
HyperLedger Fabric的設(shè)計(jì)使得網(wǎng)絡(luò)啟動(dòng)者可以自行選擇一種最能代表參與者之間關(guān)系的共識(shí)機(jī)制。就像隱私一樣,需要有一系列的需求;從人際關(guān)系高度結(jié)構(gòu)化的網(wǎng)絡(luò)到更加對(duì)等的網(wǎng)絡(luò)。
關(guān)于HyperLedger Fabric共識(shí)機(jī)制,它目前包括SOLO和Kafka,并將很快擴(kuò)展到SBFT(簡(jiǎn)化的拜占庭式容錯(cuò))。
企業(yè)該選那種鏈?
總而言之,注重隱私則可通過設(shè)定參與者(節(jié)點(diǎn))的權(quán)限是否須經(jīng)認(rèn)證:許可制(Permissioned)以及非許可制、開放式(Permissionless),區(qū)塊鏈的透明程度、以及加入是否向公眾開放:以公、私有鏈去區(qū)分。介于公、私鏈之間,則是聯(lián)盟鏈。
評(píng)論