區塊鍊(Blockchain, BC)是分布式資料庫系統 [1],也可了解為由多個節點共同維護的分布式賬簿技術(Distributed Ledger Technology, DLT),其特點是不易篡改、很難僞造、可追溯。區塊鍊記錄發生交易的所有資訊,一旦資料進入了區塊鍊,即使是内部從業人員在區塊鍊中也無法做任何更改。這種不可更改的特點不是來自使用某種操作,而是由于區塊鍊系統和機制本身。這使得運用區塊鍊技術較之其他安全技術而言更為簡便和有效。凡是需要公正、公平、誠實的地方,都可以使用區塊鍊技術。
區塊鍊模式
區塊鍊把資料分成不同的區塊,每個區塊通過特定的資訊連結到上一區塊的後面,前後順連,呈現一套完整的資料。每個區塊的塊頭(block header) 包含一個前塊哈希(previous block hash)值,即将前一個區塊的塊頭進行哈希函數(hash function)計算而得到的值;每個區塊之間都會由這樣的哈希值與先前的區塊環環相扣,形成一個鍊條。區塊鍊的交易資訊被随機散列建構成一種稱為默克爾樹(Merkle tree)的散列二叉樹形态,其根(root)被納入了區塊的随機散列值 [2]。
從技術層面上講,區塊鍊的核心特征包含以下三個方面 :
- (1)塊鍊結構 :每一塊有時間戳,每一塊都含有前面一塊的哈希加密資訊,對每個交易進行驗證。
- (2)多獨立拷貝存儲 :區塊鍊系統的每個節點都存儲同樣資訊。
- (3)拜占庭容錯 [3] :容忍少于1/3節點惡意作弊或被黑客攻擊,系統仍然能夠正常工作。
這三個特征,逐漸遞進:
- 特征(1)指出區塊鍊是一個“賬簿”;
- 特征(2)指出區塊鍊是一個“分布式賬簿”;
- 特征(3)指出區塊鍊是一個“一緻性的分布式賬簿”。
依據這三個特征,派生出以下不同形式的區塊鍊的落地模式。
模式 1 :(1) + (2) + (3) + P2P + 挖礦
比特币 代表第一代區塊鍊的數字貨币應用。比特币是數字貨币應用而不是平台,屬于公有鍊(全網記賬)。雖然有加密,但是賬簿是全公開的。因為隻記錄曆史資訊,不記載賬戶餘額,是以賬簿不完整。賬戶隻能用一次,用P2P網絡逃避監管,速度極慢,而且擴充性弱。
模式 2 :(1) + (2) + (3) + P2P + 挖礦 + 默克爾-帕特裡夏樹(Merkel Patricia tree)
以太坊 代表第二代區塊鍊的數字貨币應用和平台。以太坊創始人維塔裡克·布特林(Vitalik Buterin)發現比特币有很多問題,作出了3個重要貢獻:
- 把以太坊轉型為一個平台,而不隻是一個數字貨币應用;
- 以太坊有完整的賬簿,這是區塊鍊技術一個很大的進步;
- 在以太坊平台上加上“鍊上代碼(chaincode)”,俗稱“智能合約”。
然而,現在布特林自己也承認,所謂“智能合約”第一不智能,第二不是合約。“智能合約”這個名詞容易造成誤導,IBM稱之為 “鍊上代碼” (https:// github.com/IBM-Blockchain/learn-chaincode )。“鍊上代碼”能把數字貨币應用變成功能強大的平台。
相對于比特币,以太坊有非常大的進步,但是局限于首次公開币發行(Initial Coin Offering, ICO)。
- 以太坊區塊鍊是一種公有鍊,作為公開賬簿,維護交易曆史和賬戶資訊,是完整賬簿。
- 以太坊平台支援二次開發,支援鍊上代碼,但速度慢且難以擴充。
模式 3 :(1) + (2) + (3) + 拜占庭共識協定
北航鍊 [4~7] 代表第三代區塊鍊的底層系統平台而非應用,擁有完全國内自主知識産權,是一種許可鍊(隻有被許可的節點可以記賬)。
- 有一個隐私的、完整的、不公開的賬簿;
- 平台支援鍊上代碼,是一種采用系統工程方法研發的區塊鍊技術,支援二次開發多樣應用,包括數字貨币;
- 速度快,擴充性好,增加機器則增加速度。
一般而言,區塊鍊分為公有鍊和許可鍊兩類。
- 公有鍊(public blockchains):所有節點都可以投票、記賬、建塊。任何個體或者團體都可以發送交易,且交易能夠獲得該區塊鍊的有效确認,任何人都可以參與其共識過程,資料公開。其特點是:中立、開放、交易速度慢、需要挖礦或類似挖礦技術,常用P2P網絡,抗審查性高。
- 許可鍊(permissioned blockchains):隻有被許可的節點才能參與投票、記賬、建塊,包含私有鍊、聯盟鍊、企業鍊等所有非公有鍊。資料可以公開或公開。其特點是:交易速度快、不需要挖礦、交易成本低(交易隻需幾個許節點驗證即可);可審查,會占據商業應用領域的主流 [3]。
不具備上述模式1~3的其他區塊鍊相關技術稱作區塊鍊的變形(variant),有兩種典型類型。
- 第一種是鍊下系統(off-chain)。鍊下系統是一種系統,或者是寄在區塊鍊上,但是大部分的活動在區塊鍊外面,比如在比特币上的閃電網絡 (Lightning Network, https://lightning.network/ ) 和雷霆網絡 (Thunder Network, https://www.blockchain.com/thunder/index.html )。鍊下設計的原因是公有鍊速度太慢,以鍊下活動來補鍊上活動,用加密方法來保證鍊下活動的安全。這樣的鍊下系統,因為部分活動不在鍊上,是以安全性比區塊鍊差。
- 第二種是類似區塊鍊的系統,例如RSCoin[5]、BigchainDB[5]、Corda[6] 和VaultOS[8]。每一個類似區塊鍊系統都不一樣,需要單獨評估。例如,RSCoin 和BigchainDB都是類似區塊鍊系統,但設計大不相同。類似區塊鍊改變了傳統區塊鍊的架構,一般來說安全性比較差,但速度比較快。
區塊鍊的重要特征
一緻性
在分布式環境下,資料要保證一緻性,需要使用一緻性協定。公有鍊主要使用工作量證明(Proof of Work, PoW)和權益證明(Proof of Stake, PoS)機制。而許可鍊中主要使用拜占庭共識協定(Practical Byzantine General Fault Tolerance, PBFT)和并發的拜占庭共識協定(Concurrent Byzantine Fault Tolerance, CBFT)。共識的代價昂貴,許多計算力及節點通信都用在共識機制上。例如,PBFT需要三輪廣播投票,每次通信以及每筆交易都需要簽名和解簽,80%的計算都用在簽名和解簽上。
區塊鍊雖然被稱為分布式資料庫,但是它的作業和傳統資料庫大不相同,包括關系(relational)型資料庫、對象(object)資料庫、非關系型(NoSql)資料庫及時序(temporal)資料庫。區塊鍊是以建塊來維持一緻性,而傳統資料庫以各個交易來解決一緻性問題。
高速區塊鍊與低速區塊鍊是截然不同的。
- 低速鍊環境下,交易和共識是用串行的方法來處理的,一緻性問題容易解決;
- 而在高速環境下,交易和建塊是并行的,一緻性問題是一個新的研究難題。
例如,在區塊鍊裡,每秒可以有上萬次交易,每秒可以建立多塊,每塊也可以有上萬次交易,這些交易可能都與某個資料有關聯。例如,在央視微電影平台項目中,幾秒鐘之内會有上萬人點播同一個視訊,因而在一個塊裡面可能就要對同一個視訊有上千個點播。如果使用傳統資料庫,每次點播都是一個寫操作,而在同一個交易裡面,在同一個資料上不允許有一個以上的寫操作。可是,在央視微電影平台上,必須容許同時在一個塊中對于同一個資料進行上千個寫操作。
可擴充性
從第一代比特币到第二代以太坊,都面臨嚴峻的可擴充性問題。雖然有多種解決方案,但是每個方案都有缺陷。
- 例如,以太坊曾經提出可擴張的方案,經過了兩年仍然無法實作。
- 是以,有些方案幹脆放棄區塊鍊的定義來解決可擴充性問題,例如BigchainDB [5]、VaultOS、RSCoin [9]。它們或者放棄區塊鍊多拷貝的需求來提高交易速度。這些系統已經偏離傳統區塊鍊的定義,它們是否能被市場接受還有待觀察。一般來說,這樣的系統因為放棄了多拷貝的需求,是以必須在其他方面補足來增加安全性。
基于并發拜占庭共識協定的區塊鍊,其可擴充性分為三步 [1]:
- (1)用并行算法來做拜占庭将軍投票,進而大大提高建塊的速度;
- (2)提出交易區塊鍊(Trading Blockchain, TBC)、賬戶區塊鍊(Account Blockchain, ABC)雙鍊架構,簡化應用架構以及計算;
- (3)利用交易區塊鍊、賬戶區塊鍊雙鍊的特點,使一條鍊可以在運作時分裂成兩條鍊,有兩套不同的硬體分别執行這兩條鍊,以提高速度。
這三個機制不僅具備原始區塊鍊的本質特征,還具有高速和可擴充性。
鍊上代碼
鍊上代碼原先被稱為“智能合約” [10,11],給人們的印象是既智能又是法律上的合約。但事實上不是這樣。智能合約沒有比對的法律架構的技術,“智能合約”非法律所界定的有效力的合同,沒有相關的法律條文及架構來保護參與者。
而鍊上代碼與建塊息息相關,是以它的執行模型與建塊流程互相影響,以至于鍊上代碼在理論上是一個很難的問題。問題的難處在于,每次建塊時需要尋找必須要啟動的鍊上代碼,而且在一些鍊上代碼系統裡,那些代碼必須完成執行之後才能建塊。如果涉及的資料很多,而且鍊上代碼很複雜,将造成鍊上代碼與建塊沖突。雖然理論上鍊上代碼是一個很難的問題,但是在實際系統中仍然可行。
賬戶區塊鍊與交易區塊鍊技術及應用
雙鍊機制:賬戶區塊鍊ABC與交易區塊鍊TBC
賬戶區塊鍊與交易區塊鍊的設計思想是将執行交易和維護賬簿分離,賬戶區塊鍊負責維護賬戶資訊,交易區塊鍊負責執行交易和維護交易曆史。
賬戶區塊鍊存儲賬戶資訊。例如,某個小銀行可以維護一個賬戶區塊鍊,而一個較大的銀行可以維護兩個或者多個賬戶區塊鍊來防止某個賬戶區塊鍊負載過大。賬戶區塊鍊采用多節點設計,節點之間采用拜占庭容錯協定來維護一緻性,通過這種方式,内部員工将很難篡改賬戶資訊。賬戶區塊鍊主要有以下操作:
- 建立賬戶:該過程包括資訊錄入、産生公私鑰、将資訊加入區塊鍊等,以防止關鍵資訊被非法篡改。
- 上傳賬戶 :需要鎖定賬戶使用的金額,并在賬戶區塊鍊節點使用拜占庭算法來保證一緻性,防止産生雙花問題。為了避免加鎖導緻同一時間一個賬戶隻能使用一次的問題,可以在每次上傳時,對賬戶産生一個子賬戶,子賬戶包含需要的金額,隻對子賬戶進行加鎖,保證賬戶可以繼續使用。
- 更新賬戶 :當交易區塊鍊執行完成交易後,會給賬戶區塊鍊傳回資訊。若交易執行成功,則賬戶區塊鍊修改賬戶餘額,同時解鎖。這些修改必須儲存在區塊鍊上,同時使用拜占庭算法來保證一緻性,以防止篡改。若交易執行失敗,則對子賬戶進行解鎖,并返還未使用的金額。
交易區塊鍊是用來交易和結算的通道(或場所),由多個節點共同組成。交易區塊鍊不儲存交易雙方賬戶資訊,隻是在需要的時候從賬戶區塊鍊擷取賬戶資訊。當交易完成後,交易區塊鍊删除賬戶資訊,同時,将交易打包成區塊鍊加入分布式賬簿中。
交易區塊鍊可以分為兩類:内部交易區塊鍊和跨賬戶區塊鍊的交易區塊鍊。
- 内部交易區塊鍊由内部維護,可以較快地與賬戶區塊鍊通信,使得賬戶區塊鍊内部的交易可以快速完成。
- 當需要進行跨賬戶區塊鍊交易時,則使用外部的交易區塊鍊。由于通信等因素的限制,跨賬戶區塊鍊的交易在執行速度上會低于内部交易。
為了保護使用者和銀行的隐私,存儲在交易區塊鍊的資料必須加密,使得隻有參與銀行或央行可以看到資料;而底層用戶端的資料隻有相關銀行和監管機構才可以看到。這樣的設計需要配置會員網絡權限,限制通路區塊鍊資料庫。
交易區塊鍊和賬戶區塊鍊系統擴充性分析
- 賬戶區塊鍊自身擴充性:賬戶區塊鍊提供一個對賬戶進行分割的方法,當賬戶數量過多導緻賬戶區塊鍊不能及時維護時,一個賬戶區塊鍊可以分割為兩個,這兩個賬戶區塊鍊都儲存舊賬簿,以保持曆史賬戶的完整性,同時兩個賬戶區塊鍊之間使用負載均衡的政策,共同維護賬簿,來滿足可擴充性的需求。
- 交易區塊鍊擴充性:如果銀行之間的交易量增多,則可以通過增加交易區塊鍊來解決性能不足的問題。因為所有的交易區塊鍊都可以并行運作,是以系統的處理速度随着交易區塊鍊的增多而變快。系統擴充性:對于整個系統,如果新開設了一家銀行,則該銀行需要建立一個賬戶區塊鍊和内部交易區塊鍊,同時可以選擇加入到已有的跨行交易區塊鍊中。此外,如果某些銀行之間存在大量的交易,為了提高整個系統的效率,可以設定一個專用的交易區塊鍊來處理交易。
熊貓網絡模型
熊貓網絡模型是基于雙鍊技術賬戶區塊鍊和交易區塊鍊提出的一種新架構 [25],主要分為兩個部分:
- 賬戶資訊 :由賬戶區塊鍊來維護所負責的賬戶資訊,包括戶主資訊及餘額等。所有對賬戶的修改都會被區塊鍊記錄,防止被篡改。
- 交易區塊鍊 :由許多交易區塊鍊構成,負責處理所有交易。使用者需要進行交易時,把交易發送給交易區塊鍊,交易區塊鍊根據交易的輸入和輸出方分别向涉及到的賬戶區塊鍊發送賬戶上傳請求,收到賬戶資訊後進行交易,并把賬戶資訊傳回給兩個賬戶區塊鍊完成清算。
熊貓網絡模型可以用在大型應用上,例如央行數字貨币。
央行有兩個功能:
- 其一是發行貨币,通過控制貨币的發行來調控國家的經濟,維護貨币的穩定;
- 其二是監控經濟活動。
貨币發行由央行定,而熊貓模型可以對貨币流通進行追蹤,發現交易中的違法行為,追蹤違法者的賬戶資訊。每一家金融機構至少有一條賬戶區塊鍊和一條交易區塊鍊,交易經過交易區塊鍊,但賬戶資訊存在賬戶區塊鍊。央行可以在每條鍊上放一個節點,所有賬戶和交易資訊都會儲存在央行節點之上,節點之間運作拜占庭協定來保持資料的一緻性。央行可用鍊上資料來進行監管和大資料分析,這是新型的監管科技(RegTech)。
熊貓網絡模型也可以用在其他大型應用上。例如醫療,每家醫院可以有自己的賬戶區塊鍊來保護病人隐私,可以和其他醫院或是其他機構用交易區塊鍊來交換醫療資訊,熊貓網絡上可有醫院、監管機關、保險公司和其他服務公司來完成整個醫療供應鍊。
大資料區塊鍊技術及應用
天德科技公司于2017年3月24日推出基于大資料的區塊鍊(BigData-Based Blockchain,B3)基礎平台。該平台使得大資料區塊鍊從概念與研究進入到實踐與應用階段。B3架構不同于傳統的“區塊鍊+大資料”架構,是把大資料的平台內建在區塊鍊裡面,簡化了金融系統的運作及監管。
傳統上,區塊鍊被視為一個慢而且耗費計算力的系統。B3采用賬戶區塊鍊/交易區塊鍊的雙鍊式架構、并發的拜占庭共識協定及大資料技術,大幅度提高了平台的運作速度及可擴充性。B3将大資料平台完全內建在區塊鍊架構裡面。一旦資料放進區塊鍊,可以立刻在區塊鍊裡面做資料分析,不需要将資料送出區塊鍊。用來分析的資料百分之百來自區塊鍊,不存在鍊下資料傳輸及存儲,因而資料正确性得到保障,實時監管成為可能。
B3具有大資料分析能力的區塊鍊底層平台,可以存儲所有交易主體的全部曆史交易資訊和餘額資訊。監管機關隻要在B3部署一個節點,便可以擁有所有交易資訊。不合規的交易活動可以從B3的鍊上大資料分析中被及時發現。
B3的出現是區塊鍊底層技術發展的一個裡程碑。區塊鍊系統可以處理海量資料,表明區塊鍊正在從邊緣化的應用逐漸進入企業的核心業務。
區塊鍊網際網路
當有無數的區塊鍊包括公有以及聯盟鍊出現的時候,鍊的互動變成一個問題。一般情形下,一條鍊上的資産很難被移到另外一條鍊上。區塊鍊網際網路(Internet of blockchains)技術正用于解決這個問題。
由以太坊創始人之一蓋文·伍德(Gavin Wood)提出來的波爾卡圓點(polkadot)區塊鍊網,Tendermint區塊鍊創始人提出來的宇宙網際網路(cosmos.network),還有Blocknet (Blocknet.co),這三個都屬于“異構網絡”(heterogeneous networks),表示區塊鍊網際網路上面的區塊鍊是不同種類,例如比特币鍊、以太坊鍊、天德鍊或是其他鍊。
因為是異構網絡,是以每一種鍊和其他鍊之間通訊都需要特殊的接口。異構網絡用多鍊來解決擴充性問題,但是由于需要許多鍊和鍊之間的接口,代價較高。
在亞洲出現的兩個區塊鍊網際網路概念,卻是“同質網絡”(homogeneous networks),因為參與的鍊是同一屬性,是以鍊與鍊之間的接口一緻,不需要特殊接口。
- 第一個是日本電氣股份有限公司(NEC)的衛星鍊,每一條鍊都是6個節點,鍊與鍊之間連接配接類似蜂窩,每條鍊的節點少而且數量一緻,是以效率高。每條鍊架構也一樣,是以可以高速地複制,進而節省大量工程成本。
- 另外一個是前文提及的熊貓網絡模型[25]。因為不需要鍊和鍊之間的特殊接口,同質網絡解決擴充性問題的代價比異構網絡低。
區塊鍊網際網路可以像傳統的網際網路一樣散布在全世界,使用者可以通過手機或個人電腦進入,讓各行各業都使用區塊鍊做公證、交易、清算、結算、版權保護及維權。以後不是通用一條大鍊把所有的機構都放在一起,而是用許許多多條鍊,互相連接配接,互相流通,來解決擴充性問題。并且異構以及同質區塊鍊網際網路都會同時存在。
區塊鍊标準接口OBCC
我們設計了一種開放的區塊鍊應用接口(Open Blockchain Connector, OBCC),為使用者提供友善高效地使用區塊鍊的功能,包括将使用者資料存入區塊鍊、查詢使用者需要的資訊。
- 寫入區塊鍊的接口定義為put(action, data),其中參數action表明使用者的資料處理意圖,可以是建立(create)、插入(insert)、更新(update)或删除(delete)。區塊鍊不能更改已經存入的資料,這裡的“update”和“delete”不像資料庫那樣對資料執行“update”或“delete”,而是在區塊鍊上記錄對資料所進行過的操作,即作為一筆交易記錄在案。參數data是使用者的資料,根據不同的應用領域,格式和内容會不同。
- 區塊鍊查詢接口定義為get(condition),其中參數condition表明使用者的查詢條件,可以是塊的哈希值或交易的哈希值,也可以是使用者應用有關的關鍵字等。反向索引、大資料分析技術的使用,使得使用者可以快速高效地擷取有價值的查詢結果。
OBCC提供一個工具包,使用者可以把它導入到自己的軟體項目工程裡,程式設計開發時像調用本地函數或方法一樣使用區塊鍊的功能接口。當使用者程式需要調用區塊鍊的功能時,由OBCC用戶端代理将請求廣播到各個區塊鍊許可節點OBCC伺服器端代理,該代理負責調用區塊鍊的相關功能進行處理,最終存入區塊鍊或查詢到資訊并傳回。
制定區塊鍊标準接口,有以下益處:
- 區塊鍊應用開發人員隻需要了解區塊鍊的功能、OBCC使用,并不需要了解、掌握區塊鍊底層的實作細節,包括共識算法、可擴充性機理、鍊上代碼模式等。
- 區塊鍊底層技術的更新、更新,不影響區塊鍊應用系統。
- 提供區塊鍊測試的标準化規程。測試面向OBCC,無論其内部有什麼樣的共識算法實作,或是使用何種可擴充架構,功能測試和性能測試的測試用例都可複用。
- 基于OBCC,還可以開發面向特殊業務領域的OBCC(Domain Specific OBCC, DS-OBCC),提高應用領域開發效率。
OBCC已經支援多個區塊鍊應用系統的開發,包括央視微電影管理平台、高校學籍及檔案管理系統、金融跨國支付系統、銀行信用卡消費管理系統、遊戲積分跟蹤管理系統等。基于高速區塊鍊應用接口(JBCC)的區塊鍊應用系統開發,具有開發周期短、可擴充性高、運作速度快的特點。
展望
目前,鍊上代碼基本是固定的合約模闆,未來智能合約由誰來編寫、檢驗、測試、認證、修改,以及合約雙方怎樣認可等,都是需要探索的問題。另外,随着區塊鍊技術的成熟,未來各行各業都可以使用區塊鍊,包括食品、金融服務、能源、制藥、航空航天、IT等多個行業和領域。今後,還需要進一步研究區塊鍊技術完備的标準和完善的監督監管機制。
原文釋出時間為:2018年01月25日
本文作者:Omni-Space
本文來源:
CSDN,如需轉載請聯系原作者。