本發(fā)明涉及一種基于區(qū)塊鏈的交易超時控制方法,在現(xiàn)有區(qū)塊鏈技術(shù)的基礎(chǔ)上,添加了交易超時相關(guān)的協(xié)議和處理方法,增強(qiáng)用戶對分布式系統(tǒng)中交易延遲掌控力,簡化了上層業(yè)務(wù)中的超時處理邏輯。
背景技術(shù):
區(qū)塊鏈?zhǔn)且环N新的分布式技術(shù),由一個個順序排列而成的交易組成塊,再由一個個順序排列而成的塊組成鏈,每個塊包含一個自增的高度作為編號,還有一個時間戳用于記載打包時間。用戶數(shù)據(jù)的安全性依賴公私鑰體系,只有用戶私鑰簽名的交易才是合法的交易,故他人無法代為發(fā)起,且每個交易只存在唯一id,以確保無法重復(fù)發(fā)起。
用戶每次操作需主動為新交易單獨簽名并廣播進(jìn)網(wǎng)絡(luò),但由于網(wǎng)絡(luò)的分布式特性,交易存在一定的丟失概率、交易廣播入網(wǎng)及節(jié)點打包入塊需要時間、網(wǎng)絡(luò)擁塞時需排隊等待、出塊時間間隔不固定等多種因素,導(dǎo)致用戶無法完全立即得到自己的交易是否被打包的響應(yīng)結(jié)果,用戶只能后需等待一段隨機(jī)性的時間,才能查看在哪個高度入塊,如果長期等不到入塊結(jié)果,則推斷交易可能丟失或可能已經(jīng)失敗,需重新發(fā)起覆蓋交易,但這期間還是有一定概率之前的交易會被打包入塊。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種基于區(qū)塊鏈的交易超時控制方法。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的:一種基于區(qū)塊鏈的交易超時控制方法,包括以下步驟:
步驟1:用戶實時同步區(qū)塊鏈;
步驟2:用戶設(shè)置交易的“超時類別”和“超時期限”,并發(fā)起交易,包括以下三種形式:
(1)“超時類別”為“永不超時”,“超時期限”設(shè)置為空。
(2)“超時類別”為“按時間戳”,“超時期限”為t0+t’,其中t0為用發(fā)起交易的最新時間戳,t’為可以接受的最長等待時間;
(3)“超時類別”為“按塊高度”,“超時期限”為b0+b’,其中,b0為發(fā)起交易的最新塊高度,b’為可以接受的最長等待高度。
步驟3:出塊節(jié)點在生成區(qū)塊前,得出待出塊的高度b1,以及區(qū)塊時間戳t1,在收到用戶交易后,首先判斷交易的“超時類別”字段,進(jìn)行如下處理:
如果“超時類別”是“永不超時”,則不需判斷超時邏輯,繼續(xù)原有處理邏輯。
如果“超時類別”是“按時間戳”,則判斷交易的“超時期限”大于等于t1,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于t1,則該交易已超時,作為非法交易處理。
如果“超時類別”是“按塊高度”,則判斷交易的“超時期限”大于等于b1,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于b1,則該交易已超時,作為非法交易處理。
步驟4:同步節(jié)點在收到新的區(qū)塊后,讀取新塊的塊高度b2和時間戳t2,若新塊的塊高度b2比上一個塊的高度大1,并且新塊的時間戳t2大于上一個塊的時間戳,同時小于本地時間,則進(jìn)入步驟5,否則為非法區(qū)塊
步驟5:同步節(jié)點逐個檢驗區(qū)塊內(nèi)交易,如果交易的“超時類別”是“永不超時”,則不需判斷超時邏輯,繼續(xù)原有處理邏輯。如果交易的“超時類別”是“按時間戳”,則判斷交易的“超時期限”大于等于t2,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于t2,則該交易已超時,作為非法交易處理。如果交易的“超時類別”是“按塊高度”,則判斷交易的“超時期限”大于等于b2,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于b2,則該交易已超時,作為非法交易處理。
本發(fā)明的有益效果在于:為用戶在區(qū)塊鏈上的交易設(shè)定了明確的超時機(jī)制,不需要再對交易能否上鏈做概率性的估算,易于用戶在客戶端做超時處理操作。
附圖說明
圖1為總體架構(gòu)示意圖。
具體實施方式
本發(fā)明涉及一種基于區(qū)塊鏈的交易超時控制方法,大致如下:用戶發(fā)起交易時,需要為交易設(shè)定一個超時期限,可以是時間戳或塊高度,節(jié)點在打包交易時首先判斷該超時期限,如果沒有超時則打包交易,如果超時則丟棄交易,用戶實時監(jiān)控區(qū)塊鏈如果超過該超時期限,自己的交易還沒有被打包入?yún)^(qū)塊,則可以認(rèn)定交易失敗,需重新發(fā)起,不需再等待。具體包括以下步驟:
步驟1:用戶實時同步區(qū)塊鏈;
步驟2:用戶設(shè)置交易的“超時類別”和“超時期限”,并發(fā)起交易,包括以下三種形式:
(1)“超時類別”為“永不超時”,“超時期限”設(shè)置為空。
(2)“超時類別”為“按時間戳”,“超時期限”為t0+t’,其中t0為用發(fā)起交易的最新時間戳,t’為可以接受的最長等待時間;
(3)“超時類別”為“按塊高度”,“超時期限”為b0+b’,其中,b0為發(fā)起交易的最新塊高度,b’為可以接受的最長等待高度。
步驟3:出塊節(jié)點在生成區(qū)塊前,得出待出塊的高度b1,以及區(qū)塊時間戳t1,在收到用戶交易后,首先判斷交易的“超時類別”字段,進(jìn)行如下處理:
如果“超時類別”是“永不超時”,則不需判斷超時邏輯,繼續(xù)原有處理邏輯。
如果“超時類別”是“按時間戳”,則判斷交易的“超時期限”大于等于t1,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于t1,則該交易已超時,作為非法交易處理。
如果“超時類別”是“按塊高度”,則判斷交易的“超時期限”大于等于b1,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于b1,則該交易已超時,作為非法交易處理。
步驟4:同步節(jié)點在收到新的區(qū)塊后,讀取新塊的塊高度b2和時間戳t2,若新塊的塊高度b2比上一個塊的高度大1,并且新塊的時間戳t2大于上一個塊的時間戳,同時小于本地時間,則進(jìn)入步驟5,否則為非法區(qū)塊
步驟5:同步節(jié)點逐個檢驗區(qū)塊內(nèi)交易,如果交易的“超時類別”是“永不超時”,則不需判斷超時邏輯,繼續(xù)原有處理邏輯。如果交易的“超時類別”是“按時間戳”,則判斷交易的“超時期限”大于等于t2,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于t2,則該交易已超時,作為非法交易處理。如果交易的“超時類別”是“按塊高度”,則判斷交易的“超時期限”大于等于b2,則未超時,繼續(xù)原有交易處理邏輯;如果交易的“超時期限”小于b2,則該交易已超時,作為非法交易處理。