徐衛(wèi)克
(中國社會科學院大學 北京市 102488)
在互聯(lián)網(wǎng)時代,區(qū)塊鏈成為了數(shù)字交易應用新模式,能夠按照時間順序將數(shù)據(jù)區(qū)塊連接起來,得到鏈式數(shù)據(jù)結構,并采用密碼學方法保證形成的賬本無法被篡改。但在實際應用的過程中,區(qū)塊鏈將出現(xiàn)分叉問題,給惡意攻擊行為的產(chǎn)生留下機會。因此,還應加強預防區(qū)塊鏈分叉的節(jié)點檢測算法研究,以便使區(qū)塊鏈技術得到較好應用。
作為自治節(jié)點的網(wǎng)絡,區(qū)塊鏈技術又被稱之為分布式事務存儲賬本。從結構上來看,由上至下可以劃分為數(shù)據(jù)層、網(wǎng)絡層、共識層、激勵層、合約層與應用層。其中,數(shù)據(jù)層用于對底層區(qū)塊進行分裝,需要采用數(shù)據(jù)加密等技術。網(wǎng)絡層提供節(jié)點數(shù)據(jù)驗證機制,采用P2P技術等實現(xiàn)節(jié)點交互。在各節(jié)點未能相互信任的情況下,由共識層提供工作量和權益等證明,促使節(jié)點達到共識。借助分配、發(fā)行等機制,激勵層能夠對區(qū)塊鏈進行維護。各類腳本和算法在合約層封裝,是區(qū)塊鏈系統(tǒng)運作的基礎。利用應用層,可以為用戶提供相應服務。從本質上來講,區(qū)塊鏈是為去中心化提供支持的技術,能夠利用分布在世界各地的節(jié)點完成數(shù)字貨幣交易賬本記錄,想要控制區(qū)塊鏈系統(tǒng),還要掌握超過半數(shù)的工作節(jié)點群[1]。在區(qū)塊鏈中包含多個首位相連的區(qū)塊,能夠分別用于對一段時間的交易數(shù)據(jù)進行記錄。而各個節(jié)點將利用網(wǎng)絡在本地實現(xiàn)區(qū)塊鏈數(shù)據(jù)存儲,利用共識機制保證各節(jié)點數(shù)據(jù)能夠保持高度一致。因此在信息不對稱的環(huán)境下,區(qū)塊鏈能夠建立數(shù)字貨幣交易信任生態(tài)體系,促使任意節(jié)點在無法相互信任的情況下,能夠依靠共識基礎實現(xiàn)信息安全交互,而無需擔心數(shù)據(jù)被篡改,促使數(shù)字貨幣交易得以借助區(qū)塊鏈系統(tǒng)順利開展[2]。盡管區(qū)塊鏈技術擁有諸多優(yōu)勢,但在數(shù)據(jù)安全方面依然存在一定缺陷。區(qū)塊鏈分叉問題的產(chǎn)生,就會導致系統(tǒng)安全受到威脅,從而影響數(shù)字貨幣交易的正常進行。因此想要進一步推動區(qū)塊鏈技術的發(fā)展,還要提出科學的安全機制,促使區(qū)塊鏈分叉等問題得到解決。
區(qū)塊鏈技術采用的是分布式計算技術,造成其容易產(chǎn)生分叉問題。具體來講,就是在兩個或兩個以上節(jié)點同時生成新區(qū)塊的情況下,無任何區(qū)塊能夠被全部節(jié)點接受,就會出現(xiàn)分叉現(xiàn)象。系統(tǒng)正常工作時出現(xiàn)節(jié)點分叉,屬于自然分叉現(xiàn)象。但是如果因為受認為干預出現(xiàn)分叉,將導致系統(tǒng)數(shù)據(jù)面臨安全威脅。實際伴隨著科學技術的發(fā)展,各種虛擬數(shù)字貨幣需要不斷升級。但不同與單純軟件升級,區(qū)塊鏈系統(tǒng)升級需要對各個參與者進行協(xié)調,在無法被全部參與者接受的情況下就會出現(xiàn)分叉。該種分叉又可以按照系統(tǒng)新規(guī)則兼容情況劃分為軟分叉和硬分叉兩類,前者指的是無論工作節(jié)點共識規(guī)則是否更新,新舊規(guī)則下的區(qū)塊都能被區(qū)塊鏈接受,后者指的是未更新共識規(guī)則的節(jié)點無法接受新規(guī)則區(qū)塊的情況。軟分叉能夠在95%區(qū)塊采用新規(guī)則時迫使舊規(guī)則節(jié)點升級,不會出現(xiàn)較大問題。但是硬分叉一旦產(chǎn)生,由于新規(guī)則不被多數(shù)節(jié)點認同,容易導致區(qū)塊鏈系統(tǒng)發(fā)生嚴重分裂,形成平行的兩條區(qū)塊鏈。而兩條區(qū)塊鏈擁有相同地址、交易格式和私鑰算法,可能造成數(shù)字貨幣交易在一條鏈上合法后再另一條鏈上重新廣播和得到認可,最終導致同筆貨幣發(fā)生重復交易[3]。因此在硬分叉期間,不法分子可以通過重放攻擊盜取資產(chǎn)。與此同時,惡意用戶也可以通過開展低價值粉塵交易導致工作節(jié)點被大量占用,造成區(qū)塊堵塞,正常交易無法及時處理。為完成數(shù)字貨幣交易,用戶可能選擇繳納高交易費獲得打包機會。
針對分叉問題,區(qū)塊鏈主要通過共識機制解決。但在區(qū)塊鏈挖礦速度不斷加快的過程中,末端區(qū)塊容易成為孤塊。一旦區(qū)塊產(chǎn)生速率超出共識信息速率,將導致分叉無法收斂,共識機制無法發(fā)揮作用。應用節(jié)點檢測算法對區(qū)塊鏈分叉進行預防,需要考慮到因升級產(chǎn)生的短時間分叉現(xiàn)象是合法的,但為保證交易的正常開展,還要預防長時間分叉的產(chǎn)生。以往在解決分叉問題時,多采用最長鏈策略,能夠在分叉區(qū)塊鏈產(chǎn)生6個區(qū)塊后判定為結構穩(wěn)定,不符合系統(tǒng)共識,需要淘汰其他支鏈。但盡管分叉問題得到了解決,后續(xù)節(jié)點依然允許挖礦,會持續(xù)消耗系統(tǒng)資源,導致區(qū)塊鏈末端區(qū)塊長時間暴露,并因此導致區(qū)塊承擔被攻擊的風險。結合這些問題,需要在確保節(jié)點按照原本共識機制挖礦的同時,能夠在交易開展過程重對節(jié)點進行監(jiān)測,一旦發(fā)現(xiàn)多個節(jié)點挖礦成功將對節(jié)點檢測算法進行調用,完成合法區(qū)塊節(jié)點篩選,最終得到能夠作為末端區(qū)塊的節(jié)點與主鏈連接。實際在區(qū)塊鏈重,各個工作節(jié)點需要發(fā)揮挖礦功能,就是對硬件性能好的設備提供共識算法,在完成競爭后獲得記賬權,使網(wǎng)絡一致性得到維護[4]。而各個節(jié)點都要參與網(wǎng)絡通信,但如果預先判定節(jié)點不具備路由功能,可以避免節(jié)點連接網(wǎng)絡,達到篩選節(jié)點的目標。采取該種算法,可以維持系統(tǒng)原本工作量,在分叉產(chǎn)生前完成節(jié)點篩選,從而有效避免分叉問題的發(fā)生,起到改進區(qū)塊鏈共識機制的作用。
在區(qū)塊鏈上不斷產(chǎn)生分叉的情況下,各個區(qū)塊鏈支鏈上將不斷有新的區(qū)塊出現(xiàn)。只有使各區(qū)塊保持一致,才不會出現(xiàn)短分支被舍棄的情況。而區(qū)塊鏈高度增加,將導致分支查找到新節(jié)點的概率急速降低,最終造成一個分支最高,繼而對其他分支進行取代。按照算法思路對區(qū)塊鏈分叉進行檢測,需要對節(jié)點進行監(jiān)測,確定節(jié)點挖礦結果。在檢測發(fā)現(xiàn)區(qū)塊數(shù)目為1的情況下,可以判定區(qū)塊合法,在獲得記賬權的同時,能夠對挖礦酬金進行賺取。如果檢測發(fā)現(xiàn)節(jié)點接收到的區(qū)塊數(shù)超出1,需要調用檢測算法,對數(shù)組接收的區(qū)塊狀態(tài)信息進行定義。具體來講,可以利用節(jié)點挖礦產(chǎn)生區(qū)塊時間t進行定義。完成時間排序后,可以將最小t值對應的區(qū)塊當成是唯一區(qū)塊,判定其獲得記賬權,并且能夠完成酬金賺取。在算法結束后,需要將篩選得到的合法區(qū)塊連接到主鏈上,然后結束挖礦。實際在區(qū)塊鏈中,惡意節(jié)點行為和正常節(jié)點行為存在目的差異,惡意節(jié)點習慣于利用分叉實現(xiàn)資產(chǎn)轉移和帶來雙重花費,將導致數(shù)據(jù)無法保持一致。因此在惡意節(jié)點工作的過程中,將出現(xiàn)傳播虛假信息或篡改交易的行為。采用GHOST協(xié)議,能夠對節(jié)點挖礦行為進行抑制。采用節(jié)點檢測算法分析網(wǎng)絡傳輸異步性,能夠確定節(jié)點攻擊行為,根據(jù)分叉情況采取維護措施。完成成功節(jié)點檢測,并使每次挖礦僅產(chǎn)生一個合法區(qū)塊,能夠避免末端區(qū)塊分叉,從而使區(qū)塊數(shù)據(jù)的一致性得到保證。
在算法應用過程中,還應認識到節(jié)點挖礦為隨機過程,一旦同時查找多個區(qū)塊就容易產(chǎn)生分叉。為確定算法應用能否達到預期的目標,還要加強算法與PoW共識機制的應用比較。在實際分析過程中,還應假設區(qū)塊鏈系統(tǒng)處于理想狀態(tài),在開展數(shù)字貨幣交易的過程中,挖掘成功的節(jié)點僅存在一個。而在新節(jié)點獲得記賬權的情況下,區(qū)塊鏈的高度將被加深。在實驗過程中,需要生成1200個符合區(qū)塊鏈格式的交易,其中合法交易600個,惡意占用資源的交易300個,惡意獲取高昂交易費的300個。在完成矩陣混淆后,對算法應用效果展開分析可以發(fā)現(xiàn),惡意節(jié)點行為檢測成功率能夠達到90%以上,在成功檢測后分叉預防成功率能夠達到100%。但是采用傳統(tǒng)PoW共識機制,分叉預防成功率不足80%,使得區(qū)塊鏈系統(tǒng)仍然有較大的幾率遭受攻擊。分析原因可以發(fā)現(xiàn),一旦挖礦結果不止一個,同時均為合法區(qū)塊,如果依然延續(xù)PoW共識機制,系統(tǒng)將出現(xiàn)缺少監(jiān)管的問題,多個區(qū)塊將同時連接主鏈,造成分叉產(chǎn)生。在分支鏈加深的過程中,只有分支鏈深度不同,系統(tǒng)才能做出選擇策略,期間不僅系統(tǒng)資源遭到了消耗,也容易導致節(jié)點攻擊行為的發(fā)生。而采用節(jié)點檢測算法,可以在發(fā)現(xiàn)區(qū)塊不唯一時進行算法調用,實現(xiàn)節(jié)點篩選,確保只有唯一的區(qū)塊能夠連接到主鏈上。由此可見,相較于原本的共識機制,應用算法能夠使區(qū)塊鏈分叉的問題得到預防,保證系統(tǒng)始終維持正常運轉狀態(tài)。而算法應用之所以無法完成全部惡意節(jié)點檢測,與區(qū)塊鏈分叉本身存在的復雜性有一定關系。在系統(tǒng)工作量不斷增加的過程中,信息量也不斷加大,使得算法難以成功判斷所有節(jié)點目的。但從算法應用整體測試結果來看,相較于以往的共識機制,節(jié)點檢測能夠對末端區(qū)塊進行保護,無需在子孫區(qū)塊已經(jīng)形成后才能完成交易信息確認,所以可以縮短區(qū)塊確認時間,使數(shù)據(jù)一致性得到保障,因此能夠成功實現(xiàn)區(qū)塊鏈分叉預防,使分叉發(fā)生幾率得到有效降低。
從加強區(qū)塊鏈安全管理角度來看,采用節(jié)點檢測算法能夠起到明顯作用。在區(qū)塊鏈系統(tǒng)中,末端區(qū)塊將長時間處于暴露狀態(tài),通過節(jié)點檢測可以使經(jīng)過篩選的唯一區(qū)塊與區(qū)塊鏈的末端連接,促使區(qū)塊鏈的安全性得到增強。做到預防分叉產(chǎn)生,意味著被判定為存在惡意行為的節(jié)點在分叉區(qū)塊上無法繼續(xù)挖礦,從而避免分叉延長分支,達到節(jié)約系統(tǒng)存儲空間的目標。實際在比特幣交易系統(tǒng)中,按照現(xiàn)行管理方法6個區(qū)塊的穩(wěn)定結構形成后,交易會被看成是不會出現(xiàn)篡改問題。受這一因素的影響,每10min將有一個區(qū)塊產(chǎn)生,導致交易需要60min才能被確認。而每個分叉系統(tǒng)中將包好1-59個分區(qū)塊,確認后將看成是淘汰的孤塊。各區(qū)塊上限為2MB,用于存儲孤塊將占用2-118MB空間資源,導致系統(tǒng)資源被浪費。應用節(jié)點檢測算法后,可以直接對交易進行模擬,然后進行挖礦檢測,發(fā)現(xiàn)結果不一致將利用算法篩選節(jié)點,確保只有一個節(jié)點能夠對記賬權進行獲取,以免出現(xiàn)分叉問題。采取該種措施,系統(tǒng)不會對分支鏈進行淘汰,因此也無需為孤塊的存儲分配存儲資源,因此能夠在保證區(qū)塊鏈安全性能的同時,使資源浪費問題得到解決。伴隨著區(qū)塊鏈技術的發(fā)展,數(shù)字貨幣交易不斷擴大,越來越多的節(jié)點參與到了挖礦中,導致系統(tǒng)能源消耗日漸增多。而在區(qū)塊鏈交易開展的過程中,將產(chǎn)生大量的電能損耗,縮短交易確認時間能夠起到減少電能損耗的目標,促使數(shù)字貨幣碳交易排放量得到減少,從而為數(shù)字貨幣的發(fā)展提供支撐。因此從總體上來看,應用節(jié)點檢測算法實現(xiàn)區(qū)塊鏈分叉的預防,不僅可以保證數(shù)字貨幣交易的安全性,還應帶來一定的經(jīng)濟效益和環(huán)境效益,符合當前社會的發(fā)展趨勢。
綜上所述,區(qū)塊鏈技術的發(fā)展盡管為數(shù)字貨幣交易的開展提供了技術支撐,但由于技術發(fā)展時間尚短,仍然存在明顯技術缺陷,容易因硬分叉產(chǎn)生導致數(shù)字貨幣正常交易受到不良影響。實際應用節(jié)點檢測算法,可以結合分叉產(chǎn)生原因完成惡意節(jié)點攻擊行為檢測和制約,從而使區(qū)塊鏈的安全性得到保證,繼而為數(shù)字貨幣的發(fā)展提供保障。