區塊鏈一開始問世是以比特幣之姿,公開透明、公平競爭。隨後世界開始探索如何把區塊鏈用在各種場景,許多人就想到,也許不需要全世界人的參與,也不需要挖礦,我們只需要用到區塊鏈去信任、可追溯的特性,透過較少節點達到拜占庭將軍容錯,於是私有鏈就誕生了。但私有鏈仍是中心化,難以維持去中心化的優勢:共識決。因此又有了為企業體聯盟而生的聯盟鏈(consortium blockchain)。公有鏈公有鏈向全世界任何人公開,所有人都可訪問,傳送、接收、認證交易。所有人都能參與其中共識過程的區塊鏈——共識過程決定哪個區塊可被新增到區塊鏈中,也因此公有鏈「通常」被認為是完全去中心化的。· 特色:不可篡改,匿名公開,技術門檻低,是真正的去中心化。每個參與者可以看到所有的帳戶餘額和其所有的交易活動。· 缺點:分散式治理仰賴共識決,更新迭代慢、自行開發的話,目前技術發展框架,初期建置成本高昂。若企業直接採用公有鏈,則會受限於擴容問題、以及企業需求無法滿足(通常會以側鏈妥協,但側鏈則容易陷入中心化疑慮)。· 舉例:比特幣、以太坊。私有鏈私有鏈是完全私有的區塊鏈,指寫入許可權僅限於在一個組織手裡的區塊鏈。讀取許可權或者對外開放,或者被一定程度地進行了限制。整個網路由成員機構共同維護,網路接入一般透過成員機構的閘道器節點接入,共識過程由預先選好的節點控制。這類區塊鏈被認為是「部分去中心化」。· 特點:交易速度快,保護隱私,交易成本極低;仍保有不可篡改性。· 缺點:由於完全中心化的特性,私有鏈是的代幣(若有發行的話)價格是可以被操作的,程式碼也是可以修改的,集中風險較大。· 在近年因為企業對區塊鏈的探索與需求,發展出了在這兩種區塊鏈的混合,有一種區塊鏈稱為聯盟鏈,保有私有鏈的隱私性,又能維持多節點共識治理的特性。聯盟聯聯盟鏈適合於機構間的交易、結算或清算等B2B 場景。例如在銀行間進行支付、結算、清算的系統就可以採用聯盟鏈的形式,將各家銀行的閘道器節點作為記帳節點。通常情況下,外部觀察者可以查詢,但是不可交易,聯盟鏈是指其共識過程受到預選節點控制的區塊鏈;區塊鏈或許允許每個人都可讀取,區塊的Root Hash及其API (應用程式介面)對外公開,API可允許外界用來作有限次數的查詢和獲取區塊鏈狀態的資訊。這些區塊鏈可視為「部分去中心化」。聯盟鏈與私鏈類似,其開放程度和去中心化程度是有所限制的,其讀寫權、記帳權由組織決定。與私有鏈最大的不同在於,聯盟鏈是為一個聯盟,比如一個行業服務的;而私鏈則是為一個組織,比如一家公司內部服務。區塊鏈目前正在四個方面進行技術性的最佳化。一是共識演算法,正在由低頻低效向高頻高效轉變;二是治理方式,從鏈上處理到鏈上鍊下協同;三是服務分片,由全員周知到範圍通知;四是組織架構,從單一鏈條到多鏈組合。究竟聯盟鏈的優勢在哪裡,該企業或組織該如何挑選適合自己商業模式的區塊鏈開發方式,接下來進行比較。公、私有區塊鏈有共同之處?首先,兩者都是分散的「對等」網路,其中「每個參與者」都負責維護數字簽名交易的共享,並在每個節點附加分類帳的副本,而兩者都透過稱為共識的協議保持副本同步。即使某些參與者懷有惡意,兩者都對帳本的不可改變性提供了一定程度上的保證。也就是說,從區塊鏈本身架構和主要屬性的角度提供了,我們在無論公、私區塊鏈或其他公共分散式帳本平臺下理解的特點與內容(如去信任、不可篡改、去除中介、效率提升,只是規模上的不同)。不過這也導致了一個有趣的問題,即:是什麼特性把他們區別開來。簡單提出一個答案,區別主要在於誰被允許參與網路、執行共識協議和維護共享分類帳。這樣的解釋是部分正確的,但除了要求認證和授權訪問區塊鏈之外,還要了解私有分散式分類帳平臺的潛力。因此,要區別鏈的公私有性,簡單理解的話就是內部參與節點與外部觀察者的訪問許可權區分。但這樣去區分會出現的問題是,實際上鍊的治理與參與者的能見透明度,該怎麼去制定會根據採用者的需求不同而有所權衡,實際上的影響這個平衡因素則在文章後半會提出。企業的需求本篇文章後段會分析企業該如何選擇適合自己的鏈種。在討論鏈之前,必須先讓我們先從典型的企業客戶需求開始。1. 保密性(Confidentiality)保密性是確保只有參與特定交易的實體才具有該部分的知識和訪問許可權的特性。一個企業中,在潛在競爭者參與的聯盟網路中,必須在同伴之間啟用區塊鏈通道,而這些通道對於聯盟的所有成員都不可見。使用密碼學或零知識證明(zero-knowledge-proof)方案可以在參與節點彼此之間保持資料機密性。只需瞭解聯盟中同行之間需要透明的交易。在許多區塊鏈平臺上實現此要求非常困難,因為它們多數已經寫定了交易執行架構,其中網路的每個成員在網路的區塊中執行交易以同步其狀態。一些私有和許可制區塊鏈解決方案(如Hyperledger)可以實現利用不同架構(執行順序驗證)的機密性、以內建本地端支援建立私有通道,並在共享區塊鏈基礎架構上。2. 吞吐量(through-put)吞吐量是按時間段處理的交易數量的度量標準。在區塊鏈結構中是每秒寫入到區塊鏈上的速度。目前執行在關聯資料庫或分散式資料庫構建的解決方案,已經可以實現每秒數萬個事務(交易)的吞吐量(Visa的TPS:22000),而區塊鏈有較多的節點需要同步勢必會妥協到效率的表現。但有些人可能會認為,倘若能建立信任、不變性等相比,較低的效能是可被妥協的在這方面,具有私有性質的大多數公有區塊鏈都處於完全不同的境界。與大多數公有區塊鏈相比,私人區塊鏈提供了數量級更高的吞吐量,因為他們的共識設計不必包括對礦工的激勵(Incentives),且區塊鏈上成員的身份是已知的,激勵因此可能喪失可信度,私鏈的可擴充套件性側重於吞吐量而不是節點數量。3. 終局性(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專案。以推進跨行業的區塊鏈技術為目標,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),鏈的透明程度、以及加入可否是否向公眾開放則是以公、私有鏈去區分。介於公、私鏈之間,為因應企業合盟的需求定義出了聯盟鏈。
目前有四種常見的建構鏈的方式,下圖以信任是否建立、依賴與參與網路的節點本身的公信力為橫軸,縱軸則是結點能否保持匿名的程度來定量。例如:左上的示例為比特幣的區塊鏈、右上則可能是未來的以太坊(非許可制)、左下則為Hyperledger Fabric、右下可能是未來會出現符合企業需求客製出的私有鏈(如:JP Morgans的Quorom),企業可以以自己的需求去選擇自己該往以下四種中的那一種方向去開發、匯入:
更多區塊鏈資訊:www.qukuaiwang.com.cn/news