本發(fā)明涉及數(shù)據(jù)通信技術(shù),尤其是一種廣播數(shù)據(jù)塊的方法、裝置和電子設(shè)備。
背景技術(shù):
P2P電子貨幣系統(tǒng)為一種采用工作量證明機(jī)制的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)來(lái)記錄交易的公開(kāi)信息,其數(shù)據(jù)保存的基本單位為塊,每個(gè)塊里存著很多交易,數(shù)據(jù)塊通過(guò)鏈?zhǔn)浇Y(jié)構(gòu)連接在一起,每個(gè)塊保存著上一個(gè)塊的Hash,礦池在計(jì)算數(shù)據(jù)塊的時(shí)候,當(dāng)發(fā)現(xiàn)難度大于網(wǎng)絡(luò)難度,需要將新的數(shù)據(jù)塊快速的廣播到P2P網(wǎng)絡(luò)中,使整個(gè)網(wǎng)絡(luò)能夠在你的新塊的基礎(chǔ)上計(jì)算下一個(gè),如果兩個(gè)人同時(shí)發(fā)現(xiàn)了新塊,需要看下一個(gè)數(shù)據(jù)塊是在誰(shuí)的基礎(chǔ)上計(jì)算的,沒(méi)有被確認(rèn)的就成為了孤塊,孤塊將不能得到數(shù)字貨幣獎(jiǎng)勵(lì),因此,對(duì)于數(shù)據(jù)塊的廣播速度要求越快越好。
然而,在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下問(wèn)題:現(xiàn)有技術(shù)對(duì)于數(shù)據(jù)塊的廣播通常采用TCP傳輸控制協(xié)議連接的方式,TCP是一種可靠的傳輸協(xié)議,但是其傳輸效率不是很高,每次傳輸都需要多次握手,并不適用所有廣播情況。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例所要解決的一個(gè)技術(shù)問(wèn)題是:提供多種連接方式進(jìn)行廣播數(shù)據(jù)塊,以即可數(shù)據(jù)塊的廣播。
本發(fā)明實(shí)施例提供的一種廣播數(shù)據(jù)塊的方法,包括:
當(dāng)所述當(dāng)前節(jié)點(diǎn)需要將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接,所述其他節(jié)點(diǎn)為與當(dāng)前節(jié)點(diǎn)通過(guò)一次連接即可實(shí)現(xiàn)通信的所有節(jié)點(diǎn);
通過(guò)所述與其他節(jié)點(diǎn)建立的連接,將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
基于上述方法的另一實(shí)施例中,所述連接方式包括TCP傳輸控制協(xié)議連接、UDP用戶數(shù)據(jù)報(bào)協(xié)議和RPC遠(yuǎn)程過(guò)程調(diào)用協(xié)議連接。
基于上述方法的另一實(shí)施例中,所述通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接包括:
通過(guò)TCP傳輸控制協(xié)議連接與一個(gè)其他節(jié)點(diǎn)建立連接。
基于上述方法的另一實(shí)施例中,所述通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接包括:
通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議與一個(gè)其他節(jié)點(diǎn)建立連接。
基于上述方法的另一實(shí)施例中,所述通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議將一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn),包括:
將所述一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊,將所述分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
基于上述方法的另一實(shí)施例中,將所述一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊之后,還包括:
對(duì)所述所有數(shù)據(jù)子塊進(jìn)行編號(hào)得到對(duì)應(yīng)每個(gè)數(shù)據(jù)子塊的數(shù)據(jù)編號(hào),將每個(gè)數(shù)據(jù)編號(hào)添加到對(duì)應(yīng)的數(shù)據(jù)子塊中,所述每個(gè)數(shù)據(jù)編號(hào)對(duì)應(yīng)唯一的一個(gè)數(shù)據(jù)子塊,并且所述數(shù)據(jù)編號(hào)的順序與其對(duì)應(yīng)的數(shù)據(jù)子塊在所述數(shù)據(jù)塊中的順序相對(duì)應(yīng)。
基于上述方法的另一實(shí)施例中,所述一個(gè)數(shù)據(jù)塊分割得到的所有數(shù)據(jù)子塊大小相同。
基于上述方法的另一實(shí)施例中,所述將所述分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn),包括:
通過(guò)數(shù)據(jù)冗余算法將所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
基于上述方法的另一實(shí)施例中,所述通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接的同時(shí),還包括:
所述當(dāng)前節(jié)點(diǎn)將約定密鑰發(fā)送給所有其他節(jié)點(diǎn)。
基于上述方法的另一實(shí)施例中,所述將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)之前,還包括:
通過(guò)約定密鑰對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行加密;
本方法在將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)之后,還包括:
所述其他節(jié)點(diǎn)接收到所述一個(gè)數(shù)據(jù)塊,并基于所述約定密鑰對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行解密,獲得數(shù)據(jù)塊并處理。
基于上述方法的另一實(shí)施例中,所述當(dāng)前節(jié)點(diǎn)需要將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播,包括:
響應(yīng)于當(dāng)前節(jié)點(diǎn)接收到的一個(gè)數(shù)據(jù)塊,所述當(dāng)前節(jié)點(diǎn)正在對(duì)上一個(gè)接收到的數(shù)據(jù)塊進(jìn)行處理的過(guò)程中,接收到一個(gè)數(shù)據(jù)塊,所述當(dāng)前節(jié)點(diǎn)將所述接收到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
基于上述方法的另一實(shí)施例中,所述當(dāng)前節(jié)點(diǎn)需要將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播,包括:
所述當(dāng)前節(jié)點(diǎn)對(duì)上一個(gè)接收到的數(shù)據(jù)塊處理得到一個(gè)數(shù)據(jù)塊,將所述處理得到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
基于上述方法的另一實(shí)施例中,所述一個(gè)數(shù)據(jù)塊包括塊頭和至少一個(gè)交易數(shù)據(jù)塊;其中,一個(gè)交易數(shù)據(jù)塊是所述數(shù)據(jù)塊經(jīng)過(guò)一個(gè)節(jié)點(diǎn)的傳輸產(chǎn)生的;
所述塊頭包括頭數(shù)據(jù)和一個(gè)HASH散列值,其中所述HASH散列值用于標(biāo)記所述一個(gè)數(shù)據(jù)塊;
所述每個(gè)交易數(shù)據(jù)塊包括交易數(shù)據(jù)和一個(gè)HASH散列值;其中,一個(gè)HASH散列值對(duì)應(yīng)產(chǎn)生所述交易數(shù)據(jù)塊的節(jié)點(diǎn)。
基于上述方法的另一實(shí)施例中,所述將所述一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn)之后,還包括:
判斷所述其他節(jié)點(diǎn)中是否包括所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值;
如果所述其他節(jié)點(diǎn)中包含所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,所述其他節(jié)點(diǎn)不對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行處理,將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播;
如果所述其他節(jié)點(diǎn)中不包含所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,所述其他節(jié)點(diǎn)接收所述一個(gè)數(shù)據(jù)塊并進(jìn)行處理。
根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種廣播數(shù)據(jù)塊的裝置,包括:
連接建立單元,用于當(dāng)所述當(dāng)前節(jié)點(diǎn)需要將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接,所述其他節(jié)點(diǎn)為與當(dāng)前節(jié)點(diǎn)通過(guò)一次連接即可實(shí)現(xiàn)通信的所有節(jié)點(diǎn);
數(shù)據(jù)發(fā)送單元,用于通過(guò)所述與其他節(jié)點(diǎn)建立的連接,將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種電子設(shè)備,包括處理器,所述處理器包括如上所述的廣播數(shù)據(jù)塊的裝置。
基于本發(fā)明上述實(shí)施例提供的一種廣播數(shù)據(jù)塊的方法、裝置和電子設(shè)備,通過(guò)至少一種連接方式將數(shù)據(jù)塊廣播到所有其他節(jié)點(diǎn)中,克服了現(xiàn)有技術(shù)通過(guò)TCP廣播數(shù)據(jù)塊傳輸效率低的弊端,對(duì)于不同情況采用不同的連接方式,實(shí)現(xiàn)了高速、快捷、有效的廣播數(shù)據(jù)塊。
下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
附圖說(shuō)明
構(gòu)成說(shuō)明書(shū)的一部分的附圖描述了本發(fā)明的實(shí)施例,并且連同描述一起用于解釋本發(fā)明的原理。
參照附圖,根據(jù)下面的詳細(xì)描述,可以更加清楚地理解本發(fā)明,其中:
圖1為本發(fā)明方法一個(gè)實(shí)施例的流程圖。
圖2為本發(fā)明方法另一個(gè)實(shí)施例的流程圖。
圖3為本發(fā)明裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
圖4為本發(fā)明裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
圖5為本發(fā)明裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
現(xiàn)在將參照附圖來(lái)詳細(xì)描述本發(fā)明的各種示例性實(shí)施例。應(yīng)注意到:除非另外具體說(shuō)明,否則在這些實(shí)施例中闡述的部件和步驟的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
同時(shí),應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個(gè)部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。
以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說(shuō)明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制。
對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說(shuō)明書(shū)的一部分。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步討論。
本發(fā)明實(shí)施例可以應(yīng)用于計(jì)算機(jī)系統(tǒng)/服務(wù)器,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器一起使用的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、胖客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)、大型計(jì)算機(jī)系統(tǒng)和包括上述任何系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。
計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語(yǔ)境下描述。通常,程序模塊可以包括例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型。計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在分布式云計(jì)算環(huán)境中實(shí)施,分布式云計(jì)算環(huán)境中,任務(wù)是由通過(guò)通信網(wǎng)絡(luò)連接接的遠(yuǎn)程處理設(shè)備執(zhí)行的。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲(chǔ)介質(zhì)上。
圖1為本發(fā)明廣播數(shù)據(jù)塊的方法一個(gè)實(shí)施例的流程圖。如圖1所示,該實(shí)施例方法包括:
步驟10,當(dāng)前節(jié)點(diǎn)需要將一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接。
其中,其他節(jié)點(diǎn)為與當(dāng)前節(jié)點(diǎn)通過(guò)一次連接即可實(shí)現(xiàn)通信的所有節(jié)點(diǎn),其他需要二次連接的節(jié)點(diǎn)則屬于該其他節(jié)點(diǎn)的其他節(jié)點(diǎn),此方式保證了連接能夠快速建立,并且加速數(shù)據(jù)塊的廣播。
步驟20,通過(guò)所述與其他節(jié)點(diǎn)建立的連接,將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
基于本發(fā)明上述實(shí)施例提供的一種廣播數(shù)據(jù)塊的方法,通過(guò)至少一種連接方式將數(shù)據(jù)塊廣播到所有其他節(jié)點(diǎn)中,克服了現(xiàn)有技術(shù)通過(guò)TCP廣播數(shù)據(jù)塊傳輸效率低的弊端,對(duì)于不同情況采用不同的連接方式,實(shí)現(xiàn)了高速、快捷、有效的廣播數(shù)據(jù)塊。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,上述連接方式包括TCP傳輸控制協(xié)議連接、UDP用戶數(shù)據(jù)報(bào)協(xié)議和RPC遠(yuǎn)程過(guò)程調(diào)用協(xié)議連接。
TCP是一種可靠傳輸協(xié)議,但是其傳輸效率不是很高,每次傳輸都需要經(jīng)過(guò)多次握手;UDP是一種不可靠傳輸協(xié)議,其傳輸速度快,但是不能保證其數(shù)據(jù)的準(zhǔn)確。在本實(shí)施例中,當(dāng)發(fā)現(xiàn)一個(gè)新的數(shù)據(jù)塊時(shí),會(huì)通過(guò)多種傳播途徑并發(fā)進(jìn)行數(shù)據(jù)廣播,保證在第一時(shí)間將數(shù)據(jù)廣播出去。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接包括:
通過(guò)TCP傳輸控制協(xié)議連接與一個(gè)其他節(jié)點(diǎn)建立連接。
通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議與一個(gè)其他節(jié)點(diǎn)建立連接。
在本實(shí)施例中,通過(guò)TCP或UDP與一個(gè)其他節(jié)點(diǎn)建立連接,是可選的,對(duì)于適用TCP傳輸控制協(xié)議的其他節(jié)點(diǎn)就采用TCP傳輸控制協(xié)議與該其他節(jié)點(diǎn)建立連接,對(duì)于適用于UDP用戶數(shù)據(jù)報(bào)協(xié)議的其他節(jié)點(diǎn)就采用UDP用戶數(shù)據(jù)報(bào)協(xié)議與該其他節(jié)點(diǎn)建立連接;當(dāng)前節(jié)點(diǎn)與一個(gè)其他節(jié)點(diǎn)只采用一種連接方式連接,這種方式可以保證將數(shù)據(jù)塊快速的廣播出去,而對(duì)于一些能保證連接安全的其他節(jié)點(diǎn),通常采用UDP用戶數(shù)據(jù)報(bào)協(xié)議與其建立連接。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議將一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn),包括:
將一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊,將分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
通過(guò)一個(gè)數(shù)據(jù)塊的大小是比較大的,這就會(huì)對(duì)UDP用戶數(shù)據(jù)報(bào)協(xié)議造成壓力,進(jìn)而影響傳播速度,因此,為了加快數(shù)據(jù)塊的傳播速度,將一個(gè)數(shù)據(jù)塊分割為多個(gè)數(shù)據(jù)子塊。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,將一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊之后,還包括:
對(duì)所有數(shù)據(jù)子塊進(jìn)行編號(hào)得到對(duì)應(yīng)每個(gè)數(shù)據(jù)子塊的數(shù)據(jù)編號(hào),將每個(gè)數(shù)據(jù)編號(hào)添加到對(duì)應(yīng)的數(shù)據(jù)子塊中,每個(gè)數(shù)據(jù)編號(hào)對(duì)應(yīng)唯一的一個(gè)數(shù)據(jù)子塊,并且數(shù)據(jù)編號(hào)的順序與其對(duì)應(yīng)的數(shù)據(jù)子塊在數(shù)據(jù)塊中的順序相對(duì)應(yīng)。
在本實(shí)施例中,通過(guò)對(duì)數(shù)據(jù)子塊進(jìn)行編號(hào),可以便于接收這些數(shù)據(jù)子塊的其他節(jié)點(diǎn)對(duì)數(shù)據(jù)子塊進(jìn)行重新組合構(gòu)成原來(lái)的數(shù)據(jù)塊,如果沒(méi)有編號(hào),那么接收的數(shù)據(jù)子塊有可能會(huì)發(fā)生亂序現(xiàn)象,此時(shí),接收端的其他節(jié)點(diǎn)將無(wú)法獲得正確的數(shù)據(jù)塊,有違廣播數(shù)據(jù)塊的目的。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,一個(gè)數(shù)據(jù)塊分割得到的所有數(shù)據(jù)子塊大小相同。
在本示例中將一個(gè)數(shù)據(jù)塊分割為大小相同的多個(gè)數(shù)據(jù)子塊,可以使發(fā)送更具規(guī)律性,進(jìn)而提高發(fā)送和接收的效率。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,將分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給一個(gè)其他節(jié)點(diǎn),包括:
通過(guò)數(shù)據(jù)冗余算法將所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
由于UDP傳輸不能保證其數(shù)據(jù)的準(zhǔn)確性,因此采用數(shù)據(jù)冗余算法對(duì)UDP傳輸進(jìn)行補(bǔ)償,可以在傳輸丟包時(shí),通過(guò)其他數(shù)據(jù)包恢復(fù)丟失的數(shù)據(jù)包,以保證傳輸數(shù)據(jù)的準(zhǔn)確性。例如采用FEC等算法,其中FEC是一種前向性糾錯(cuò)技術(shù),發(fā)送方將要發(fā)送的數(shù)據(jù)加上一定的冗余糾錯(cuò)碼一起發(fā)送,接收方則根據(jù)糾錯(cuò)碼對(duì)接收到的數(shù)據(jù)進(jìn)行差錯(cuò)檢測(cè),如發(fā)現(xiàn)差錯(cuò),則由接收方進(jìn)行糾錯(cuò)。特點(diǎn):使用糾錯(cuò)碼,單信道通信,發(fā)送方無(wú)需設(shè)置緩存。
圖2為本發(fā)明方法另一個(gè)實(shí)施例的流程圖,如圖2所示,本實(shí)施例方法包括:
步驟10,當(dāng)前節(jié)點(diǎn)需要將一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接。
步驟30,通過(guò)約定密鑰對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行加密。
步驟20,通過(guò)與其他節(jié)點(diǎn)建立的連接,將一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
步驟40,其他節(jié)點(diǎn)接收到一個(gè)數(shù)據(jù)塊,并基于約定密鑰對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行解密,獲得數(shù)據(jù)塊并處理。
在本實(shí)施例中,為了保證傳輸?shù)臄?shù)據(jù)塊的安全性,在傳輸之前對(duì)數(shù)據(jù)塊進(jìn)行加密,其他節(jié)點(diǎn)接收后,對(duì)數(shù)據(jù)塊進(jìn)行解密獲取數(shù)據(jù)并處理,在本實(shí)施例中加密方法不做限制,對(duì)于現(xiàn)有技術(shù)中可以用于數(shù)據(jù)加密的加密方法都適用于本實(shí)施例。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,步驟10通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接的同時(shí),還包括:當(dāng)前節(jié)點(diǎn)將約定密鑰發(fā)送給所有其他節(jié)點(diǎn)。
對(duì)于數(shù)據(jù)加密和解密是需要密鑰的,為了保證數(shù)據(jù)的安全性,這個(gè)密鑰不是固定的,而是在每次建立連接的過(guò)程中發(fā)送的,這樣可以保證,只有與當(dāng)前節(jié)點(diǎn)建立連接的節(jié)點(diǎn)接收到加密的數(shù)據(jù)塊后才能解密獲得數(shù)據(jù)內(nèi)容,進(jìn)一步保證了數(shù)據(jù)的安全性。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,當(dāng)前節(jié)點(diǎn)需要將一個(gè)數(shù)據(jù)塊進(jìn)行廣播的情況包括:
響應(yīng)于當(dāng)前節(jié)點(diǎn)接收到的一個(gè)數(shù)據(jù)塊,當(dāng)前節(jié)點(diǎn)正在對(duì)上一個(gè)接收到的數(shù)據(jù)塊進(jìn)行處理的過(guò)程中,接收到一個(gè)數(shù)據(jù)塊,當(dāng)前節(jié)點(diǎn)將所述接收到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
或者,
當(dāng)前節(jié)點(diǎn)對(duì)上一個(gè)接收到的數(shù)據(jù)塊處理得到一個(gè)數(shù)據(jù)塊,將處理得到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
在本實(shí)施例中,對(duì)于當(dāng)前節(jié)點(diǎn),一種是接收到了無(wú)法處理的數(shù)據(jù)塊,需要將該數(shù)據(jù)塊廣播出去,請(qǐng)其他節(jié)點(diǎn)進(jìn)行處理,另一種是經(jīng)過(guò)當(dāng)前節(jié)點(diǎn)的計(jì)算得到一個(gè)新的數(shù)據(jù)塊,此時(shí),需要將得到的新的數(shù)據(jù)塊廣播出去以獲得更多認(rèn)可。
本發(fā)明方法的又一個(gè)實(shí)施例中,在上述各實(shí)施例的基礎(chǔ)上,一個(gè)數(shù)據(jù)塊包括塊頭和至少一個(gè)交易數(shù)據(jù)塊;其中,一個(gè)交易數(shù)據(jù)塊是數(shù)據(jù)塊經(jīng)過(guò)一個(gè)節(jié)點(diǎn)的傳輸產(chǎn)生的;
塊頭包括頭數(shù)據(jù)和一個(gè)HASH散列值,其中HASH散列值用于標(biāo)記所述一個(gè)數(shù)據(jù)塊;
每個(gè)交易數(shù)據(jù)塊包括交易數(shù)據(jù)和一個(gè)HASH散列值;其中,一個(gè)HASH散列值對(duì)應(yīng)產(chǎn)生交易數(shù)據(jù)塊的節(jié)點(diǎn)。
本實(shí)施例中指出了數(shù)據(jù)塊的具體結(jié)構(gòu),該結(jié)構(gòu)是由比特幣的特殊性決定的,在比特幣交易過(guò)程中比特幣的交易數(shù)據(jù)被打包到一個(gè)“數(shù)據(jù)塊”或“區(qū)塊”(block)中后,交易就算初步確認(rèn)了。當(dāng)區(qū)塊鏈接到前一個(gè)區(qū)塊之后,交易會(huì)得到進(jìn)一步的確認(rèn)。塊鏈?zhǔn)撬斜忍貛殴?jié)點(diǎn)共享的交易數(shù)據(jù)庫(kù),這些節(jié)點(diǎn)基于比特幣協(xié)議參與到比特幣網(wǎng)絡(luò)中來(lái)。塊鏈包含每一個(gè)曾在比特幣系統(tǒng)執(zhí)行過(guò)的交易。根據(jù)這個(gè)信息,人們可以找到任何時(shí)候任一個(gè)地址中的幣數(shù)量,每個(gè)區(qū)塊包含前一個(gè)區(qū)塊的HASH值,這就使得從創(chuàng)世塊到當(dāng)前塊形成了一條塊鏈,每個(gè)區(qū)塊必定按時(shí)間順序跟隨在前一個(gè)區(qū)塊之后,因?yàn)槿绻恢狼耙粔K區(qū)塊的HASH值就沒(méi)法生成當(dāng)前區(qū)塊。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,將一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn)之后,還包括:
判斷其他節(jié)點(diǎn)中是否包括一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值;
如果其他節(jié)點(diǎn)中包含一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,其他節(jié)點(diǎn)不對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行處理,將一個(gè)數(shù)據(jù)塊進(jìn)行廣播;
如果其他節(jié)點(diǎn)中不包含一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,其他節(jié)點(diǎn)接收一個(gè)數(shù)據(jù)塊并進(jìn)行處理。
由于數(shù)據(jù)塊包含塊頭和多個(gè)交易數(shù)據(jù)塊,每個(gè)節(jié)點(diǎn)都會(huì)通過(guò)P2P的方式同步交易數(shù)據(jù)塊,在進(jìn)行數(shù)據(jù)塊廣播的時(shí)候,可以通過(guò)塊頭的HASH和交易的HASH,判斷本地是否存在交易數(shù)據(jù)塊,如果沒(méi)有才會(huì)向其他節(jié)點(diǎn)獲取交易數(shù)據(jù)塊,然后,在本地組合數(shù)據(jù)塊,有效減少對(duì)已有交易數(shù)據(jù)塊的傳輸。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
圖3為本發(fā)明廣播數(shù)據(jù)塊的裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。該實(shí)施例的裝置可用于實(shí)現(xiàn)本發(fā)明上述各方法實(shí)施例。如圖3所示,該實(shí)施例的裝置包括:
連接建立單元1,用于當(dāng)前節(jié)點(diǎn)需要將一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接,其他節(jié)點(diǎn)為與當(dāng)前節(jié)點(diǎn)通過(guò)一次連接即可實(shí)現(xiàn)通信的所有節(jié)點(diǎn)。
數(shù)據(jù)發(fā)送單元2,用于通過(guò)與其他節(jié)點(diǎn)建立的連接,將一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
基于本發(fā)明上述實(shí)施例提供的一種廣播數(shù)據(jù)塊的方法,通過(guò)至少一種連接方式將數(shù)據(jù)塊廣播到所有其他節(jié)點(diǎn)中,克服了現(xiàn)有技術(shù)通過(guò)TCP廣播數(shù)據(jù)塊傳輸效率低的弊端,對(duì)于不同情況采用不同的連接方式,實(shí)現(xiàn)了高速、快捷、有效的廣播數(shù)據(jù)塊。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,上述連接方式包括TCP傳輸控制協(xié)議連接、UDP用戶數(shù)據(jù)報(bào)協(xié)議和RPC遠(yuǎn)程過(guò)程調(diào)用協(xié)議連接。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,連接建立單元1通過(guò)TCP傳輸控制協(xié)議連接與一個(gè)其他節(jié)點(diǎn)建立連接。
或者,連接建立單元1通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議與一個(gè)其他節(jié)點(diǎn)建立連接。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,數(shù)據(jù)發(fā)送單元2通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議將一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn)時(shí),具體用于將一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊,將分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給一個(gè)其他節(jié)點(diǎn)。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,數(shù)據(jù)發(fā)送單元2將一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊之后,還用于對(duì)所有數(shù)據(jù)子塊進(jìn)行編號(hào)得到對(duì)應(yīng)每個(gè)數(shù)據(jù)子塊的數(shù)據(jù)編號(hào),將每個(gè)數(shù)據(jù)編號(hào)添加到對(duì)應(yīng)的數(shù)據(jù)子塊中,每個(gè)數(shù)據(jù)編號(hào)對(duì)應(yīng)唯一的一個(gè)數(shù)據(jù)子塊,并且數(shù)據(jù)編號(hào)的順序與其對(duì)應(yīng)的數(shù)據(jù)子塊在所述數(shù)據(jù)塊中的順序相對(duì)應(yīng)。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,一個(gè)數(shù)據(jù)塊分割得到的所有數(shù)據(jù)子塊大小相同。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,數(shù)據(jù)發(fā)送單元2通過(guò)數(shù)據(jù)冗余算法將所有數(shù)據(jù)子塊通過(guò)UDP發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
圖4為本發(fā)明裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。在上述實(shí)施例的基礎(chǔ)上,如圖2所示,還包括加密單元3,用于通過(guò)約定密鑰對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行加密;
解密單元4,用于在其他節(jié)點(diǎn)接收到所述一個(gè)數(shù)據(jù)塊后,基于約定密鑰對(duì)接收到的一個(gè)數(shù)據(jù)塊進(jìn)行解密。
在本實(shí)施例中,為了保證傳輸?shù)臄?shù)據(jù)塊的安全性,在傳輸之前對(duì)數(shù)據(jù)塊進(jìn)行加密,其他節(jié)點(diǎn)接收后,對(duì)數(shù)據(jù)塊進(jìn)行解密獲取數(shù)據(jù)并處理,在本實(shí)施例中加密方法不做限制,對(duì)于現(xiàn)有技術(shù)中可以用于數(shù)據(jù)加密的加密方法都適用于本實(shí)施例。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,連接建立單元1在通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接的同時(shí),還用于將約定密鑰發(fā)送給所有其他節(jié)點(diǎn)。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,連接建立單元1具體用于響應(yīng)于當(dāng)前節(jié)點(diǎn)接收到的一個(gè)數(shù)據(jù)塊,當(dāng)前節(jié)點(diǎn)正在對(duì)上一個(gè)接收到的數(shù)據(jù)塊進(jìn)行處理的過(guò)程中,接收到一個(gè)數(shù)據(jù)塊,當(dāng)前節(jié)點(diǎn)將所述接收到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
在本發(fā)明上述實(shí)施例的一個(gè)具體示例中,連接建立單元1具體用于當(dāng)前節(jié)點(diǎn)對(duì)上一個(gè)接收到的數(shù)據(jù)塊處理得到一個(gè)數(shù)據(jù)塊,將處理得到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
本發(fā)明裝置的又一個(gè)實(shí)施例中,在上述各實(shí)施例的基礎(chǔ)上,一個(gè)數(shù)據(jù)塊包括塊頭和至少一個(gè)交易數(shù)據(jù)塊;其中,一個(gè)交易數(shù)據(jù)塊是數(shù)據(jù)塊經(jīng)過(guò)一個(gè)節(jié)點(diǎn)的傳輸產(chǎn)生的;
塊頭包括頭數(shù)據(jù)和一個(gè)HASH散列值,其中HASH散列值用于標(biāo)記所述一個(gè)數(shù)據(jù)塊;
每個(gè)交易數(shù)據(jù)塊包括交易數(shù)據(jù)和一個(gè)HASH散列值;其中,一個(gè)HASH散列值對(duì)應(yīng)產(chǎn)生交易數(shù)據(jù)塊的節(jié)點(diǎn)。
本實(shí)施例中指出了數(shù)據(jù)塊的具體結(jié)構(gòu),該結(jié)構(gòu)是由比特幣的特殊性決定的,在比特幣交易過(guò)程中比特幣的交易數(shù)據(jù)被打包到一個(gè)“數(shù)據(jù)塊”或“區(qū)塊”(block)中后,交易就算初步確認(rèn)了。當(dāng)區(qū)塊鏈接到前一個(gè)區(qū)塊之后,交易會(huì)得到進(jìn)一步的確認(rèn)。塊鏈?zhǔn)撬斜忍貛殴?jié)點(diǎn)共享的交易數(shù)據(jù)庫(kù),這些節(jié)點(diǎn)基于比特幣協(xié)議參與到比特幣網(wǎng)絡(luò)中來(lái)。塊鏈包含每一個(gè)曾在比特幣系統(tǒng)執(zhí)行過(guò)的交易。根據(jù)這個(gè)信息,人們可以找到任何時(shí)候任一個(gè)地址中的幣數(shù)量,每個(gè)區(qū)塊包含前一個(gè)區(qū)塊的HASH值,這就使得從創(chuàng)世塊到當(dāng)前塊形成了一條塊鏈,每個(gè)區(qū)塊必定按時(shí)間順序跟隨在前一個(gè)區(qū)塊之后,因?yàn)槿绻恢狼耙粔K區(qū)塊的HASH值就沒(méi)法生成當(dāng)前區(qū)塊。
圖5為本發(fā)明裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。在上述各實(shí)施例的基礎(chǔ)上,如圖5所示,本實(shí)施例裝置還包括判斷單元5,用于判斷其他節(jié)點(diǎn)中是否包括一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值;如果該其他節(jié)點(diǎn)中包含一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,該其他節(jié)點(diǎn)不對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行處理,將一個(gè)數(shù)據(jù)塊進(jìn)行廣播;如果該其他節(jié)點(diǎn)中不包含一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,該其他節(jié)點(diǎn)接收一個(gè)數(shù)據(jù)塊并進(jìn)行處理。
由于數(shù)據(jù)塊包含塊頭和多個(gè)交易數(shù)據(jù)塊,每個(gè)節(jié)點(diǎn)都會(huì)通過(guò)P2P的方式同步交易數(shù)據(jù)塊,在進(jìn)行數(shù)據(jù)塊廣播的時(shí)候,可以通過(guò)塊頭的HASH和交易的HASH,判斷本地是否存在交易數(shù)據(jù)塊,如果沒(méi)有才會(huì)向其他節(jié)點(diǎn)獲取交易數(shù)據(jù)塊,然后,在本地組合數(shù)據(jù)塊,有效減少對(duì)已有交易數(shù)據(jù)塊的傳輸。
根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供一種電子設(shè)備,包括處理器,所述處理器包括上述任意一個(gè)實(shí)施例的廣播數(shù)據(jù)塊的裝置。
1、一種廣播數(shù)據(jù)塊的方法,包括:
當(dāng)前節(jié)點(diǎn)需要將一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接,所述其他節(jié)點(diǎn)為與當(dāng)前節(jié)點(diǎn)通過(guò)一次連接即可實(shí)現(xiàn)通信的所有節(jié)點(diǎn);
通過(guò)所述與其他節(jié)點(diǎn)建立的連接,將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
2、根據(jù)1所述的方法,所述連接方式包括TCP傳輸控制協(xié)議連接、UDP用戶數(shù)據(jù)報(bào)協(xié)議和RPC遠(yuǎn)程過(guò)程調(diào)用協(xié)議連接。
3、根據(jù)2所述的方法,所述通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接包括:
通過(guò)TCP傳輸控制協(xié)議連接與一個(gè)其他節(jié)點(diǎn)建立連接。
4、根據(jù)2或3所述的方法,所述通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接包括:
通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議與一個(gè)其他節(jié)點(diǎn)建立連接。
5、根據(jù)4所述的方法,所述通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議將一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn),包括:
將所述一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊,將所述分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
6、根據(jù)5所述的方法,將所述一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊之后,還包括:
對(duì)所述所有數(shù)據(jù)子塊進(jìn)行編號(hào)得到對(duì)應(yīng)每個(gè)數(shù)據(jù)子塊的數(shù)據(jù)編號(hào),將每個(gè)數(shù)據(jù)編號(hào)添加到對(duì)應(yīng)的數(shù)據(jù)子塊中,所述每個(gè)數(shù)據(jù)編號(hào)對(duì)應(yīng)唯一的一個(gè)數(shù)據(jù)子塊,并且所述數(shù)據(jù)編號(hào)的順序與其對(duì)應(yīng)的數(shù)據(jù)子塊在所述數(shù)據(jù)塊中的順序相對(duì)應(yīng)。
7、根據(jù)5或6所述的方法,所述一個(gè)數(shù)據(jù)塊分割得到的所有數(shù)據(jù)子塊大小相同。
8、根據(jù)5至7任意一項(xiàng)所述的方法,所述將所述分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn),包括:
通過(guò)數(shù)據(jù)冗余算法將所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
9、根據(jù)1至8任意一項(xiàng)所述的方法,所述將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)之前,還包括:
通過(guò)約定密鑰對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行加密;
本方法在將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)之后,還包括:
所述其他節(jié)點(diǎn)接收到所述一個(gè)數(shù)據(jù)塊,并基于所述約定密鑰對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行解密,獲得數(shù)據(jù)塊并處理。
10、根據(jù)9所述的方法,所述通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接的同時(shí),還包括:
所述當(dāng)前節(jié)點(diǎn)將約定密鑰發(fā)送給所有其他節(jié)點(diǎn)。
11、根據(jù)1至10任意一項(xiàng)所述的方法,所述當(dāng)前節(jié)點(diǎn)需要將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播,包括:
響應(yīng)于當(dāng)前節(jié)點(diǎn)接收到的一個(gè)數(shù)據(jù)塊,所述當(dāng)前節(jié)點(diǎn)正在對(duì)上一個(gè)接收到的數(shù)據(jù)塊進(jìn)行處理的過(guò)程中,接收到一個(gè)數(shù)據(jù)塊,所述當(dāng)前節(jié)點(diǎn)將所述接收到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
12、根據(jù)1至10任意一項(xiàng)所述的方法,所述當(dāng)前節(jié)點(diǎn)需要將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播,包括:
所述當(dāng)前節(jié)點(diǎn)對(duì)上一個(gè)接收到的數(shù)據(jù)塊處理得到一個(gè)數(shù)據(jù)塊,將所述處理得到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
13、根據(jù)1至12所述的方法,所述一個(gè)數(shù)據(jù)塊包括塊頭和至少一個(gè)交易數(shù)據(jù)塊;其中,一個(gè)交易數(shù)據(jù)塊是所述數(shù)據(jù)塊經(jīng)過(guò)一個(gè)節(jié)點(diǎn)的傳輸產(chǎn)生的;
所述塊頭包括頭數(shù)據(jù)和一個(gè)HASH散列值,其中所述HASH散列值用于標(biāo)記所述一個(gè)數(shù)據(jù)塊;
所述每個(gè)交易數(shù)據(jù)塊包括交易數(shù)據(jù)和一個(gè)HASH散列值;其中,一個(gè)HASH散列值對(duì)應(yīng)產(chǎn)生所述交易數(shù)據(jù)塊的節(jié)點(diǎn)。
14、根據(jù)13所述的方法,所述將所述一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn)之后,還包括:
判斷所述其他節(jié)點(diǎn)中是否包括所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值;
如果所述其他節(jié)點(diǎn)中包含所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,所述其他節(jié)點(diǎn)不對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行處理,將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播;
如果所述其他節(jié)點(diǎn)中不包含所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,所述其他節(jié)點(diǎn)接收所述一個(gè)數(shù)據(jù)塊并進(jìn)行處理。
15、一種廣播數(shù)據(jù)塊的裝置,包括:
連接建立單元,用于當(dāng)前節(jié)點(diǎn)需要將一個(gè)數(shù)據(jù)塊進(jìn)行廣播時(shí),通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接,所述其他節(jié)點(diǎn)為與當(dāng)前節(jié)點(diǎn)通過(guò)一次連接即可實(shí)現(xiàn)通信的所有節(jié)點(diǎn);
數(shù)據(jù)發(fā)送單元,用于通過(guò)所述與其他節(jié)點(diǎn)建立的連接,將所述一個(gè)數(shù)據(jù)塊發(fā)送給所有其他節(jié)點(diǎn)。
16、根據(jù)15所述的裝置,所述連接方式包括TCP傳輸控制協(xié)議連接、UDP用戶數(shù)據(jù)報(bào)協(xié)議和RPC遠(yuǎn)程過(guò)程調(diào)用協(xié)議連接。
17、根據(jù)16所述的裝置,所述連接建立單元通過(guò)TCP傳輸控制協(xié)議連接與一個(gè)其他節(jié)點(diǎn)建立連接。
18、根據(jù)16或17所述的裝置,所述連接建立單元通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議與一個(gè)其他節(jié)點(diǎn)建立連接。
19、根據(jù)18所述的裝置,所述數(shù)據(jù)發(fā)送單元通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議將一個(gè)數(shù)據(jù)塊發(fā)送給一個(gè)其他節(jié)點(diǎn)時(shí),具體用于將所述一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊,將所述分割得到的所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
20、根據(jù)19所述的裝置,所述數(shù)據(jù)發(fā)送單元將所述一個(gè)數(shù)據(jù)塊分割為至少兩個(gè)數(shù)據(jù)子塊之后,還用于對(duì)所述所有數(shù)據(jù)子塊進(jìn)行編號(hào)得到對(duì)應(yīng)每個(gè)數(shù)據(jù)子塊的數(shù)據(jù)編號(hào),將每個(gè)數(shù)據(jù)編號(hào)添加到對(duì)應(yīng)的數(shù)據(jù)子塊中,所述每個(gè)數(shù)據(jù)編號(hào)對(duì)應(yīng)唯一的一個(gè)數(shù)據(jù)子塊,并且所述數(shù)據(jù)編號(hào)的順序與其對(duì)應(yīng)的數(shù)據(jù)子塊在所述數(shù)據(jù)塊中的順序相對(duì)應(yīng)。
21、根據(jù)19或20所述的裝置,所述一個(gè)數(shù)據(jù)塊分割得到的所有數(shù)據(jù)子塊大小相同。
22、根據(jù)19至21任意一項(xiàng)所述的裝置,所述數(shù)據(jù)發(fā)送單元通過(guò)數(shù)據(jù)冗余算法將所有數(shù)據(jù)子塊通過(guò)UDP用戶數(shù)據(jù)報(bào)協(xié)議發(fā)送給所述一個(gè)其他節(jié)點(diǎn)。
23、根據(jù)15至22任意一項(xiàng)所述的裝置,還包括加密單元,用于通過(guò)約定密鑰對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行加密;
解密單元,用于在所述其他節(jié)點(diǎn)接收到所述一個(gè)數(shù)據(jù)塊后,基于所述約定密鑰對(duì)所述接收到的一個(gè)數(shù)據(jù)塊進(jìn)行解密。
24、根據(jù)23所述的裝置,所述連接建立單元在通過(guò)至少一種連接方式與其他節(jié)點(diǎn)建立連接的同時(shí),還用于將約定密鑰發(fā)送給所有其他節(jié)點(diǎn)。
25、根據(jù)15至24任意一項(xiàng)所述的裝置,所述連接建立單元具體用于響應(yīng)于當(dāng)前節(jié)點(diǎn)接收到的一個(gè)數(shù)據(jù)塊,所述當(dāng)前節(jié)點(diǎn)正在對(duì)上一個(gè)接收到的數(shù)據(jù)塊進(jìn)行處理的過(guò)程中,接收到一個(gè)數(shù)據(jù)塊,所述當(dāng)前節(jié)點(diǎn)將所述接收到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
26、根據(jù)15至24任意一項(xiàng)所述的裝置,所述連接建立單元具體用于所述當(dāng)前節(jié)點(diǎn)對(duì)上一個(gè)接收到的數(shù)據(jù)塊處理得到一個(gè)數(shù)據(jù)塊,將所述處理得到的一個(gè)數(shù)據(jù)塊進(jìn)行廣播。
27、根據(jù)15至26所述的裝置,所述一個(gè)數(shù)據(jù)塊包括塊頭和至少一個(gè)交易數(shù)據(jù)塊;其中,一個(gè)交易數(shù)據(jù)塊是所述數(shù)據(jù)塊經(jīng)過(guò)一個(gè)節(jié)點(diǎn)的傳輸產(chǎn)生的;
所述塊頭包括頭數(shù)據(jù)和一個(gè)HASH散列值,其中所述HASH散列值用于標(biāo)記所述一個(gè)數(shù)據(jù)塊;
所述每個(gè)交易數(shù)據(jù)塊包括交易數(shù)據(jù)和一個(gè)HASH散列值;其中,一個(gè)HASH散列值對(duì)應(yīng)產(chǎn)生所述交易數(shù)據(jù)塊的節(jié)點(diǎn)。
28、根據(jù)27所述的裝置,還包括判斷單元,用于判斷所述其他節(jié)點(diǎn)中是否包括所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值;如果所述其他節(jié)點(diǎn)中包含所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,所述其他節(jié)點(diǎn)不對(duì)所述一個(gè)數(shù)據(jù)塊進(jìn)行處理,將所述一個(gè)數(shù)據(jù)塊進(jìn)行廣播;如果所述其他節(jié)點(diǎn)中不包含所述一個(gè)數(shù)據(jù)塊中的任意一個(gè)HASH散列值,所述其他節(jié)點(diǎn)接收所述一個(gè)數(shù)據(jù)塊并進(jìn)行處理。
25、一種電子設(shè)備,包括處理器,所述處理器包括15至28任意一項(xiàng)所述的廣播數(shù)據(jù)塊的裝置。
本說(shuō)明書(shū)中各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似的部分相互參見(jiàn)即可。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
可能以許多方式來(lái)實(shí)現(xiàn)本發(fā)明的方法和裝置。例如,可通過(guò)軟件、硬件、固件或者軟件、硬件、固件的任何組合來(lái)實(shí)現(xiàn)本發(fā)明的方法和裝置。用于所述方法的步驟的上述順序僅是為了進(jìn)行說(shuō)明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說(shuō)明。此外,在一些實(shí)施例中,還可將本發(fā)明實(shí)施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的機(jī)器可讀指令。因而,本發(fā)明還覆蓋存儲(chǔ)用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。
本發(fā)明的描述是為了示例和描述起見(jiàn)而給出的,而并不是無(wú)遺漏的或者將本發(fā)明限于所公開(kāi)的形式。很多修改和變換對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施例。