書接上文,我們繼續(xù)分享區(qū)塊鏈的單項技術(shù)發(fā)展。

數(shù)據(jù)層發(fā)展
區(qū)塊鏈的數(shù)據(jù)隨著時間增加而不斷增加,這將導(dǎo)致兩個問題。一是新節(jié)點的準(zhǔn)入門檻增加,因為其海量的歷史數(shù)據(jù)將會占用很大的存儲空間,而對存儲空間的高需求將許多沒有高性能設(shè)備的個人用戶拒之門外。二是可擴展性與安全性的沖突,如果存在大量的非驗證節(jié)點,那么在進行驗證時需指定全節(jié)點,這將導(dǎo)致安全性下降,但又不可能要求所有的賬戶都是存儲全部交易記錄,一方面是不現(xiàn)實,另一方面是會導(dǎo)致數(shù)據(jù)同步時間過長。因此,目前的數(shù)據(jù)層的發(fā)展方向為開發(fā)能完成驗證操作但無須存儲完整狀態(tài)數(shù)據(jù)的新型節(jié)點,但僅有驗證功能的新型節(jié)點仍無法避免因出塊節(jié)點高門檻而帶來的中心化趨勢,未來可能需要在出塊節(jié)點的輕量化上進行進一步研究。
目前含有驗證功能的輕量節(jié)點有:
· 輕節(jié)點
輕節(jié)點的專業(yè)技術(shù)名稱為無狀態(tài)客戶端,其與全節(jié)點是一組相對應(yīng)的概念。全節(jié)點就是傳統(tǒng)意義上的區(qū)塊鏈節(jié)點,鏈中的每個區(qū)塊都包含區(qū)塊頭、交易數(shù)量、交易列表三部分,而輕節(jié)點為了保證數(shù)據(jù)輕量化,只存儲區(qū)塊頭,不存儲全量的交易列表等信息。在新塊出現(xiàn)時,輕節(jié)點會被額外提供新塊中全部所需訪問狀態(tài),在收到數(shù)據(jù)后輕節(jié)點通過默克爾證明來判斷一筆交易是否在現(xiàn)在的區(qū)塊鏈交易列表中,實現(xiàn)交易的驗證,大幅降低了節(jié)點對存儲空間的要求,因此輕節(jié)點能夠運行在小容量的個人PC等終端設(shè)備上。當(dāng)前的驗證工作有了一些新進展,以太坊表示可以利用多項式承諾來代替默克爾樹,好處是可以降低驗證成本。
· 簡潔區(qū)塊鏈
新的加密貨幣協(xié)議Coda提出了一種比輕節(jié)點更加輕量的具有驗證功能的節(jié)點,支持在移動端運行。這種簡潔區(qū)塊鏈節(jié)點只需要擁有當(dāng)前的哈希默克爾根就可以通過一種密碼學(xué)證明對交易進行快速驗證。
共識層發(fā)展
近年來共識機制的不斷進步促進了區(qū)塊鏈的發(fā)展,是區(qū)塊鏈能夠被迅速和廣泛應(yīng)用的重要支撐。最開始流行的工作量證明機制(PoW)到權(quán)益證明機制(PoS)都是為保證電子貨幣的安全發(fā)行而設(shè)計的,在性能與拓展性方面的考慮較少。之后出現(xiàn)的驗證池pool和拜占庭容錯PBFT共識機制在性能上有了很大的改進,但相應(yīng)的,在去中心化上做了讓步。共識機制演化的愈發(fā)復(fù)雜,若要逐一解釋清楚并非易事,不在密碼學(xué)技術(shù)上做過多描述,僅介紹各類共識算法的大致特點。
合約層發(fā)展
合約層的智能合約是區(qū)塊鏈在實際應(yīng)用中實現(xiàn)自動交易功能非常重要的一環(huán),智能合約的發(fā)展方向主要在于運行環(huán)境的突破,因為運行環(huán)境與區(qū)塊鏈整體性能的約束,目前智能合約在實際應(yīng)用僅能發(fā)揮”合約”的作用,而離實現(xiàn)”智能”還有一定距離。
區(qū)塊鏈中的智能合約概念最早被以太坊提出,智能合約以代碼形式寫入?yún)^(qū)塊鏈,在之后的交易中依靠條件語句觸發(fā)合約規(guī)則的執(zhí)行。但智能合約的執(zhí)行會為整個區(qū)塊鏈網(wǎng)絡(luò)帶來一定的安全隱患,因此智能合約一般會在沙箱環(huán)境中運行,目前以太坊的EVM與超級賬本的Docker容器即是區(qū)塊鏈中的沙箱環(huán)境。另外智能合約的編程語言種類也逐步增加,以太坊目前僅支持特定的Solidity語言,而后的超級賬本還支持golang、JAVA、Python等語言。
目前智能合約還無法在高隱私保護或是跨鏈等復(fù)雜場景中應(yīng)用,主要因為其受制于區(qū)塊鏈整體性能的約束,而繞開區(qū)塊鏈性能約束的辦法主要為通過實現(xiàn)合約層與共識層的解綁,使智能合約運行在可信的硬件環(huán)境總,共識層僅記錄智能合約執(zhí)行結(jié)果,不過這類解決方案的安全性等問題還在持續(xù)的討論中。
應(yīng)用層發(fā)展
作為區(qū)塊鏈的展示層,應(yīng)用層中的應(yīng)用場景一般就是與用戶直接接觸的業(yè)務(wù)場景。應(yīng)用層有點像是平常的APP、web網(wǎng)頁等前端應(yīng)用概念,應(yīng)用層將請求數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),在進行完數(shù)據(jù)處理之后,區(qū)塊鏈網(wǎng)絡(luò)又會將數(shù)據(jù)結(jié)果返回給應(yīng)用層,使其與用戶進行交互。
應(yīng)用層的發(fā)展就是前臺業(yè)務(wù)與技術(shù)的發(fā)展,幾乎不屬于區(qū)塊鏈技術(shù)的范疇,因此不做過多討論。