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