一 區(qū)塊鏈
1 區(qū)塊鏈起源
追根溯源是我們學習和認識新事物的重要方法。區(qū)塊鏈技術是從比特幣系統(tǒng)中總結提煉出來的,是比特幣系統(tǒng)的副產物,了解比特幣系統(tǒng)的起源及其設計理念對于我們打開區(qū)塊鏈之門有重要幫助。
貨幣是人類文明史上的一大重要發(fā)明,貨幣的職能包括價值尺度、流通手段、貯藏手段等。很難想象,沒有貨幣現(xiàn)代商業(yè)社會將如何運轉。貨幣的設計、發(fā)行、流通是關系到國計民生的大事。
隨著人類社會的發(fā)展,貨幣經歷了實物、金屬、紙幣等幾種形式的演變,價值交換效率不斷提升。人類進入數字時代以后,貨幣的數字化需求不斷別提出。
貨幣的數字化有兩種形式,一是電子貨幣,也就是法幣的數字化,主要是通過支付、清算等環(huán)節(jié)的電子化,提高效率,不影響貨幣的發(fā)行、存儲等環(huán)節(jié),如支付寶、PayPal等支付工具,都屬于此類。另一種則是數字貨幣,數字貨幣與電子貨幣的最大區(qū)別在于,數字貨幣具有獨立的發(fā)行機制。數字貨幣的發(fā)行、支付等環(huán)節(jié)全程數字化,可以與法幣或其他數字貨幣兌換。Q幣、比特幣、Libra,都屬于數字貨幣。
數字貨幣相對于電子貨幣具有交易成本低、交易流程短、無需第三方支持、較好的匿名性等優(yōu)勢,從上世紀90年代開始,一直是互聯(lián)網領域的熱門課題。安全和公信是任何貨幣被認可和接納的前提,數字貨幣也不例外。由于網絡的開放性、匿名性和數字信息的可復制性,數字貨幣的設計相對于以往任何貨幣的設計面臨更多的挑戰(zhàn)。
數字貨幣前后經歷了幾代演進,比較典型的有e-Cash、HashCash、B-money等,由于設計上的缺陷或技術上的限制,這幾種數字貨幣都幾乎沒有走到實用狀態(tài)。2008年全球金融危機期間中本聰(Satoshi Nakamoto)發(fā)表論文《Bitcoin:A peer-to-peer electroniccash system》(《比特幣:一種點對點的數字貨幣系統(tǒng)》),提出對等網絡中比特幣系統(tǒng)的設計思路。2009年中本聰公布了比特幣系統(tǒng)最初實現(xiàn)代碼。第一個比特幣于2009年1月3日生成。2017年上半年,比特幣價格達到了2000美元以上,比特幣已成為具有全球影響的數字貨幣。
為規(guī)避復制風險及其可能帶來的“雙花”問題,比特幣系統(tǒng)中,并沒有設計代表貨幣的數據塊甚至是編碼,比特幣僅僅是一個貨幣單位。比特幣巧妙地通過分布式賬本記錄每個人已獲得的和支出的貨幣的數量,記錄一個人的財富。也就是說,比特幣系統(tǒng)中不存在傳統(tǒng)意義上的賬戶。同時,分布式賬本存儲也增強了數據的安全性。
為了保證分布式賬本的安全,比特幣系統(tǒng)引入了非對稱加密技術和數字簽名技術,保證了賬本內容的完整性和不可否認性。同時,分布式賬本的“鏈式”結構,完美實現(xiàn)了賬本的可追溯性、可審計性。
另外,比特幣采用PoW(Proof of Work,工作量證明)共識機制解決了記賬權分配與確認,賦予比特幣“民主”特質。同時,比特幣固化的發(fā)行機制也避免了貨幣的濫發(fā)。
以上種種設計理念及技術選擇,讓比特幣在較大的范圍內被信任和接納。從第一個比特幣的誕生到今天,比特幣系統(tǒng)已平穩(wěn)運行了十幾年,事實證明比特幣系統(tǒng)在技術上是可靠的。
比特幣系統(tǒng)的最初設計目的是實現(xiàn)高效的、低成本的貨幣職能,時至今日,盡管炒幣現(xiàn)象火爆,但比特幣的貨幣職能并沒有充分展現(xiàn)。相反,蘊藏于比特幣系統(tǒng)中的區(qū)塊鏈技術及其巨大的商業(yè)價值卻被大家一再推崇。
2 區(qū)塊鏈概念
實際上在中本聰的論文中并沒有提出區(qū)塊鏈的概念或定義,甚至沒有出現(xiàn)過“區(qū)塊鏈”(Blockchain)這個詞,只是出現(xiàn)了“區(qū)塊”(Block)和“鏈”(Chain)。同時,構建比特幣所采用的技術,如對等網絡、非對稱加密、分布式賬本、PoW共識機制等都不是中本聰發(fā)明的,但,正是中本聰的巧妙組合,使比特幣系統(tǒng)具有了分布式、可追溯、不可篡改、集體共識的優(yōu)點。
2014年前后,部分金融機構開始意識到,作為比特幣系統(tǒng)的底層技術——區(qū)塊鏈,集眾多“才華”于一身,是一種極其巧妙的分布式鏈式共享賬本,對金融及其他眾多行業(yè)帶來的潛在影響甚至不亞于復式記賬法的發(fā)明。2014年10月在大英圖書館的一次技術研討會上,區(qū)塊鏈的概念被初步提出,人們對區(qū)塊鏈技術進行了深入探討,并積極展望了區(qū)塊鏈的未來。2015年,區(qū)塊鏈受到了更廣泛的關注,《華爾街日報》刊文稱,區(qū)塊鏈是復式記賬法之后金融領域最重要的技術突破?!督洕鷮W人》雜志在封面《信任的機器》一文中介紹區(qū)塊鏈為創(chuàng)造信任的機器。文章指出,區(qū)塊鏈并非僅僅是一項加密技術或者數字貨幣,在信息不對稱、不確定的環(huán)境下,它還可以建立滿足經濟活動賴以發(fā)生、發(fā)展的“信任”生態(tài)體系。作為比特幣底層技術的“鏈”,其價值遠大于比特幣本身。區(qū)塊鏈可以讓人們在沒有中央權威機構監(jiān)督的情況下,對彼此協(xié)作建立起信心。區(qū)塊鏈是一種共享賬本技術,實現(xiàn)了在分布式商業(yè)網絡里多方參與的雙邊交易中的去中介化。簡單來說,它是一臺創(chuàng)造信任的機器。
比特幣系統(tǒng)中,區(qū)塊鏈僅僅被用來“記賬”。為了拓展區(qū)塊鏈技術應用場景,2016年,著名的區(qū)塊鏈平臺以太坊(Ethereum)首先將“智能合約(Smart Contract)”技術嵌入了區(qū)塊鏈中,使區(qū)塊鏈應用場景的想象空間得以迅速擴大。世界經濟論壇預測,到2025年,世界經濟10%的GDP將產生于區(qū)塊鏈上。
從技術層面上看,區(qū)塊鏈是數學、密碼學、計算機網絡、程序開發(fā)等多種科學技術的組合應用;從功能視角來看,區(qū)塊鏈是提供了一種分布式數據存儲方法,具有不可抵賴、不可篡改、全程留痕、可追溯、集體維護等特點。這些特點保證了區(qū)塊鏈的“誠實”與“透明”,為區(qū)塊鏈創(chuàng)造信任奠定基礎。
技術成熟度一個重要衡量標準是開發(fā)工具,隨著區(qū)塊鏈技術的不斷成熟,開發(fā)工具或平臺開始涌現(xiàn),以太坊和超級賬本(Hyperledger)是其中最為典型的代表。工具的不斷成熟,為區(qū)塊鏈技術走向更廣泛的應用做好了鋪墊。
3 區(qū)塊鏈技術
3.1區(qū)塊鏈技術本質

圖1 區(qū)塊鏈本質
區(qū)塊鏈,本質上是一個由多方共同維護、內容實時同步分布式共享數據庫,也稱為分布式共享賬本(Distributed Shared Ledger)。區(qū)塊鏈是一種與傳統(tǒng)記賬方式不同的記錄技術。傳統(tǒng)記賬方式采用集中式記賬,即由專人負責記錄數據,數據的記錄、修改、刪除往往被某一節(jié)點(或用戶)集中控制,節(jié)點(或用戶)之間難以形成穩(wěn)定的信任關系,如圖1左。區(qū)塊鏈模式下,數據由所有節(jié)點(或用戶)共同維護,每個參與維護的節(jié)點都有記錄新數據的機會,都能實時獲得一份最新數據的完整拷貝,如圖1右。與傳統(tǒng)的記賬技術相比,其特點包括:共同維護、數據實時同步,為節(jié)點之間建立信任關系奠定了組織基礎。
3.2區(qū)塊鏈賬本結構
區(qū)塊鏈這一概念有廣義和狹義之分,廣義的區(qū)塊鏈是指實現(xiàn)分布式共享賬本的技術體系;狹義的區(qū)塊鏈則是指,分布式賬本當中的賬本。作為賬本的區(qū)塊鏈,顧名思義,由區(qū)塊組成的鏈條,如圖2。區(qū)塊鏈的每個鏈節(jié)都是一個區(qū)塊,區(qū)塊之間具有嚴格的順序關系。隨著時間的推移,一個個區(qū)塊被不斷記錄到區(qū)塊鏈上,區(qū)塊鏈不斷增長。區(qū)塊被記錄到鏈上的過程叫上鏈。區(qū)塊在結構上分為區(qū)塊頭和區(qū)塊體兩部分。區(qū)塊體里存放的是,從上一個區(qū)塊上鏈到當前區(qū)塊上鏈這段時間內產生的所有的需要記錄在區(qū)塊鏈上的交易數據。區(qū)塊頭中,一個最關鍵的內容是上個區(qū)塊的“報文摘要”。報文摘要可以驗證上一個區(qū)塊內容是否被改動過,從而形成了環(huán)環(huán)相扣,可追溯、可驗證的鏈式結構。

圖2 區(qū)塊鏈賬本結構
3.3報文摘要
報文摘要,是數字報文摘要的簡稱。借助數學中的一種函數——單向哈希函數,可以將任意長度的、任意內容的輸入文件計算得出一個固定長度的一段字符,這段字符,我們稱之為報文摘要。可以認為,不同的輸入文件,產生不同的報文摘要。找出具有相同報文摘要的兩個不同文件幾乎是不可能的。報文摘要的作用是保證數據內容的完整性,即,只要報文摘要一樣,我們就可以認為數據內容被篡改過了。反過來,如果數據內容被篡改,由其得出的報文摘要一定會發(fā)生變化。當然,以上判斷的前提是原始文件的報文摘要必須安全存放。目前常用的報文摘要算法有:MD5和SHA等。
單純的報文摘要,在原始文件報文摘要安全性無法保證的情況下,沒有實際價值。因為文件篡改者完全可以在同時截獲文件和摘要的情況下,同時篡改文件和生成新的報文摘要,然后將它們交給文件接收者,從而達到欺詐目的,如圖3。

圖3 報文摘要攻擊
3.4非對稱加密
保密信息的傳遞需要加密和解密兩個過程,在加密過程中,我們使用加密密鑰把明文加工成密文。在解密過程中,我們使用解密密鑰把密文加工成明文。根據加密密鑰和解密密鑰是否相同,我們把加密分為對稱加密和非對稱加密。在非對稱加密中加密密鑰和解密密鑰是不同的,分別被稱為公鑰和私鑰。私鑰一般需要通過隨機數算法生成,公鑰可以根據私鑰生成,但技術上不能通過公鑰生成私鑰。公鑰是公開的,可以交給任何人,而私鑰需要自己保密存放。公鑰加密的信息只有對應私鑰能夠解密,反之,私鑰加密的信息也只有對應公鑰能夠解密。
目前,區(qū)塊鏈應用中都是利用用戶公鑰區(qū)別用戶的。
3.5數字簽名
非對稱加密技術有兩個重要用途。一是秘密傳遞信息。例如小王利用小李的公鑰加密信息后發(fā)給小李,小李可以用自己的私鑰解密文件,獲得真實信息。非對稱加密技術的另一個用途是,身份確認。對于特定加密信息,如果可以用你的公鑰解密成明文,則可以認定,該信息一定是你發(fā)出的。這種私鑰加密的不可否認性類似于現(xiàn)實生活中的簽名,具有獨一無二性,因此,我們也把私鑰加密稱為數字簽名。
通常將報文摘要與數字前面技術結合起來使用,即先獲取文件的報文摘要,然后用自己的私鑰進行加密,把報文摘要的密文交給接收者。這種技術不但保證了信息的完整性,同時也保證了信息發(fā)送者的可鑒別性和不可抵賴性。數字簽名過程如圖4所示。

圖4 數字簽名過程
3.6區(qū)塊上鏈的完整過程
某節(jié)點發(fā)起一項交易,交易各方在交易數據上做數字簽名,確認交易,并將交易數據廣播到區(qū)塊鏈網絡中,區(qū)塊鏈中各節(jié)點不斷收集網絡中的交易數據。區(qū)塊鏈系統(tǒng)一般會設定一個時長(例如比特幣網絡為10分鐘),該時間段內的所有交易數據打包在一起(包括上一區(qū)塊的報文摘要),組成一個候選區(qū)塊。時間一到,區(qū)塊鏈根據共識機制確定記賬節(jié)點,記賬節(jié)點對新區(qū)塊簽名確認并將新區(qū)塊廣播到網絡中。其他節(jié)點核查記賬節(jié)點的記賬權并驗證簽名,認可后用自身私鑰簽名確認。當確認節(jié)點達到一定數量后,新區(qū)塊被整個網絡接納,作為區(qū)塊鏈最新區(qū)塊,計算新區(qū)塊報文摘要,再開始下一個區(qū)塊形成過程。
3.7共識機制
由區(qū)塊鏈上鏈過程可見,共識機制是是區(qū)塊鏈的核心技術,因為這決定了到底由誰來記賬,而記賬方式將會影響整個系統(tǒng)的安全性和可靠性。目前已經出現(xiàn)了十余種共識機制算法,其中較為知名的有PoW(Proof of Work,工作量證明),PoS(Proof of Stake,權益證明),DPoS(Delegate Proof of Stake,股份授權證明)機制以及拜占庭將軍容錯共識等。當然,沒有一種共識機制是完美無缺的,同時這也意味著沒有一種共識機制是適合所有應用場景的。
1)PoW(工作量證明):就是基于挖礦的共識機制,主要應用于包括比特幣和以太坊前三個階段等。依賴機器進行數學運算來獲取記賬權,即通過與或運算,計算出一個滿足規(guī)則的隨機數,獲得本次記賬權,發(fā)出本輪需要記錄的數據,全網其他節(jié)點驗證后一起存儲。優(yōu)點是完全去中心化,節(jié)點自由進出;缺點是資源消耗相比其他共識機制高、可監(jiān)管性弱,同時每次達成共識需要全網共同參與運算,性能效率比較低,達成共識的周期較長,因此不適合商業(yè)應用。
2)PoS(權益證明):由Quantum Mechanic 2011年在bitcointalk首先提出,它是PoW的一種升級共識機制,在Peercoin、NXT和以太坊第四個階段等應用。根據每個節(jié)點所占代幣的比例和時間,等比例地降低挖礦難度,從而加快尋找隨機數的速度,因此節(jié)點記賬權的獲得難度與節(jié)點持有的權益成反比,但它依然是基于哈希運算競爭獲取記賬權的方式。其優(yōu)點是相對于PoW在一定程度減少了數學運算帶來的資源消耗,性能也得到了相應的提升;缺點是還需要挖礦,本質上沒有解決商業(yè)應用的痛點,可監(jiān)管性也比較弱。
3)DPoS(股份授權證明):與PoW和PoS不同,DPoS不需要再挖礦了,而是類似于董事會投票,持幣者投出一定數量的節(jié)點,代理他們進行驗證和記賬,持股人擁有所持股份對應的表決權。優(yōu)點是大幅縮小參與驗證和記賬節(jié)點的數量,可以達到秒級的共識驗證,降低運行網絡的成本和維護網絡安全的費用,增強網絡效能;缺點是整個共識機制還是依賴于代幣的,然而很多商業(yè)應用是不需要代幣存在的。
在區(qū)塊鏈技術出現(xiàn)之前,互聯(lián)網上的信息拷貝是零成本的,數字資產具有無限可復制性,如果沒有可信賴的第三方監(jiān)督,我們根本無法確認一筆數字現(xiàn)金是否被花掉,因此可能出現(xiàn)重復支付的問題。
為了解決這個問題,區(qū)塊鏈參照了“拜占庭將軍問題”(Byzantine failures)的算法。該問題是一個協(xié)議問題,指拜占庭帝國軍隊的將軍們必須全體一致決定是否攻擊某一支敵軍。問題是這些將軍在地理上是分隔開來的,并且將軍中存在叛徒,而將軍們只能依靠信使來傳遞信息。如何才能防止受到叛徒欺騙而做出錯誤決策呢?數學家設計的算法是讓將軍在接到上一位將軍標有進攻時間的信件之后,寫上同意或反對并蓋上自己的圖章,然后把信轉發(fā)給其他所有的將軍,在這樣的信息周轉之后,最后會出現(xiàn)一個蓋有超過半數將軍圖章的信息鏈,以保證將軍們在互不信任的情況下達成共識。
萊斯利·蘭伯特把拜占庭將軍問題引入到點對點通信中。拜占庭假設是對現(xiàn)實世界的模型化,由于硬件錯誤、網絡擁塞或斷開以及遭到惡意攻擊,計算機和網絡可能出現(xiàn)不可預料的行為。拜占庭容錯協(xié)議必須處理這些失效,并且這些協(xié)議還要滿足所要解決問題要求的規(guī)范。
區(qū)塊鏈的技術原理參考了拜占庭將軍問題的算法,通過蓋戳(數字簽名)的形式來進行公證。網絡上的每一個參與者的計算機里都會有一份總賬的備份,也都能在這本總帳里記上一筆,并且所有的備份都是在實時地、持續(xù)地進行更新、對賬,以及同步著拷貝,即全網記賬。每個節(jié)點都可以競爭蓋戳,互相認證。這使得一個不可信網絡變成了一個可信的網絡, 使得所有參與者可以在某些事情上達成一致。
3.8區(qū)塊鏈層次模型
區(qū)塊鏈是分布式共享賬本,也是一種計算機網絡。跟國際互聯(lián)網一樣,是一個復雜系統(tǒng),可以通過層次模型分層認識。區(qū)塊鏈技術模型由自下而上可分為數據層、網絡層、共識層、激 勵層、合約層和應用層,共6個層次。
數據層、網絡層、共識層是區(qū)塊鏈的必要元素。
1)數據層:最下層是“數據層”,它封裝了底層數據區(qū)塊的鏈式結構,以及相關的非對稱公私鑰數據加密技術和時間戳等技術。
2)網絡層:中間是網絡層,包括P2P組網機制、數據傳播機制和數據驗證機制等。
3)共識層:第三層是共識層,封裝了網絡節(jié)點的各類共識機制和算法。
而激勵層、合約層和應用層不是區(qū)塊鏈的必要元素,一些區(qū)塊鏈應用并不完全包含這3層結構。
第四層是激勵層,它將經濟因素集成到區(qū)塊鏈技術體系中來,包括經濟激勵的發(fā)行機制和分配機制等,主要出現(xiàn)在公有鏈當中,如比特幣中的激勵機制。
第五層是合約層,它封裝各類腳本、算法和智能合約。
第六層是應用層,它封裝了區(qū)塊鏈的各種應用場景和案例,未來的可編程金融和可編程社會也將搭建在應用層中。
3.9最廣義區(qū)塊鏈
區(qū)塊鏈技術來自于比特幣系統(tǒng),人們對區(qū)塊鏈的認識必然受到比特幣系統(tǒng)的影響。比特幣系統(tǒng)建立在去中心化的對等網絡中,發(fā)行數字貨幣,系統(tǒng)對所有人開放,可以隨時加入或者退出。
如果用“去中心化”、“發(fā)幣”、“開放”去描述和限定區(qū)塊鏈,將極大地縮小區(qū)塊鏈的概念范疇。事實上,從最近幾年區(qū)塊鏈技術和應用的發(fā)展,我們可以看到,大量的“非典型”區(qū)塊鏈不斷涌現(xiàn)。例如,聯(lián)盟鏈大行其道,但其并非開放的。絕大多數區(qū)塊鏈項目也不需要數字貨幣的支持。
理想化的區(qū)塊鏈系統(tǒng),是由許許多多節(jié)點組成的點對點的網絡結構,似乎既不需要中心化的硬件設備,也不需要任何管理它的機構。在很多文獻中都提出區(qū)塊鏈是去中心化的(Decentralized),即整個網絡沒有中心化的硬件或者管理機構,任意節(jié)點之間的權利和義務都是均等的,且任一節(jié)點的損壞或者失去都會不影響整個系統(tǒng)的運作。需要指出的是,區(qū)塊鏈并不一定是去中心化的。實際上,軟件系統(tǒng)的網絡架構一般有3種模式:單中心、多中心、分布式,Decentralized只表明不是單中心模式的,它可能是多中心或弱中心,也可能是分布式的。完全去中心化至少在現(xiàn)階段是不可行的。2016年起,眾多區(qū)塊鏈研究機構開始放棄用“Decentralized”描述區(qū)塊鏈。大量區(qū)塊鏈案例在Internet上出現(xiàn)。同時,過度強調“去中心”也可能會被誤讀為不愿意接受監(jiān)管,不利于區(qū)塊鏈技術的發(fā)展和推廣。
在共識機制上,區(qū)塊鏈也可以做出一些讓步,例如在聯(lián)盟鏈中,節(jié)點之間可能存在地位、作用或者計算機性能差距較大的情況,這種情況下,或者出于經濟原因,或者出于效率原因,或者存在公認節(jié)點等原因,部分節(jié)點可以委托或轉讓其記賬權及其他權力。
因此,我們必須以開放的態(tài)度對待快速發(fā)展的區(qū)塊鏈,用其最本質的特征界定區(qū)塊鏈。區(qū)塊鏈最顯著的特征是“基于密碼學的分布式共享賬本”,其最大的作用是“在多方之間建立信任”。故,最廣義的區(qū)塊鏈應定義為“基于分布式共享賬本的信任機”
?
4 區(qū)塊鏈發(fā)展
Melanie Swan所著的《區(qū)塊鏈:新經濟藍圖及導讀》一書在業(yè)界引起了巨大的反響。她在書中提出了對區(qū)塊鏈版本劃分的方法,即按照區(qū)塊鏈已經完成的以及將要完成的功能劃分成區(qū)塊鏈1.0、2.0和3.0三個階段。這種版本劃分方式基本上反映了區(qū)塊鏈技術成熟發(fā)展的大脈絡,目前也得到了業(yè)界廣泛的認可。
區(qū)塊鏈1.0。我們可以把比特幣理解為區(qū)塊鏈技術的一個應用場景,也就是 區(qū)塊鏈1.0階段。但是如果僅有比特幣,區(qū)塊鏈也只是一種數字貨幣,并不能達到今天的火爆程度,可以說比特幣是當今區(qū)塊鏈的“殺手級”應用,但是區(qū)塊鏈可以做的事情遠遠超過比特幣,完全有可能產生其他“殺手級”應用。
區(qū)塊鏈2.0。從應用上來看,區(qū)塊鏈2.0的重要標志是經濟、市場和金融領域的區(qū)塊鏈應用,例如股票、債券、期貨、貸款、抵押、產權、智能財產和智能合約。從技術上來看,區(qū)塊鏈2.0的重要標志是智能合約。智能合約是運行于區(qū)塊鏈上的程序,目的是自動執(zhí)行先前約定好的合同,與價值交換、承諾、條件、商業(yè)規(guī)則相關。智能合約極大豐富了區(qū)塊鏈的應用空間,提高了商業(yè)邏輯的自動執(zhí)行效率。
區(qū)塊鏈3.0。在這一階段,區(qū)塊鏈的應用范圍被拓展到各行各業(yè),支持廣義的資產交互和登記,進入萬物互聯(lián),設備民主的“區(qū)塊鏈+”時代。
目前區(qū)塊鏈技術還主要處于2.0階段。
按照區(qū)塊鏈的可接入性或涵蓋范圍,區(qū)塊鏈可以分為公有鏈、聯(lián)盟鏈和私有鏈三種類型。
公有鏈(Public Block Chains)是指:世界上任何個體或者團體都可以接入網絡,發(fā)送交易,且交易能夠獲得該區(qū)塊鏈的有效確認,任何人都可以參與其共識過程。公有區(qū)塊鏈是最早的區(qū)塊鏈,也是應用最廣泛的區(qū)塊鏈,比特幣系統(tǒng)就是最典型的公有鏈。
聯(lián)盟鏈(Consortium Block Chains):由某個群體內部指定多個預選的節(jié)點為記賬人,每個塊的生成由所有的預選節(jié)點共同決定(預選節(jié)點參與共識過程),其他接入節(jié)點可以參與交易,但不過問記賬過程(本質上還是托管記賬,只是變成分布式記賬,預選節(jié)點的多少,如何決定每個塊的記賬者成為該區(qū)塊鏈的主要風險點),其他任何人可以通過該區(qū)塊鏈開放的API進行限定查詢。
私有鏈(Private Block Chains):僅僅使用區(qū)塊鏈的總賬技術進行記賬,可以是一個公司,也可以是個人,獨享該區(qū)塊鏈的寫入權限,本鏈與其他的分布式存儲方案沒有太大區(qū)別。
5 區(qū)塊鏈面臨的問題與挑戰(zhàn)
區(qū)塊鏈涉及的技術棧比較豐富,有分布式系統(tǒng)、存儲、密碼學、經濟學、博弈論、控制論、計算機網絡等等。區(qū)塊鏈從概念到實踐都在不斷探索中,加之相關技術特別是信息技術也在不斷變革中,因此,區(qū)塊鏈必將面臨眾多問題與挑戰(zhàn)。
5.1抵賴和隱私保護
如前所述,密碼學的發(fā)展為解決這類為題提供了不少手段,例如報文摘要、非對稱加密、數字簽名等。然而以上技術的安全針對目前的計算能力而言的,量子計算等新技術的出現(xiàn)將突破算力約束,例如目前正在大量使用的MD5、SHA等密碼學基礎算法將可能不堪一擊。新一代加密技術需要盡快研發(fā)。
5.2分布式共識
共識機制一直是區(qū)塊鏈領域的研究熱點。不管是PoW、PoS還是DPoS都有自己的特點和局限。不同應用場景下共識需求會存在較大差異。
比特幣運行于開放環(huán)境下,通過引入工作量證明機制來規(guī)避少數人作惡,算法的核心思想是基于經濟利益的博弈,讓惡意參與者受到經濟損失。然而這中共識機制依賴的“挖礦”效率低下,環(huán)境不友好。
共識機制的技術指標包括:節(jié)點容錯能力、決策速度、恢復能力。PoW運行不多于一半的作惡節(jié)點,PBFT允許不超過1/3的作惡節(jié)點。
5.2交易性能
由于區(qū)塊鏈系統(tǒng)的復雜性,多數區(qū)塊鏈平臺運行效率仍偏低。比特幣系統(tǒng)只能支持每秒約7筆的交易量。據最新的報道,目前最快的區(qū)塊鏈系統(tǒng)可以支持的吞吐量已突破每秒千筆。即便如此,相對于證券市場、商業(yè)支付等高頻交易應用場景的要求差距巨大。
為提升區(qū)塊鏈性能,一方面可以提升節(jié)點的性能、優(yōu)化策略算法;另一個思路是,將記賬以外的業(yè)務放到區(qū)塊鏈之外,保持區(qū)塊鏈記賬功能的單純性。最近討論熱烈的“閃電網絡”“側鏈”“影子鏈”等設計方案都是基于這種思想的。只在區(qū)塊鏈中記錄交易的最終狀態(tài)。
在聯(lián)盟鏈、私有鏈等相對安全環(huán)境下,可以通過簡化共識機制、數字簽名等環(huán)節(jié),提升系統(tǒng)性能。
5.4擴展與集成
常見的計算機系統(tǒng)可以通過增加節(jié)點來擴展系統(tǒng)的處理能力,但是區(qū)塊鏈系統(tǒng)可能完全相反。因為區(qū)塊鏈中強調共同維護,數據要同步,共識要達成,增加節(jié)點特別是性能較低的節(jié)點,可能會拖整個系統(tǒng)的后腿。解決這一問題的思路是,不要求所有節(jié)點參與共識過程,在系統(tǒng)中設置核心節(jié)點,由其代理弱節(jié)點的職能。
區(qū)塊鏈的集成也是一種潛在需求。區(qū)塊鏈目前的發(fā)展狀態(tài)類似Internet的發(fā)展的初期,眾多公司都在研發(fā)自己的網絡,網絡之間缺少聯(lián)系,區(qū)塊鏈技術期待自己的“TCP/IP”。
5.5數據存儲
區(qū)塊鏈又被稱為分布式共享數據庫,但這種數據庫與傳統(tǒng)的分布式數據庫存在眾多不同,包括組織結構、數據結構、數據表示、處理需求等等。
首先,為提升區(qū)塊鏈性能,區(qū)塊鏈上的產生交易數據需要采用鏈上與鏈下相結合的方式存儲,鏈上存儲交易最終狀態(tài),鏈下存儲過程與細節(jié)數據。這樣的設計有利于減輕區(qū)塊鏈記賬壓力,提升性能。同時鏈下數據更有利于數據的檢索和使用。但是,鏈上鏈下數據必須保持一致性和可驗證性。
關于區(qū)塊鏈技術發(fā)展趨勢的探討和爭論,從其誕生之時就從未停息。從科技史發(fā)現(xiàn),技術領域也存在著周期性。技術需要經歷誕生期、爆發(fā)期、泡沫期、爬升期和產出期,這個周期可能需要7-8年,甚至更長。能夠堅持過泡沫期迎來爬升期是考驗技術自身價值的關鍵。
技術成熟度曲線又叫技術循環(huán)曲線,或者直接叫做炒作周期,是指新技術、新概念在媒體上曝光度隨時間的變化曲線,誕生于硅谷。1995年開始,高德納咨詢公司(Gartner)依其專業(yè)分析預測與推論各種新科技的成熟演變速度及要達到成熟所需的時間。
圖5是高德納咨詢公司于2019年發(fā)布的區(qū)塊鏈相關技術成熟度曲線圖??梢钥闯?,區(qū)塊鏈技術整體上仍處于發(fā)展期,只有數字資產交換、加密貨幣等少量應用相對成熟。而部分關鍵技術,如區(qū)塊鏈數據交換、智能合約等還沒有經歷泡沫破裂期。
區(qū)塊鏈構建信任關系的功能已經凸顯,這也是目前生人社會商務活動最或缺的交易要素,盡管路途艱辛,但光明前景已不遠。

圖5 區(qū)塊鏈技術與應用成熟度曲線
二 區(qū)塊鏈技術平臺
技術是否成熟的一個重要標志是開發(fā)工具的發(fā)展程度,隨著區(qū)塊鏈技術的不斷發(fā)展,區(qū)塊鏈開發(fā)工具和平臺不斷涌現(xiàn)。目前,全球有數個區(qū)塊鏈技術平臺,其中比特幣、以太坊、和Linux基金會的開源項目超級賬本比較有代表性。
此外,還有比特股(Bitshare)、恒星(Stellar)、R3 Corda等國外區(qū)塊鏈技術以及國內一些公司研發(fā)的區(qū)塊鏈應用平臺。
1 比特幣
1.1概述
作為區(qū)塊鏈思想的源頭,比特幣項目值得區(qū)塊鏈學習者仔細研究。比特幣網絡首先是首個得到大規(guī)模部署的區(qū)塊鏈技術應用,并且是首個得到檢驗的數字貨幣實現(xiàn),無論從信息技術領域還是從金融學領域都是具有十分重要意義的。
雖說交易腳本賦予了比特幣系統(tǒng)一定的可擴展性,但其實用價值極其有限。因此,嚴格來說,比特幣系統(tǒng)僅僅是一個區(qū)塊鏈應用,不具備區(qū)塊鏈平臺的應用開發(fā)功能,但探索區(qū)塊鏈項目的發(fā)展過程和設計理念,對于深刻理解區(qū)塊鏈技術又重要價值。
比特幣是區(qū)塊鏈技術的首個成功應用,是經過時間檢驗的數字貨幣系統(tǒng)。自2009年項目正是上線以來,比特幣網絡產生總共近60萬個區(qū)塊。比特幣系統(tǒng)具有如下特點。
1)去中心化。意味著沒有任何獨立個體可以對網絡中的交易進行破壞、任何交易請求都需要大多數參與者的共識。
2)匿名性。比特幣中的用戶是匿名的,無法從交易信息關聯(lián)到現(xiàn)實中的個人,這也意味著很難進行審計。
3)通脹預防。比特幣的發(fā)行需要通過挖礦計算來進行。發(fā)行量每四年減半,總量上限為2100萬枚,無法超發(fā)。
比特幣發(fā)展史上大事如下。
2008年10月中本聰發(fā)表論文《Bitcoin:A peer-to-peer
electroniccash system》(《比特幣:一種點對點的數字貨幣系統(tǒng)》)。
2009年1月3日,比特幣系統(tǒng)部署上線,中本聰完成第一個區(qū)塊記賬,并獲得50枚比特幣。
2010年5月21日,比特幣第一次被用于購物。1萬BTC購買了價值25美元的披薩優(yōu)惠券。這些比特幣今日(2020年5月24日)價值近1億美金。
2012年11月28日比特幣產量第一次減半。
2013年德國、加拿大支持比特幣與法幣的兌換。
2016年7月9日,比特幣產量第二次減半。每次成功挖礦獲得12.5個比特幣。
2020年5月17日,比特幣產量第三次減半,每次成功挖礦獲得6.25個比特幣。
目前比特幣市場總值已超過1200億美元。
1.2交易
比特幣是一個數字貨幣系統(tǒng),但是系統(tǒng)中并不存在代表比特幣的數據塊或者編碼,比特幣僅僅是一個貨幣單位。每個人擁有的比特幣總數記作:未使用的交易輸出(Unspent Transaction Output,UTXO),即此人還沒有花出去的收入。不用數據塊或編碼表示比特幣是為了防止“雙花”(即利用數據拷貝,多次用同一貨幣支付)。
在交易過程中,付款方需要把自己的UTXO轉給收款方,付款方的轉出被記錄未付款方的“使用過的交易輸出”(Spent Transaction Output,STO),這筆價值付款方無權再使用。收款方收到的UTXO,成為自己的UTXO,以后可以被自己所用。只不過,付款方付出的UTXO往往大于收款方收到的UTXO,多出的部分被記賬節(jié)點作為交易費收下了。

圖6 比特幣系統(tǒng)交易
即UTXO = UTXO1 + UTXO2,且系統(tǒng)規(guī)定,UTXO2 >= 0.0001BTC。交易費越高記賬者往往優(yōu)先記錄。比特幣系統(tǒng)中,每筆交易需要設定兩個參數:輸入和輸出。輸入是付款人的付出,即圖6中的UTXO,輸出即收款人的收入,即圖6中的UTXO1。交易需要付款人簽名確認,然后廣播到網絡中。

交易最小金額單位叫“聰”,即一億分之一比特幣。
交易廣播到網絡后,會被記錄到區(qū)塊上。比特幣區(qū)塊主要包含區(qū)塊頭和區(qū)塊體兩個部分。
區(qū)塊頭內的主要信息有:上一個區(qū)塊的報文摘要、時間戳、Nonce等。Nonce是一個關鍵數據,我們稍后介紹。
區(qū)塊體內包含:區(qū)塊大小信息、交易數量、交易的具體內容。
1.3共識機制
比特幣共識機制是為了確定記賬權,即由誰來把收集到的交易數據串聯(lián)到區(qū)塊鏈上。
運行于開放環(huán)境下的比特幣選擇了PoW共識機制,這不是一種絕對可靠的共識機制,但是從密碼學、博弈論、概率論角度分析,該機制實現(xiàn)了事實上的高概率可靠。
挖礦是PoW共識機制的核心概念,礦機通過挖礦來競爭區(qū)塊鏈記賬權,獲得記賬權后可以獲得一定量的新增比特幣作為記賬報酬。
目前,每10分鐘左右生成一個區(qū)塊,記錄了這10分鐘內發(fā)生的驗證過的交易內容,串聯(lián)到區(qū)塊鏈尾部,每個區(qū)塊的成功記錄者得到6.25個比特幣獎勵(該獎勵作為區(qū)塊內的第一交易),以及付款用戶支付的交易服務費。
記賬一個區(qū)塊的最初獎勵是50個比特幣,每隔21萬個區(qū)塊自動減半,即4年時間,最終比特幣總量穩(wěn)定在2100萬個。因此,比特幣是一種通縮貨幣。
挖礦的具體過程為:挖礦節(jié)點綜合上一個區(qū)塊的報文摘要、上一個區(qū)塊生成后新的經過驗證的交易內容,再加上一個隨機數X,一起打包成一個候選新區(qū)塊,求取候選區(qū)塊的hash值,如果該hash值滿足比特幣系統(tǒng)給定的條件C,則該挖礦者獲得新區(qū)塊記錄權,串聯(lián)區(qū)塊并獲得獎勵。如果候選區(qū)塊的hash值不滿足條件C,則嘗試下一個X。比特幣系統(tǒng)中所有的挖礦者都在使用該方法需要符合條件的X,第一找到者獲得記賬權。最近幾年,隨著比特幣價格的不斷走高,逐利者不斷加大投入,提高算力,希望能獲得更多記賬權,從而獲得更多比特幣獎勵。目前比特幣系統(tǒng)算力已近每秒千億億次hash計算。由于X是一個隨機數,即使投入不大的挖礦者仍然有機會獲得記賬權,只是獲得機會的機會少一些。
比特幣系統(tǒng)每隔兩周會自動調整條件C,以改變挖礦難度,從而把挖礦時間控制在一個合理范圍內。
目前比特幣系統(tǒng)上的礦機總價值已超過千億美金,按照控制1/3算力可破壞比特幣系統(tǒng)計算,惡意破壞者需要花費幾百億美金,而被破壞的比特幣將一文不值,因此,破壞者不會獲得任何好處。這就是經濟博弈論下的比特幣安全。
2 以太坊
在區(qū)塊鏈領域,以太坊使是僅次于比特幣的著名開源項目。作為公有區(qū)塊鏈平臺,以太坊將比特幣針對數字貨幣交易的功能做了進一步拓展——引入智能合約,使之適應更為復雜和靈活的應用場景。
從此,區(qū)塊鏈技術的應用場景,從單一基于UTXO的數字貨幣交易,延伸到圖靈完備的通用計算領域。用戶不再受限于比特幣腳本簡單的邏輯支持,而是可以設計任意復雜的合約邏輯,為構建各種各樣的上層應用開啟了大門。
2.1以太坊項目
以太坊項目的最初目標是打造一個智能合約的平臺,該平臺支持圖靈完備的應用,按照智能合約的約定邏輯自動執(zhí)行,理想情況下無停機、欺詐以及第三方干預等問題。
以太坊的核心理念是對比特幣系統(tǒng)的拓展。基于以太坊項目,以太坊團隊目前運營了一個公開的區(qū)塊鏈平臺——以太坊網絡。智能合約開發(fā)者使用官方提供的工具和以太坊專用應用開發(fā)語言Solidity,可以很容易地開發(fā)出運行在以太坊網絡上的分布式應用(Decentralized Application,DApp)。用戶通過以太幣(Ether)來購買燃料(Gas),維持應用運行。
以太坊項目的官網網址是ethereum.org,代碼托管在github.com/ethereum。
2.2以太坊簡史
2013年以太坊早期發(fā)明者維塔利克˙布特林(Vitalik
Buterin)提出智能合約思想,發(fā)布以太坊白皮書。
2014年2月,以太幣預售,籌集資金、組建團隊,開始研發(fā)以太坊項目。
2015年7月,以太坊第一階段Frontier(前沿)正式發(fā)布,F(xiàn)rontier采用類似比特幣網絡的PoW共識機制,支持智能合約。
2016年3月,第二階段Homestead(家園)開始運行,相對于第一階段的Frontier,改善了安全性,提供了可視化圖形界面客戶端。
2016年6月,DAO項目受到漏洞攻擊,造成以太坊硬分叉。
2017年3月,以太坊成立企業(yè)聯(lián)盟,成員有摩根大通、微軟、哥倫比亞大學等。
2017年10月,以太坊開始推出第三個階段Metropolis(大都會),共識機制采用PoW和PoS混用。
2018年2月,以太幣成為市值第二高的加密貨幣,僅次于比特幣。
按計劃以太坊后續(xù)還將推出第四個階段Serenity(安靜),共識機制將完全轉換為PoS。
以太坊發(fā)展到今天已經歷了數次硬分叉,每次硬分叉后的版本對之前版本不再兼容。
2.3分叉
區(qū)塊鏈技術協(xié)議不會一成不變。當需要修復漏洞、擴展功能或者調整結構時,區(qū)塊鏈需要在全網配合下進行升級。升級通常會涉及更改交易數據結構和區(qū)塊的數據結構。
由于分布于全球的節(jié)點不可能同時完成升級來遵循新的技術協(xié)議(有贊成派和反對派),因此區(qū)塊鏈升級時可能會發(fā)生分叉。對于一次升級,如果把升級節(jié)點成為新節(jié)點,未升級節(jié)點稱為舊節(jié)點,根據新舊節(jié)點的兼容性,可以分為軟分叉(soft fork)和硬分叉(hard fork)
如果舊節(jié)點仍然能夠驗證和接受新節(jié)點產生的交易和區(qū)塊,則稱此次升級為軟分叉。如果舊節(jié)點不能驗證和接受新節(jié)點產生的交易和區(qū)塊,則稱此次升級為硬分叉。軟分叉升級相對平穩(wěn),硬分叉會造成區(qū)塊鏈的分裂。重大的技術革新往往需要面對硬分叉。
2.4以太坊特點
以太坊底層也是一個類似比特幣的P2P網絡平臺,智能合約運行于網絡中的以太坊虛擬機里,以太坊是一個公鏈平臺,任何人可以接入。
與比特幣相比,以太坊的技術特點主要包括以下內容。
支持圖靈完備的智能合約,設計了編程語言Solidity和虛擬機EVM。
降低了區(qū)塊產生時間間隔,由10分鐘降至15秒左右。
采用賬戶系統(tǒng)和世界狀態(tài),而不是UTXO,支持更復雜邏輯。
支持POW共識機制,并計劃支持效率更高的POS共識機制。
通過Gas限制代碼執(zhí)行指令數,避免循環(huán)攻擊。
更豐富的安全措施。
2.5核心概念
智能合約(Smart Contract)是以太坊中最重要的一個概念,即將合約編程,以計算機程序的方式來執(zhí)行各種合約。上世紀90年代,Nick
Szabo等人曾提出類似概念,但因一直缺乏可靠執(zhí)行智能合約的環(huán)境,而被當作一種理論設計。區(qū)塊鏈的出現(xiàn)為智能合約提供了條件。
以太坊支持通過圖靈完備的高級語言(主要指Solidity)來開發(fā)智能合約。智能合約運行于以太坊虛擬機上,可以接受來自外部的請求和事件,能夠查詢外部狀態(tài)與條件,通過觸發(fā)運行提前編寫好的代碼邏輯,進一步處理交易和事件,也可能調用其他合約。
智能合約執(zhí)行過程中,可能會產生新的交易數據,并記錄在區(qū)塊鏈上,這些數據一旦上鏈將無法偽造和篡改。
賬戶,比特幣系統(tǒng)中沒有傳統(tǒng)意義上的賬戶,而是采用UTXO記錄整個系統(tǒng)的狀態(tài)。任何人都可以通過交易歷史來推算出用戶的余額信息。以太坊采用了不同的做法,用賬戶來記錄系統(tǒng)狀態(tài),每個賬戶存儲余額信息、智能合約代碼等。提高了價值轉移的效率。
具體來看,以太坊賬戶分為兩種類型:合約賬戶(Contract Accounts)和外部賬戶(Externally Owned Accounts)。合約賬戶存儲智能合約代碼,只能被外部賬戶調用激活。外部賬戶,是以太幣擁有者賬戶,對應公鑰,包括余額、存儲根等個人信息字段,由個人控制。當智能合約并調用并執(zhí)行時,會消耗燃料,燃料可以通過賬戶中的以太幣購買。
以太幣是以太坊網絡中的貨幣。以太幣主要勇于購買燃料和支付給礦工,作為以太坊運行智能合約的報酬和礦工記賬的報酬。以太幣最小單位是wei,一個以太幣Ether等于1018個wei。
礦工成功記賬一個區(qū)塊獲得5個以太幣,用戶也可以通過交易市場購買以太幣。目前每年通過挖礦可以生成一千萬個以太幣。單個以太幣價格在幾百美元。
燃料,智能合約執(zhí)行于以太坊的消耗品,類似于汽車運行要消耗汽油??梢酝ㄟ^以太幣購買。如過因為燃料不夠,而使得智能合約未能執(zhí)行完整時,交易狀態(tài)會回到智能合約執(zhí)行前的狀態(tài),即狀態(tài)回滾。
交易,以太坊交易是指一個賬戶到另一個賬戶的消息數據。消息是以太坊執(zhí)行操作的最小單位。消息可以時轉賬,也可以是其他事務處理。
每個消息包含如下字段。
To:目標賬戶地址
Value:轉移的以太幣數量
Nonce:交易相關字符串
GasPrice:燃料價格
Startgas:交易消耗的最大燃料
Signature:簽名
以太坊目前每秒可執(zhí)行幾十筆交易,速率高于比特幣。
2.6以太坊客戶端
以太坊客戶端可用于接入以太坊網絡,進行賬戶管理、轉賬、交易、挖礦、智能合約開發(fā)等各種操作。目前Geth是最為常用的以太坊客戶端之一。用戶可以通過安裝Geth來接入以太坊并成為一個完整節(jié)點。
在Geth開發(fā)區(qū)塊鏈和智能合約的流程如下。
設置區(qū)塊鏈——啟動區(qū)塊鏈——創(chuàng)建賬戶——智能合約編程——部署智能合約——調用智能合約。
3 超級賬本(Hyperledger)
超級賬本項目是首個面向企業(yè)級應用的開源區(qū)塊鏈平臺。
在Linux基金會的支持下,超級賬本項目吸引了IBM、Intel、Cisco、摩根大通、R3等在內的眾多科技和金融巨頭的參與。
3.1超級賬本項目簡介
2015年12月,開源界的鼻祖組織Linux基金會牽頭,聯(lián)合30多家科技和金融翹楚企業(yè),共同宣布成立超級賬本項目。項目宗旨是,推動和發(fā)展透明、公開、分布式企業(yè)級分布式賬本技術,包括協(xié)議、規(guī)范、標準和示范代碼。項目官方網站為hyperledger.org。其實,超級賬本項目成立之前,IBM、Intel、R3等企業(yè)已在區(qū)塊鏈領域有不少技術積淀。
作為一個聯(lián)合項目,超級賬本由面向不同目的和場景的子項目構成。目前包括Fabric、Sawtooth、Iroha、Blockchain Explorer、Cello、Indy、Composer、Burrow等8個頂級項目,所有項目遵循模塊化設計、代碼可讀、持續(xù)演進等基本原則。超級賬本社區(qū)目前擁有超過140家全球知名企業(yè)或機構,包括三十多家來自中國的企業(yè),如華為、三一重工等。
超級賬本強調企業(yè)間特別是企業(yè)聯(lián)盟間分布式賬本的應用,為基于區(qū)塊鏈技術打造高效商業(yè)網絡打下了基礎。超級賬本提出和實現(xiàn)了許多創(chuàng)新的設計和理念,包括完備的權限和審查管理、細粒度的隱私保護,以及可插拔、可擴展的實現(xiàn)框架。
3.2社區(qū)組織結構
每一個成功的開源項目都離不開一個健康、繁榮的社區(qū)。超級賬本社區(qū)目前主要是三駕馬車領導的結構。技術委員會(TSC),負責技術相關工作,下設多個工作組,具體帶動各項目或地區(qū)的發(fā)展。管理董事會(Governing Board),負責社區(qū)組織的整體決策,由超級賬本會員推選產生。Linux基金會(LF)負責項目基金的管理。
超級賬本社區(qū)非常重視項目在大中華區(qū)的應用和落地情況,2016年12月,超級賬本大中華區(qū)工作組成立。
3.3頂級項目介紹
超級賬本所有項目托管于GitHub上,主要頂級項目如下。
Fabric,是最早加入到超級賬本項目種的頂級項目,由IBM、DAH等企業(yè)于2015年底提交到社區(qū)。項目定位于面向企業(yè)的分布式賬本平臺,創(chuàng)新地引入了權限管理、設計上支持可插拔、可擴展,是首個面向聯(lián)盟鏈場景的開源項目,也是超級賬本項目中應用最為廣泛的頂級項目。Fabric基于Go語言實現(xiàn),核心代碼8萬行。Fabric包含F(xiàn)abric CA、Fabric SDK等多個子項目。
Sawtooth,Intel等企業(yè)提交的項目,同樣定位于分布式賬本平臺,由python語言實現(xiàn)。
Iroha,由Soramitsu等企業(yè)提交的分布式賬本平臺項目,由C++語言實現(xiàn),同時支持基于C++語言的區(qū)塊鏈開發(fā)。
Blockchain Explorer,由Intel等企業(yè)提交,定位于區(qū)塊鏈平臺瀏覽器,基于Node.js實現(xiàn),提供web操作界面,可以實時查看區(qū)塊鏈運行狀態(tài),如區(qū)塊個數、交易情況等。
Cello,IBM提交,定位于區(qū)塊鏈管理平臺,同時提供區(qū)塊鏈即服務。
Indy,基于區(qū)塊鏈的數字化身份全球管理平臺。
Composer,IBM貢獻,F(xiàn)abric的一個輔助編譯工具。
Burrow,由Monax、Intel提交,Go語言實現(xiàn),開發(fā)可運行于以太坊虛擬機的智能合約的工具,支持POS和權限管理。
3.4超級賬本Fabric
Fabric是超級賬本目前最成功的頂級項目,已成為目前企業(yè)區(qū)塊鏈開發(fā)首選平臺。Fabric從1.0版本開始,在架構上進行了重新設計,對節(jié)點進行了分類,配以不同角色,同時,安全性、性能、可擴展和可插拔性方面都有不少改進。
Fabric網絡中存在4種主要的服務節(jié)點,彼此協(xié)作完成整個區(qū)塊鏈系統(tǒng)的功能。節(jié)點角色是一個邏輯概念,不同類型的多個節(jié)點可以運行在同一個物理服務器上。
背書節(jié)點(Endorser),負責對交易的提案進行檢查和背書,計算交易執(zhí)行結果。
確認節(jié)點(Committer),又叫記賬節(jié)點,負責在接受交易結果前再次檢查合法性,接受合法交易對賬本的修改,并寫入區(qū)塊鏈結構。
排序節(jié)點(Oderer),對所有發(fā)往網絡種的交易進行排序,將排序后的交易按照配置中的約定打包成區(qū)塊,提交給確認節(jié)點進行處理。
證書節(jié)點(CA),對網絡中所有的證書進行管理,提供標準的PKI服務。
Fabric使用通道技術管理網絡和運行于其上的應用,使用一條獨立的系統(tǒng)通道(system chennal)管理網絡中的各種配置信息,并完成對于其他應用通道(Application channel)的創(chuàng)建。
除了以上四種主要服務節(jié)點外,F(xiàn)abric網絡還又負責組織間交互的錨節(jié)點(Anchor)和負責區(qū)塊同步的主節(jié)點(Leader)。一個Fabric網絡只能有一個錨節(jié)點和一個主節(jié)點。
Fabric大致分為底層的網絡層、權限管理模塊、區(qū)塊鏈應用模塊,通過SDK和API向應用開發(fā)者提供服務,如下面的圖所示。
鏈碼(chaincode),F(xiàn)abric智能合約寫在鏈碼里并在區(qū)塊鏈外部應用程序要和賬本發(fā)生交易的時候被外部應用程序調用。在大多數情況下,鏈碼只和賬本的數據庫組件(世界狀態(tài))交互,而不和交易日志交互。
Fabric賬本包含兩個組件:世界狀態(tài)和交易日志。每一個參與者有一份他們參與的每個Fabric網絡的賬本的副本。世界狀態(tài)組件描述了一個給定時間點的賬本狀態(tài)。它是賬本的數據庫,存儲的是賬本當前值。交易日志組件記錄所有導致世界狀態(tài)當前值的交易。它是世界狀態(tài)的更新歷史。這樣,賬本就是世界狀態(tài)數據庫和交易日志歷史的組合體。容器技術,使Fabric可以承載各種主流語言來編寫的智能合約。

圖8 Fabric 框架
3.5Fabric區(qū)塊鏈交易流程
Fabric區(qū)塊鏈建立后,為各節(jié)點頒發(fā)證書,啟動節(jié)點,并加入已經創(chuàng)建好的通道,各節(jié)點根據配置分配好角色。
從節(jié)點提交提案到最終結賬的全過程如下。
提交交易提案(客戶節(jié)點)——背書、簽名(背書節(jié)點)——排序、生成區(qū)塊(排序節(jié)點)——驗證、記賬(確認節(jié)點)——數據同步(主節(jié)點)
Fabric SDK是用來開發(fā)、調試、發(fā)布鏈碼(智能合約)的編程工具,并提供大量開發(fā)工具包,以支持和提高開發(fā)效率。
(完)? ? ? ? 上海? 楊超? ? 2020-5-26