本發(fā)明涉及互聯(lián)網(wǎng)數(shù)據(jù)傳輸領(lǐng)域,特別地涉及區(qū)塊鏈驗(yàn)證技術(shù)中的數(shù)據(jù)對(duì)比及共識(shí)。
背景技術(shù):
隨著網(wǎng)絡(luò)在人們?nèi)粘I钪械牡匚辉絹碓街匾W(wǎng)絡(luò)上重要信息的安全和防偽需求也非常迫切。區(qū)塊鏈技術(shù)作為隨著比特幣一起發(fā)展的一種驗(yàn)證防偽技術(shù)已得到廣泛應(yīng)用,但目前還存在一些問題如下:
1、在新區(qū)塊交易數(shù)據(jù)對(duì)比時(shí)都需要傳送全部哈希值,數(shù)據(jù)量很大;
2、交易數(shù)據(jù)傳輸重復(fù)的概率大,自己缺少的數(shù)據(jù)不能確定地去找下載的來源,效率不高,數(shù)據(jù)不容易補(bǔ)全,有部分交易有較長(zhǎng)的延時(shí);
3、或選一臺(tái)服務(wù)器打包來廣播新區(qū)塊,傳播速度慢,反復(fù)傳輸?shù)臄?shù)據(jù)量大,或者要同時(shí)比較非常多的服務(wù)器來達(dá)成共識(shí),達(dá)成共識(shí)的時(shí)間不夠快。
4、數(shù)據(jù)存儲(chǔ)還不夠靈活。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種區(qū)塊鏈的數(shù)據(jù)對(duì)比及共識(shí)方法,包括: 對(duì)于每筆交易內(nèi)容的哈希值計(jì)算,通過變換隨機(jī)數(shù),使得在一段時(shí)間內(nèi)預(yù)設(shè)哈希值中的N位數(shù)不重復(fù),稱為不重復(fù)編號(hào),N為正整數(shù);認(rèn)證服務(wù)器比較不同哈希值的所述不重復(fù)編號(hào),判斷交易是否一致。
進(jìn)一步地,所述哈希值用16進(jìn)制表示;
進(jìn)一步地,所述不重復(fù)的N位數(shù)可以是前N位、后N位、或任意N位的組合。
進(jìn)一步地,定義一臺(tái)或多臺(tái)服務(wù)器作為前置節(jié)點(diǎn),由1臺(tái)前置節(jié)點(diǎn)計(jì)算所有的不重復(fù)編號(hào),或者設(shè)定不重復(fù)編號(hào)的段號(hào),由多臺(tái)前置節(jié)點(diǎn)分別計(jì)算不同段號(hào)的不重復(fù)編號(hào)。
進(jìn)一步地,通過前置服務(wù)器按照獲取順序給每筆交易附加上整數(shù)編號(hào),并附上新區(qū)塊的高度,方便判斷交易數(shù)據(jù)被認(rèn)證服務(wù)器接收的時(shí)間先后。
進(jìn)一步地,利用布隆過濾器檢查數(shù)據(jù)的遺漏情況,通過變換隨機(jī)數(shù)一段時(shí)間內(nèi)生成的哈希值使其在布隆過濾器中不重復(fù)。
進(jìn)一步地,利用布隆過濾器檢查數(shù)據(jù)的遺漏情況的方法具體包括:
步驟S1:根據(jù)需要傳送的數(shù)據(jù)量建立布隆過濾器,設(shè)計(jì)映射函數(shù)確保在布隆過濾器上添加所有哈希值后,仍留有一部分空;
步驟S2:通過變換隨機(jī)數(shù)生成的哈希值使其在第一服務(wù)器上的布隆過濾器中不會(huì)重復(fù),每次在布隆過濾器上添加哈希值時(shí),在二進(jìn)制位數(shù)組上至少有一個(gè)位置的1是和這個(gè)添加的哈希值唯一對(duì)應(yīng)的。
步驟S3:第二服務(wù)器把收到的全部哈希值都添加到布隆過濾器,比較第一服務(wù)器第二服務(wù)器上的布隆過濾器是否一致,若不一致,就把在第二服務(wù)器中添加完數(shù)據(jù)的布隆過濾器發(fā)送到第一服務(wù)器。
步驟S4:第一服務(wù)器收到第二服務(wù)器發(fā)來的布隆過濾器,把第一服務(wù)器上的所有哈希值繼續(xù)添加到發(fā)來的過濾器上,把所有能填上新的空位的哈希值記錄下來,發(fā)送到第二服務(wù)器。
步驟S5:重復(fù)步驟S3和步驟S4,直到第二服務(wù)器上的布隆過濾器和第一服務(wù)器上的布隆過濾器一致為止。
比較從前置節(jié)點(diǎn)服務(wù)器A傳輸?shù)接泿し?wù)器B的數(shù)據(jù)差異的方法,包括以下步驟:
步驟S1:使用上述布隆過濾器檢查數(shù)據(jù)的遺漏情況的方法,補(bǔ)全遺漏的交易數(shù)據(jù);
步驟S2:根據(jù)前期實(shí)際交易量設(shè)計(jì)類梅克爾樹的層級(jí),設(shè)計(jì)類梅克爾數(shù)節(jié)點(diǎn)的容量是2n+1-2,最下層理論上最多可放置交易筆數(shù)是2n;
進(jìn)一步地,按最近的交易筆數(shù),考慮歷史交易筆數(shù),動(dòng)態(tài)調(diào)整每個(gè)新的區(qū)塊的不重復(fù)編號(hào)的設(shè)計(jì)容量。
容量調(diào)整方案為:若最新一個(gè)區(qū)塊的實(shí)際交易筆數(shù)超過2n的80%,下一區(qū)塊的類梅克爾樹最下層的設(shè)計(jì)容量即可增加1倍,為2n+1,若最新一個(gè)區(qū)塊的實(shí)際交易筆數(shù)小于2n的30%,下一區(qū)塊的類梅克爾樹最下層設(shè)計(jì)容量即可縮小1倍,為2n-1。
新區(qū)塊的設(shè)計(jì)容量是2n,即共有2n的編號(hào)可選,前置節(jié)點(diǎn)服務(wù)器A建立一個(gè)2n位數(shù)的第一字符串,每位都為0,在產(chǎn)生不重復(fù)編號(hào)后,把編號(hào)和字符串位置對(duì)應(yīng)起來,將相應(yīng)的位置的0字符串用1代替,2n位字符串位置編號(hào)從左到右為0至2n -1;
前置節(jié)點(diǎn)服務(wù)器B也建立一個(gè)2n位的第二字符串,收到傳過來的交易數(shù)據(jù)后,把相應(yīng)的不重復(fù)編號(hào)與字符串對(duì)應(yīng)的位置的0用1替換;
服務(wù)器B把第二字符串發(fā)送到前置節(jié)點(diǎn)與第一字符串進(jìn)行對(duì)比,找出不同的字符的位置,該位置編號(hào)就是不重復(fù)編號(hào),將這些編號(hào)的相應(yīng)數(shù)據(jù)發(fā)送到服務(wù)器B即補(bǔ)全了所缺少的數(shù)據(jù)。
步驟S3:類梅克爾樹數(shù)據(jù)存儲(chǔ)用一個(gè)數(shù)組表示,0至2n+1-2節(jié)點(diǎn)存儲(chǔ)下層2個(gè)哈希值的串聯(lián)后再哈希的哈希值,2n-1到2n+1-2節(jié)點(diǎn)存儲(chǔ)按順序的不重復(fù)編號(hào),在類梅克爾數(shù)存儲(chǔ)數(shù)組下標(biāo)和不重復(fù)編號(hào)的差是2n -1,沒有對(duì)應(yīng)的信息的葉子節(jié)點(diǎn)默認(rèn)為哈??罩?;
步驟S4:自下而上逐層計(jì)算合并的哈希值,直到算出根節(jié)點(diǎn)的哈希值;
步驟S5:向系統(tǒng)選出的共識(shí)記賬服務(wù)器傳送類梅克爾樹的值;
步驟S6:找到最下層有差異的哈希值,缺失數(shù)據(jù)的共識(shí)記帳服務(wù)器向有相關(guān)數(shù)據(jù)的前置節(jié)點(diǎn)或其他服務(wù)器請(qǐng)求下載數(shù)據(jù),若數(shù)據(jù)與其他服務(wù)器不一致,則將數(shù)據(jù)發(fā)送到缺失的服務(wù)器進(jìn)行校驗(yàn),重新計(jì)算出相關(guān)的哈希值后再通知共識(shí)記賬服務(wù)器。
步驟S7:重復(fù)步驟S4、S5、S6,排除與周圍的共識(shí)記帳服務(wù)器相同率少于20%的交易,重復(fù)步驟S4。
步驟S8:選舉若干臺(tái)共識(shí)記賬服務(wù)器,將這幾臺(tái)服務(wù)器所有交易的類默克爾樹根進(jìn)行對(duì)比,類默克爾樹根哈希值一樣的最多的服務(wù)器生成的區(qū)塊作為最新的區(qū)塊,若默克爾樹根哈希值都不一樣,就隨機(jī)選一臺(tái),其他共識(shí)記賬服務(wù)器對(duì)比類默克爾樹根哈希值,若一樣就作為新的區(qū)塊,若不一樣,就比較類默克爾樹,下載不同的交易數(shù)據(jù),形成一樣的新區(qū)塊,或直接下載新的區(qū)塊,最后去掉類默克爾樹最層哈希值為空值的節(jié)點(diǎn),重新生成容量更小的區(qū)塊。
不但本區(qū)塊鏈的交易可以形成共識(shí),跨區(qū)塊鏈也可以形成共識(shí),跨鏈數(shù)據(jù)交換的步驟如下:
步驟S1:相應(yīng)的區(qū)塊鏈監(jiān)管部門互相授權(quán)兩條或多條鏈可以跨區(qū)塊鏈交易;
步驟S2:用戶在A或B區(qū)塊鏈上都開立合法公鑰地址帳戶;
步驟S3:用戶將交易內(nèi)容用A、B區(qū)塊鏈上對(duì)應(yīng)的私鑰分別簽名;
步驟S4:用戶將簽名和相應(yīng)的公鑰發(fā)送到自己公鑰地址帳戶所在的區(qū)塊鏈,同時(shí)發(fā)送到交易對(duì)手的區(qū)塊鏈,或?qū)⒐餐暮灻l(fā)到兩個(gè)區(qū)塊鏈。
步驟S5:A區(qū)塊鏈記帳服務(wù)器驗(yàn)證交易A或B的簽名后達(dá)成共識(shí)后寫入A區(qū)塊鏈最新區(qū)塊,執(zhí)行交易并在A區(qū)塊鏈上紀(jì)錄;
步驟S6:B區(qū)塊鏈上的多臺(tái)記賬服務(wù)器訪問A區(qū)塊鏈上的歷史紀(jì)錄,若發(fā)現(xiàn)有對(duì)應(yīng)的跨鏈交易信息,則B區(qū)塊鏈上相當(dāng)多臺(tái)記賬服務(wù)器達(dá)成共識(shí)后,在B區(qū)塊鏈上執(zhí)行交易。
與現(xiàn)有技術(shù)相比,本發(fā)明的區(qū)塊鏈的數(shù)據(jù)對(duì)比及共識(shí)方法使數(shù)據(jù)對(duì)比需要傳送的信息大幅度減少,非常方便地找出遺漏的數(shù)據(jù),并能定位請(qǐng)求下載交易數(shù)據(jù),靈活的共識(shí)方案,可大幅度地縮短各服務(wù)器達(dá)成共識(shí)的時(shí)間,跨鏈交易設(shè)計(jì)使區(qū)塊鏈上的數(shù)字貨幣和數(shù)字資產(chǎn)可以真正的跨鏈轉(zhuǎn)移,就像現(xiàn)金的轉(zhuǎn)移一樣,不需要轉(zhuǎn)移中介,有利于區(qū)塊鏈在不用領(lǐng)域和地域發(fā)揮更大的作用,交易數(shù)據(jù)可按不重復(fù)編號(hào)分段校驗(yàn)、打包、存儲(chǔ),可使數(shù)據(jù)存儲(chǔ)采用更多的方案來實(shí)現(xiàn),區(qū)塊鏈的發(fā)展不會(huì)受制于服務(wù)器的性能和容量。
附圖說明
圖1是說明本發(fā)明的方法中如何利用不重復(fù)編號(hào)查補(bǔ)遺漏數(shù)據(jù);
圖2是說明本發(fā)明的方法中如何產(chǎn)生不重復(fù)編號(hào);
圖3是說明本發(fā)明的方法中利用布隆過濾器檢查數(shù)據(jù)的遺漏情況的方法;
圖4是說明本發(fā)明的方法中跨鏈交易的實(shí)現(xiàn)方法;
圖5是說明本發(fā)明的方法中如何設(shè)計(jì)類梅克爾樹;
圖6是說明本發(fā)明的方法中如何通過類梅克爾樹來同步異常數(shù)據(jù);
圖7是說明本發(fā)明的方法中如何選舉共識(shí)服務(wù)器來達(dá)成共識(shí),形成新的區(qū)塊。
具體實(shí)施方式
本發(fā)明提供了一種區(qū)塊鏈的數(shù)據(jù)對(duì)比及共識(shí)方法,包括:對(duì)于每筆交易內(nèi)容的哈希值計(jì)算,通過變換隨機(jī)數(shù),使得在一段時(shí)間內(nèi)預(yù)設(shè)哈希值中的N位數(shù)不重復(fù),稱為不重復(fù)編號(hào),N為正整數(shù);記賬服務(wù)器間比較不同哈希值的所述不重復(fù)編號(hào),判斷交易是否一致。所述哈希值用16進(jìn)制表示,另外也可以通過前置服務(wù)器來獲取按順序給每筆交易附加上整數(shù)編號(hào),并附上新區(qū)塊的高度,方便判斷交易數(shù)據(jù)被服務(wù)器接收的時(shí)間先后,對(duì)于前面區(qū)塊的遺漏的交易數(shù)據(jù)可以單獨(dú)建組對(duì)比。所述不重復(fù)的N位數(shù)可以是前N位、后N位、或任意N位的組合。區(qū)塊鏈系統(tǒng)中可以定義一臺(tái)或多臺(tái)服務(wù)器作為交易入口,稱為前置節(jié)點(diǎn),可以由1臺(tái)前置節(jié)點(diǎn)選取所有的不重復(fù)編號(hào),或者由多臺(tái)前置節(jié)點(diǎn)分別選取不同段號(hào)的不重復(fù)編號(hào)。
如果有公鑰地址的帳戶較多地發(fā)送不符合要求的交易哈希值,這里約定發(fā)送交易需要一筆超過最小額度的金額,若系統(tǒng)認(rèn)為是違反交易或安全規(guī)則,可以將這金額消失,若帳戶的最小余額不夠則將不能發(fā)起交易,對(duì)于較多地發(fā)送不符合要求的交易哈希值的服務(wù)器,通過一定的監(jiān)控程序,可以自動(dòng)或人工手動(dòng)停止其服務(wù),也可由區(qū)塊鏈上CA證書中心來管理,檢測(cè)服務(wù)器監(jiān)測(cè)到違反系統(tǒng)運(yùn)行規(guī)則的公鑰地址后(交易賬戶公鑰地址或服務(wù)器公鑰地址),通知CA證書中心凍結(jié)其一些功能,也可寫入黑名單。
所有記帳服務(wù)期在區(qū)塊鏈準(zhǔn)備打包前,比特股是每次只選一臺(tái)服務(wù)器做記帳服務(wù)期,然后廣播給其他服務(wù)器,瑞波幣是所有記帳服務(wù)器都相互比較,把周圍服務(wù)器的交易哈希值與自己服務(wù)器上的交易哈希值對(duì)比,若80%的交易哈希值一致,則打包,而這里則可以根據(jù)需要選舉若干臺(tái)服務(wù)器(1臺(tái)至全部服務(wù)器的組合)作為共識(shí)服務(wù)器,每臺(tái)服務(wù)器定時(shí)統(tǒng)計(jì)和其他服務(wù)器的通訊性能,并相互交換信息,每臺(tái)服務(wù)器即可根據(jù)各服務(wù)器通訊性能信息,設(shè)計(jì)不同的多臺(tái)服務(wù)器組合的共識(shí)方案,要排除通訊性能較差的服務(wù)器,兼顧一下每臺(tái)服務(wù)器和其他非組合中的其他服務(wù)器的通訊性能,目的是使組合的共識(shí)服務(wù)器打包速度快,傳播給其他最新區(qū)塊的速度快。不同記賬服務(wù)器(或稱共識(shí)服務(wù)器)若發(fā)送交易哈希值進(jìn)行對(duì)比,需要傳送大量的數(shù)據(jù),比較也耗時(shí)間,只要發(fā)送不重復(fù)編號(hào)對(duì)比即可,如可以排序后按順序?qū)Ρ龋部梢苑诺阶值鋗ap中對(duì)比。
實(shí)施例1,參照?qǐng)D1:
本實(shí)施例說明如何利用不重復(fù)編號(hào)查補(bǔ)遺漏數(shù)據(jù)。
利用不重復(fù)編號(hào)對(duì)比數(shù)據(jù)缺失,這里預(yù)估新區(qū)塊交易筆數(shù)在6筆,設(shè)置總編號(hào)量為2的4次方,以交易哈希值的前兩位表示。
這里共有16個(gè)編號(hào)(0至15)可以選,建立一個(gè)16位的全部是“0”的字符串StringA16,在前置節(jié)點(diǎn)A服務(wù)器選出不重復(fù)編號(hào)后,把編號(hào)和字符串位置一一對(duì)應(yīng)起來,將相應(yīng)的位置的0字符串用1替換,16位字符串位置編號(hào)從左到右為0至15。這里字符串0、4、7、a、d、f位的字符為“1”。
服務(wù)器B也和A服務(wù)器一樣建立一個(gè)全是0的16位字符串StringB16,服務(wù)器收到A服務(wù)器傳過來的交易數(shù)據(jù)后,把相應(yīng)的不重復(fù)編號(hào)與字符串對(duì)應(yīng)的位置的0用1替換,這里字符串0、7、a、f位的字符為“1”。
服務(wù)器B把StringB16發(fā)送到A服務(wù)器與StringA16進(jìn)行對(duì)比,找出不同的字符的位置4、d,這位置編號(hào)就是交易的不重復(fù)編號(hào)4、d,將這些編號(hào)的相應(yīng)數(shù)據(jù)發(fā)送到B服務(wù)器即補(bǔ)全了服務(wù)器B所缺的數(shù)據(jù)
可以設(shè)定不重復(fù)編號(hào)的段號(hào),分配在不同的前置節(jié)點(diǎn)上,比如交易哈希值開始的第一位為3(或用16進(jìn)制表示段號(hào):0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f)的所有不重復(fù)編號(hào)都要到這個(gè)前置節(jié)點(diǎn)(或幾臺(tái)前置節(jié)點(diǎn)集群)上登記,并把相關(guān)的交易發(fā)送給其他記帳服務(wù)器,其他記帳服務(wù)器若缺少3開始的不重復(fù)編號(hào)的交易,在這個(gè)前置節(jié)點(diǎn)一定能下載到3開始的不重復(fù)編號(hào)的交易,通過不重復(fù)編號(hào)的分段發(fā)放,既保證不重復(fù)編號(hào),也可以分流集中取號(hào)的壓力。
不同段號(hào)的不重復(fù)編號(hào)的發(fā)送和下載可以是分服務(wù)器管理的,在新的區(qū)塊形成過程中,同一段號(hào)的交易統(tǒng)一共識(shí)和打包也是可行的,并可以建立獨(dú)立的分段號(hào)的類梅克爾樹,計(jì)算分段號(hào)的類梅克爾樹根哈希值,最后在把分段號(hào)的類梅克爾樹根作為葉子節(jié)點(diǎn)建立新的類梅克爾樹,并生成類梅克爾樹根哈希值,作為整個(gè)新區(qū)塊所有交易的哈希值,不同段號(hào)的交易會(huì)常會(huì)出現(xiàn)同一支出地址的情況,記帳服務(wù)器要檢查累計(jì)支付金額不應(yīng)超過該賬戶余額,或者設(shè)專門的服務(wù)器檢查同一地址支出的情況,并通知那些打包的服務(wù)器,交易哈希值可分段打包,可以在一個(gè)記帳服務(wù)器上打包和存儲(chǔ)一個(gè)分段或多個(gè)分段,共識(shí)打包對(duì)比和硬盤存儲(chǔ)也可以用不同的服務(wù)器來完成。
實(shí)施例2,參照附圖2:
本實(shí)施例說明如何產(chǎn)生不重復(fù)編號(hào)。
假設(shè)分0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f(16進(jìn)制)號(hào)前置云節(jié)點(diǎn)給用戶取號(hào)。
2號(hào)節(jié)點(diǎn)除了第一位必須是2以外,還規(guī)定第二位和第三位不能重復(fù),即16*16=256,即規(guī)定每個(gè)區(qū)塊的時(shí)候這個(gè)節(jié)點(diǎn)只能發(fā)最多256個(gè)不同編號(hào)的交易號(hào)。
用戶可以規(guī)定發(fā)出去的幾筆交易都是錢包的第4筆交易,系統(tǒng)約定每次只能是一筆交易生效,不用擔(dān)心多付問題。
如用戶挑選2號(hào)節(jié)點(diǎn)發(fā)送交易,就生成一批交易的哈希值,把第一位是2的幾筆交易發(fā)到2號(hào)節(jié)點(diǎn),2027—,2245—,2246—,2231—,經(jīng)2號(hào)節(jié)點(diǎn)判斷,2027、2245、2231已經(jīng)被其他用戶挑選,這里2246是空缺的,前置云節(jié)點(diǎn)就把2246—這筆交易發(fā)送給記帳服務(wù)器了,其他交易刪除。
附加區(qū)塊高度的使記帳服務(wù)器可以判斷交易數(shù)據(jù)是本區(qū)塊期間發(fā)出的還是前面區(qū)塊發(fā)出(但還沒有寫入?yún)^(qū)塊鏈的交易)。
比如現(xiàn)在新的區(qū)塊是9891,在前置節(jié)點(diǎn)用戶的交易數(shù)據(jù)獲得一個(gè)附加的區(qū)塊高度,據(jù)此可以放到本區(qū)塊的本節(jié)點(diǎn)的布隆過濾器或類梅克爾樹來對(duì)比,但小于區(qū)塊9891標(biāo)記如區(qū)塊9890、9889的交易數(shù)據(jù)(但還沒有寫入?yún)^(qū)塊鏈的交易),需要單獨(dú)放到一組合中與其他記帳服務(wù)器去對(duì)比,這樣可以確保最新區(qū)塊交易數(shù)據(jù)在對(duì)比過程中不會(huì)有編號(hào)碰撞的情況。
實(shí)施例3,參照?qǐng)D3:
本實(shí)施例說明利用布隆過濾器檢查數(shù)據(jù)的遺漏情況,可以通過變換隨機(jī)數(shù)一段時(shí)間內(nèi)生成的哈希值使其在布隆過濾器中不重復(fù),可以使數(shù)據(jù)從A服務(wù)器傳輸?shù)紹服務(wù)器后前后比較的誤判率降為0(假設(shè)數(shù)據(jù)僅會(huì)遺漏,不會(huì)有新的數(shù)據(jù)出現(xiàn))。
步驟S1:這里要從A服務(wù)器要傳送共6個(gè)哈希值到B服務(wù)器,設(shè)布隆過濾組位數(shù)為16位。
步驟S2:通過變換隨機(jī)數(shù)生成的哈希值使其在A服務(wù)器上的布隆過濾器中不會(huì)重復(fù),每次在布隆過濾器上添加哈希值時(shí),在二進(jìn)制位數(shù)組上至少有一個(gè)位置的1是和這個(gè)添加的哈希值唯一對(duì)應(yīng)的,h1、h2、h3、h4、h5、h6共6個(gè)哈希值對(duì)應(yīng)不同的位,都是唯一映射的。
步驟S3:B服務(wù)器把收到的全部哈希值都添加到布隆過濾器(空的和A服務(wù)器上一樣),比較A和B兩個(gè)填上哈希值后的布隆過濾器是否一致,比較結(jié)果B上缺少2和d位,把缺的編號(hào)發(fā)送給A服務(wù)器請(qǐng)求下載。
步驟S4:重復(fù)步驟S3,直到B服務(wù)器上的布隆過濾器和A服務(wù)器一致為止。
實(shí)施例4,參照?qǐng)D4:
本實(shí)施例說明跨鏈交易是如何實(shí)現(xiàn)的,本區(qū)塊鏈的交易可以形成共識(shí),跨區(qū)塊鏈也可以形成共識(shí),通過區(qū)塊鏈的投票權(quán)系統(tǒng)或區(qū)塊鏈最高權(quán)限的CA管理中心可以授權(quán)跨區(qū)塊鏈傳遞數(shù)字貨幣或數(shù)字資產(chǎn),甚至可以在兩條或多條區(qū)塊鏈之間交易,這有利于區(qū)塊鏈的行業(yè)分工或地域分工,如產(chǎn)權(quán)登記、信息存證、電子商務(wù)、政務(wù)系統(tǒng)、物流、物聯(lián)網(wǎng)、供應(yīng)鏈、交易所、銀行清算系統(tǒng)、行業(yè)、企業(yè)(采購(gòu)、銷售、報(bào)銷)、央行、交通運(yùn)輸、公用事業(yè)支付、醫(yī)療系統(tǒng)(方便公費(fèi)醫(yī)療管理)、零錢包(可以將頻繁的小額交易獨(dú)立開來)等,跨鏈交易的步驟如下:
步驟S1:相應(yīng)的區(qū)塊鏈監(jiān)管部門互相授權(quán)兩條(如A和B)或多條鏈可以跨區(qū)塊鏈交易,即允許一條區(qū)塊鏈上的數(shù)字貨幣或數(shù)字資產(chǎn)可以轉(zhuǎn)移到另一條區(qū)塊鏈上。
步驟S2:用戶在A或B區(qū)塊鏈上都開立合法公鑰地址帳戶(如通過區(qū)塊鏈上CA認(rèn)證中心認(rèn)證通過),為安全期間,最好讓CA中心將需要跨鏈交易的本人在不同鏈上的公鑰地址都進(jìn)行關(guān)聯(lián)簽名認(rèn)證,證明兩個(gè)不同鏈上的公鑰地址是同一人擁有,并用CA中心所擁有的權(quán)限將相關(guān)CA證書分別寫入A和B區(qū)塊鏈。CA中心可以給用戶一個(gè)隨機(jī)數(shù)簽名,只要能用用戶公鑰解開,就說明用戶是該公鑰的擁有者,同時(shí)可以通過聲音、視頻或身份證等信息確認(rèn)用戶的真實(shí)身份。
步驟S3:交易內(nèi)容為,用戶要將A區(qū)塊鏈上的幣(如100個(gè))轉(zhuǎn)移到B區(qū)塊鏈上,用戶將交易內(nèi)容用A、B區(qū)塊鏈上對(duì)應(yīng)的私鑰分別簽名或依次簽名。
步驟S4:用戶將簽名和相應(yīng)的公鑰發(fā)送到自己公鑰地址帳戶所在的區(qū)塊鏈,也可以同時(shí)發(fā)送到交易對(duì)手的區(qū)塊鏈,或?qū)⒐餐暮灻l(fā)到兩個(gè)區(qū)塊鏈。
步驟S5:A區(qū)塊鏈記帳服務(wù)器驗(yàn)證交易A或B的簽名后達(dá)成共識(shí)后寫入A區(qū)塊鏈最新區(qū)塊,將用戶A公鑰地址上的幣(如100個(gè))扣除,在A區(qū)塊鏈上紀(jì)錄“支付給B區(qū)塊鏈公鑰地址”,這里僅是記錄,標(biāo)記為不能再花費(fèi)的幣。
步驟S6:B區(qū)塊鏈上的相當(dāng)多臺(tái)記賬服務(wù)器訪問A區(qū)塊鏈上的歷史紀(jì)錄,若發(fā)現(xiàn)確實(shí)有對(duì)應(yīng)的跨鏈交易信息,已標(biāo)記為不能再花費(fèi)的幣(如100個(gè)),B區(qū)塊鏈上相當(dāng)多臺(tái)記賬服務(wù)器達(dá)成共識(shí)后,同意在B區(qū)塊鏈用戶公鑰地址上增加幣(如100個(gè))。
步驟S7:用戶將A區(qū)塊鏈上的幣轉(zhuǎn)移到B區(qū)塊鏈上后,就可以直接向在B區(qū)塊鏈上的商家(如公交公司)或其他個(gè)人支付幣。
步驟S8:商家(如公交公司)或其他個(gè)人也可以重復(fù)S1至S7步驟,將幣從B區(qū)塊鏈跨鏈支付到A區(qū)塊鏈。
實(shí)施例5,參照?qǐng)D5、6:
本實(shí)施例說明如何設(shè)計(jì)類梅克爾樹,并如何同步異常數(shù)據(jù)。
類梅克爾樹數(shù)據(jù)存儲(chǔ)用一個(gè)數(shù)組表示,0至14存儲(chǔ)下層2個(gè)哈希值的串聯(lián)后再哈希的哈希值,15開始到30存儲(chǔ)按順序的交易不重復(fù)編號(hào),在類梅克爾數(shù)存儲(chǔ)數(shù)組下標(biāo)和不重復(fù)編號(hào)他們的差是15,沒有對(duì)應(yīng)的信息的葉子節(jié)點(diǎn)默認(rèn)為哈??罩怠?/p>
A服務(wù)器的類梅克爾樹自下而上逐層兩兩串聯(lián)計(jì)算哈希值,如15和16的哈希值串聯(lián)后哈希的哈希值存在7,3和4的哈希值串聯(lián)后哈希的哈希值存在1,直到算出根節(jié)點(diǎn)的根哈希值。
B服務(wù)器收到A的數(shù)據(jù)后,如同A一樣建立類梅克爾樹,并一直計(jì)算出根節(jié)點(diǎn)的根哈希值。
這個(gè)類梅克爾樹的建立方式和普通的梅克爾樹是不一樣的,最大的優(yōu)勢(shì)是即使哈希值的數(shù)量不一樣,也不會(huì)改變各哈希值在類梅克爾樹中的相應(yīng)的位置,所有的哈希值都是能對(duì)號(hào)入座的,同一不重復(fù)編號(hào)的哈希值在不同的服務(wù)器上的類梅克爾樹上的位置都是一樣的。
這里比較A、B兩顆類梅克爾樹的根哈希值,不一樣,比較其子節(jié)點(diǎn),1節(jié)點(diǎn)不一致,2節(jié)點(diǎn)一致,比較1節(jié)點(diǎn)的子節(jié)點(diǎn),3一致,4不一致,比較4節(jié)點(diǎn)的子節(jié)點(diǎn),9一致,10不一致,比較10節(jié)點(diǎn)下的子節(jié)點(diǎn),21一致,22不一致,22節(jié)點(diǎn)對(duì)應(yīng)的不重復(fù)編號(hào)是7,向A服務(wù)器請(qǐng)求下載不重復(fù)編號(hào)7的哈希值?,F(xiàn)在從下往上計(jì)算哈希值,把新請(qǐng)求來的不重復(fù)編號(hào)7的哈希值放到22,把21和22哈希值串聯(lián)后哈希獲得哈希值放入10,把9和10串聯(lián)合并后哈希的好希值放入4,把3和4串聯(lián)合并后哈希的好希值放入1,把1和2串聯(lián)合并后哈希的好希值放入0,對(duì)比A和B服務(wù)器兩顆類梅克爾樹的更哈希值為一致,則兩邊的數(shù)據(jù)完全一致。
實(shí)施例6,參照?qǐng)D7:
本實(shí)施例說明如何選舉共識(shí)服務(wù)器來達(dá)成共識(shí),形成新的區(qū)塊。
選舉若干臺(tái)共識(shí)記賬服務(wù)器提供共識(shí)服務(wù),將這幾臺(tái)服務(wù)器所有交易的類默克爾樹根進(jìn)行對(duì)比,類默克爾樹根哈希值一樣的最多的服務(wù)器生成的區(qū)塊作為最新的區(qū)塊,若默克爾樹根哈希值都不一樣,就隨機(jī)選一臺(tái),其他記帳服務(wù)期對(duì)比類默克爾樹根哈希值,若一樣就作為新的區(qū)塊,若不一樣,就比較類默克爾樹,下載不同的交易數(shù)據(jù),形成一樣的新區(qū)塊,或直接下載新的區(qū)塊,最后也可以去掉類默克爾樹最下層哈希值為空值的節(jié)點(diǎn),重新生成容量更小的區(qū)塊。
最后應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。