王心妍
(國網河南省電力公司信息通信公司數據中心,河南 鄭州 450052)
區塊鏈這一概念,是作為比特幣的底層技術第一次被提出。區塊鏈具有明顯的不可篡改特點以及強大的去中心化特征。通過對區塊鏈技術展開的大量實際研究得知,想要保證區塊鏈相關算法在實際工作中能夠真正發揮出應有的作用,相關算法資源必須具備較高的質量,否則不僅會使大量的計算資源遭到浪費,而且對資源的吞吐率較低,具有較高的不適用特點。以有向無環圖為基礎的高效區塊鏈共識算法能夠使同一時間多名用戶共同完成交易確認的目標有效實現,相比于傳統區塊鏈項目,所需交易時間更短,能夠節省大量硬件資源,使區塊鏈對具體交易的處理具有較高效率。本文針對基于有向無環圖的高效區塊鏈共識算法展開詳細分析,結合實際情況對現有區塊鏈缺乏健全性的存儲數據的結構部分進行完善,從而確保存儲數據的結構部分能夠憑借共識算法的組成元素身份呈現,從而使區塊鏈對大量交易進行有效處理的目標充分實現。
根據對已有向無環圖為基礎的高效區塊鏈共識算法交易塊生成過程展開的大量實際調查研究得知,在對相關算法進行研究的過程中,可以從以下幾個部分入手:
第一,交易單使在交易雙方良好的配合下正式誕生,并且交易塊的創建也是在此環境下開展,在進行簽字確認之前,要對交易塊的實際交易內容明確,這樣才能確保創建出的交易塊相關內容具有的合法性達到標準要求。
第二,參與區塊創建的礦工要對區塊進行驗證,在確保驗證結果能夠達到標準要求之后,才能進行簽字和確認。在對交易塊相關內容具有的合法性進行判斷時,必須確保確認機制在礦工的簽名確認完成的基礎上開展。
第三,對于參與到簽名確認中的最后一名礦工而言,必須在整體區塊鏈中將上一階段過程中完成的交易塊進行廣播,這樣才能最大程度保證區塊鏈中的每一個節點在對區塊進行更新時實現同步目標。此時交易才算正式成功,最終的結果被完整記錄到區塊鏈中。
在交易塊生成算法開展到第一階段時,對交易內容的簽名需要在交易雙方的共同協商下有效完成。簽名完成之后,創建區塊應由交易方發起,在交易塊的主體結構全部完成之后,在區塊鏈網絡中將完成的交易塊進行廣泛傳播,在此基礎上才能進行下一步曠工的簽名檢驗,對相關簽名是否具有較高合法性進行判斷。在此基礎上,確保最終生成的區塊能夠有效附著在發起方的ID區塊鏈上。
當交易塊生成算法開展到第二階段時,參與創建的礦工要對上一階段生成的初始交易塊簽名進行有效驗證,主要從以下幾個方面入手:
礦工部分首先要對rst字段進行全面檢查。如果該字段的數值為0,不僅要堅決杜絕生成該區塊,并且還要在網絡中對其他礦工進行廣播。而此部分區塊在礦工部分的交易塊生成算法則被終止,具體表示為:

同時滿足條件(1)和條件(2)。
此算法中,m主要代表了區塊信息,T-BLOCK代表區塊,函數Forward()則代表了廣播區塊,Tpbml主要表示該區塊正處于第二步操作過程中,pbml則代表了礦工在前一區塊中的簽名列表。
第二,對礦工在前一區塊中的簽名列表進行全面檢查。如果在此列表中出現了某一名礦工的ID,那么可以確定在該區塊中這名礦工已經參與過簽名。此時不僅要對該區塊進行拒絕,而且還要在網絡中廣播給其他礦工,從而使該礦工部分的交易塊前一區域生成算法在這一區塊中被終止。
第三,準確判斷在前一區塊礦工列表中是否存在已簽名礦工的ID。通過對函數Search()的運用,可以將是否存在前一區塊簽名列表中礦工ID與已簽名礦工ID匹配成功的情況客觀體現出來,如果存在二者ID匹配成功的情況,則可以判斷礦工存在違反操作規則的行為。此時不僅區塊被拒絕,還要在網絡中對其他礦工進行廣播,從而導致此區塊礦工部分的交易塊生成算法終止,具體表示為:

其中,msl代表此區塊中礦工簽名列表。
第四,rst數值主動減掉1,具體表示為:

第五,在對交易雙方簽名是否具有合法性進行驗證的過程中,可以通過對區塊中交易雙方的公鑰進行驗證來實現。當交易雙方簽名具有的合法性驗證不成功時,礦工必須拒絕簽名,并且在區塊網絡中對其他礦工進行廣播。那么此時該取款曠工部分的交易塊生成算法終止,具體表示為:

其中,驗證雙方簽名結果的校驗函數用Ω()表示,驗證礦工簽名合法性結果用函數CheckSign()表示,交易雙方的數字簽名分別用ga和gb表示,交易雙方的公鑰分別用Pubkeya和Pub-keyb表示。
第六,對區塊是否被放在正確的位置進行有效檢查。此時如果檢查結果為區塊沒有被放在正確位置,不僅要對該區塊進行拒絕,而且還要在區塊網絡中對其他礦工進行廣播,從而確保該區塊在這一礦工部分的交易塊生成算法終止。
第七,對其他礦工簽名在列表中是否具有較高合法性進行逐一核對。要在區塊網絡中將這樣結果告知其他礦工,從而使該區塊在這一礦工部分的交易塊生成算法正式終止。
第八,在礦工對該區塊進行簽名的過程中,可以利用橢圓曲線數字進行簽名,這樣可以確保數字簽名ECDSA在私鑰keyprivate、隨機數r、區塊m的結合下有效生成,具體表示為

第九,礦工要對自身是否為最后一名參與簽名的礦工進行確認,也就是需要對代簽名人數(rst)字段進行檢查。如果檢查結果為rst≠0,那么可以判斷該名礦工并非最后一位參與簽名的礦工。此時可以確定該礦工在此區塊中的工作全部完成,此時要將最終的結果在區塊網絡中廣播給其他礦工,具體表示為

同時滿足條件(3)和條件(4)。
第十,礦工在對自身是否為最后一名參與簽名的礦工進行確認.如果最終的結果判斷為最后一名參與簽名的礦工,那么必須根據具體的設計要求對該礦工簽名失敗次數進行檢查,確保最終的檢查結果能夠與設計中不得超過兩次的要求相符。如果最后一位參與簽名的礦工的簽名失敗次數在兩次以上,那么可以判定該區塊整體簽名以失敗告終。接下來要對交易雙方發起通知,對新的區塊進行組織和創建,具體表示為

同時滿足條件(5)和條件(6)。
其中,礦工ID在礦工獎勵列表中用msl表示,統計數量則運用函數count()表示,簽名失敗次數則用q表示。
在交易塊生成算法開展到第三階段時,通過最后一名參與簽名的礦工將已簽署完成的區塊廣泛傳播到區塊鏈網絡中,此時對每一位參與到該區塊簽名的礦工進行對應獎勵。如果在獎勵發放過程中最后一位礦工出現作弊行為,那么每一名參與簽名的礦工都可以將最后一位礦工的作弊信息廣泛傳播的區塊網絡中。此時參與該區塊作弊信息發布的簽名礦工數量超過1/3時,那么將直接對該區塊簽名過程中最后一位作弊曠工的獎勵進行作廢,對應的交易塊由參與簽名的第一位礦工和第二位礦工生成[1]。
通過對已有向無環圖為基礎的高效區塊鏈共識算法展開的大量實際研究得知,該算法中所運用的共識數據結構與傳統有向無環形結構之間存在一定差異,是將有向無環圖作為基礎,結合用戶的實際ID再次展開分類。通過對這種數據結構的有效應用,可以將創建傳統區塊鏈過程中必須等待其他用戶生成完畢才可獲得生成區塊機會的情況有效解決,能夠使同一時間所有用戶共同創建起始區塊的目標得到有效實現。與此同時,當區塊正式生產之后,也可以將傳統在區塊鏈系統中添加區塊時必須具有連續6個區塊的確認方式徹底改變[2]。
在傳統區塊鏈共識算法模式中,pow類型獎勵機制在對獎勵值進行判定時,主要是以礦工挖礦的速度為依據,只有計算速度最快的礦工可以獲得對應獎勵。這樣的方式導致參與到計算中的其他礦工產生不要付出,是對計算能力資源的浪費。而以有向無環圖為基礎的高效區塊鏈共識算法在正式生成區塊之后,所有參與簽名的礦工不僅都能獲得對應的獎勵,而且所獲得的獎勵價值不以簽名的先后次序為依據。這樣不僅能夠將傳統pow類型中運用的區塊鏈共識算法由于礦工之間競爭導致的資源浪費情況從根源得到解決,而且還能使區塊鏈共識算法的效率進一步提升[3]。
根據對已有向無環圖為基礎的高效區塊鏈共識算法展開的大量實際調查和研究能夠發現,由在該算法中同一天之內同一組礦工不能共同簽署兩個以上(包括兩個)區塊,因此如果發生礦工對多個用戶進行惡意控制的情況,區塊鏈的整體運行效率也不會受到任何影響。該機制與傳統pow類型區塊鏈共識算法中的礦工擁有更多計算能力就能獲取簽署更多區塊權力的模式有效區別,不僅能夠使每一名礦工在挖礦過程中具有的公平性得到有效保障,而且還能確保所有活躍的礦工都可以擁有簽署區塊的公平權利[4]。
相比于傳統pow類型共識算法,以有向無環圖為基礎的高效區塊鏈共識算法對資源的占有率更低,所有參與簽名的礦工對計算資源的占用只有在計算merkle樹的過程中才會發生。與此同時,相比于傳統pos共識算法而言,在對區塊權利進行判斷的過程中主要以用戶具有的實際權益為依據,能夠將傳統pos共識算法中的投票步驟刪減。不僅能夠使礦工在挖礦過程中具有的公平性得到保障,而且還能使出塊效率得到有效提高[5]。
根據以上分析能夠明確了解,通過將區塊鏈結構設計成有向無環圖,能夠使傳統區塊鏈算法中對資源大量消耗和效率難以提升的問題得到有效解決。與此同時,針對在進行大量交易過程中傳統區塊鏈項目具有的效率降低問題,相關人士對區塊生成共識算法進行了全新設計,新的算法能夠將區塊存儲結構與礦工簽名進行有效結合,并且能夠使計算資源得到大幅度節約,能夠對大量交易進行快速處理,使同一時間全體用戶進行共同交易同時生成區塊的目標得到有效實現。該算法不僅能夠使礦工在縣城區塊鏈項目中對其他區塊生成所需的等待時間大幅度縮短,并且以有向無環圖為基礎的高效區塊鏈共識算法可以不必采用pos類算法,只需通過對應的選舉產生記錄區塊權力即可。也就是說,與傳統方法相比,不僅具有較高的公平性,而且還能確保生成區塊的效率更高,是一種具有較高有效性和可行性的區塊鏈共識算法。