一種基于區塊鏈多因子交叉驗證的虛擬貨幣交易驗證方法
【專利摘要】本發明針對基于區塊鏈的虛擬貨幣易受到51%攻擊而產生交易的雙花問題,提出了一種基于多因子交叉驗證的虛擬貨幣交易驗證方法,該方法周期性的查詢并備份歷史區塊鏈分支,將已確認過的交易信息組織成易于查詢的哈希鏈表數組,避免了由于區塊鏈進化而導致分支交易信息丟失;在虛擬貨幣進行交易時,不僅對當前主區塊鏈中記錄的支付方信息、接收方信息、資金來源、貨幣交易數量等進行檢查,同時查詢備份的分支區塊鏈,檢查當前交易是否與分支鏈上記錄的歷史交易存在同一資金來源,若有交易未能通過檢查,則礦工針對該交易發出全網告警,從而避免由非法交易引起的double?spending問題。
【專利說明】
一種基于區塊鏈多因子交叉驗證的虛擬貨幣交易驗證方法
技術領域
[0001 ]本發明涉及一種虛擬貨幣交易安全驗證方法,屬于信息安全領域。
【背景技術】
[0002]自2009年比特幣作為全球第一種被廣泛使用的加密貨幣以來,網絡環境中已出現多種類型的虛擬貨幣,如萊特幣Litecoin、無限幣Inf initecoin、便士幣Pennies、瑞波幣Ripple等。虛擬貨幣由于其去中心化、隱私保護能力強、交易方便等優點迅速受到了世界范圍的關注與流行,2014年美國加州立法將包括比特幣在內的數字貨幣規定為該州的合法貨幣,同年美國國稅局宣布加密數字資產的合法化。2015年2月,歐洲中央銀行發布《虛擬貨幣體系》的研究報告,肯定了虛擬貨幣的合法用途。2014年,中國人民銀行(央行)就專門組建了數字貨幣研究團隊,2016年I月,央行主持召開數字貨幣研討會,提出研究我國的數字貨幣,爭取早日發行由央行的數字貨幣。
[0003]區塊鏈(Blockchain)技術作為支撐大部分加密貨幣的核心技術被廣泛應用于比特幣等虛擬貨幣,虛擬貨幣的初始發放記錄、挖掘記錄、交易轉移記錄等都記錄在動態變化的區塊鏈中。區塊鏈本質上是一個去中心化的數據庫,基于密碼技術產生一系列的區塊,每個區塊包含了一組虛擬貨幣的交易信息。隨著虛擬貨幣交易的不斷產生,礦工(虛擬貨幣發掘者)不斷解密并驗證交易,創造新的區塊來記錄最新的交易,區塊鏈會一直增長和延長。新的區塊按照時間順序線性地被補充到原有的區塊末端,就構成了區塊鏈。然而,虛擬貨幣交易的區塊鏈技術易受到51%攻擊:攻擊者首先通過轉移支付虛擬貨幣獲利,然后通過掌握全網51 %的計算能力在原區塊鏈的傍路分支產生新的更長的區塊鏈,則攻擊者原來轉移支付的交易記錄將被系統丟棄,從而能夠使用已轉移支付過的虛擬貨幣繼續參與交易,產生雙花double-spending,即同一資金來源的虛擬貨幣被用于了兩次支付。
[0004]2014年美國康奈爾大學的IC3 (Initiative for Crypto Currencies andContracts)研究團隊對虛擬貨幣協議漏洞進行了研究,提出利用礦工間的相互不信任關系建立虛擬貨幣的公平挖掘協議,以防止部分礦工通過挖掘能力結盟而獲得壟斷性的資產挖掘優勢而進行51%攻擊(Nonoutsourceable Scratch-Off Puzzles to DiscourageBitcoin Mining Coalit1ns.Workshop on Economics and Informat1n Security,1-19,2014)。然而該方法需要假設礦工隸屬于互不信任的挖礦組織,隨著擁有超強運算能力挖礦團隊的產生,以及新的比特幣“25%”漏洞的發現,基于礦工間不信任關系的防御協議難以有效保護虛擬貨幣交易安全。文獻“基于區塊鏈的供應鏈動態多中心協同認證模型”(網絡與信息安全學報,2(1):27-33,2016)提出一種基于多CA中心的交易協同認證技術,提出利用多個CA中心協同對交易的合法性進行認證,然而該方法引入了新的認證中心,與虛擬貨幣去中心化的要求相違背。
[0005]針對上述的缺陷,本發明提出了一種基于多因子交叉驗證的虛擬貨幣交易驗證方法,該方法周期性地保存分支區塊鏈中的交易信息,礦工收到虛擬貨幣交易記錄后,分別基于主區塊鏈和保存的分支區塊鏈對交易記錄中的資金來源、支出地址、接收地址、貨幣交易金額進行多因子確認,只有合法交易才能通過檢查,對于未通過檢查的交易,礦工向整個虛擬貨幣網絡發出告警。
[0006]本發明與現有技術相比具有如下優點:
I)避免了基于區塊替換的交易欺騙
通過在虛擬貨幣轉移交付過程中,同時對現有主區塊鏈及備份的分支區塊鏈上的交易記錄進行合法性檢查,能夠發現通過運算能力操控而實現的非法交易雙花double-spending問題。
[0007]不需對現有區塊鏈結構進行修改
本發明利用可在網上公開查到的區塊鏈實現對區塊鏈分支鏈條的實時備份,不必對現有區塊鏈數據結構進行調整和修改,易于在現有的基于區塊鏈技術的虛擬貨幣系統中實現。
[0008]未引入新的中心
本發明由各個礦工根據各自保存的區塊鏈信息對收到的網絡交易單中的交易信息進行分布式驗證,若發現非法交易,則向全網發布交易警告,整個過程不涉及創建新的交易控制中心或輔助交易驗證的CA/PKI等新的中心,符合虛擬貨幣無、去中心化的思想。
[0009]在詳細闡述本發明前,先做如下名詞定義:
定義1:礦工(miner)虛擬貨幣挖掘和交易的參與者,每個礦工擁有全部的交易賬本,能夠對虛擬貨幣交易網絡中發生的每一筆交易進行查詢和驗證,同時礦工間發生交易時,會將交易信息發布到全網中。
[00?0] 定義2:交易單(transact1n note)礦工將交易記錄封裝在交易單中廣播給全網其余礦工,交易單內容主要包括:交易單ID,資金來源(上一交易單ID),上一交易單付款人簽字,資金去向(收款方地址),付款金額,付款人簽字(用于身份鑒別)。
[0011]定義3:主區塊鏈(main block chain)主區塊鏈是指由全網計算而得到的最長的區塊鏈,長度通常以區塊數量和區塊計算整體難度來衡量,鏈中的每個節點為一個包含了虛擬貨幣交易記錄區塊,記錄的主要內容有:資金來源信息、付款方地址、收款方地址、交易金額、時間戳、收款方公鑰、付款方簽名。
[0012]定義4:分支區塊鏈(branch block chain)分支區塊鏈是指除主區塊鏈以外,區塊鏈中的支鏈,支鏈隨著礦工對交易的不斷確認而不斷合并調整,最終被取消,鏈中的每個節點為一個包含了虛擬貨幣交易記錄區塊,記錄的主要內容有:資金來源信息、付款方地址、收款方地址、交易金額、時間戳、收款方公鑰、付款方簽名。
[0013]定義5:雙花(doublespending)雙花指虛擬貨幣的交易付款方A首先將持有的虛擬貨幣轉賬支付給接收方B,然后將同一資金來源的虛擬貨幣再次支付給另一接收方C,C可以與A相同,從而達到同一筆虛擬貨幣使用兩次的目的。
[0014]為了實現雙花,如圖1所示,付款方A需要掌握超出全網51%的運算能力(故名51%攻擊),A通過發布超出全網計算長度的區塊鏈,將原主鏈變為分支鏈,分支鏈中的A->B的交易記錄將由于與新主鏈中的記錄A->C有相同的資金來源,而被認為是無效記錄不被確認,從而使接收方B遭成損失。
【發明內容】
[0015]本發明針對基于區塊鏈的虛擬貨幣易受到51%攻擊而產生交易的雙花問題,提出了一種基于多因子交叉驗證的虛擬貨幣交易驗證方法,該方法周期性的查詢并備份歷史區塊鏈分支,將已確認過的交易信息組織成易于查詢的哈希鏈表數組,避免了由于區塊鏈進化而導致分支交易信息丟失;在虛擬貨幣進行交易時,不僅對當前主區塊鏈中記錄的支付方信息、接收方信息、資金來源、貨幣交易數量等進行檢查,同時查詢備份的分支區塊鏈,檢查當前交易是否與分支鏈上記錄的歷史交易存在同一資金來源,若有交易未能通過檢查,則礦工針對該交易發出全網告警,從而避免由非法交易引起的doub I e-spending問題。
【附圖說明】
[0016]圖1是雙花攻擊說明圖。
[0017]圖2是本發明的工作流程圖。。
[0018]圖3是區塊鏈周期掃描步驟。
[0019]圖4是分支區塊鏈交易信息保存步驟。
[0020]圖5是基于主區塊鏈的交易合法性驗證步驟。
[0021 ]圖6是基于分支區塊鏈的交易合法性驗證步驟。
[0022]
【具體實施方式】
以下結合附圖詳細說明本發明的具體方法。
[0023 ]圖2是本發明的工作流程。
[0024]圖2是本發明的工作流程,首先礦工節點執行周期性掃描區塊鏈,查找自上一掃描周期以來新生成的分支區塊;然后讀取分支區塊中的交易信息,包括交易來源賬號、交易目標賬號、交易金額、交易時間、交易確認情況;將分支區塊中的交易信息插入到哈希鏈表數組中;當收到新的廣播交易單時,礦工對交易單中的未確認交易記錄進行多因子交叉驗證,包括基于主區塊鏈交易合法性驗證和基于分支區塊的交易合法性驗證;若交易記錄未能通過主區塊鏈的交易合法性驗證,則舍棄該交易記錄;若交記錄通過了主區塊鏈交易合法性驗證,但未能通過分支區塊交易合法性驗證,則向全網發出雙花警報;若交易記錄通過了主區塊鏈和分支區塊鏈的合法性驗證,則認為該記錄為合法交易記錄進行保存。
[0025]具體的,本發明提出一種基于區塊鏈多因子交叉驗證的虛擬貨幣交易驗證方法,包括以下步驟:
(1)區塊鏈周期性掃描步驟;
(2)分支區塊交易信息保存步驟;
(3)基于主區塊的交易合法性驗證步驟;
(4)基于分支區塊的交易合法性驗證步驟。
[0026]圖3是區塊鏈周期性掃描步驟。
[0027]圖3給出了區塊鏈周期性掃描步驟,礦工周期性掃描區塊鏈,查找自上一掃描周期結束以來新產生的區塊,若有兩個或更多個子區塊鏈鏈接到同一先導區塊,則發現分支區塊,除塊鏈數量最長的分支作為主鏈外,將其余分支區塊鏈作為查詢結果返回,周期性的掃描步驟具體如下: (1)在主鏈上查找前一個周期掃描結束的區塊:
1)若找到該區塊:則以該區塊作為起點區塊StartBlock開始查找分支區塊鏈;
2)若未找到該區塊:則說明主鏈自上一掃描周期結束后進行了調整,需要繼續查找更早一個周期掃描結束的區塊位置,直至找到某一個周期在主鏈上的結束區塊作為本周期的掃描起點區塊StartBlock;
(2)從StartBlock開始沿主區塊鏈向后檢查分支區塊鏈,具體步驟如下:
1)若當前檢測區塊存在兩個或兩個以上直接后繼區塊,則檢測到分支區塊鏈,將塊鏈最長的分支作為主區塊鏈,其余為分支區塊鏈,然后沿主區塊鏈后移一個區塊,繼續查找分支區塊鏈;
2)若當前檢測區塊只有一個后繼區塊,則沿主區塊鏈后移一個區塊,繼續查找分支區塊鏈;
3)若當前檢測區塊沒有后繼區塊,則本周期的掃描過程結束,記錄本次掃描結束時主鏈上區塊號,作為下掃描周期的起始區塊。
[0028]圖4分支區塊鏈交易信息保存步驟。
[0029]圖4給出了分支區塊鏈交易信息保存步驟,讀取區塊鏈周期性掃描步驟得到的分支區塊中包含的交易信息,并將交易信息保存到哈希鏈表數組中,具體步驟如下:
(1)以交易付款方地址address作為輸入產生哈希值index= hash(address);
(2)在哈希鏈表數組中查找索引值等于index的目標鏈表頭,如未找到,則新建鏈表頭,設置鏈表的索引值為index;
(3)在目標鏈表中插入新的交易記錄節點,用于保存分支區塊中的交易信息,包括:交易資金來源,付款方地址,收款人地址,交易金額,時間戳,以及付款方簽名。
[0030]圖5基于主區塊鏈的交易合法性驗證步驟。
[0031]圖5給出了基于主區塊的交易合法性驗證步驟,該步驟根據主區塊鏈中記錄的交易信息,對礦工從網絡中接收到的交易單中的交易記錄進行合法性驗證,具體步驟如下:
(1)資金來源追溯驗證:該步驟根據交易單上注明的資金來源信息,回溯主區塊鏈,查詢虛擬貨幣的來源是否與交易付款方地址一致,且資源來源金額應大于或等于交易轉賬金額,否則發出非法交易警報,警報內容包括:本次驗證的交易單ID,交易記錄所在的主鏈區塊號,交易的哈希值,以及利用礦工私鑰對上述信息的簽名;
(2)交易有效性驗證:該步驟根據付款方地址,資金來源信息,交易金額查詢主區塊鏈,驗證付款方給出的資金來源信息的有效性,若本次交易的資金來源已在過去的交易中支付給了其他收款方,則認為發生了雙花交易,礦工向全網發出雙花警報,警報內容包括:本次驗證的交易單ID,發現雙花的主鏈區塊號,雙花交易在主鏈區塊中的哈希值,以及利用礦工私鑰對上述信息的簽名。
[0032]圖6基于分支區塊鏈的交易合法性驗證步驟。
[0033]圖6給出了基于分支區塊鏈的交易合法性驗證步驟,該步驟根據哈希鏈表數組中存儲的分支區塊鏈中記錄的交易信息,對礦工從網絡中接收到的交易單中的交易記錄進行合法性驗證,具體步驟如下:
(1)以交易付款方地址address作為輸入產生哈希值index= hash(address);
(2)在哈希鏈表數組中查找索引值等于index的目標鏈表頭,如未找到,則直接通過分支驗證;
從鏈表頭開始逐一查找鏈表中的節點,若本次交易的資金來源已在某一鏈表節點記錄的交易中支付給了其他收款方,則認為發生了雙花交易,礦工向全網發出雙花告警,告警內容包括:本次驗證的交易單ID,交易資金來源,付款方地址,收款人地址,交易金額,時間戳,付款方簽名,以及利用礦工私鑰對上述信息的簽名。
【主權項】
1.一種基于多因子交叉驗證的虛擬貨幣交易驗證方法,其特征在于,所述方法包括以下步驟: (1)區塊鏈周期性掃描步驟,采用如下方法: 1)在主鏈上查找前一個周期掃描結束的區塊,采用如下方法: (a)若找到該結束區塊,則以該區塊作為本次掃描的起點區塊StartBlock; (b)若主鏈發生變化,未能找到上一個周期的掃描結束區塊,則繼續查找前一個周期的結束區塊,直至找到主區塊鏈上某一個周期的掃描結束區塊作為本周期的掃描起點區塊StartBlock; 2)從StartBlock開始沿主區塊鏈向后檢查分支區塊鏈,采用如下方法: (a)若當前檢測區塊存在兩個或兩個以上直接后繼區塊,則檢測到分支區塊鏈,將塊鏈最長的分支作為主區塊鏈,其余為分支區塊鏈,然后沿主區塊鏈后移一個區塊,繼續查找分支區塊鏈; (b)若當前檢測區塊只有一個后繼區塊,則沿主區塊鏈后移一個區塊,繼續查找分支區塊鏈; (C)若當前檢測區塊沒有后繼區塊,則本周期的掃描過程結束,記錄本次掃描結束時主鏈上區塊號,作為下一掃描周期的起始區塊; (2)分支區塊鏈交易信息保存步驟,采用如下方法: 1)以交易付款方地址address作為輸入產生哈希值index= hash(address); 2)在哈希鏈表數組中查找索引值等于index的目標鏈表頭,如未找到,則新建鏈表頭,設置鏈表的索引值為index; 3)在目標鏈表中插入新的交易記錄節點,用于保存分支區塊中的交易信息,包括:交易資金來源,付款方地址,收款人地址,交易金額,時間戳,以及付款方簽名; (3)基于主區塊鏈的交易合法性驗證步驟,采用如下方法: 1)資金來源追溯驗證:該步驟根據交易單上注明的資金來源信息,回溯主區塊鏈,查詢虛擬貨幣的來源是否與交易付款方地址一致,且資源來源金額應大于或等于交易轉賬金額,否則發出非法交易警報; 2)交易有效性驗證:該步驟根據付款方地址,資金來源信息,交易金額查詢主區塊鏈,驗證付款方給出的資金來源信息的有效性,若本次交易的資金來源已在過去的交易中支付給了其他收款方,則認為發生了雙花交易,礦工向全網發出雙花警報; (4)基于分支區塊鏈的交易合法性驗證步驟,采用如下方法: 1)以交易付款方地址address作為輸入產生哈希值index= hash(address); 2)在哈希鏈表數組中查找索引值等于index的目標鏈表頭,如未找到,則直接通過分支驗證; 3)從鏈表頭開始逐一查找鏈表中的節點,若本次交易的資金來源已在某一鏈表節點記錄的交易中支付給了其他收款方,則認為發生了雙花交易,礦工向全網發出雙花告警。
【文檔編號】G06Q20/40GK105931052SQ201610250198
【公開日】2016年9月7日
【申請日】2016年4月21日
【發明人】陳文 , 李濤, 董雪
【申請人】四川大學