區(qū)塊鏈的數(shù)據(jù)對比及共識方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是區(qū)塊鏈技術(shù)。
【背景技術(shù)】
[0002]現(xiàn)有比特幣、以太坊、比特股、瑞波幣等技術(shù)弱點如下:
1、在新區(qū)塊交易數(shù)據(jù)對比時都需要傳送全部哈希值,數(shù)據(jù)量很大。
[0003]2、交易數(shù)據(jù)傳輸重復(fù)的概率大,自己缺少的數(shù)據(jù)不能確定地去找下載的來源,效率不高,數(shù)據(jù)不容易補全,有部分交易有較長的延時。
[0004]3、比特幣、以太坊、比特股是選一臺服務(wù)器打包來廣播新區(qū)塊,傳播速度慢,反復(fù)傳輸?shù)臄?shù)據(jù)量大,要么像瑞波幣一樣要同時比較非常多的服務(wù)器來達成共識,達成共識的時間不夠快。
[0005]4、現(xiàn)有的跨鏈交易是無法真正地跨鏈傳遞數(shù)字貨幣或數(shù)字資產(chǎn)的,只是一種需要中介的兌換關(guān)系。
[0006]5、數(shù)據(jù)存儲還不夠靈活,沒有做好大數(shù)據(jù)量需要分別存儲不同服務(wù)器的準備。
[0007]
【發(fā)明內(nèi)容】
[0008]為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明的區(qū)塊鏈的數(shù)據(jù)對比及共識方法,使數(shù)據(jù)對比需要傳送的信息大幅度減少,非常方便地找出遺漏的數(shù)據(jù),并能定位請求下載交易數(shù)據(jù),靈活的共識方案,可大幅度地縮短各服務(wù)器達成共識的時間,跨鏈交易設(shè)計使區(qū)塊鏈上的數(shù)字貨幣和數(shù)字資產(chǎn)可以真正的跨鏈轉(zhuǎn)移,就像現(xiàn)金的轉(zhuǎn)移一樣,不需要轉(zhuǎn)移中介,有利于區(qū)塊鏈在不用領(lǐng)域和地域發(fā)揮更大的作用,交易數(shù)據(jù)可按不重復(fù)編號分段校驗、打包、存儲,可使數(shù)據(jù)存儲采用更多的方案來實現(xiàn),區(qū)塊連的發(fā)展不會受制于服務(wù)器的性能和容量。
[0009]區(qū)塊鏈的數(shù)據(jù)對比及共識方法,其特征在于,對于每筆交易內(nèi)容的哈希值計算,通過變換隨機數(shù),在一段時間內(nèi)預(yù)設(shè)哈希值的某幾位數(shù)不重復(fù)(可以是前幾位、后幾位、或任意幾位的組合,這里稱不重復(fù)編號),記賬服務(wù)器間比較不同哈希值的預(yù)定幾位數(shù)就可以判斷出是一致的交易或是不一致的交易,這里的哈希值用16進制表示,便于敘述方便,另外也可以通過某些前置服務(wù)器來獲取按順序給每筆交易附加上整數(shù)編號,并附上新區(qū)塊的高度,方便判斷交易數(shù)據(jù)被服務(wù)器接收的時間先后,對于前面區(qū)塊的遺漏的交易數(shù)據(jù)可以單獨建組對比。
[0010]用戶可以按變換隨機數(shù),計算一批不重復(fù)編號,區(qū)塊鏈系統(tǒng)可以定義一臺或多臺服務(wù)器作為交易入口,可稱為前置節(jié)點,前置節(jié)點I臺可以取所有的不重復(fù)編號,或者分配多臺前置節(jié)點取不同段號的不重復(fù)編號。
[0011]利用布隆過濾器可以檢查數(shù)據(jù)的遺漏情況,可以通過變換隨機數(shù)一段時間內(nèi)生成的哈希值使其在布隆過濾器中不重復(fù),可以使數(shù)據(jù)從A服務(wù)器傳輸?shù)紹服務(wù)器后前后比較的誤判率降為0(假設(shè)數(shù)據(jù)僅會遺漏,不會有新的數(shù)據(jù)出現(xiàn))。
[0012]
步驟S1:根據(jù)需要傳送的數(shù)據(jù)量N建立布隆過濾器,設(shè)計映射函數(shù)或可以使用多個映射函數(shù),確保在布隆過濾器上添加所有哈希值后,仍留有一部分空,一般留至少20%以上的空位為宜,留空位越少,挑選哈希值的難度越大,但留空位多,傳送的數(shù)據(jù)量可能會增加。
[0013]步驟S2:通過變換隨機數(shù)生成的哈希值使其在A服務(wù)器上的布隆過濾器中不會重復(fù),每次在布隆過濾器上添加哈希值時,在二進制位數(shù)組上至少有一個位置的I是和這個添加的哈希值唯一對應(yīng)的。
[0014]步驟S3:服務(wù)器B把收到的全部哈希值都添加到布隆過濾器(空的和A服務(wù)器上一樣),比較A和B兩個填上哈希值后的布隆過濾器是否一致,若不一致,就把在B添完數(shù)據(jù)的布隆過濾器發(fā)送到A服務(wù)器。
[0015]步驟S4:服務(wù)器A收到B服務(wù)器發(fā)來的布隆過濾器(添加了 B服務(wù)器上的哈希值),把A服務(wù)器上的所有哈希值繼續(xù)添加到B發(fā)過來的過濾器上,把所有能填上新的空位的哈希值記錄下來,這些就是B服務(wù)器上缺少的數(shù)據(jù),發(fā)送到B服務(wù)器。
[0016]步驟S5:重復(fù)步驟S3和步驟S4,直到B服務(wù)器上的布隆過濾器和A服務(wù)器一致為止。
[0017]
4、如果有公鑰地址的帳戶較多地發(fā)送不符合要求的交易哈希值,這里約定發(fā)送交易需要一筆超過最小額度的金額,若系統(tǒng)認為是違反交易或安全規(guī)則,可以將這金額消失,若帳戶的最小余額不夠則將不能發(fā)起交易,對于較多地發(fā)送不符合要求的交易哈希值的服務(wù)器,通過一定的監(jiān)控程序,可以自動或人工手動停止其服務(wù),也可由區(qū)塊鏈上CA證書中心來管理,檢測服務(wù)器監(jiān)測到違反系統(tǒng)運行規(guī)則的公鑰地址后(交易賬戶公鑰地址或服務(wù)器公鑰地址),通知CA證書中心凍結(jié)其一些功能,也可寫入黑名單。
[0018]5、所有記帳服務(wù)期在區(qū)塊鏈準備打包前,比特股是每次只選一臺服務(wù)器做記帳服務(wù)期,然后廣播給其他服務(wù)器,瑞波幣是所有記帳服務(wù)器都相互比較,把周圍服務(wù)器的交易哈希值與自己服務(wù)器上的交易哈希值對比,若80%的交易哈希值一致,則打包,而這里則可以根據(jù)需要選舉若干臺服務(wù)器(I臺至全部服務(wù)器的組合)作為共識服務(wù)器,每臺服務(wù)器定時統(tǒng)計和其他服務(wù)器的通訊性能,并相互交換信息,每臺服務(wù)器即可根據(jù)各服務(wù)器通訊性能信息,設(shè)計不同的多臺服務(wù)器組合的共識方案,要排除通訊性能較差的服務(wù)器,兼顧一下每臺服務(wù)器和其他非組合中的其他服務(wù)器的通訊性能,目的是使組合的共識服務(wù)器打包速度快,傳播給其他最新區(qū)塊的速度快。
[0019]6、不同記賬服務(wù)器(或稱共識服務(wù)器)若發(fā)送交易哈希值進行對比,需要傳送大量的數(shù)據(jù),比較也耗時間,只要發(fā)送不重復(fù)編號對比即可,如可以排序后按順序?qū)Ρ?,也可以放到字典map中對比。
[0020]7、可以設(shè)定不重復(fù)編號的段號,分配在不同的前置節(jié)點上,比如交易哈希值開始的第一位為3(或用16進制表示段號:0、1、2、3、4、5、6、7、8、9、&、13、(3、(1、6汀)的所有不重復(fù)編號都要到這個前置節(jié)點(或幾臺前置節(jié)點集群)上登記,并把相關(guān)的交易發(fā)送給其他記帳服務(wù)器,其他記帳服務(wù)器若缺少3開始的不重復(fù)編號的交易,在這個前置節(jié)點一定能下載到3開始的不重復(fù)編號的交易,通過不重復(fù)編號的分段發(fā)放,既保證不重復(fù)編號,也可以分流集中取號的壓力。
[0021]8、不同段號的不重復(fù)編號的發(fā)送和下載可以是分服務(wù)器管理的,在新的區(qū)塊形成過程中,同一段號的交易統(tǒng)一共識和打包也是可行的,并可以建立獨立的分段號的類梅克爾樹,計算分段號的類梅克爾樹根哈希值,最后在把分段號的類梅克爾樹根作為葉子節(jié)點建立新的類梅克爾樹,并生成類梅克爾樹根哈希值,作為整個新區(qū)塊所有交易的哈希值,不同段號的交易會常會出現(xiàn)同一支出地址的情況,記帳服務(wù)器要檢查累計支付金額不應(yīng)超過該賬戶余額,或者設(shè)專門的服務(wù)器檢查同一地址支出的情況,并通知那些打包的服務(wù)器,交易哈希值可分段打包,可以在一個記帳服務(wù)器上打包和存儲一個分段或多個分段,共識打包對比和硬盤存儲也可以用不同的服務(wù)器來完成。
[0022]9、比較從前置節(jié)點A服務(wù)器傳輸?shù)接泿服務(wù)器的數(shù)據(jù)差異,若使用幾種不重復(fù)編號的傳送方式結(jié)合,只需傳送少量數(shù)據(jù)就可以很快地找出遺漏的數(shù)據(jù),以下是步驟:
步驟S1:根據(jù)權(quán)利3的步驟,使用特制的布隆過濾器使用方法,補全遺漏的交易數(shù)據(jù),數(shù)據(jù)差異大時,使用效果特別好,這步是可選的。
[0023]步驟S2:根據(jù)前期實際交易量設(shè)計類梅克爾樹的層級,可以按最近的交易筆數(shù),考慮歷史(節(jié)假日、去年當(dāng)月、上周同一天、昨天、前一小時、前I分鐘、前幾個區(qū)塊等)交易筆數(shù),動態(tài)調(diào)整每個新的區(qū)塊的不重復(fù)編號的設(shè)計容量,設(shè)計類梅克爾數(shù)節(jié)點的容量是(2的η+1次方)-2,最下層理論上最多可放置交易筆數(shù)是2的η次方。
[0024]如容量調(diào)整方案可以是這樣:若最新一個區(qū)塊的實際交易筆數(shù)超過2的η次方的80%,下一區(qū)塊的類梅克爾樹最下層的設(shè)計容量即可增加I倍,到2的n+1次方,若最新一個區(qū)塊的實際交易筆數(shù)小于2的η次方的30%,下一區(qū)塊的類梅克爾樹最下層設(shè)計容量即可縮小I倍,到2的η-1次方。
[0025]如本次新區(qū)塊的設(shè)計容量是2的η次方,共有2的η次方的編號可選,建立一個2的η次方位數(shù)的字符串,每位都為0,在前置節(jié)點選出不重復(fù)編號后,把編號和字符串位置對應(yīng)起來,將相應(yīng)的位置的O字符串用I代替,2的η次方位字符串位置編號從左到右為O至(2的η次方)_1。
[0026]服務(wù)器B也和A服務(wù)器一樣建立一個(2的η次方)位字符串StringB,服務(wù)器收到A月艮務(wù)器傳過來的交易數(shù)據(jù)后,把相應(yīng)的不重復(fù)編號與字符串對應(yīng)的位置的O用I替換。
[0027]B服務(wù)器把StringB發(fā)送到A服務(wù)器與StringA進行對比,找出不同的字符的位置,這位置編號就是交易的不重復(fù)編號,將這些編號的相應(yīng)數(shù)據(jù)發(fā)送到B服務(wù)器即補全了所B月艮務(wù)器所缺的數(shù)據(jù)。
[0028]步驟S3:類梅克爾樹數(shù)據(jù)存儲用一個數(shù)組表示,O至(2的n+1次方)_