天天看點

企業應該選擇哪種區塊鍊

随着探索如何把區塊鍊應用在各種場景,許多人就想到,也許不需要全世界的人共同參與,也不需要挖礦,我們隻需要用到區塊鍊的可信任、可追溯特性,通過較少節點達到拜占庭将軍容錯,于是私有鍊就誕生了。但私有鍊仍是中心化的,難以維持去中心化的優勢。是以又有了為企業聯盟而生的聯盟鍊(consortium blockchain)。

公有鍊vs聯盟鍊vs私有鍊

公有鍊

公有鍊向全世界任何人公開,所有人都可通路,發送、接收、認證交易。所有人都能參與其中的區塊鍊——共識過程決定哪個區塊可被添加到區塊鍊中,也是以公有鍊通常被認為是完全去中心化的。

特點:不可篡改,匿名公開,技術門檻低,是真正的去中心化。每個參與者可以看到所有的帳戶餘額和其所有的交易活動。

缺點:分布式治理仰賴共識決策,更新疊代慢、自行開發的話,目前技術發展架構,初期建設成本高昂。若企業直接采用公有鍊,則會受限于擴容問題、以及企業需求無法滿足(通常會以側鍊妥協,但側鍊則容易引起中心化隐患)。

舉例:以太坊、EOS、MAC多原鍊。

私有鍊

私有鍊是完全私有的區塊鍊,指寫入權限僅限于在一個組織手裡的區塊鍊。讀取權限或者對外開放,或者被一定程度地進行了限制。整個網絡由成員機構共同維護,網絡接入一般通過成員機構的網關節點接入,共識過程由預先選好的節點控制。這類區塊鍊被認為是部分去中心化。

特點:交易速度快,保護隐私,交易成本極低;仍保有不可篡改性。

缺點:由于完全中心化的特性,私有鍊是的代币(若有發行的話)價格是可以被操作的,代碼也是可以修改的,集中風險較大。

在近年因為企業對區塊鍊的探索與需求,發展出了在這兩種區塊鍊的混合,有一種區塊鍊稱為聯盟鍊,保有私有鍊的隐私性,又能維持多節點共識治理的特性。

聯盟聯

聯盟鍊适合于機構間的交易、結算或清算等B2B場景。例如在銀行間進行支付、結算、清算的系統就可以采用聯盟鍊的形式,将各家銀行的網關節點作為記帳節點。

通常情況下,外部觀察者可以查詢,但是不可交易,聯盟鍊是指其共識過程受到預選節點控制的區塊鍊;區塊鍊或許允許每個人都可讀取,區塊的Root Hash及其API(應用程式接口)對外公開,API可允許外界用來作有限次數的查詢和擷取區塊鍊狀态的資訊。這些區塊鍊可視為部分去中心化。

聯盟鍊與私鍊類似,其開放程度和去中心化程度是有所限制的,其讀寫權、記帳權由組織決定。與私有鍊最大的不同在于,聯盟鍊是為一個聯盟,比如一個行業服務的;而私鍊則是為一個組織,比如一家公司内部服務。

區塊鍊目前正在四個方面進行技術性的優化。

一是共識算法,正在由低頻低效向高頻高效轉變;

二是治理方式,從鍊上處理到鍊上鍊下協同;

三是服務分片,由全員周知到範圍通知;

四是組織架構,從單一鍊條到多鍊組合。

究竟聯盟鍊的優勢在哪裡,該企業或組織該如何挑選适合自己商業模式的區塊鍊開發方式,接下來進行比較。

公、私有區塊鍊有共同之處?

首先,兩者都是分散的對等網絡,其中每個參與者都負責維護數字簽名交易的共享,并在每個節點附加分類帳的副本,而兩者都通過稱為共識的協定保持副本同步。

即使某些參與者懷有惡意,兩者都對帳本的不可改變性提供了一定程度上的保證。

也就是說,從區塊鍊本身架構和主要屬性的角度提供了,我們在無論公、私區塊鍊或其他公共分佈式帳本平台下了解的特點與内容(如去信任、不可篡改、去除中介、效率提升,隻是規模上的不同)。

不過這也導緻了一個有趣的問題,即:是什麼特性把他們差別開來。

簡單提出一個答案,差別主要在于誰被允許參與網絡、執行共識協定和維護共享分類帳。這樣的解釋是部分正确的,但除了要求認證和授權通路區塊鍊之外,還要了解私有分佈式分類帳平台的潛力。

是以,要差別鍊的公私有性,簡單了解的話就是内部參與節點與外部觀察者的通路權限區分。但這樣去區分會出現的問題是,實際上鍊的治理與參與者的能見透明度,該怎麼去制定會根據采用者的需求不同而有所權衡,實際上的影響這個平衡因素則在文章後半會提出。

企業的需求

在讨論如何選擇區塊鍊之前,必須先讓我們先從典型的企業客戶需求開始。

保密性(Confidentiality)

保密性是確定隻有參與特定交易的實體才具有該部分的知識和通路權限的特性。一個企業中,在潛在競争者參與的聯盟網絡中,必須在同伴之間啟用區塊鍊通道,而這些通道對于聯盟的所有成員都不可見。使用密碼學或零知識證明(zero-knowledge-proof)方案可以在參與節點彼此之間保持資料機密性。隻需了解聯盟中同行之間需要透明的交易。在許多區塊鍊平台上實作此要求非常困難,因為它們多數已經寫定了交易執行架構,其中網絡的每個成員在網絡的區塊中執行交易以同步其狀态。一些私有和許可制區塊鍊解決方案(如Hyperledger)可以實作利用不同架構(執行順序驗證)的機密性、以内建本地端支援建立私有通道,并在共享區塊鍊基礎架構上。

吞吐量(through-put)

吞吐量是按時間段處理的交易數量的度量标準。在區塊鍊結構中是每秒寫入到區塊鍊上的速度。目前運作在關聯資料庫或分佈式資料庫建構的解決方案,已經可以實作每秒數萬個事務(交易)的吞吐量(Visa的TPS:22000),而區塊鍊有較多的節點需要同步勢必會妥協到效率的表現。但有些人可能會認為,倘若能建立信任、不變性等相比,較低的性能是可被妥協的在這方面,具有私有性質的大多數公有區塊鍊都處于完全不同的境界。與大多數公有區塊鍊相比,私人區塊鍊提供了數量級更高的吞吐量,因為他們的共識設計不必包括對礦工的激勵(Incentives),且區塊鍊上成員的身份是已知的,激勵是以可能喪失可信度,私鍊的可擴充性側重于吞吐量而不是節點數量。

終局性(finality)

在區塊鍊結構中,終局性指的是對所有的塊一旦被送出到區塊鍊就不會被撤銷的結構完整的确定性難度。當使用者進行交易時,他們希望在交易完成後确信交易不能随意更改或撤消。

終局性決定了企業必須等待多長時間才能得到保證的結果,因為用區塊鍊寫的交易是不可逆轉的,或企業送出的事務不會成為孤兒塊(orphaned block)。

這也是商業的重要考量标準。像許多業務流程一樣,如果區塊鍊網絡需要跟傳統業務流仇等待一個小時。大多數公共區塊鍊使用基于随機的的算法來選擇節點以提出新塊,這将會十分耗時。

是以,大多數私有區塊鍊都采用基于投票的共識算法。當大多數節點投票時,該塊就可以被最終确定。在公鍊上,由于共識需要更多的資訊交換,它幾乎直接的限制了終局擴充性。對于私有區塊鍊而言,這通常不是一個大問題,因為與一般公有鍊環境相比,參與者數量低了幾個數量級,并且部署在具有低延遲和保證吞吐量的WAN中。

聯盟鍊介紹–以Hyperledger為例

Hyperledger(超級帳本)是一個旨在推動區塊鍊跨行業應用的開源項目,由Linux基金會在2015年12月主導發起該項目,成員包括金融,銀行,物聯網,供應鍊,制造和科技行業的領頭羊。

基本上各領域世界知名的企業或區塊鍊新創公司都是Hyperledger的成員之一:

區塊鍊新創:ConsenSys,Digital Asset,R3,Onchain

知名科技公司:Cisco,Fujitsu,Hitachi,IBM,Intel,NEC,NTT DATA,Red Hat,VMware)

知名金融企業:ABN AMRO,ANZ Bank,BNY Mellon,CLS Group,CME Group,the Depository Trust&Clearing Corporation(DTCC)

Linux基金會的超級賬本項目,希望建立一個軟體開發人員和公司社群會面和協調的環境,以建構區塊鍊架構。它是一個基礎設施,通常采用Hyperledger進行聯盟或私有鍊開發的相關項目,都是無币的、産業級的應用。

HyperLedger Fabric是什麼?

Linux基金會在2015年創立了HyperLedger Fabric是一個許可制(Permissioned)的區塊鍊架構(blockchain infrastructure)。其由IBM和Digital Asset最初貢獻給Hyperledger項目。

以推進跨行業的區塊鍊技術(www.macblock.io)為目标,Fabric并沒有制定單一的區塊鍊标準,而是鼓勵一種合作的方式,通過社群開源的方式開發區塊鍊技術,并随着時間的推移采用關鍵标準。

HyperLedger Fabric是HyperLedger上的區塊鍊項目之一,就如同其它區塊鍊技術一樣,它有一個賬本,使用智能合約,并且是一個由參與者管理他們的交易的系統。

HyperLedger Fabric組織的成員必須通過註冊才能通路,是以是私有的許可制聯盟鍊。可以通過一個Membership Service Provider(MSP,即成員服務提供者)來註冊。

HyperLedger Fabric還提供了幾個可插拔的元件。賬本資料可以以多種格式存儲,一緻的機制可以被轉換和輸出,并且支援不同的MSPs。

HyperLedger Fabric也提供了建立通道(channel)的能力,允許一組參與者建立一個單獨的共同維護的交易賬本。對于有些參與者可能是競争對手的網絡來説,這是一個特别重要的選擇,他們不希望自己的每筆交易都能被透明。舉個簡單的例子,某間聯盟鍊裡的參與者隻想向其中一間公司提供交易資訊,他們的價格不願被其他成員看見。

共享帳本

HyperLedger Fabric底下有分出兩大子系統,包括:世界狀态(world state)和事務日志(transaction log)。

每個參與者都有一份帳本的副本到他們所屬的每一個HyperLedger Fabric的網絡上。

首先,世界狀态(world state)元件描述了總帳的狀态,它是總帳本的資料庫。

世界狀态使程式可以輕松擷取目前帳本狀态的目前值,而不必通過遍覽整個事務日志來計算它們。預設情況下,Ledger狀态表示為Key-Value對,Hyperledger Fabric在這方面提供了一定程度靈活性:世界狀态可以經常變化,因為可以建立、更新和删除狀态。

其次,有一個區塊鍊,一個記錄決定世界狀态的所有變化的事務日志。事務在塊附加到區塊鍊中的塊内收集,使您能夠了解是什麼事務(交易)導緻目前世界狀态的更改曆史記錄。區塊鍊資料結構與世界狀态非常不同,因為一旦編寫,就無法修改。它是一個不可變的塊序列,每個塊都包含一組有序事務。

智能合約

HyperLedger Fabric的智能契約是用Chaincode編寫的,并且當應用程序需要與帳本進行互動時,被應用程序外部的應用程序調用。在大多數情況下,Chaincode隻與總帳的資料庫元件互動,例如世界狀态(查詢它),而不會與事務日志互動。

Chaincode可以用幾種程式設計語言實作,目前支援的chaincode編寫的是GO語言,在今後的發行版中将會逐漸添加Java和其它語言的支援。

隐私

根據網絡的需要,企業對企業(B2B)網絡的參與者可能對他們所共享的資訊非常敏感。對其他網絡來説,隐私不會成為首要關注的問題。

HyperLedger Fabric支援需要将隐私(使用信道)作為關鍵操作需求的網絡,同時也是相對開放的網絡。

共識

事務必須按照它們發生的順序寫在帳本上,即使它們可能是網絡中不同的參與者生成的。要做到這一點,必須建立事務的順序,并且必須在帳本中建立一種拒絕錯誤事務(或惡意的)的方法。

共識機制是一個經過徹底研究的計算機科學領域,目前有很多方法可以實作它,每一個都有不同的權衡。例如,PBFT(拜占庭式容錯)可以為文檔副本提供一種機制,使其能夠互相通訊,進而保持每個副本的一緻性,即使是在出現「節點腐敗」的情況下。

或者,在比特币中,PoW(Proof-of-work)是通過一個名為「挖礦」的過程來實作的,在這個過程中,競争的計算機競争解決一個加密難題,該難題定義了所有流程随後建構的順序。

HyperLedger Fabric的設計使得網絡啟動者可以自行選擇一種最能代表參與者之間關系的共識機制。就像隐私一樣,需要有一系列的需求;從人際關系高度結構化的網絡到更加對等的網絡。

關于HyperLedger Fabric共識機制,它目前包括SOLO和Kafka,并将很快擴充到SBFT(簡化的拜占庭式容錯)。

企業該選那種鍊?

總而言之,注重隐私則可通過設定參與者(節點)的權限是否須經認證:許可制(Permissioned)以及非許可制、開放式(Permissionless),區塊鍊的透明程度、以及加入是否向公衆開放:以公、私有鍊去區分。介于公、私鍊之間,則是聯盟鍊。