王心妍
(國網(wǎng)河南省電力公司信息通信公司數(shù)據(jù)中心,河南 鄭州 450052)
區(qū)塊鏈這一概念,是作為比特幣的底層技術第一次被提出。區(qū)塊鏈具有明顯的不可篡改特點以及強大的去中心化特征。通過對區(qū)塊鏈技術展開的大量實際研究得知,想要保證區(qū)塊鏈相關算法在實際工作中能夠真正發(fā)揮出應有的作用,相關算法資源必須具備較高的質量,否則不僅會使大量的計算資源遭到浪費,而且對資源的吞吐率較低,具有較高的不適用特點。以有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法能夠使同一時間多名用戶共同完成交易確認的目標有效實現(xiàn),相比于傳統(tǒng)區(qū)塊鏈項目,所需交易時間更短,能夠節(jié)省大量硬件資源,使區(qū)塊鏈對具體交易的處理具有較高效率。本文針對基于有向無環(huán)圖的高效區(qū)塊鏈共識算法展開詳細分析,結合實際情況對現(xiàn)有區(qū)塊鏈缺乏健全性的存儲數(shù)據(jù)的結構部分進行完善,從而確保存儲數(shù)據(jù)的結構部分能夠憑借共識算法的組成元素身份呈現(xiàn),從而使區(qū)塊鏈對大量交易進行有效處理的目標充分實現(xiàn)。
根據(jù)對已有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法交易塊生成過程展開的大量實際調查研究得知,在對相關算法進行研究的過程中,可以從以下幾個部分入手:
第一,交易單使在交易雙方良好的配合下正式誕生,并且交易塊的創(chuàng)建也是在此環(huán)境下開展,在進行簽字確認之前,要對交易塊的實際交易內容明確,這樣才能確保創(chuàng)建出的交易塊相關內容具有的合法性達到標準要求。
第二,參與區(qū)塊創(chuàng)建的礦工要對區(qū)塊進行驗證,在確保驗證結果能夠達到標準要求之后,才能進行簽字和確認。在對交易塊相關內容具有的合法性進行判斷時,必須確保確認機制在礦工的簽名確認完成的基礎上開展。
第三,對于參與到簽名確認中的最后一名礦工而言,必須在整體區(qū)塊鏈中將上一階段過程中完成的交易塊進行廣播,這樣才能最大程度保證區(qū)塊鏈中的每一個節(jié)點在對區(qū)塊進行更新時實現(xiàn)同步目標。此時交易才算正式成功,最終的結果被完整記錄到區(qū)塊鏈中。
在交易塊生成算法開展到第一階段時,對交易內容的簽名需要在交易雙方的共同協(xié)商下有效完成。簽名完成之后,創(chuàng)建區(qū)塊應由交易方發(fā)起,在交易塊的主體結構全部完成之后,在區(qū)塊鏈網(wǎng)絡中將完成的交易塊進行廣泛傳播,在此基礎上才能進行下一步曠工的簽名檢驗,對相關簽名是否具有較高合法性進行判斷。在此基礎上,確保最終生成的區(qū)塊能夠有效附著在發(fā)起方的ID區(qū)塊鏈上。
當交易塊生成算法開展到第二階段時,參與創(chuàng)建的礦工要對上一階段生成的初始交易塊簽名進行有效驗證,主要從以下幾個方面入手:
礦工部分首先要對rst字段進行全面檢查。如果該字段的數(shù)值為0,不僅要堅決杜絕生成該區(qū)塊,并且還要在網(wǎng)絡中對其他礦工進行廣播。而此部分區(qū)塊在礦工部分的交易塊生成算法則被終止,具體表示為:
同時滿足條件(1)和條件(2)。
此算法中,m主要代表了區(qū)塊信息,T-BLOCK代表區(qū)塊,函數(shù)Forward()則代表了廣播區(qū)塊,Tpbml主要表示該區(qū)塊正處于第二步操作過程中,pbml則代表了礦工在前一區(qū)塊中的簽名列表。
第二,對礦工在前一區(qū)塊中的簽名列表進行全面檢查。如果在此列表中出現(xiàn)了某一名礦工的ID,那么可以確定在該區(qū)塊中這名礦工已經(jīng)參與過簽名。此時不僅要對該區(qū)塊進行拒絕,而且還要在網(wǎng)絡中廣播給其他礦工,從而使該礦工部分的交易塊前一區(qū)域生成算法在這一區(qū)塊中被終止。
第三,準確判斷在前一區(qū)塊礦工列表中是否存在已簽名礦工的ID。通過對函數(shù)Search()的運用,可以將是否存在前一區(qū)塊簽名列表中礦工ID與已簽名礦工ID匹配成功的情況客觀體現(xiàn)出來,如果存在二者ID匹配成功的情況,則可以判斷礦工存在違反操作規(guī)則的行為。此時不僅區(qū)塊被拒絕,還要在網(wǎng)絡中對其他礦工進行廣播,從而導致此區(qū)塊礦工部分的交易塊生成算法終止,具體表示為:
其中,msl代表此區(qū)塊中礦工簽名列表。
第四,rst數(shù)值主動減掉1,具體表示為:
第五,在對交易雙方簽名是否具有合法性進行驗證的過程中,可以通過對區(qū)塊中交易雙方的公鑰進行驗證來實現(xiàn)。當交易雙方簽名具有的合法性驗證不成功時,礦工必須拒絕簽名,并且在區(qū)塊網(wǎng)絡中對其他礦工進行廣播。那么此時該取款曠工部分的交易塊生成算法終止,具體表示為:
其中,驗證雙方簽名結果的校驗函數(shù)用Ω()表示,驗證礦工簽名合法性結果用函數(shù)CheckSign()表示,交易雙方的數(shù)字簽名分別用ga和gb表示,交易雙方的公鑰分別用Pubkeya和Pub-keyb表示。
第六,對區(qū)塊是否被放在正確的位置進行有效檢查。此時如果檢查結果為區(qū)塊沒有被放在正確位置,不僅要對該區(qū)塊進行拒絕,而且還要在區(qū)塊網(wǎng)絡中對其他礦工進行廣播,從而確保該區(qū)塊在這一礦工部分的交易塊生成算法終止。
第七,對其他礦工簽名在列表中是否具有較高合法性進行逐一核對。要在區(qū)塊網(wǎng)絡中將這樣結果告知其他礦工,從而使該區(qū)塊在這一礦工部分的交易塊生成算法正式終止。
第八,在礦工對該區(qū)塊進行簽名的過程中,可以利用橢圓曲線數(shù)字進行簽名,這樣可以確保數(shù)字簽名ECDSA在私鑰keyprivate、隨機數(shù)r、區(qū)塊m的結合下有效生成,具體表示為
第九,礦工要對自身是否為最后一名參與簽名的礦工進行確認,也就是需要對代簽名人數(shù)(rst)字段進行檢查。如果檢查結果為rst≠0,那么可以判斷該名礦工并非最后一位參與簽名的礦工。此時可以確定該礦工在此區(qū)塊中的工作全部完成,此時要將最終的結果在區(qū)塊網(wǎng)絡中廣播給其他礦工,具體表示為
同時滿足條件(3)和條件(4)。
第十,礦工在對自身是否為最后一名參與簽名的礦工進行確認.如果最終的結果判斷為最后一名參與簽名的礦工,那么必須根據(jù)具體的設計要求對該礦工簽名失敗次數(shù)進行檢查,確保最終的檢查結果能夠與設計中不得超過兩次的要求相符。如果最后一位參與簽名的礦工的簽名失敗次數(shù)在兩次以上,那么可以判定該區(qū)塊整體簽名以失敗告終。接下來要對交易雙方發(fā)起通知,對新的區(qū)塊進行組織和創(chuàng)建,具體表示為
同時滿足條件(5)和條件(6)。
其中,礦工ID在礦工獎勵列表中用msl表示,統(tǒng)計數(shù)量則運用函數(shù)count()表示,簽名失敗次數(shù)則用q表示。
在交易塊生成算法開展到第三階段時,通過最后一名參與簽名的礦工將已簽署完成的區(qū)塊廣泛傳播到區(qū)塊鏈網(wǎng)絡中,此時對每一位參與到該區(qū)塊簽名的礦工進行對應獎勵。如果在獎勵發(fā)放過程中最后一位礦工出現(xiàn)作弊行為,那么每一名參與簽名的礦工都可以將最后一位礦工的作弊信息廣泛傳播的區(qū)塊網(wǎng)絡中。此時參與該區(qū)塊作弊信息發(fā)布的簽名礦工數(shù)量超過1/3時,那么將直接對該區(qū)塊簽名過程中最后一位作弊曠工的獎勵進行作廢,對應的交易塊由參與簽名的第一位礦工和第二位礦工生成[1]。
通過對已有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法展開的大量實際研究得知,該算法中所運用的共識數(shù)據(jù)結構與傳統(tǒng)有向無環(huán)形結構之間存在一定差異,是將有向無環(huán)圖作為基礎,結合用戶的實際ID再次展開分類。通過對這種數(shù)據(jù)結構的有效應用,可以將創(chuàng)建傳統(tǒng)區(qū)塊鏈過程中必須等待其他用戶生成完畢才可獲得生成區(qū)塊機會的情況有效解決,能夠使同一時間所有用戶共同創(chuàng)建起始區(qū)塊的目標得到有效實現(xiàn)。與此同時,當區(qū)塊正式生產(chǎn)之后,也可以將傳統(tǒng)在區(qū)塊鏈系統(tǒng)中添加區(qū)塊時必須具有連續(xù)6個區(qū)塊的確認方式徹底改變[2]。
在傳統(tǒng)區(qū)塊鏈共識算法模式中,pow類型獎勵機制在對獎勵值進行判定時,主要是以礦工挖礦的速度為依據(jù),只有計算速度最快的礦工可以獲得對應獎勵。這樣的方式導致參與到計算中的其他礦工產(chǎn)生不要付出,是對計算能力資源的浪費。而以有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法在正式生成區(qū)塊之后,所有參與簽名的礦工不僅都能獲得對應的獎勵,而且所獲得的獎勵價值不以簽名的先后次序為依據(jù)。這樣不僅能夠將傳統(tǒng)pow類型中運用的區(qū)塊鏈共識算法由于礦工之間競爭導致的資源浪費情況從根源得到解決,而且還能使區(qū)塊鏈共識算法的效率進一步提升[3]。
根據(jù)對已有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法展開的大量實際調查和研究能夠發(fā)現(xiàn),由在該算法中同一天之內同一組礦工不能共同簽署兩個以上(包括兩個)區(qū)塊,因此如果發(fā)生礦工對多個用戶進行惡意控制的情況,區(qū)塊鏈的整體運行效率也不會受到任何影響。該機制與傳統(tǒng)pow類型區(qū)塊鏈共識算法中的礦工擁有更多計算能力就能獲取簽署更多區(qū)塊權力的模式有效區(qū)別,不僅能夠使每一名礦工在挖礦過程中具有的公平性得到有效保障,而且還能確保所有活躍的礦工都可以擁有簽署區(qū)塊的公平權利[4]。
相比于傳統(tǒng)pow類型共識算法,以有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法對資源的占有率更低,所有參與簽名的礦工對計算資源的占用只有在計算merkle樹的過程中才會發(fā)生。與此同時,相比于傳統(tǒng)pos共識算法而言,在對區(qū)塊權利進行判斷的過程中主要以用戶具有的實際權益為依據(jù),能夠將傳統(tǒng)pos共識算法中的投票步驟刪減。不僅能夠使礦工在挖礦過程中具有的公平性得到保障,而且還能使出塊效率得到有效提高[5]。
根據(jù)以上分析能夠明確了解,通過將區(qū)塊鏈結構設計成有向無環(huán)圖,能夠使傳統(tǒng)區(qū)塊鏈算法中對資源大量消耗和效率難以提升的問題得到有效解決。與此同時,針對在進行大量交易過程中傳統(tǒng)區(qū)塊鏈項目具有的效率降低問題,相關人士對區(qū)塊生成共識算法進行了全新設計,新的算法能夠將區(qū)塊存儲結構與礦工簽名進行有效結合,并且能夠使計算資源得到大幅度節(jié)約,能夠對大量交易進行快速處理,使同一時間全體用戶進行共同交易同時生成區(qū)塊的目標得到有效實現(xiàn)。該算法不僅能夠使礦工在縣城區(qū)塊鏈項目中對其他區(qū)塊生成所需的等待時間大幅度縮短,并且以有向無環(huán)圖為基礎的高效區(qū)塊鏈共識算法可以不必采用pos類算法,只需通過對應的選舉產(chǎn)生記錄區(qū)塊權力即可。也就是說,與傳統(tǒng)方法相比,不僅具有較高的公平性,而且還能確保生成區(qū)塊的效率更高,是一種具有較高有效性和可行性的區(qū)塊鏈共識算法。