區(qū)塊鏈?zhǔn)且环N在對(duì)等網(wǎng)絡(luò)環(huán)境下,通過透明和可信規(guī)則,(按照時(shí)間戳順序)構(gòu)建不可偽造、不可篡改和可追溯的塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)和管理事務(wù)(或稱交易)處理的模式。實(shí)際上,它是一種分布式數(shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式。作為一種創(chuàng)新的應(yīng)用模式,區(qū)塊鏈具有分布式對(duì)等、數(shù)據(jù)塊鏈?zhǔn)?、不可偽造和防篡改、透明可信、高可靠性等關(guān)鍵特征。用戶可以對(duì)鏈上數(shù)據(jù)執(zhí)行交叉驗(yàn)證以防止欺詐,雖然可以對(duì)本地?cái)?shù)據(jù)進(jìn)行刪除和修改(惡意節(jié)點(diǎn)行為),但是不會(huì)影響全網(wǎng)共識(shí)后的數(shù)據(jù)一致性(只能防止一定比例的惡意節(jié)點(diǎn))。同時(shí),還出現(xiàn)了非鏈?zhǔn)降腄AG、Hashgraph等區(qū)塊鏈系統(tǒng)。
區(qū)塊鏈有哪些分類?
根據(jù)不同的應(yīng)用場景與設(shè)計(jì)體系,區(qū)塊鏈可以采用對(duì)應(yīng)的開放共享與節(jié)點(diǎn)權(quán)限方案,包括如下三種區(qū)塊鏈部署類型:
公有鏈:任意區(qū)塊鏈服務(wù)客戶都可以使用,任意節(jié)點(diǎn)均可接入,由所有節(jié)點(diǎn)共同參與共識(shí)和讀寫數(shù)據(jù),具有較強(qiáng)的去中心化特征,如比特幣和以太坊;
聯(lián)盟鏈:只有利益相關(guān)的特定區(qū)塊鏈服務(wù)客戶才能使用,節(jié)點(diǎn)只有經(jīng)過授權(quán)許可后方可接入網(wǎng)絡(luò),接入節(jié)點(diǎn)按照規(guī)則參與共識(shí)和讀寫數(shù)據(jù),具有較弱的去中心化的特征,如Hyperledger Fabric;
私有鏈:僅由單個(gè)區(qū)塊鏈服務(wù)客戶使用,僅有授權(quán)的節(jié)點(diǎn)才能接入,并按照規(guī)則參與共識(shí)和讀寫數(shù)據(jù)。
區(qū)塊鏈上記錄的區(qū)塊對(duì)象是打包了一段時(shí)間內(nèi)發(fā)生的交易與狀態(tài)的集合。交易是指每次改變狀態(tài)變化的操作,并擁有唯一的交易標(biāo)識(shí)(如哈希值)。同時(shí),區(qū)塊頭部保存了上一個(gè)區(qū)塊的哈希值、當(dāng)前區(qū)塊的哈希值等信息,通常以一種鏈?zhǔn)浇Y(jié)構(gòu)保存所有的區(qū)塊結(jié)構(gòu)。事實(shí)上,區(qū)塊鏈?zhǔn)峭ㄟ^現(xiàn)代密碼學(xué)與分布式共識(shí)機(jī)制等技術(shù)來確保交易可信,而不是通過大型中心化信用機(jī)構(gòu)解決信任背書問題。
區(qū)塊鏈的主要技術(shù)
目前,區(qū)塊鏈系統(tǒng)包括共識(shí)機(jī)制、安全機(jī)制、存儲(chǔ)機(jī)制、P2P通信機(jī)制、智能合約等核心技術(shù)。
★共識(shí)機(jī)制
共識(shí)機(jī)制是一個(gè)經(jīng)典的分布式計(jì)算領(lǐng)域問題。在區(qū)塊鏈系統(tǒng)中,共識(shí)機(jī)制是指實(shí)現(xiàn)不同信任主體節(jié)點(diǎn)之間建立信任、獲取權(quán)益的數(shù)學(xué)算法,提供給分布式網(wǎng)絡(luò)參識(shí)節(jié)點(diǎn)以用于確認(rèn)交易動(dòng)作引起的賬本中的狀態(tài)數(shù)據(jù)變化,并且能夠達(dá)成最終一致性。即使出現(xiàn)節(jié)點(diǎn)故障或不可信節(jié)點(diǎn)等情況,區(qū)塊鏈系統(tǒng)上已經(jīng)發(fā)生的交易也能夠按照正確的預(yù)期方式執(zhí)行,而不會(huì)出現(xiàn)全網(wǎng)節(jié)點(diǎn)數(shù)據(jù)與賬本狀態(tài)不一致的情況。目前,常見的共識(shí)機(jī)制包括PoW、PoS、DPoS、PBFT等,它們?cè)诤弦?guī)監(jiān)管、性能效率、資源消耗以及容錯(cuò)性等方面都有各自不同的特點(diǎn)。鑒于共識(shí)機(jī)制對(duì)區(qū)塊鏈系統(tǒng)性能的影響至關(guān)重要,很多研究都對(duì)此進(jìn)行了深入探討,并針對(duì)區(qū)塊鏈應(yīng)用特點(diǎn)不斷進(jìn)行改進(jìn)與完善。
★安全機(jī)制
區(qū)塊鏈中采用了現(xiàn)代密碼學(xué)中的哈希算法、對(duì)稱加密算法、非對(duì)稱加密算法等來保證數(shù)據(jù)機(jī)密性、完整性、抗抵賴性等安全特性。
(a)哈希算法
哈希算法可以將任意長度的消息明文轉(zhuǎn)換映射為固定長度的二進(jìn)制串輸出,稱為哈希值或散列值,又稱為該消息的指紋(fingerprint)或摘要(digest)。即使兩個(gè)消息只差一個(gè)字符,在經(jīng)過哈希函數(shù)計(jì)算之后,它們所產(chǎn)生的字符串也會(huì)十分雜亂隨機(jī)且完全不存在任何關(guān)聯(lián)性,被廣泛應(yīng)用于檢測(cè)簽名有效性與完整性的場景中。
(b)對(duì)稱加密算法
對(duì)稱加密算法中加密與解密的密鑰是相同的,速度快且占用空間小,加密強(qiáng)度高,但缺點(diǎn)是密鑰一旦泄露就無法繼續(xù)保持當(dāng)前系統(tǒng)的安全性,且必須解決如何安全地提前分發(fā)密鑰問題。
(c)非對(duì)稱加密算法
非對(duì)稱加密算法為用戶提供一組對(duì)應(yīng)的公開密鑰和私有密鑰。任何人都可以使用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用戶能使用自己的私鑰解密,任何未授權(quán)的用戶包括發(fā)送者都無法解密該信息。同時(shí),用戶可以使用私鑰對(duì)信息進(jìn)行簽名,任何人都可以用該用戶公開的公鑰檢驗(yàn)該信息簽名的身份,即驗(yàn)證該信息是否由指定用戶簽名,其身份具有不可否認(rèn)性,從而使得簽名具有不可偽造是否由指定用戶簽名,其身份具有不可否認(rèn)性,從而使得簽名具有不可偽造性。由于加密和解密時(shí)使用的密鑰是不同的,因此,這類公鑰密碼算法也稱為非對(duì)稱密碼算法。
★存儲(chǔ)機(jī)制
區(qū)塊鏈數(shù)據(jù)通常存儲(chǔ)在包括KV鍵值型數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫、普通文件等中。其中,KV鍵值型數(shù)據(jù)庫中數(shù)據(jù)結(jié)構(gòu)與接口都比較簡單,具有很高的讀寫性能與良好的可擴(kuò)展性,能支持大規(guī)模并發(fā)鍵值對(duì)數(shù)據(jù)的讀寫請(qǐng)求,支持基本增刪改查功能,通常不支持復(fù)雜SQL功能與強(qiáng)事務(wù)性,無法快速執(zhí)行范圍查詢等統(tǒng)計(jì)功能。為了獲得高性能、低延遲與高吞吐量,目前還出現(xiàn)了分布式內(nèi)存型的KV鍵值型數(shù)據(jù)庫,如Redis等,它們通過在內(nèi)存中維護(hù)大量的哈希表來存儲(chǔ)關(guān)鍵字及指向鍵值對(duì)的指針,利用并發(fā)與索引優(yōu)化,支持內(nèi)存數(shù)據(jù)的高效查詢、插入與更新操作。同時(shí),還涌現(xiàn)出了TiDB等新型分布式KV鍵值型數(shù)據(jù)庫,其支持SQL語句的高效復(fù)雜查詢,包括范圍查詢、Join查詢支持等,提供接近線性的系統(tǒng)擴(kuò)展能力與實(shí)時(shí)并發(fā)寫入能力。區(qū)塊鏈平臺(tái)常用的KV鍵值型數(shù)據(jù)庫包括LevelDB、CouchDB、BerkeleyDB等,用于保存區(qū)塊鏈中的區(qū)塊索引信息、狀態(tài)數(shù)據(jù)等鍵值對(duì)類型的數(shù)據(jù)。Hyperledger Fabric還使用普通文件存儲(chǔ)原始的賬本區(qū)塊數(shù)據(jù),將共識(shí)后的區(qū)塊數(shù)據(jù)按protocol buffer編碼格式序列化為二進(jìn)制字節(jié)數(shù)組后,寫入文件進(jìn)行持久化保存。
★P2P通信機(jī)制
區(qū)塊鏈網(wǎng)絡(luò)通常采用P2P(Peer to Peer)協(xié)議,節(jié)點(diǎn)之間直接通過交換方式共享信息,又被稱為對(duì)等計(jì)算。P2P網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)地位平等,不需要中心服務(wù)器節(jié)點(diǎn)來分配任務(wù),每個(gè)節(jié)點(diǎn)可同時(shí)作為服務(wù)提供者與服務(wù)請(qǐng)求者。這種分布式架構(gòu)避免了集中式架構(gòu)中心節(jié)點(diǎn)的性能瓶頸,可以有效利用網(wǎng)絡(luò)節(jié)點(diǎn)的性能與網(wǎng)絡(luò)帶寬,從而提升系統(tǒng)的整體效率。同時(shí),還可以根據(jù)需求擴(kuò)展節(jié)點(diǎn)規(guī)模,具有良好的可擴(kuò)展性與負(fù)載均衡能力。例如,BitTorrent是基于P2P技術(shù)共享大文件并進(jìn)行內(nèi)容分發(fā)的典型平臺(tái),每個(gè)用戶節(jié)點(diǎn)在下載文件的同時(shí)又不斷為其他用戶節(jié)點(diǎn)提供上傳已經(jīng)下載的數(shù)據(jù)。
★智能合約
1994年密碼學(xué)家Nick Szabo提出了“智能合約”的概念,即一個(gè)智能合約是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議,它是一種用計(jì)算機(jī)語言取代法律語言去記錄條款的合約。Nick Szabo希望能夠在互聯(lián)網(wǎng)上結(jié)合現(xiàn)實(shí)社會(huì)中已有的合約法律法規(guī)以及商業(yè)實(shí)踐,將線下商業(yè)活動(dòng)“搬遷”到互聯(lián)網(wǎng)上進(jìn)行??梢哉f,智能合約就是部署在區(qū)塊鏈系統(tǒng)虛擬機(jī)上能夠自動(dòng)運(yùn)行與驗(yàn)證的協(xié)議程序,不需要人為干預(yù)觸發(fā)操作,具有一定的自治性、強(qiáng)制性與自我驗(yàn)證功能。
在區(qū)塊鏈技術(shù)領(lǐng)域,智能合約是指基于預(yù)定事件觸發(fā)、不可篡改、自動(dòng)執(zhí)行的計(jì)算機(jī)程序。虛擬機(jī)是區(qū)塊鏈系統(tǒng)中運(yùn)行智能合約的執(zhí)行環(huán)境,如EVM(以太坊虛擬機(jī))提供了圖靈完備的虛擬機(jī),通常將用戶編寫的Solidity語言程序編譯成EVM字節(jié)代碼后再調(diào)用運(yùn)行,而比特幣交易系統(tǒng)只是設(shè)計(jì)了一個(gè)不具備圖靈完備性的堆棧式腳本引擎,支持鎖定腳本與解鎖腳本。Hyperledger Fabric采用Docker容器等作為智能合約執(zhí)行的虛擬機(jī),所有智能合約(Hyperledger Fabric稱之為chaincode,即鏈上代碼或鏈碼)都必須實(shí)現(xiàn)Init()與Invoke()方法。
區(qū)塊鏈技術(shù)通過去中心化方式建立起點(diǎn)對(duì)點(diǎn)的信任關(guān)系,可能會(huì)影響甚至改變決定人類社會(huì)組織形式與現(xiàn)象的基本作用力,包括生產(chǎn)力水平、生產(chǎn)資料和生產(chǎn)成果的分配總量與速率、權(quán)力的中心化程度等,尤其是弱化了權(quán)力集中與運(yùn)作方式,直接改變了生產(chǎn)資料和生產(chǎn)成果的分配方式,進(jìn)一步提高了生產(chǎn)力水平。因此,人們普遍認(rèn)為區(qū)塊鏈技術(shù)具備改變當(dāng)前很多領(lǐng)域的潛力,可以與電力、互聯(lián)網(wǎng)等技術(shù)革命相提并論,甚至被《華爾街日?qǐng)?bào)》譽(yù)為五百年來最具影響力的金融創(chuàng)新之一。與此同時(shí),區(qū)塊鏈已經(jīng)成為社會(huì)與科研人員關(guān)注的熱點(diǎn),在金融服務(wù)、供應(yīng)鏈管理、文化娛樂、智能制造、社會(huì)公益、教育就業(yè)、醫(yī)療健康等垂直領(lǐng)域都引起了人們的廣泛關(guān)注和強(qiáng)烈興趣。