999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于節點分組的權益證明共識機制

2022-07-07 02:42:46葛云生
計算機應用與軟件 2022年5期

張 旺 葛云生

(桂林理工大學信息科學與工程學院 廣西 桂林 541006)

0 引 言

區塊鏈技術是2008年由中本聰在白皮書《比特幣:一種點對點的電子現金系統》[1]中提出的。區塊鏈系統中由于其特殊的鏈式結構以及所有節點共同記賬的特性,使得區塊鏈擁有數據一旦上鏈則難以更改、數據透明可追溯等特點。在區塊鏈2.0版本中引入的智能合約,將文本合約轉換為代碼程序,讓區塊鏈不僅僅局限于數字貨幣的交易。區塊鏈系統是由多種算法和技術組合而成,包括共識機制、哈希算法、智能合約等。其中共識機制在區塊鏈系統中起到了關鍵性作用,讓所有節點能夠擁有且共同維護同一賬本。當前使用較多的共識機制有工作量證明(PoW)、權益證明(PoS)、股權證明(Delegated Proof of Stake,DPoS)等[2]。當前比特幣系統使用的共識機制是PoW,即所有礦工同時求解一個數學難題,當某個礦工節點率先正確解決問題并廣播給其他節點且驗證無誤后,該礦工節點挖礦成功并獲得相應獎勵。由于PoW的工作機制需要所有節點挖礦而只有一個節點能夠獲取報酬,同時數學難題的難度較大且只能通過蠻力[3],需要耗費大量的算力而導致資源浪費?;赑oW的問題,在2012年Sunny等[4]提出了PoS,引入了幣齡的概念,減少了算力的浪費,但是同時也帶來了新的問題。由于幣齡越大越容易挖礦成功,節點富愈富而導致權益中心化,以及雖然引入了幣齡但是實質上還是需要全體挖礦導致算力浪費等問題。PoS算法改進可以由兩個方向進行,一個是與PoW類似引入幣齡調整節點挖礦難度[5],仍然需要進行挖礦;另一個則是根據各節點自身權益對出塊節點進行投票[6]。

本文針對PoS共識機制存在的問題,從第一個方向進行改進,提出節點分組權益共識(Node grouping PoS,Ng-PoS)。引入虛擬幣齡解決在區塊鏈系統運行初期,節點無幣無法累積幣齡而不能參與競爭的情況。提出節點分組使節點競爭過程更加公平,改善目前節點富愈富的現象。大幅減少算力浪費,提高低幣齡節點挖礦成功概率。

1 相關工作

1.1 區塊鏈技術

區塊鏈技術包含多個技術相互配合而成,主要包括共識算法、數字簽名、非對稱加密、哈希算法等。區塊鏈是由區塊為基礎且由哈希值為指針連接而成。區塊分為區塊頭和區塊體兩部分,區塊頭中有版本號、前區塊哈希、時間戳、梅克爾樹根、難度值、隨機數等[7],而區塊體中包含了由礦工從交易池中打包的多筆交易,詳細區塊鏈結構如圖1所示。

圖1 區塊鏈結構

1.2 PoS共識機制

區塊鏈系統中共識機制有著重要的作用,決定節點間數據如何達成一致。比特幣系統中使用PoW來進行共識,每一輪的共識都需要解決一個數學難題來競爭記賬權,節點對區塊進行哈希運算需要滿足的條件可用式(1)表示。

Hash(Block)

(1)

式中:Target為區塊鏈系統全網節點哈希運算的目標值。只有最快正確解出難題的節點能夠獲得記賬權以及相應的報酬。PoW機制下所有節點都需要挖礦,而只有一個節點能夠獲勝,導致大量的算力以及電力資源的浪費[8]。PoW節點共識過程如圖2所示。

圖2 PoW節點工作流程

基于PoW資源浪費以及高能耗[9]的問題提出了PoS。在PoW的基礎上引入幣齡的概念如式(2)所示。

Hash(Block)

(2)

式中:coinage為代幣幣齡,幣齡是節點賬戶中代幣乘以代幣保留時間,每一個代幣每天就積累一幣齡且幣齡越高對應挖礦難度越小,出塊的概率也就越高[10]。節點在成功出塊后,幣齡將清零重新開始累積幣齡。由于幣齡的引入代替了PoW中需要的大量礦機,減少了資源的浪費。但是同時也帶來了一些新的問題,由于PoS的運行需要幣齡的支持,然而在運行初期只有創世區塊中擁有代幣,其他節點中沒有,也就無法參與競爭。其次PoS雖然引入了幣齡但是其實質還是需要挖礦,依舊有PoW遺留的問題。同時由于幣齡影響挖礦的難度,高幣齡節點會不斷獲得更多收益,就會出現節點富愈富的局面導致代幣的流動性降低,甚至導致權益中心化從而控制系統[11]。PoS節點共識過程如圖3所示。

圖3 PoS節點工作流程

2 PoS的改進

2.1 虛擬幣齡

采用PoS共識機制的區塊鏈系統,需要幣齡的積累,在系統啟動初期只有創世區塊中有代幣,其他節點無法進行幣齡累積。peerCoin的設計思想是在前期依舊使用PoW,節點通過挖礦獲取代幣,后期再替換為PoS。雖然可以解決在前期節點無幣的問題但是采用PoW就會造成大量資源浪費。此處引入虛擬幣齡(Virtual_coinage),在沒有真實代幣的情況下各節點可以通過累積幣齡后參與競爭從而獲得代幣,如式(3)所示。

Hash(Block)

(3)

此時虛擬幣齡并沒有真實代幣而是默認為1的虛擬代幣與時間的乘積。由于PoS共識時間較短且為了能夠更快地獲取真實代幣進行正式的共識,虛擬幣齡設定每10分鐘累積一次幣齡代替PoS的一天一次的方式。為了產生虛擬幣齡上的差距,只有在線的節點才能累積幣齡。在虛擬幣齡出塊期間獲得的真實代幣以及一天為一個周期所累積的真實幣齡不計入虛擬代幣中,以保證所有節點在前期都有機會成功出塊并獲得獎勵。當虛擬幣齡使用至少一天即產生的真實代幣擁有幣齡時以及至少51%的節點擁有代幣時就停止使用虛擬代幣,而恢復使用PoS共識機制,重新按照獲得的真實代幣進行幣齡的累積,幣齡累積過程如圖4所示。

圖4 幣齡累積過程

該區塊鏈網絡運行前期,利用虛擬代幣賺取真實代幣,而真實代幣不計入虛擬代幣中,用以保證前期所有節點的虛擬代幣不變而不影響幣齡的累積,使所有節點都有相同的幣齡累積速度,保證前期競爭的公平性。同時由于默認的虛擬代幣不變,也就不存在51%攻擊的可能,進一步保證了虛擬幣齡運行期間的安全性。各節點的幣齡相近則該階段無須分組,減少分組時的時間消耗,提高運行效率。

使用虛擬代幣同時產生的真實代幣也在按天累積幣齡,節點在進入正式PoS共識階段時可以立刻使用真實幣齡加入競爭而不必等到正式階段才開始累積,系統從虛擬幣齡向真實幣齡能夠流暢且穩定轉換。為了防止節點在正式進入PoS共識后作惡而必須保證至少51%的節點在前期擁有代幣,以避免作惡節點掌握較多代幣使區塊鏈遭受51%攻擊。

2.2 節點分組

節點分組是為了讓所有節點更加公平地參與競爭且在PoS的基礎上進一步節省資源而設計的分組共識方案。

使用PoS機制的區塊鏈網絡中各個節點的持幣量不同,幣齡也相差較大。各節點能出塊的難度也隨著幣齡大小變化,當全網所有節點都處在同一網絡卻在不同難度下進行出塊競爭,這對于幣齡較小的節點來說是極不公平的,這類節點也很難獲得出塊的權力以獲取收益。通過對節點按幣齡排序后分組,無論是高幣齡節點還是低幣齡節點都只需要與各所屬小組內幣齡相差較小節點競爭出塊。對于組內,相對于全網同時在相差較大的難度下共同競爭,組內節點出塊難度相差更小甚至都將處于同一難度下,對于低幣齡節點來說大大提升了在分組前出塊的概率。

通過對節點進行均等的分組,分組的數量是Ng-PoS共識的關鍵,分組數量過少則分組效果不明顯,同樣出現PoS中的問題。分組數量過多則組內節點數量過少,具有節點中心化的風險。

Ng-PoS共識,將節點按幣齡大小進行排序分組,節點按分組分別在組內進行競爭。逐組競爭,所有小組都至少參與一次稱為一整輪共識。其余小組只需驗證結果而無須參與競爭,Ng-PoS分組及共識過程如圖5所示。

圖5 Ng-PoS共識過程

首先對參數定義:l為共識輪次,tl為當前輪次競爭節點最短耗時,G為全網節點數,n為分組數,gn為當前分組節點數。為了與PoS做對比,則需要Ng-PoS所有小組都至少參與一次共識則共識次數要大于或等于分組數。Ng-PoS的全網節點總耗時如式(4)所示。

(4)

PoS每次共識需要所有節點參與競爭則PoS的耗時如式(5)所示。

(5)

以共識過程中單次共識全網節點總消耗作為評價指標,在總節點數量一致的情況下,以1 000節點為例,改變分組數。根據Ng-PoS各小組節點幣齡對應難度所需耗時與PoS的耗時對比如圖6所示??梢钥闯鯪g-PoS在分為9組時的耗時開始小于PoS,差距不斷增加且組內節點數量較多而不會中心化。

圖6 Ng-PoS、PoS共識全網耗時比較

Ng-PoS記賬權的競爭不再是全體節點共同參與而是按照小組順序依次進行,結構如圖7所示。小組內部幣齡接近的節點間進行競爭,分組后競爭及共識過程如下:

(1) 第一小組組內使用Ng-PoS進行記賬權的競爭。

(2) 獲勝者將區塊廣播全網。

(3) 其余節點驗證區塊,驗證成功后寫入賬本。

(4) 獲勝者獲得收益并清空幣齡。

(5) 所有小組依次重復以上步驟,直到所有分組都有一個節點成功打包區塊。

(6) 暫停共識,重新分組。

圖7 節點分組的Ng-PoS結構

由于是按照幣齡大小順序排序,每個小組中節點的幣齡相差不大,通過分組有效提升低幣齡出塊而降低高幣齡節點出塊概率。由于有分組輪流競爭機制的控制,不會出現低幣齡節點出塊概率異常提升甚至超過其他節點的情況。對于各小組,輪流競爭使小組參與機會均等,保證了小組間的公平性。所有節點的出塊概率只會因為分組而將趨于穩定與均衡,使得區塊鏈網絡中的每一個節點都會有相近的出塊機會。

每次共識各分組內都會有一個節點的幣齡被清除,它可能權益較高以至于成功概率較高,經過幣齡清零,重排序分組后補位的節點與該組其余節點幣齡相近,對小組內其余節點的影響較小,保持了重分組前后的競爭公平性。

2.3 無幣齡隊列

一整輪共識結束后,每個小組產生一個零幣齡節點,總共產生n個零幣齡節點,在重排序分組時這些節點并不會參與而是被放置進一個無幣齡分組。如果無幣齡節點參與排序分組,則在最后一組中將會有大量無幣齡節點,這樣就大大增加了該分組中其余有幣齡節點的成塊概率,對于其他分組來說不公平。

每共識一整輪就將產生一個無幣齡分組,分組順序進入隊列,同時由于隊列先進先出的性質,這些分組中的節點需要等到產生幣齡并在重排序分組間隙再按照順序依次加入,無幣齡隊列如圖8所示。

圖8 無幣齡隊列

由于被清空幣齡的節點可能有較多的代幣,其累積幣齡的速度也較其余節點快,引入隊列主要作用是在節點進入無幣齡分組后,就算代幣較多也需要等到隊列靠前的節點全部加入后再加入。有效控制高代幣節點的競爭以及出塊頻率,給小代幣節點更多的機會以及更加公平的競爭環境,無幣齡隊列工作流程如圖9所示。

圖9 無幣齡隊列工作流程

在區塊鏈系統運行過程中不斷會有節點的退出和加入,所有節點都需要通過幣齡排序分組。新節點不能一加入系統就立即開始參與共識,而需要等待一整輪共識結束后與當前無幣齡小組一同加入。

通過出塊而被清除幣齡的節點進入無幣齡隊列后,若無節點重新加入共識,能參與共識的節點數量雖然會減少,由于是分組共識則幣齡的清除也是分組的,其節點的分布是均勻的,不會影響小組節點的正常出塊概率。每一個幣齡累積周期都會有大量節點進入隊列中等待幣齡累積,同時也有大量已經累積有幣齡的節點退出隊列以及新加入網絡的節點參與共識,所以退出與加入隊列的節點數量是能夠互補的,參與區塊鏈共識的節點數量是穩定的,不會因為隊列的存在而使參與共識的節點不斷減少甚至導致節點中心化。

3 與原PoS對比

本文分別通過不同幣齡段節點出塊概率、20次共識耗時、共識全網節點耗時對改進后的Ng-PoS算法與傳統PoS算法進行對比實驗。根據上文對分組數量的研究,此次實驗將節點分為10組。幣齡段不同挖礦時間也不同,則需要所有節點都參與進來以后進行對比。所有節點都依次參與競爭則需要10輪共識,實驗設置20次共識實驗,Ng-PoS共識所有小組及節點都會參與2次。

3.1 各節點出塊概率

由于幣齡不同所對應的難度也不同,也就是通過哈希運算后哈希值前面0的個數不同,難度越大需要計算0的個數則越多。設定當前全網目標值為3 000,模擬生成50 000個節點且幣齡依次0到1 000,完整哈希值為8位的情況下,根據式(2)不同幣齡對應目標值以及難度如表1所示。

表1 幣齡對應目標及挖礦難度

由表1得到所有節點中不同幣齡節點挖礦難度,也代表了能成功出塊的概率,根據節點幣齡范圍對應難度得到圖10。而Ng-PoS共識先按幣齡分組再在組內通過幣齡控制組內難度,由于每組每整輪都會有一個節點出塊即可得到圖11。通過圖10可以看出只有幣齡較大的節點有更多機會出塊而獲得收益,而圖11中通過對節點分組,雖然分組間幣齡相差較大但組內節點只須與小組其余幣齡相近節點競爭,且各分組在整輪共識中都會有一個節點成功出塊,分組競爭的方式使得小幣齡節點出塊概率大幅提升。

圖10 原PoS出塊概率

圖11 Ng-PoS出塊概率

3.2 共識時間

實驗不考慮節點間延遲以及各節點處理速度等因素,哈希計算的內容也是相同,只需調整隨機數的情況下,Ng-PoS與PoS分別進行20次共識,記錄兩種共識算法每次共識消耗的時間。實驗將預設好的需要哈希的值與隨機數連接,采用SHA-256算法對其進行計算,依次遞增隨機數值,通過設定哈希值前0的個數計算所需花費時間,哈希計算如式(6)所示。

T=strcmp(hash(1:z),′N′)

(6)

式中:strcmp為比較函數;N表示z個0。將哈希值前0的個數z與N比較,直到滿足條件,對比結果如圖12所示。

圖12 共識耗時對比

通過20次重復實驗,Ng-PoS在20輪次共識中一共耗時17.661 4 s,PoS共耗時2.013 3 s。由于Ng-PoS中存在低幣齡分組,這類小組節點面臨的運算難度較大,在出塊上則需要花費更多的時間,其余小組時間花費則與原PoS接近。

不斷運行就會有電力資源的消耗,在設定各節點平均每小時資源消耗相同的情況下,運行時間越長則所需的資源消耗越多。Ng-PoS每輪共識單個小組進行競爭,其余節點只須等待驗證,時間消耗如式(7)所示。

(7)

而PoS每一輪共識都需要全網節點參與競爭,無論是否有機會成功出塊,時間消耗如式(8)所示。

(8)

在有50 000節點參與的情況下,分別采用Ng-PoS以及PoS進行20輪共識記錄每輪共識全網節點時間消耗對比如圖13所示。

圖13 每輪全網節點總消耗時間對比

經計算Ng-PoS與PoS在20次共識實驗中共識總時間以及全網節點花費總時間對比如表2所示,實驗結果表明,Ng-PoS雖然較PoS在整輪共識中節點耗時更多但是全網節點在共識中相較于PoS花費更少的時間,因為原PoS需要全網所有節點參與出塊競爭,每一輪共識節點都需要花費大量時間及資源。Ng-PoS通過分組,每一輪競爭無須全網節點參與而只需要在當前輪次的單個小組內節點間進行,其余小組只需要等待驗證并共識區塊。由于單次共識全網同時參與競爭節點的減少,花費的總時間越少,消耗的資源也就越少。

表2 Ng-PoS、PoS時間消耗對比 單位:s

4 結 語

本文提出基于節點分組的Ng-PoS共識機制,通過

節點擁有幣齡對節點進行排序并分組。同時提出虛擬幣齡以及無幣齡隊列,旨在解決PoS運行初期節點無幣、改善原PoS中大權益節點頻繁出塊而小權益節點出塊幾率低以及資源高消耗的問題。根據各幣齡范圍出塊概率以及節點共識總時間對比實驗結果,Ng-PoS相較于原PoS有效提升了低幣齡節點出塊概率,雖然每整輪節點共識時間較長但是全網耗時更短,顯著節省了節點能源消耗,對低幣齡節點更加友好。目前仍然還有需要改進和提升的地方,在不影響效率以及不損失去中心化情況下,如何對節點更加合理地分組以及虛擬幣齡的累積周期的設置在將來需要繼續研究和優化。

主站蜘蛛池模板: 人妻熟妇日韩AV在线播放| 伊在人亚洲香蕉精品播放| 首页亚洲国产丝袜长腿综合| 亚洲an第二区国产精品| 亚洲成人手机在线| 亚洲一区无码在线| 国产成人精品视频一区二区电影| 好紧好深好大乳无码中文字幕| 九色综合伊人久久富二代| 黄色网址免费在线| 色成人综合| 又粗又硬又大又爽免费视频播放| 欧美自拍另类欧美综合图区| 国产高清不卡| 欧美精品高清| 秋霞国产在线| 无码一区二区波多野结衣播放搜索| 日本亚洲欧美在线| 亚洲成人一区二区| 国产日韩欧美中文| 亚洲男人的天堂在线观看| 中文字幕无码电影| 宅男噜噜噜66国产在线观看| 亚洲三级影院| 狠狠色噜噜狠狠狠狠色综合久| 亚洲欧美在线精品一区二区| 亚洲 日韩 激情 无码 中出| 国产青榴视频在线观看网站| 国产高清在线观看91精品| 在线免费不卡视频| 日本欧美中文字幕精品亚洲| 欧美在线综合视频| 好吊色国产欧美日韩免费观看| 97在线公开视频| 亚洲VA中文字幕| 亚洲无码熟妇人妻AV在线| 欧美综合区自拍亚洲综合绿色 | 亚洲成人手机在线| 手机在线免费不卡一区二| 亚洲天堂首页| 国产在线无码一区二区三区| 亚洲精品视频网| 国产白浆视频| 色综合五月| 五月天婷婷网亚洲综合在线| 欧美国产日韩在线| 呦视频在线一区二区三区| 欧美午夜在线播放| 国产精品亚洲一区二区三区在线观看| 亚洲无码高清免费视频亚洲| 免费看的一级毛片| 好吊妞欧美视频免费| 亚洲婷婷丁香| 国产精品视频3p| 不卡视频国产| 欧美一区精品| 国产成年女人特黄特色毛片免| 熟女成人国产精品视频| 久久永久视频| 国产成人精品高清不卡在线 | 综合社区亚洲熟妇p| 91极品美女高潮叫床在线观看| 日韩欧美国产成人| 免费一级成人毛片| 男人的天堂久久精品激情| 国产特级毛片aaaaaa| 国产高清无码麻豆精品| 国产综合色在线视频播放线视| 又大又硬又爽免费视频| 国产精品久久久久婷婷五月| 人妻精品全国免费视频| 国产精品无码AV中文| 精品视频一区二区观看| 亚洲人成网站在线播放2019| 亚洲娇小与黑人巨大交| 日韩无码真实干出血视频| 黄网站欧美内射| 天堂亚洲网| 人妻中文久热无码丝袜| 亚洲视频欧美不卡| 亚洲专区一区二区在线观看| 91精品综合|