本發(fā)明屬于記賬技術(shù)領(lǐng)域,尤其涉及一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)及方法。
背景技術(shù):
傳統(tǒng)的類區(qū)塊鏈三重記賬模式的交易執(zhí)行過程主要包括交易發(fā)起方、交易目的方、公鑰、私鑰、簽名、哈希函數(shù)等組成,交易通訊都是通過鏈?zhǔn)浇Y(jié)構(gòu)進(jìn)行交易信息傳遞的,這種交易流程實(shí)現(xiàn)起來相對(duì)簡(jiǎn)單、直接,就像流程圖。在這種鏈?zhǔn)浇Y(jié)構(gòu)的信息傳遞方法中,只要描述交易區(qū)塊節(jié)點(diǎn)之間的連接、數(shù)據(jù)傳輸?shù)姆较?,以及從一個(gè)交易區(qū)塊向下一個(gè)交易區(qū)塊流轉(zhuǎn)的條件等,就可以設(shè)計(jì)出交易流程并進(jìn)行交易記賬。
圖1示出了現(xiàn)有的交易執(zhí)行信息流程圖,現(xiàn)有的類區(qū)塊鏈三重記賬交易模式主要包括以下交易流程:交易過程、交易驗(yàn)證以及清算過程。
交易過程主要包括交易發(fā)起方、交易目的方、哈希函數(shù)、簽名等組成,圖1中的所有者的公鑰,即交易接收方的地址,此數(shù)據(jù)說明了當(dāng)前交易的目標(biāo)是誰(shuí);簽名,通過發(fā)起方將前一次交易數(shù)據(jù)和接收方公鑰連接起來并對(duì)其求哈希值,再利用自己的私鑰對(duì)哈希值加密而得到;私鑰,僅供個(gè)人所知,他人無(wú)從知曉。從圖中可以清楚地判斷交易發(fā)生的順序,分析交易的貨幣來源與去向。在交易過程中,每一位所有者a利用他的私鑰對(duì)前一次交易t1和下一位交易所有者b的公鑰簽署一個(gè)隨機(jī)散列的數(shù)字簽名,所有者a將此數(shù)據(jù)簽名制作為交易單t2并將其廣播全網(wǎng),電子貨幣就發(fā)送給下一位所有者。
在交易驗(yàn)證過程中,首先利用交易t2中交易的發(fā)起方a的公鑰對(duì)簽名進(jìn)行解密,得到整數(shù)x,再將t1交易數(shù)據(jù)和所有者b的公鑰連接起來,用同樣的哈希算法計(jì)算哈希值y,若x=y(tǒng),則說明交易確實(shí)是a發(fā)起,因?yàn)橹挥杏胊的私鑰才能生成此簽名,交易的目的方確實(shí)是b,且發(fā)起方確實(shí)是打算把交易t1中a獲得的貨幣發(fā)送給b。
在交易清算過程中,時(shí)間戳十分重要,時(shí)間戳服務(wù)器需要進(jìn)行交易區(qū)塊的時(shí)間戳散列,并廣泛發(fā)布哈希算法。每個(gè)時(shí)間戳都包含以前的時(shí)間戳和它的散列哈希算法,通過不斷改變區(qū)塊中的隨機(jī)數(shù),來嘗試碰撞出一個(gè)符合要求的區(qū)塊散列值,一旦找到符合要求的區(qū)塊散列值,即認(rèn)為完成了一次工作量證明,該區(qū)塊中的交易將被記錄在賬本中,將上一個(gè)區(qū)塊的散列值放入下一個(gè)區(qū)塊中,形成一條鏈狀結(jié)構(gòu),每個(gè)額外的時(shí)間戳同樣會(huì)對(duì)本身進(jìn)行覆蓋,可以在不運(yùn)行完整網(wǎng)絡(luò)節(jié)點(diǎn)的情況下驗(yàn)證交易過程。用戶只需要保留他可以通過查詢得到的最長(zhǎng)的工作證明鏈接的交易區(qū)塊頭文件的副本即可。
圖2示出了交易區(qū)塊信息,其中包括交易區(qū)塊的頭部,前一個(gè)交易的哈希值,隨機(jī)數(shù)值,哈希表泛化后得到的表根,然后將獲得的哈希分支連接到該時(shí)間戳下的交易塊中。用戶無(wú)法檢查自己的交易過程,但通過鏈接到鏈中的一個(gè)地方,他可以看到一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)已經(jīng)接受了它,并在其進(jìn)一步確認(rèn)網(wǎng)絡(luò)已經(jīng)接受之后添加塊,在清算完成時(shí)執(zhí)行清算,產(chǎn)生新的交易區(qū)塊,交易過程結(jié)束。
圖3示出了現(xiàn)有的交易執(zhí)行流程,每個(gè)交易區(qū)塊記錄了幾分鐘(例如10分鐘)內(nèi)的交易信息,并在每10分鐘后產(chǎn)生一個(gè)新的交易區(qū)塊,進(jìn)行后續(xù)交易操作。以五個(gè)交易區(qū)塊為例,圖中包括由交易區(qū)塊、交易信息、清算過程組成的直鏈結(jié)構(gòu),在交易區(qū)塊1完成交易信息記錄之后,過10分鐘產(chǎn)生一個(gè)新的交易區(qū)塊2進(jìn)行后續(xù)交易信息的記錄,完成5個(gè)交易區(qū)塊的交易流程需要經(jīng)過至少40分鐘的時(shí)間,并且在完成所有交易操作后需要采用t+1模式進(jìn)行日常交易信息清算,效率不高。
圖4示出了銀行間交易區(qū)塊執(zhí)行流程圖,傳統(tǒng)交易進(jìn)程模式應(yīng)用到銀行之間的交易信息管理時(shí),不足之處尤為明顯。圖中對(duì)a-f六家銀行交易信息流程進(jìn)行展示。傳統(tǒng)交易過程中的鏈?zhǔn)綀?zhí)行方法有一定的局限性,首先是對(duì)資源的利用不足,每一個(gè)交易區(qū)塊在執(zhí)行交易過程都是單線程模式,經(jīng)過上一個(gè)交易區(qū)塊執(zhí)行完交易操作之后經(jīng)過幾分鐘(例如10分鐘)才會(huì)進(jìn)行下一個(gè)交易區(qū)塊操作。
綜上,傳統(tǒng)的三重賬本根據(jù)時(shí)間戳進(jìn)行順序交易,交易信息存儲(chǔ)在交易區(qū)塊中,交易信息產(chǎn)生的速度是固定的,并且沿著時(shí)間戳進(jìn)行交易的處理和分發(fā),每個(gè)交易區(qū)塊記錄了幾分鐘(例如10分鐘)內(nèi)的交易信息,并在每10分鐘后產(chǎn)生一個(gè)新的交易區(qū)塊,然后進(jìn)行后續(xù)的交易操作,其中的清算方式采用t+1模式,時(shí)間周期較長(zhǎng),影響交易進(jìn)行的效率。
技術(shù)實(shí)現(xiàn)要素:
為解決上述現(xiàn)有技術(shù)中的問題,本發(fā)明提供了一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)及方法,以提高資源利用率和記賬效率。
為實(shí)現(xiàn)上述目的,本發(fā)明的一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)及方法的具體技術(shù)方案如下:
一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬方法,包括交易過程、交易驗(yàn)證以及清算過程,包括以下步驟:步驟一:在每個(gè)交易區(qū)塊增加并行執(zhí)行使能,使每個(gè)交易區(qū)塊能夠并發(fā)地執(zhí)行交易流,避免等待前一個(gè)交易區(qū)塊的交易記錄結(jié)果和設(shè)定的固定總時(shí)間;步驟二,將每個(gè)交易區(qū)塊之間設(shè)定為雙向信息傳遞,基于并發(fā)執(zhí)行使能使每個(gè)交易區(qū)塊同時(shí)進(jìn)行交易;步驟三,進(jìn)行并發(fā)執(zhí)行過程,提前完成賬本記錄工作的交易區(qū)塊等待前一個(gè)交易區(qū)塊發(fā)起鏈接,直到所有交易區(qū)塊完成賬本記錄;步驟四,所有交易區(qū)塊完成賬本記錄后,進(jìn)行交易驗(yàn)證;步驟五,根據(jù)交易驗(yàn)證的結(jié)果進(jìn)行清算過程。
進(jìn)一步,在步驟三中,每個(gè)交易區(qū)塊完成后,分別執(zhí)行查詢前一交易區(qū)塊的執(zhí)行狀態(tài),以獲知所有交易區(qū)塊均完成賬本記錄。
進(jìn)一步,在步驟四中利用默克爾樹進(jìn)行交易驗(yàn)證,以提高交易驗(yàn)證效率并且驗(yàn)證交易來源的唯一性和真實(shí)性。
進(jìn)一步,步驟四中的默克爾樹交易驗(yàn)證包括以下步驟:先從可信的源獲得文件的默克爾樹樹根,從可信的源獲得樹根后再?gòu)牟豢尚诺脑传@取默克爾樹,通過從可信的源獲得的樹根來檢查接受到的默克爾樹,若默克爾樹是損壞的或虛假的,就從其他源獲得另一個(gè)默克爾樹,直到獲得一個(gè)與可信樹根匹配的默克爾樹,從而驗(yàn)證交易來源的唯一性和真實(shí)性。
進(jìn)一步,在步驟四的默克爾樹生成過程中,把數(shù)據(jù)分成小的數(shù)據(jù)塊,將相應(yīng)的哈希和數(shù)據(jù)塊對(duì)應(yīng),把相鄰的兩個(gè)哈希合并成一個(gè)字符串,然后運(yùn)算字符串的哈希得到子哈希,重復(fù)操作得到數(shù)目更少的新一級(jí)哈希,直到得出根哈希,以提高交易驗(yàn)證效率。
進(jìn)一步,在步驟四中,所有交易區(qū)塊均完成賬本記錄后,前一交易區(qū)塊利用默克爾樹進(jìn)行交易驗(yàn)證,并向后一交易區(qū)塊傳送,以完成所有交易區(qū)塊的交易驗(yàn)證。
進(jìn)一步,在步驟一中,首先使交易信息按照泊松分布規(guī)律產(chǎn)生,將交易發(fā)生次數(shù)設(shè)定為服從泊松分布的交易執(zhí)行,使每個(gè)交易區(qū)塊上的交易信息的產(chǎn)生都服從泊松分布,以便于每個(gè)交易區(qū)塊并行處理交易信息。
本發(fā)明還提供了一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng),包括多個(gè)交易區(qū)塊,每個(gè)交易區(qū)塊分別與并行執(zhí)行使能子模塊交互連接,并行執(zhí)行使能子模塊使每個(gè)交易區(qū)塊能夠并發(fā)地執(zhí)行交易流,避免等待前一個(gè)交易區(qū)塊的交易記錄結(jié)果和設(shè)定的固定總時(shí)間。
進(jìn)一步,每個(gè)交易區(qū)塊之間設(shè)置有雙向信息傳遞模塊,以確保每?jī)蓚€(gè)相鄰的交易區(qū)塊之間可進(jìn)行雙向信息傳遞,并基于并發(fā)執(zhí)行使能模塊使每個(gè)交易區(qū)塊同時(shí)進(jìn)行交易。
進(jìn)一步,還包括與多個(gè)交易區(qū)塊相連的交易驗(yàn)證模塊,所述交易驗(yàn)證模塊利用默克爾樹對(duì)并行完成賬本記錄的所有交易區(qū)塊進(jìn)行驗(yàn)證,以提高交易驗(yàn)證效率并且驗(yàn)證交易來源的唯一性和真實(shí)性。
本發(fā)明的一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)及方法,通過采用并發(fā)執(zhí)行方式對(duì)交易區(qū)塊的產(chǎn)生進(jìn)行設(shè)計(jì),多線程交易流程且相互之間進(jìn)行信息傳遞,可有效地控制交易時(shí)間,提高清算效率,提供了一種高效率的交易區(qū)塊的產(chǎn)生機(jī)制。由此,將每t分鐘(例如10分鐘)產(chǎn)生一個(gè)交易區(qū)塊的模式提高到每t分鐘產(chǎn)生n個(gè)(n大于1)交易區(qū)塊的模式,進(jìn)行并發(fā)地交易處理,前后區(qū)塊之間能夠通過信息傳遞進(jìn)行動(dòng)態(tài)周期調(diào)整,并以t分鐘為一個(gè)周期進(jìn)行清算,這大大提高了工作效率和降低了清算時(shí)間周期。
本發(fā)明的基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)及方法主要具有以下優(yōu)點(diǎn):
1)資源利用率高;
2)實(shí)現(xiàn)非責(zé)任化記賬方式;
3)相對(duì)于傳統(tǒng)記賬方式,倍數(shù)級(jí)提高效率;
4)并發(fā)執(zhí)行適用于金融行業(yè)的記賬發(fā)展趨勢(shì)。
附圖說明
圖1為現(xiàn)有的交易執(zhí)行信息流程圖;
圖2為現(xiàn)有的交易區(qū)塊信息結(jié)構(gòu)圖;
圖3為現(xiàn)有的交易執(zhí)行流程圖;
圖4示出了一種現(xiàn)有的銀行間交易區(qū)塊執(zhí)行流程圖;
圖5為本發(fā)明的區(qū)塊并發(fā)執(zhí)行的交易流程圖;
圖6為本發(fā)明的區(qū)塊并發(fā)執(zhí)行的交易流程應(yīng)用在銀行之間的交易信息管理流程圖;
圖7為本發(fā)明的默克爾樹的生成方式示意圖。
具體實(shí)施方式
為了更好地了解本發(fā)明的目的、結(jié)構(gòu)及功能,下面結(jié)合附圖,對(duì)本發(fā)明的基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)及方法做進(jìn)一步詳細(xì)的描述。
如圖5所示,示出了基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng)的流程圖,在本發(fā)明中,在每個(gè)交易區(qū)塊增加并行執(zhí)行使能en,由于每個(gè)交易區(qū)塊中包含多個(gè)交易流程,如果按照串行模式進(jìn)行單個(gè)交易區(qū)塊,操作占用空間和資源。通過在每個(gè)交易區(qū)塊中增加并發(fā)執(zhí)行使能en,該并發(fā)執(zhí)行使能不僅僅是一種執(zhí)行信號(hào),同樣也是一種類時(shí)間戳。在此基礎(chǔ)上,每個(gè)交易區(qū)塊能夠并發(fā)地執(zhí)行交易流,不需要等待前一個(gè)交易區(qū)塊的交易記錄結(jié)果和固定的總時(shí)間t(10min)的等待時(shí)間。
由此,通過增加交易區(qū)塊的并行執(zhí)行使能en,在此基礎(chǔ)上,每個(gè)交易區(qū)塊能夠并發(fā)地執(zhí)行交易流,不需要等待前一個(gè)交易區(qū)塊的交易記錄結(jié)果和固定的t分鐘等待時(shí)間,大大提高了資源利用率。
進(jìn)一步,將交易區(qū)塊之間設(shè)定為雙向信息傳遞。圖6示出了區(qū)塊并發(fā)執(zhí)行的實(shí)例化流程,下面以銀行之間的交易信息管理過程為例進(jìn)行說明。
交易區(qū)塊雙向信息傳遞是指在傳統(tǒng)的交易鏈中增加信息回執(zhí)功能,傳統(tǒng)模式下的資源傳遞是單向的、有約束的,發(fā)起方需要完成交易記錄操作才能進(jìn)行交易區(qū)塊之間的賬本更新和傳遞,本發(fā)明提出的雙向信息傳遞模式不依托于發(fā)起方,由于并發(fā)執(zhí)行使能en的存在,每個(gè)交易區(qū)塊可以同時(shí)進(jìn)行交易,沒有時(shí)間順序之分。在并發(fā)執(zhí)行過程中,有交易區(qū)塊提前完成賬本記錄工作,則等待前一個(gè)交易區(qū)塊k發(fā)起鏈接,直到所有交易區(qū)塊完成賬本記錄時(shí),進(jìn)行清算過程。
由此,機(jī)制的改進(jìn)充分利用了傳統(tǒng)交易流程中的10分鐘等待時(shí)延,在該時(shí)延過程中并發(fā)地執(zhí)行多個(gè)交易區(qū)塊賬本操作,并在多個(gè)交易區(qū)塊執(zhí)行完成時(shí)進(jìn)行清算過程,整體耗時(shí)10分鐘,這大大提高了工作效率與資源利用率。在10分鐘的時(shí)間周期內(nèi),每個(gè)交易區(qū)塊并發(fā)執(zhí)行交易過程,所有節(jié)點(diǎn)完成時(shí)進(jìn)行鏈?zhǔn)酱?lián),并進(jìn)行清算過程,在n個(gè)交易區(qū)塊參與的情況下,效率提高n倍。
利用默克爾樹改進(jìn)驗(yàn)證流程,圖7示出了默克爾樹的生成方式,默克爾樹可以看做是哈希表的泛化(哈希表可以看作是一種特殊的默克爾樹,即樹高為2的多叉默克爾樹)。
圖7中,最底層和哈希列表一樣,我們把數(shù)據(jù)分成小的數(shù)據(jù)塊,有相應(yīng)的哈希和數(shù)據(jù)塊對(duì)應(yīng)。但是往上走,并不是直接去運(yùn)算根哈希,而是把相鄰的兩個(gè)哈希合并成一個(gè)字符串,然后運(yùn)算這個(gè)字符串的哈希,得到了一個(gè)子哈希。如果最底層的哈??倲?shù)是單數(shù),那到最后必然出現(xiàn)一個(gè)單哈希。這種情況就直接對(duì)它進(jìn)行哈希運(yùn)算,所以也能得到它的子哈希。于是往上推,依然是一樣的方式,可以得到數(shù)目更少的新一級(jí)哈希,最終必然形成一棵倒掛的樹,到了樹根的這個(gè)位置,這一代就剩下一個(gè)根哈希。
由于交易區(qū)塊的區(qū)塊頭部主要包括時(shí)間戳、隨機(jī)數(shù)、來源哈希、目標(biāo)哈希和默克爾樹根,其中默克爾樹根是由每層交易信息所生成的不同哈希值向上做哈希運(yùn)算得到并生成的,默克爾樹根是唯一的,放入交易區(qū)塊的區(qū)塊頭。利用默克爾樹的可信比較過程的特性,以確保每一比交易都不可偽造和沒有重復(fù)交易,每一個(gè)交易區(qū)塊默克爾根的來源是上一個(gè)可信區(qū)塊中交易信息的哈希運(yùn)算,先從可信的源獲得文件的默克爾樹樹根,然后通過和其他來源處獲取的默克爾樹進(jìn)行比較,獲得一個(gè)與可信樹根匹配的默克爾樹,通過這種方式能夠驗(yàn)證之前的一些交易來源的唯一性和真實(shí)性。
例如,在p2p網(wǎng)絡(luò)下載網(wǎng)絡(luò)之前,先從可信的源獲得文件的默克爾樹樹根。一旦獲得了樹根,就可以從其他不可信的源獲取默克爾樹。通過可信的樹根來檢查接受到的默克爾樹。如果默克爾樹是損壞的或者虛假的,就從其他源獲得另一個(gè)默克爾樹,直到獲得一個(gè)與可信樹根匹配的默克爾樹。
默克爾樹和哈希表的主要區(qū)別是,可以直接下載并立即驗(yàn)證默克爾樹的一個(gè)分支。因?yàn)榭梢詫⑽募蟹殖尚〉臄?shù)據(jù)塊,這樣如果有一塊數(shù)據(jù)損壞,僅僅重新下載這個(gè)數(shù)據(jù)塊就行了。如果文件非常大,那么默克爾樹和哈希表都很大,但是默克爾樹可以一次下載一個(gè)分支,然后立即驗(yàn)證這個(gè)分支,如果分支驗(yàn)證通過,就可以下載數(shù)據(jù)了,而哈希表則只有下載整個(gè)哈希表才能驗(yàn)證。
由于泊松過程是一種應(yīng)用廣泛的隨機(jī)過程,在傳統(tǒng)記賬系統(tǒng)模式下,新交易區(qū)塊的產(chǎn)生時(shí)間系統(tǒng)定義為10分鐘,交易區(qū)塊產(chǎn)生的方式服從泊松分布,但是每10分鐘產(chǎn)生區(qū)塊的方式無(wú)法忽視在交易過程中產(chǎn)生的不可預(yù)測(cè)的延遲,造成總體交易流程的時(shí)間滯后或影響清算過程。
為此,在本發(fā)明中,使交易信息按照一定的規(guī)律產(chǎn)生,應(yīng)用泊松分布來表示交易信息到達(dá)的過程。具體地,將交易發(fā)生次數(shù)設(shè)定為服從泊松分布的交易執(zhí)行,當(dāng)交易發(fā)生的次數(shù)服從泊松分布時(shí),假定交易發(fā)生的時(shí)間常數(shù)是τ=1/λ,一個(gè)交易發(fā)生所需要的時(shí)間,就服從指數(shù)分布λe-λt。那么,在總時(shí)間t(例如10min)里,發(fā)生k次交易的概率,就滿足泊松分布:k~pois(λt),顯而易見,k的平均值就是λt。泊松過程具有平穩(wěn)獨(dú)立增量性,更新過程的特例,參數(shù)不受時(shí)間影響。
由此,若將清算周期定義為10分鐘,在總時(shí)間周期為10分鐘的情況下,交易區(qū)塊的產(chǎn)生不再服從泊松分布,而是通過并發(fā)的方式產(chǎn)生若干區(qū)塊,并行處理交易信息。在此基礎(chǔ)上,每個(gè)交易區(qū)塊上的交易信息的產(chǎn)生服從泊松分布,具有平穩(wěn)獨(dú)立增量性的優(yōu)點(diǎn),即在區(qū)塊并發(fā)執(zhí)行的基礎(chǔ)上,使交易信息的產(chǎn)生服從泊松分布。
另一方面,本發(fā)明還提供了一種基于區(qū)塊并發(fā)執(zhí)行算法的記賬系統(tǒng),記賬系統(tǒng)中包括多個(gè)交易區(qū)塊,每個(gè)交易區(qū)塊分別與并行執(zhí)行使能子模塊交互連接,并行執(zhí)行使能子模塊使每個(gè)交易區(qū)塊能夠并發(fā)地執(zhí)行交易流,避免等待前一個(gè)交易區(qū)塊的交易記錄結(jié)果和設(shè)定的固定總時(shí)間,從而提高了資源利用率和記賬效率。
進(jìn)一步,在每個(gè)交易區(qū)塊之間設(shè)置雙向信息傳遞模塊,以確保每?jī)蓚€(gè)相鄰的交易區(qū)塊之間可進(jìn)行雙向信息傳遞,在此基礎(chǔ)上,利用并發(fā)執(zhí)行使能模塊使每個(gè)交易區(qū)塊同時(shí)進(jìn)行交易。
此外,記賬系統(tǒng)中還包括與多個(gè)交易區(qū)塊相連的交易驗(yàn)證模塊和清算模塊,所述交易驗(yàn)證模塊利用默克爾樹對(duì)并行完成賬本記錄的所有交易區(qū)塊進(jìn)行驗(yàn)證,以提高交易驗(yàn)證效率并且驗(yàn)證交易來源的唯一性和真實(shí)性。清算模塊對(duì)完成交易驗(yàn)證的交易信息進(jìn)行清算。
可以理解,本發(fā)明是通過一些實(shí)施例進(jìn)行描述的,本領(lǐng)域技術(shù)人員知悉的,在不脫離本發(fā)明的精神和范圍的情況下,可以對(duì)這些特征和實(shí)施例進(jìn)行各種改變或等效替換。另外,在本發(fā)明的教導(dǎo)下,可以對(duì)這些特征和實(shí)施例進(jìn)行修改以適應(yīng)具體的情況及材料而不會(huì)脫離本發(fā)明的精神和范圍。因此,本發(fā)明不受此處所公開的具體實(shí)施例的限制,所有落入本申請(qǐng)的權(quán)利要求范圍內(nèi)的實(shí)施例都屬于本發(fā)明所保護(hù)的范圍內(nèi)。