本發(fā)明涉及計(jì)算機(jī),尤其是一種區(qū)塊同步的處理方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、區(qū)塊鏈(blockchain)是分布式數(shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式。通常,區(qū)塊鏈網(wǎng)絡(luò)中包含的各個(gè)區(qū)塊鏈節(jié)點(diǎn)之間通過共識(shí)協(xié)議來確保各自維護(hù)的分布式賬本的一致性。然而,當(dāng)區(qū)塊鏈網(wǎng)絡(luò)中有新的節(jié)點(diǎn)加入時(shí),新節(jié)點(diǎn)所維護(hù)的分布式賬本中的區(qū)塊數(shù)據(jù)落后于區(qū)塊鏈網(wǎng)絡(luò)中的正常節(jié)點(diǎn),無法參與到正常的共識(shí)過程。因此,需要將新節(jié)點(diǎn)的區(qū)塊數(shù)據(jù)與正常節(jié)點(diǎn)的區(qū)塊數(shù)據(jù)進(jìn)行同步,保持彼此之間的一致性。
2、相關(guān)的區(qū)塊鏈技術(shù)中,區(qū)塊同步的方法是一個(gè)節(jié)點(diǎn)按照區(qū)塊高度依次隨機(jī)向區(qū)塊鏈中的一個(gè)節(jié)點(diǎn)或多個(gè)節(jié)點(diǎn)請(qǐng)求區(qū)塊數(shù)據(jù)來實(shí)現(xiàn)區(qū)塊同步。然而,這樣的方式要求新節(jié)點(diǎn)不斷向正常節(jié)點(diǎn)發(fā)送需要同步的區(qū)塊高度和區(qū)塊數(shù)量,來請(qǐng)求獲取對(duì)應(yīng)的同步數(shù)據(jù),導(dǎo)致區(qū)塊同步的效率很低。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明實(shí)施例提供一種區(qū)塊同步的處理方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),能加快共識(shí)節(jié)點(diǎn)的區(qū)塊數(shù)據(jù)發(fā)送速度,進(jìn)而提高新節(jié)點(diǎn)加入?yún)^(qū)塊鏈網(wǎng)絡(luò)時(shí)的區(qū)塊同步效率。
2、本發(fā)明實(shí)施例的一方面提供了一種區(qū)塊同步的處理方法,包括以下步驟:
3、接收目標(biāo)節(jié)點(diǎn)發(fā)送的區(qū)塊同步請(qǐng)求;其中,所述區(qū)塊同步請(qǐng)求包含區(qū)塊分片策略信息;
4、根據(jù)所述區(qū)塊分片策略信息對(duì)待同步區(qū)塊進(jìn)行數(shù)據(jù)分片,得到分片數(shù)據(jù)集,并從所述分片數(shù)據(jù)集中確定待發(fā)送的分片數(shù)據(jù);
5、根據(jù)所述目標(biāo)節(jié)點(diǎn)中分片緩沖區(qū)的存儲(chǔ)信息,以目標(biāo)速度將所述待發(fā)送的分片數(shù)據(jù)發(fā)送至所述目標(biāo)節(jié)點(diǎn),以使所述目標(biāo)節(jié)點(diǎn)在接收到各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出的分片數(shù)據(jù)后,對(duì)各個(gè)所述分片數(shù)據(jù)進(jìn)行重組得到所述待同步區(qū)塊,并根據(jù)所述待同步區(qū)塊完成所述目標(biāo)節(jié)點(diǎn)的區(qū)塊同步作業(yè);
6、其中,所述分片緩沖區(qū)用于存儲(chǔ)所述目標(biāo)節(jié)點(diǎn)接收到的各個(gè)所述分片數(shù)據(jù)。
7、另一方面,本發(fā)明實(shí)施例還提供了一種區(qū)塊同步的處理裝置,包括:
8、第一模塊,用于接收目標(biāo)節(jié)點(diǎn)發(fā)送的區(qū)塊同步請(qǐng)求;其中,所述區(qū)塊同步請(qǐng)求包含區(qū)塊分片策略信息;
9、第二模塊,用于根據(jù)所述區(qū)塊分片策略信息對(duì)待同步區(qū)塊進(jìn)行數(shù)據(jù)分片,得到分片數(shù)據(jù)集,并從所述分片數(shù)據(jù)集中確定待發(fā)送的分片數(shù)據(jù);
10、第三模塊,用于根據(jù)所述目標(biāo)節(jié)點(diǎn)中分片緩沖區(qū)的存儲(chǔ)信息,以目標(biāo)速度將所述待發(fā)送的分片數(shù)據(jù)發(fā)送至所述目標(biāo)節(jié)點(diǎn);
11、其中,所述分片緩沖區(qū)用于存儲(chǔ)所述目標(biāo)節(jié)點(diǎn)接收到的各個(gè)所述分片數(shù)據(jù)。
12、可選地,第二模塊,具體用于:
13、從所述區(qū)塊分片策略信息中獲取待同步區(qū)塊的高度,進(jìn)而根據(jù)所述待同步區(qū)塊的高度,確定所述待同步區(qū)塊;
14、根據(jù)所述區(qū)塊分片策略信息,確定待分片的片段個(gè)數(shù)和片段屬性信息;其中,所述片段屬性信息用于表征各個(gè)分片數(shù)據(jù)所屬的共識(shí)節(jié)點(diǎn);
15、根據(jù)所述片段個(gè)數(shù)和所述片段屬性信息,對(duì)待同步區(qū)塊進(jìn)行數(shù)據(jù)分片,得到分片數(shù)據(jù)集;
16、根據(jù)目標(biāo)區(qū)塊鏈中共識(shí)節(jié)點(diǎn)的排列順序,確定各個(gè)共識(shí)節(jié)點(diǎn)的所述分片數(shù)據(jù)集中待發(fā)送的分片數(shù)據(jù)。
17、可選地,第二模塊,具體用于:
18、根據(jù)所述區(qū)塊分片策略信息,從所述目標(biāo)區(qū)塊鏈獲取所述共識(shí)節(jié)點(diǎn)的總個(gè)數(shù)以及所述共識(shí)節(jié)點(diǎn)的當(dāng)前區(qū)塊高度;
19、根據(jù)所述共識(shí)節(jié)點(diǎn)的總個(gè)數(shù),確定待分片的片段個(gè)數(shù);
20、根據(jù)所述區(qū)塊分片策略信息,將每個(gè)所述分片數(shù)據(jù)配置為分片頭和分片內(nèi)容,并作為所述片段屬性信息;其中,所述分片頭用于標(biāo)記所述分片數(shù)據(jù)在所述分片數(shù)據(jù)集中所屬的分段次序;所述分段次序與共識(shí)節(jié)點(diǎn)在所述目標(biāo)區(qū)塊鏈中的節(jié)點(diǎn)次序?qū)?yīng)。
21、可選地,第三模塊,具體用于:
22、根據(jù)所述目標(biāo)節(jié)點(diǎn)中分片緩沖區(qū)的存儲(chǔ)信息,確定共識(shí)節(jié)點(diǎn)對(duì)于分片數(shù)據(jù)的推送速度,作為所述目標(biāo)速度;
23、根據(jù)所述共識(shí)節(jié)點(diǎn)在目標(biāo)區(qū)塊鏈中的節(jié)點(diǎn)次序,確定當(dāng)前共識(shí)節(jié)點(diǎn)待發(fā)送的分片數(shù)據(jù)的分段次序;
24、根據(jù)所述分段次序,從所分片數(shù)據(jù)集中確定對(duì)應(yīng)的待發(fā)送的分片數(shù)據(jù),并根據(jù)所述目標(biāo)速度將所述待發(fā)送的分片數(shù)據(jù)發(fā)送至所述目標(biāo)節(jié)點(diǎn)。
25、可選地,第三模塊,具體用于:
26、根據(jù)所述區(qū)塊分片策略信息,配置所述分片緩沖區(qū);其中,所述分片緩沖區(qū)包括多個(gè)分片緩沖隊(duì)列或單向鏈表,每個(gè)所述分片緩沖隊(duì)列或所述單向鏈表存儲(chǔ)所述目標(biāo)區(qū)塊鏈中對(duì)應(yīng)的共識(shí)節(jié)點(diǎn)發(fā)送的分片數(shù)據(jù);
27、根據(jù)所述分片緩沖隊(duì)列或所述單向鏈表中存儲(chǔ)的分片數(shù)據(jù)的數(shù)據(jù)量,生成對(duì)應(yīng)的共識(shí)節(jié)點(diǎn)發(fā)送所述分片數(shù)據(jù)時(shí)的目標(biāo)速度。
28、可選地,第三模塊,具體用于:
29、配置靜態(tài)數(shù)組作為所述環(huán)形緩沖隊(duì)列的存儲(chǔ)容量;
30、將所述環(huán)形緩沖隊(duì)列的起始緩沖位置和終止緩沖位置配置為相同位置;
31、配置所述環(huán)形緩沖隊(duì)列的讀指針和寫指針,其中,所述讀指針用于指示從所述環(huán)形緩沖隊(duì)列讀取分片數(shù)據(jù)時(shí)的位置,所述寫指針用于指示向所述環(huán)形緩沖隊(duì)列寫入分片數(shù)據(jù)時(shí)的位置。
32、可選地,第三模塊,具體用于:
33、獲取所述讀指針與所述寫指針的實(shí)時(shí)位置;
34、根據(jù)所述讀指針與所述寫指針的實(shí)時(shí)位置,確定所述環(huán)形緩沖隊(duì)列的數(shù)據(jù)存儲(chǔ)量;
35、根據(jù)所述環(huán)形緩沖隊(duì)列的數(shù)據(jù)存儲(chǔ)量,對(duì)所述目標(biāo)速度進(jìn)行提速、減速或保持原速度處理;
36、其中,當(dāng)所述環(huán)形緩沖隊(duì)列的所述讀指針與所述寫指針位于同一位置時(shí),表征所述環(huán)形緩沖隊(duì)列中的數(shù)據(jù)存儲(chǔ)量為空;當(dāng)所述環(huán)形緩沖隊(duì)列的所述寫指針位于所述讀指針的相鄰下一指針位置時(shí),表征所述環(huán)形緩沖隊(duì)列中的數(shù)據(jù)存儲(chǔ)量已滿。
37、可選地,第三模塊,具體用于:
38、獲取所述環(huán)形緩沖隊(duì)列的數(shù)據(jù)存儲(chǔ)量,計(jì)算所述數(shù)據(jù)存儲(chǔ)量與所述環(huán)形緩存隊(duì)列的總存儲(chǔ)量之間的數(shù)據(jù)存儲(chǔ)占比;
39、當(dāng)所述數(shù)據(jù)存儲(chǔ)占比小于第一閾值時(shí),對(duì)所述目標(biāo)速度進(jìn)行提速處理或保持原速度處理;
40、當(dāng)所述數(shù)據(jù)存儲(chǔ)占比大于等于所述第一閾值,且小于第二閾值時(shí),對(duì)所述目標(biāo)速度進(jìn)行減速處理;
41、當(dāng)所述數(shù)據(jù)存儲(chǔ)占比大于所述第二閾值時(shí),暫停對(duì)應(yīng)的共識(shí)節(jié)點(diǎn)發(fā)送所述分片數(shù)據(jù)。
42、另一方面,本發(fā)明實(shí)施例還提供了一種區(qū)塊同步的處理方法,包括:
43、根據(jù)目標(biāo)區(qū)塊鏈的新節(jié)點(diǎn)加入規(guī)則,生成區(qū)塊同步請(qǐng)求;其中,所述區(qū)塊同步請(qǐng)求包含區(qū)塊分片策略信息;
44、向所述目標(biāo)區(qū)塊鏈中各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出所述區(qū)塊同步請(qǐng)求,以使各個(gè)所述共識(shí)節(jié)點(diǎn)在接收到所述區(qū)塊同步請(qǐng)求后執(zhí)行如前面的區(qū)塊同步的處理方法;
45、接收各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出的分片數(shù)據(jù),對(duì)各個(gè)所述分片數(shù)據(jù)進(jìn)行重組得到待同步區(qū)塊,并根據(jù)所述待同步區(qū)塊完成所述目標(biāo)節(jié)點(diǎn)的區(qū)塊同步作業(yè)。
46、另一方面,本發(fā)明實(shí)施例還提供了一種區(qū)塊同步的處理裝置,包括:
47、第四模塊,用于根據(jù)目標(biāo)區(qū)塊鏈的新節(jié)點(diǎn)加入規(guī)則,生成區(qū)塊同步請(qǐng)求;其中,所述區(qū)塊同步請(qǐng)求包含區(qū)塊分片策略信息;
48、第五模塊,用于向所述目標(biāo)區(qū)塊鏈中各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出所述區(qū)塊同步請(qǐng)求,以使各個(gè)所述共識(shí)節(jié)點(diǎn)在接收到所述區(qū)塊同步請(qǐng)求后執(zhí)行如權(quán)利要求1-8中任一項(xiàng)所述的區(qū)塊同步的處理方法;
49、第六模塊,用于接收各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出的分片數(shù)據(jù),對(duì)各個(gè)所述分片數(shù)據(jù)進(jìn)行重組得到待同步區(qū)塊,并根據(jù)所述待同步區(qū)塊完成所述目標(biāo)節(jié)點(diǎn)的區(qū)塊同步作業(yè)。
50、可選地,第六模塊,具體用于:
51、獲取各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出的處于同一區(qū)塊高度的分片數(shù)據(jù);
52、獲取各個(gè)所述分片數(shù)據(jù)的分片頭和分片內(nèi)容;
53、根據(jù)所述分片頭將同一區(qū)塊高度的各個(gè)所述分片數(shù)據(jù)進(jìn)行排序后,將各個(gè)所述分片數(shù)據(jù)的分片內(nèi)容按照排序順序進(jìn)行重組,得到所述待同步區(qū)塊。
54、可選地,裝置還包括:
55、第七模塊,用于:
56、向所述目標(biāo)區(qū)塊鏈中各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出區(qū)塊同步請(qǐng)求后,實(shí)時(shí)獲取對(duì)應(yīng)的所述共識(shí)節(jié)點(diǎn)發(fā)回的連接確認(rèn)信息;
57、當(dāng)預(yù)設(shè)響應(yīng)時(shí)間內(nèi)未接收到共識(shí)節(jié)點(diǎn)的連接確認(rèn)信息,將所述共識(shí)節(jié)點(diǎn)加入待連接節(jié)點(diǎn)列表;
58、創(chuàng)建新的區(qū)塊分片策略并生成新的區(qū)塊分片策略信息,進(jìn)而向所述待連接節(jié)點(diǎn)列表中的共識(shí)節(jié)點(diǎn)重新發(fā)出區(qū)塊同步請(qǐng)求,直至建立起目標(biāo)節(jié)點(diǎn)與所述共識(shí)節(jié)點(diǎn)之間的連接。
59、另一方面,本發(fā)明實(shí)施例還提供了一種電子設(shè)備,包括處理器以及存儲(chǔ)器;
60、存儲(chǔ)器用于存儲(chǔ)程序;
61、處理器執(zhí)行程序?qū)崿F(xiàn)如前面的區(qū)塊同步的處理方法。
62、另一方面,本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)介質(zhì)存儲(chǔ)有程序,程序被處理器執(zhí)行實(shí)現(xiàn)如前面的區(qū)塊同步的處理方法。
63、本發(fā)明實(shí)施例還公開了一種計(jì)算機(jī)程序產(chǎn)品或計(jì)算機(jī)程序,該計(jì)算機(jī)程序產(chǎn)品或計(jì)算機(jī)程序包括計(jì)算機(jī)指令,該計(jì)算機(jī)指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。計(jì)算機(jī)設(shè)備的處理器可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取該計(jì)算機(jī)指令,處理器執(zhí)行該計(jì)算機(jī)指令,使得該計(jì)算機(jī)設(shè)備執(zhí)行如前面的區(qū)塊同步的處理方法。
64、本發(fā)明實(shí)施例在目標(biāo)節(jié)點(diǎn)加入目標(biāo)區(qū)塊鏈并產(chǎn)生區(qū)塊同步需求的時(shí)候,根據(jù)目標(biāo)區(qū)塊鏈的新節(jié)點(diǎn)加入規(guī)則,生成區(qū)塊同步請(qǐng)求,向目標(biāo)區(qū)塊鏈中各個(gè)共識(shí)節(jié)點(diǎn)發(fā)送區(qū)塊同步請(qǐng)求,各個(gè)共識(shí)節(jié)點(diǎn)根據(jù)區(qū)塊同步請(qǐng)求中的區(qū)塊分片策略信息對(duì)待同步區(qū)塊進(jìn)行數(shù)據(jù)分片,得到分片數(shù)據(jù)集,并從分片數(shù)據(jù)集中確定待發(fā)送的分片數(shù)據(jù),本發(fā)明實(shí)施例采用將區(qū)塊數(shù)據(jù)進(jìn)行分片發(fā)送的方式,節(jié)省了現(xiàn)有技術(shù)中的目標(biāo)節(jié)點(diǎn)在進(jìn)行區(qū)塊同步時(shí),需要反復(fù)向其他共識(shí)節(jié)點(diǎn)發(fā)送同步請(qǐng)求來獲取同步數(shù)據(jù)的過程,只需要發(fā)送一次區(qū)塊同步請(qǐng)求,就能讓共識(shí)節(jié)點(diǎn)不斷發(fā)送分片數(shù)據(jù),有助于提高區(qū)塊同步效率;另外,本發(fā)明實(shí)施例根據(jù)目標(biāo)節(jié)點(diǎn)中分片緩沖區(qū)的存儲(chǔ)信息,以目標(biāo)速度將待發(fā)送的分片數(shù)據(jù)發(fā)送至目標(biāo)節(jié)點(diǎn),以使目標(biāo)節(jié)點(diǎn)在接收到各個(gè)共識(shí)節(jié)點(diǎn)發(fā)出的分片數(shù)據(jù)后,對(duì)各個(gè)分片數(shù)據(jù)進(jìn)行重組得到待同步區(qū)塊,并根據(jù)待同步區(qū)塊完成目標(biāo)節(jié)點(diǎn)的區(qū)塊同步作業(yè),本發(fā)明實(shí)施例基于分片緩沖區(qū)的存儲(chǔ)狀態(tài)來控制傳輸速度,有助于避免區(qū)塊鏈網(wǎng)絡(luò)的運(yùn)行堵塞,有助于適當(dāng)提高分片數(shù)據(jù)的傳輸速度,進(jìn)一步提高區(qū)塊鏈網(wǎng)絡(luò)的運(yùn)行效率。