區塊鏈一開始問世是以比特幣之姿,公開透明、公平競爭。隨後世界開始探索如何把區塊鏈用在各種場景,許多人就想到,也許不需要全世界人的參與,也不需要挖礦,我們只需要用到區塊鏈去信任、可追溯的特性,透過較少節點達到拜占庭將軍容錯,於是私有鏈就誕生了。
但私有鏈仍是中心化,難以維持去中心化的優勢:共識決。因此又有了為企業體聯盟而生的聯盟鏈(consortium blockchain)。
公有鏈
公有鏈向全世界任何人公開,所有人都可訪問,發送、接收、認證交易。所有人都能參與其中共識過程的區塊鏈——共識過程決定哪個區塊可被添加到區塊鏈中,也因此公有鏈「通常」被認為是完全去中心化的。
- 特色:不可篡改,匿名公開,技術門檻低,是真正的去中心化。每個參與者可以看到所有的帳戶餘額和其所有的交易活動。
- 缺點:分散式治理仰賴共識決,更新迭代慢、自行開發的話,目前技術發展框架,初期建置成本高昂。若企業直接採用公有鏈,則會受限於擴容問題、以及企業需求無法滿足(通常會以側鏈妥協,但側鏈則容易陷入中心化疑慮)。
- 舉例:比特幣、以太坊。
私有鏈
私有鏈是完全私有的區塊鏈,指寫入權限僅限於在一個組織手裡的區塊鏈。讀取權限或者對外開放,或者被一定程度地進行了限制。整個網絡由成員機構共同維護,網絡接入一般通過成員機構的網關節點接入,共識過程由預先選好的節點控制。這類區塊鏈被認為是「部分去中心化」。
- 特點:交易速度快,保護隱私,交易成本極低;仍保有不可篡改性。
- 缺點:由於完全中心化的特性,私有鏈是的代幣(若有發行的話)價格是可以被操作的,代碼也是可以修改的,集中風險較大。
- 在近年因為企業對區塊鏈的探索與需求,發展出了在這兩種區塊鏈的混合,有一種區塊鏈稱為聯盟鏈,保有私有鏈的隱私性,又能維持多節點共識治理的特性。
聯盟聯
聯盟鏈適合於機構間的交易、結算或清算等 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進行聯盟或私有鏈開發的相關項目,都是無幣的、產業級的應用。
「由於我們不發行一個貨幣,我們避免了維持一個全球一致貨幣體系的很多政治挑戰。」 超級賬本執行董事Brian Behlendorf表示。
HyperLedger Fabric是什麼?
Linux基金會在2015年創立了HyperLedger Fabric是一個許可制(Permissioned)的區塊鏈架構(blockchain infrastructure)。其由IBM和Digital Asset最初貢獻給Hyperledger項目。
以推進跨行業的區塊鏈技術為目標,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 帳本與區塊鏈的架構圖 –
智能合約
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),鏈的透明程度、以及加入可否是否向公眾開放則是以公、私有鏈去區分。介於公、私鏈之間,為因應企業合盟的需求定義出了聯盟鏈。
目前有四種常見的建構鏈的方式,下圖以信任是否建立、依賴與參與網絡的節點本身的公信力為橫軸,縱軸則是結點能否保持匿名的程度來定量。例如:左上的示例為比特幣的區塊鏈、右上則可能是未來的以太坊(非許可制)、左下則為Hyperledger Fabric、右下可能是未來會出現符合企業需求客製出的私有鏈(如:J.P. Morgans的Quorom),企業可以以自己的需求去選擇自己該往以下四種中的那一種方向去開發、導入:
參考資料:
- https://hackernoon.com/blockchain-architecture-analysis-private-vs-public-vs-consortium-65eb061b907b
- https://www.hyperledger.org/members
- https://hk.saowen.com/a/53d4367bda2f9cb60e02e5d7c70624a7ac38b596985da84e9d043af75b967f3e
- https://medium.com/@lkolisko/in-depth-on-differences-between-public-private-and-permissioned-blockchains-aff762f0ca24
- https://hyperledgercn.github.io/hyperledgerDocs/blockchain_zh/
- https://zh.wikipedia.org/wiki/%E8%B6%85%E7%BA%A7%E8%B4%A6%E6%9C%AC
- https://hyperledger-fabric.readthedocs.io/en/release-1.3/ledger/ledger.html
?相關報導?
金融聯盟鏈R3 Corda推出 dApp「Corda Settler」,並以瑞波幣作為第一個支付貨幣
摩根大通以太坊項目Quorum持續突破,「引領金融區塊鏈發展」
《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!