區(qū)塊鏈如何在實(shí)際業(yè)務(wù)應(yīng)用層中構(gòu)建出一個(gè)高可靠度的互信機(jī)制
我們知道區(qū)塊鏈?zhǔn)?u>比特幣的底層技術(shù),它是將記錄區(qū)塊以鏈條的方式進(jìn)行組合并串接在一起,通過(guò)去中心化和去信任的方式集體維護(hù)一個(gè)可靠的數(shù)據(jù)庫(kù)及數(shù)據(jù)結(jié)構(gòu),從而支撐了數(shù)據(jù)的一致性并提高流程可靠度。在實(shí)際業(yè)務(wù)應(yīng)用層,主要采用了智能合約的互信機(jī)制,實(shí)現(xiàn)前端的數(shù)字認(rèn)證和信息追溯。
區(qū)塊鏈具有三個(gè)非常關(guān)鍵的特點(diǎn):即保障數(shù)據(jù)的完整性、去中心化的可靠性以及提供數(shù)據(jù)的安全性。
保障數(shù)據(jù)的完整性:通過(guò)“區(qū)塊+鏈”創(chuàng)新數(shù)據(jù)庫(kù)結(jié)構(gòu)。將數(shù)據(jù)分成不同的區(qū)塊,每個(gè)區(qū)塊通過(guò)特定的信息鏈接到上一區(qū)塊的后面,前后順連來(lái)呈現(xiàn)一套完整的數(shù)據(jù)。從技術(shù)上講,它是將數(shù)據(jù)或代碼打包成一個(gè)區(qū)塊,蓋上時(shí)間戳,與上一個(gè)區(qū)塊銜接在一起,時(shí)間戳是區(qū)塊鏈中重要的技術(shù)創(chuàng)新。
去中心化的可靠性:構(gòu)建P2P分布式網(wǎng)絡(luò)結(jié)構(gòu)的協(xié)議機(jī)制,讓全網(wǎng)任意節(jié)點(diǎn)都來(lái)驗(yàn)證其他節(jié)點(diǎn)記錄結(jié)果的正確性;同時(shí)構(gòu)建分布式網(wǎng)絡(luò)系統(tǒng),讓數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都實(shí)時(shí)更新并存放于網(wǎng)絡(luò)節(jié)點(diǎn)中。從技術(shù)上講,它是基于去中心化開(kāi)源協(xié)議,運(yùn)用分布式記賬、分布式傳播、分布式存儲(chǔ)等技術(shù)。
提供數(shù)據(jù)的安全性:依賴于非對(duì)稱加密算法及數(shù)字簽名。兩個(gè)密碼具有非對(duì)稱特點(diǎn)——公鑰和私鑰。數(shù)據(jù)加密時(shí)使用公鑰,全網(wǎng)可用于加密;數(shù)據(jù)解密時(shí)使用私鑰,只有信息擁有者才能解密。從技術(shù)上講,典型的非對(duì)稱加密算法有:RSA、Rabin、D-H、ECC、Elgamal等。
因此,區(qū)塊鏈的技術(shù)具有去中心化、記錄時(shí)間戳、分布式記賬、集體維護(hù)、不可篡改、去信任、非對(duì)稱加密等技術(shù)特性特性,這些特性支撐了上層業(yè)務(wù)的可管、可控、可靠和安全。
但是我想對(duì)于大都數(shù)讀者而言,區(qū)塊鏈仍然是一個(gè)比較抽象的技術(shù)名詞,它到底是一個(gè)什么樣的邏輯結(jié)構(gòu)?為何具備上述特點(diǎn)就能保證上層業(yè)務(wù)應(yīng)用的安全可靠?這就非常有必要引入一張直觀的圖示加以說(shuō)明。在互聯(lián)網(wǎng)上通常都是有關(guān)比特幣應(yīng)用里區(qū)塊鏈的結(jié)構(gòu)圖,而且比較簡(jiǎn)化很難理解,這里面我結(jié)合了大量參考勾勒出一張完整的技術(shù)框架和功能示意圖,希望能與各位讀者產(chǎn)生共鳴。
首先,我們將區(qū)塊鏈的在實(shí)際應(yīng)用中的整體架構(gòu)分為四層:即應(yīng)用層、擴(kuò)展層、網(wǎng)絡(luò)層和存儲(chǔ)層。
應(yīng)用層:相當(dāng)于B/S架構(gòu)的瀏覽器端,但卻是目前最最缺少的市場(chǎng)空白區(qū)(能為我們最終客戶提供什么應(yīng)用服務(wù)),我們現(xiàn)在市場(chǎng)上所接觸到的,恐怕就是互聯(lián)網(wǎng)和貨幣BTM機(jī)、數(shù)字錢包、音像、視訊出版等應(yīng)用了,而且還都很不成熟,說(shuō)白了還不是很普遍。但由于應(yīng)用層直接與客戶接觸,所以它是實(shí)現(xiàn)數(shù)字認(rèn)證、信息追溯的重要環(huán)節(jié)。
擴(kuò)展層:相當(dāng)于B/S架構(gòu)的服務(wù)端,擴(kuò)展層與應(yīng)用層關(guān)聯(lián)性密切。我們讀者在其他文章中所看到的表述,實(shí)際上并沒(méi)有很清晰的說(shuō)明應(yīng)用層與擴(kuò)展層之間的關(guān)系。這里面強(qiáng)調(diào),如果是比特幣交易類應(yīng)用,則不需要擴(kuò)展層即可直接實(shí)現(xiàn)業(yè)務(wù)支撐;但如果是數(shù)字音像和第三方出版等應(yīng)用,則需要擴(kuò)展層的智能合約機(jī)制。所謂“智能合約”就是“可編程合約”,或者叫做“合約智能化”,其中的“智能”是執(zhí)行上的智能,也就是說(shuō)達(dá)到某個(gè)條件后合約則自動(dòng)執(zhí)行。在擴(kuò)展層實(shí)現(xiàn)方面會(huì)用到一些技術(shù),包括分布式存儲(chǔ)、機(jī)器學(xué)習(xí)、大數(shù)據(jù)等。
網(wǎng)絡(luò)層:就是上文中所述的P2P網(wǎng)絡(luò),既然是分布式網(wǎng)絡(luò)那一定是多點(diǎn)對(duì)應(yīng)、交叉關(guān)聯(lián)的。網(wǎng)絡(luò)層中每一個(gè)節(jié)點(diǎn)的背后都是一個(gè)用戶端,端側(cè)B、C、D、E的背后都會(huì)存在一個(gè)與A相同的應(yīng)用層。在實(shí)際應(yīng)用過(guò)程中,互信機(jī)制就是通過(guò)這樣的分布式網(wǎng)絡(luò)建立起來(lái)的,從技術(shù)開(kāi)發(fā)角度講主要用到了分布式算法,比如Paxos算法、一致性Hash算法等。而且還需要使用網(wǎng)絡(luò)編程語(yǔ)言,比如Python、Go、Node.js等。
存儲(chǔ)層:數(shù)據(jù)存儲(chǔ)可以相對(duì)獨(dú)立,選擇自由度比較大,選擇的原則需要考慮存儲(chǔ)性能和易用性,因此存儲(chǔ)方式很重要,即——“區(qū)塊+鏈”的存儲(chǔ)方式。區(qū)塊鏈的核心就在于此,數(shù)據(jù)塊以鏈條的形式存放且環(huán)環(huán)相扣,每一個(gè)應(yīng)用端的背后都通過(guò)這樣的存儲(chǔ)結(jié)構(gòu)記錄著一串信息。在存儲(chǔ)層主要用到相應(yīng)的存儲(chǔ)技術(shù),比如LevelDB、Redis、Memcached等。