[發(fā)明專利]一種基于一致性hash的能源區(qū)塊鏈區(qū)塊存儲方法有效
| 申請?zhí)枺?/td> | 202010377842.4 | 申請日: | 2020-05-07 |
| 公開(公告)號: | CN111581286B | 公開(公告)日: | 2023-03-24 |
| 發(fā)明(設(shè)計)人: | 何濤;桂勛;姚蘭 | 申請(專利權(quán))人: | 桂勛 |
| 主分類號: | G06F16/27 | 分類號: | G06F16/27;G06F16/23;G06F11/14;G06F16/2458;G06F16/248;G06Q40/04 |
| 代理公司: | 成都方圓聿聯(lián)專利代理事務(wù)所(普通合伙) 51241 | 代理人: | 李鵬 |
| 地址: | 610041 四川省成*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 一致性 hash 能源 區(qū)塊 存儲 方法 | ||
1.一種基于一致性hash的能源區(qū)塊鏈區(qū)塊存儲方法,其特征在于,包括以下步驟:
(1)節(jié)點狀態(tài)初始化:對每一個節(jié)點IP進行hash運算,得到hash值h(T),通過對h(T)進行取模運算,得到m(T)=h(T)%n,其中n=2^N,N為最大節(jié)點數(shù);每個節(jié)點將全局所有節(jié)點的m(T)以及IP地址記錄到本地,并與hash環(huán)上一個節(jié)點和下一個節(jié)點建立TCP長連接;所有通過PBFT算法對主節(jié)點達(dá)成共識,選出主節(jié)點;
(2)客戶端提交交易:客戶端將交易發(fā)送到主節(jié)點,主節(jié)點將交易記錄到本地交易池中;
(3)主節(jié)點打包交易并備份存儲區(qū)塊體:主節(jié)點將當(dāng)前交易池中所有交易打包到區(qū)塊中,并通過hash運算得出區(qū)塊hash,h(B);主節(jié)點通過對h(B)進行取模運算m(B)=h(B)%n,得到區(qū)塊在hash環(huán)中的位置,通過對比本地所有節(jié)點的位置m(T),找到m(T)m(B)和m(T)m(B)的兩個節(jié)點L和H,將區(qū)塊體發(fā)送到節(jié)點L和H中,L和H記錄到本地;
(4)所有節(jié)點記錄區(qū)塊頭:主節(jié)點將區(qū)塊hash、時間戳、merkle根、前一區(qū)塊hash打包為區(qū)塊頭,發(fā)送給所有節(jié)點,節(jié)點收到區(qū)塊頭之后,記錄到本地中;
(5)客戶端查賬:客戶端向主節(jié)點發(fā)送查賬請求,主節(jié)點返回包含該交易的區(qū)塊hash;客戶端通過區(qū)塊hash和節(jié)點hash環(huán)計算得到存儲區(qū)塊體的節(jié)點IP,對存儲區(qū)塊體的兩個節(jié)點發(fā)起查賬請求,節(jié)點L和H在接受到查賬請求之后,將區(qū)塊中的交易數(shù)據(jù)返回;客戶端驗證交易簽名,驗證通過則表示交易成功。
2.根據(jù)權(quán)利要求1所述的一種基于一致性hash的能源區(qū)塊鏈區(qū)塊存儲方法,其特征在于,還包括節(jié)點加入,具體包括以下步驟:
(1)當(dāng)節(jié)點加入時,節(jié)點向主節(jié)點發(fā)送節(jié)點加入請求,主節(jié)點接受到加入請求之后,驗證節(jié)點數(shù)目是否大于最大節(jié)點數(shù)N,如果大于,則否決加入請求;如果小于,則將節(jié)點數(shù)加一;
(2)主節(jié)點向所有參與節(jié)點發(fā)送節(jié)點加入請求,包括節(jié)點IP、時間戳;每個節(jié)點對新進入的節(jié)點計算其在hash環(huán)中的位置h(T),如果h(T)不在本節(jié)點hash環(huán)的上一個或者下一個位置,節(jié)點不對新節(jié)點建立連接;
(3)如果h(T)在本節(jié)點上一位置或者下一位置,則與新節(jié)點建立連接,并將結(jié)果發(fā)送到主節(jié)點中;
(4)主節(jié)點將新加入節(jié)點記錄為觀察者節(jié)點,新的區(qū)塊hash環(huán)位置m(B)在新節(jié)點m(T)中時,區(qū)塊即發(fā)送到原來的節(jié)點,也發(fā)送到新節(jié)點中;
(5)新加入的節(jié)點從與其連接的上下游節(jié)點中獲取需要本節(jié)點保存的區(qū)塊,保存在本地;當(dāng)區(qū)塊獲取完成后,向主節(jié)點和連接的上下游節(jié)點發(fā)送狀態(tài)轉(zhuǎn)換請求,主節(jié)點接受到之后,將節(jié)點狀態(tài)從觀察者節(jié)點轉(zhuǎn)變?yōu)橛涃~節(jié)點,以后的需要m(T)保存的區(qū)塊直接發(fā)送到新節(jié)點中;上下游節(jié)點接收到之后,將舊的TCP連接關(guān)閉;節(jié)點加入成功。
3.根據(jù)權(quán)利要求1所述的一種基于一致性hash的能源區(qū)塊鏈區(qū)塊存儲方法,其特征在于,還包括節(jié)點退出,具體包括以下步驟:
(1)當(dāng)節(jié)點退出時,節(jié)點向主節(jié)點發(fā)送節(jié)點退出請求,主節(jié)點接受到請求之后,將節(jié)點數(shù)減一,向所有節(jié)點發(fā)送退出請求,節(jié)點接收到之后,判斷是否在自己的上下游,如果不在,則僅僅刪除該節(jié)點信息;如果在,則重新與新的上下游節(jié)點建立連接;
(2)主節(jié)點將退出節(jié)點狀態(tài)置為觀察者節(jié)點,新的區(qū)塊即發(fā)送到退出節(jié)點,也發(fā)送到其上一或者下一節(jié)點;
(3)上下游節(jié)點向退出節(jié)點獲取需要保存的區(qū)塊信息,保存到本地,所有信息獲取完成之后,斷開與退出節(jié)點的連接,并通知主節(jié)點;
(4)主節(jié)點收到所有上下游節(jié)點通知后,刪除并通知退出節(jié)點,節(jié)點接收到之后自動退出。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于桂勛,未經(jīng)桂勛許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010377842.4/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種讀取網(wǎng)絡(luò)資源站點信息的方法及其系統(tǒng)以及搜索引擎
- 一種密碼的管理方法和設(shè)備
- 一種基于hash處理的詞匯管理方法和設(shè)備
- 一種支持多hashmap數(shù)據(jù)庫集群系統(tǒng)不停機的擴容方法
- 一種Linux操作系統(tǒng)中數(shù)據(jù)的保護方法
- 一種獲取終端屬性的方法及系統(tǒng)
- 一種批量獲取終端屬性的方法及系統(tǒng)
- 一種通過構(gòu)建hash鏈表獲取終端屬性的方法及系統(tǒng)
- 一種基于Hashmap緩存機制的SD卡讀寫方法及系統(tǒng)
- 一種報文轉(zhuǎn)發(fā)方法及裝置





