本公開的實施例總體上涉及區(qū)塊鏈技術(shù),并且具體地,涉及一種移動寬帶網(wǎng)絡(luò)下的區(qū)塊鏈多播網(wǎng)絡(luò)、區(qū)塊鏈設(shè)備及其通信方法。
背景技術(shù):
區(qū)塊鏈是一種源自比特幣的去中心化分布式記賬技術(shù)。參與到區(qū)塊鏈系統(tǒng)中的各個節(jié)點,彼此無需信任。區(qū)塊鏈由所有參加的節(jié)點共同維護,每個參與維護的節(jié)點都可以獲取一份區(qū)塊鏈數(shù)據(jù)的完整拷貝并獨立進行驗證。區(qū)塊鏈采用了密碼技術(shù)來保證區(qū)塊鏈只能添加新數(shù)據(jù)而不能篡改已經(jīng)發(fā)生過的數(shù)據(jù)。
通常,區(qū)塊鏈使用基于互聯(lián)網(wǎng)的對等(p2p:peer-to-peer)網(wǎng)絡(luò)架構(gòu)將所有節(jié)點聯(lián)系在一起。在p2p網(wǎng)絡(luò)中不存在任何服務(wù)端、中央化的服務(wù)、以及層級結(jié)構(gòu),每個網(wǎng)絡(luò)節(jié)點以“扁平”的拓撲結(jié)構(gòu)相互連通。p2p網(wǎng)絡(luò)的節(jié)點之間交互運作、協(xié)同處理,每個節(jié)點在對外提供服務(wù)的同時也使用網(wǎng)絡(luò)中其他節(jié)點所提供的服務(wù)。p2p網(wǎng)絡(luò)也因此具有可靠性、去中心化,以及開放性。
區(qū)塊鏈的p2p網(wǎng)絡(luò)和傳統(tǒng)的基于p2p的文件分享一樣,可能占用互聯(lián)網(wǎng)的大量帶寬。這個問題在移動寬帶網(wǎng)絡(luò)中更加突出。例如,在區(qū)塊鏈的典型應(yīng)用場景物聯(lián)網(wǎng)(iot,internetofthings)中,海量設(shè)備通過移動寬帶相連。在此情況下,大量且更大的區(qū)塊數(shù)據(jù)在物聯(lián)網(wǎng)眾多區(qū)塊節(jié)點之間傳遞,這帶來可觀的帶寬消耗,并且顯著增加了區(qū)塊鏈在移動寬帶網(wǎng)絡(luò)上的部署成本。
有鑒于此,期望的是提供一種解決方案用以有效解決傳統(tǒng)p2p區(qū)塊鏈網(wǎng)絡(luò)占用網(wǎng)絡(luò)資源過多以及容易引起網(wǎng)絡(luò)風(fēng)暴的問題,與此同時具有易于實現(xiàn)、成本有效等優(yōu)勢。
技術(shù)實現(xiàn)要素:
總體上,本公開的實施例提出了移動寬帶網(wǎng)絡(luò)下的區(qū)塊鏈多播網(wǎng)絡(luò)、區(qū)塊鏈設(shè)備及其通信方法。
在本公開的第一方面,提供一種用于區(qū)塊鏈網(wǎng)絡(luò)的通信方法。該方法包括:在區(qū)塊鏈網(wǎng)絡(luò)的區(qū)塊組播節(jié)點處,獲得新區(qū)塊信息;對新區(qū)塊信息進行驗證;響應(yīng)于經(jīng)驗證的新區(qū)塊信息有效,基于區(qū)塊鏈網(wǎng)絡(luò)中的多個區(qū)塊節(jié)點的節(jié)點類型和新區(qū)塊信息,生成不同類型的區(qū)塊組播報文;以及向移動寬帶網(wǎng)絡(luò)中的多媒體廣播多播(mbms)節(jié)點發(fā)送不同類型的區(qū)塊組播報文,以使得經(jīng)由移動寬帶網(wǎng)絡(luò)向多個區(qū)塊節(jié)點廣播區(qū)塊組播報文。
在某些實施例中,生成不同類型的區(qū)塊組播報文包括:生成區(qū)塊報文頭部,區(qū)塊報文頭部至少指示區(qū)塊組播報文的類型以及當前區(qū)塊的高度;基于新區(qū)塊信息的區(qū)塊頭部和區(qū)塊報文頭部,生成第一類型的區(qū)塊組播報文;以及基于新區(qū)塊信息的區(qū)塊交易數(shù)據(jù)和區(qū)塊報文頭部,生成第二類型的區(qū)塊組播報文。
在某些實施例中,生成第二類型的區(qū)塊組播報文包括:將區(qū)塊交易數(shù)據(jù)分為多個傳送源塊;對多個傳送源塊進行前向糾錯編碼;以及將經(jīng)編碼的多個傳送源塊基于單向傳輸上的文件傳遞(flute)協(xié)議封裝為多個組播報文。
在某些實施例中,廣播區(qū)塊組播報文包括:在廣播第二類型的區(qū)塊組播報文之前,以預(yù)定次數(shù)廣播第一類型的區(qū)塊組播報文。
在某些實施例中,廣播區(qū)塊組播報文包括:在廣播第二類型的區(qū)塊組播報文期間,以預(yù)定次數(shù)廣播第一類型的區(qū)塊組播報文。
在本公開的第二方面,提供一種用于區(qū)塊鏈網(wǎng)絡(luò)的通信方法。該方法包括:在區(qū)塊鏈網(wǎng)絡(luò)的組播區(qū)域中的區(qū)塊鏈全節(jié)點處,接收來自組播區(qū)域中的區(qū)塊組播節(jié)點的區(qū)塊組播報文,區(qū)塊組播報文包括第一類型和第二類型,第一類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊頭部,并且第二類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊交易數(shù)據(jù);以及解析第一類型和第二類型的區(qū)塊組播報文,以得到區(qū)塊信息。
在某些實施例中,解析第一類型和第二類型的區(qū)塊組播報文包括:基于區(qū)塊組播報文的區(qū)塊報文頭部,確定區(qū)塊組播報文的類型;響應(yīng)于區(qū)塊組播報文為第一類型,提取區(qū)塊組播報文中的區(qū)塊頭部;以及響應(yīng)于區(qū)塊組播報文為第二類型,提取區(qū)塊組播報文中的區(qū)塊交易數(shù)據(jù)。
在某些實施例中,該方法還包括:確定得到的區(qū)塊信息是否完整;以及響應(yīng)于得到的區(qū)塊信息不完整,向相鄰節(jié)點發(fā)送請求以獲取完整的區(qū)塊信息。
在某些實施例中,該方法還包括:響應(yīng)于產(chǎn)生新區(qū)塊信息,向區(qū)塊組播節(jié)點和組播區(qū)域中不具有接收多播能力的節(jié)點發(fā)送新區(qū)塊信息。
在本公開的第三方面,提供一種用于區(qū)塊鏈網(wǎng)絡(luò)的通信方法,包括:在區(qū)塊鏈網(wǎng)絡(luò)的組播區(qū)域中的簡易支付驗證(spv)節(jié)點處,接收來自組播區(qū)域中的區(qū)塊組播節(jié)點的區(qū)塊組播報文,區(qū)塊組播報文包括第一類型和第二類型,第一類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊頭部,并且第二類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊交易數(shù)據(jù);以及解析第一類型的區(qū)塊組播報文,以獲取區(qū)塊信息。
在某些實施例中,解析第一類型的區(qū)塊組播報文包括:基于區(qū)塊組播報文的區(qū)塊報文頭部,確定區(qū)塊組播報文的類型;響應(yīng)于區(qū)塊組播報文為第一類型,提取區(qū)塊組播報文中的區(qū)塊頭部;以及響應(yīng)于區(qū)塊組播報文為第二類型,丟棄區(qū)塊組播報文。
在某些實施例中,該方法還包括:向組播區(qū)域中的相鄰節(jié)點通知多播能力信息,多播能力信息指示自己是否具有發(fā)送多播的能力、接收多播的能力或者發(fā)送和接收多播的能力。
根據(jù)本公開的第四方面,提供一種區(qū)塊鏈網(wǎng)絡(luò)中的組播設(shè)備,包括:處理器;存儲器,耦合至處理器并且存儲有指令,指令在由處理器執(zhí)行時使組播設(shè)備執(zhí)行以下動作:獲得新區(qū)塊信息;對新區(qū)塊信息進行驗證;響應(yīng)于經(jīng)驗證的新區(qū)塊信息有效,基于區(qū)塊鏈網(wǎng)絡(luò)中的多個區(qū)塊節(jié)點的節(jié)點類型和新區(qū)塊信息,生成不同類型的區(qū)塊組播報文;以及向移動寬帶網(wǎng)絡(luò)中的多媒體廣播多播(mbms)節(jié)點發(fā)送不同類型的區(qū)塊組播報文,以使得經(jīng)由移動寬帶網(wǎng)絡(luò)向多個區(qū)塊節(jié)點廣播區(qū)塊組播報文。
根據(jù)本公開的第五方面,提供一種區(qū)塊鏈網(wǎng)絡(luò)中的全節(jié)點設(shè)備,包括:處理器;存儲器,耦合至處理器并且存儲有指令,指令在由處理器執(zhí)行時使組播設(shè)備執(zhí)行以下動作:接收來自組播區(qū)域中的區(qū)塊組播節(jié)點的區(qū)塊組播報文,區(qū)塊組播報文包括第一類型和第二類型,第一類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊頭部,并且第二類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊交易數(shù)據(jù);以及解析第一類型和第二類型的區(qū)塊組播報文,以得到區(qū)塊信息。
根據(jù)本公開的第六方面,提供一種區(qū)塊鏈網(wǎng)絡(luò)中的簡易支付驗證(spv)設(shè)備,包括:處理器;存儲器,耦合至處理器并且存儲有指令,指令在由處理器執(zhí)行時使spv設(shè)備執(zhí)行以下動作:接收來自組播區(qū)域中的區(qū)塊組播節(jié)點的區(qū)塊組播報文,區(qū)塊組播報文包括第一類型和第二類型,第一類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊頭部,并且第二類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊交易數(shù)據(jù);以及解析第一類型的區(qū)塊組播報文,以獲取區(qū)塊信息。
根據(jù)本公開的第七方面,提供一種區(qū)塊鏈網(wǎng)絡(luò),包括根據(jù)本公開的第一方面所描述的組播設(shè)備、根據(jù)本公開的第二方面所描述的的全節(jié)點設(shè)備以及本公開的第三方面所描述的的簡易支付驗證設(shè)備。
根據(jù)本發(fā)明的第八方面,提供一種計算機可讀存儲介質(zhì),具有存儲在其上的計算機可讀程序指令,計算機可讀程序指令用于執(zhí)行根據(jù)本公開的第一方面、第二方面和第三方面所描述的方法。
本公開的實施例提出了一種在移動寬帶網(wǎng)絡(luò)下通過單播和mbms多播為區(qū)塊鏈混合組網(wǎng)的方案。該方案具有以下的優(yōu)點:通過mbms多播將最新區(qū)塊鏈同步到所有節(jié)點,有效解決了傳統(tǒng)p2p網(wǎng)絡(luò)占用網(wǎng)絡(luò)資源過多和容易引起網(wǎng)絡(luò)風(fēng)暴的缺點。此外,區(qū)塊鏈節(jié)點通過mbms多播同步區(qū)塊鏈的速度快,實時性好,并且易于實現(xiàn)。
附圖說明
結(jié)合附圖并參考以下詳細說明,本公開各實施例的上述和其他特征、優(yōu)點及方面將變得更加明顯。在附圖中,相同或相似的附圖標記表示相同或相似的元素,其中:
圖1示出了移動寬帶網(wǎng)絡(luò)的多媒體廣播多播系統(tǒng)架構(gòu)的示意圖;
圖2示出了根據(jù)本公開實施例的移動寬帶網(wǎng)絡(luò)中的區(qū)塊鏈混合網(wǎng)絡(luò)架構(gòu)的示意圖;
圖3示出了根據(jù)本公開實施例的可以由區(qū)塊組播節(jié)點執(zhí)行的方法的示例流程圖;
圖4示出了傳統(tǒng)的mbms組播報文封裝的示意圖;
圖5示出了在一些實施例中應(yīng)用的第一類型的組播報文封裝的示意圖;
圖6示出了在一些實施例中應(yīng)用的第二類型的組播報文封裝的示意圖;
圖7示出了根據(jù)本公開實施例的可以由區(qū)塊全節(jié)點執(zhí)行的方法的示例流程圖;
圖8示出了根據(jù)本公開實施例的可以由區(qū)塊簡易支付驗證節(jié)點執(zhí)行的方法的示例流程圖;以及
圖9示出了根據(jù)本公開的一些實施例的設(shè)備的框圖。
具體實施方式
現(xiàn)將結(jié)合附圖對本公開的實施例進行具體的描述。應(yīng)當注意的是,附圖中對相似的部件或者功能組件可能使用同樣的數(shù)字標示。所附附圖僅僅旨在說明本公開的實施例。本領(lǐng)字段的技術(shù)人員可以在不偏離本公開精神和保護范圍的基礎(chǔ)上從下述描述得到替代的實施方式。
如本文中所述,術(shù)語“包括”及其各種變體可以被理解為開放式術(shù)語,其意味著“包括但不限于”。術(shù)語“基于”可以被理解為“至少部分地基于”。術(shù)語“一個實施例”可以被理解為“至少一個實施例”。術(shù)語“另一實施例”可以被理解為“至少一個其它實施例”。
如前所述,區(qū)塊鏈的p2p網(wǎng)絡(luò)可能占用互聯(lián)網(wǎng)的大量帶寬,這在利用移動寬帶網(wǎng)絡(luò)的區(qū)塊鏈應(yīng)用中尤其突出。一方面因為設(shè)備數(shù)量眾多,區(qū)塊鏈的每一個區(qū)塊傳播到每個設(shè)備會帶來更大的帶寬消耗;另一方面,因為設(shè)備數(shù)量眾多,交易量龐大,需要更大的區(qū)塊來容納更多的交易,同時要求產(chǎn)生區(qū)塊的時間間隔更短,因此會有更多的數(shù)據(jù)在p2p網(wǎng)絡(luò)中傳播。
為了有效解決此問題,同時提升區(qū)塊鏈網(wǎng)絡(luò)的效率,本公開的實施例提出一種移動寬帶網(wǎng)絡(luò)下的區(qū)塊鏈單播多播混合組網(wǎng)方案,其利用移動網(wǎng)絡(luò)的多媒體廣播多播服務(wù)(mbms:multimediabroadcastandmulticaseservices)技術(shù)來廣播每一個最新的區(qū)塊信息到網(wǎng)絡(luò)所有區(qū)塊鏈節(jié)點,同時保留了使用單播來發(fā)現(xiàn)相鄰節(jié)點以及同步區(qū)塊。
移動網(wǎng)絡(luò)的mbms技術(shù)支持在蜂窩網(wǎng)絡(luò)中提供多播/廣播服務(wù),為很大覆蓋范圍的廣大用戶提供相同的內(nèi)容。mbms能夠顯著地降低運營商在諸如長期演進(lte)網(wǎng)絡(luò)上同時向大量用戶提供諸如視頻、音頻等高帶寬內(nèi)容的成本,避免在單播網(wǎng)絡(luò)中由于許多用戶同時獲取相同內(nèi)容而引起的網(wǎng)絡(luò)擁塞。
圖1示出了移動網(wǎng)絡(luò)的mbms系統(tǒng)100的示意架構(gòu)圖。如圖所示,mbms系統(tǒng)包括廣播多播服務(wù)中心(bm-sc:broadcastmulticastservicecenter)120,其負責對內(nèi)容提供商所提供的內(nèi)容服務(wù)110進行鑒權(quán),計費和流量整形以及網(wǎng)絡(luò)中的數(shù)據(jù)傳輸同步等。內(nèi)容服務(wù)110可以包括例如直播數(shù)據(jù)流、內(nèi)容分布式網(wǎng)絡(luò)(cdn:contentdistributednetwork)數(shù)據(jù)流、衛(wèi)星數(shù)據(jù)流等數(shù)據(jù)內(nèi)容,這些數(shù)據(jù)內(nèi)容可以由不同的內(nèi)容提供商提供。
bm-sc120經(jīng)由sgmb接口121承載mbms控制信令、經(jīng)由sgi-mb接口122承載mbms業(yè)務(wù)數(shù)據(jù)而與mbms網(wǎng)關(guān)130通信。mbms網(wǎng)關(guān)130負責將來自bm-sc的ip報文多播到相應(yīng)的基站150上。多播協(xié)調(diào)實體(mce:multicastcoordinationentity)140可以是獨立地實體也可以是基站150的一部分,其提供準入控制、為mbms分配無線電資源等。由此,基站150將來自內(nèi)容提供商的ip多播報文提供給無線終端160的用戶。
此外,mbms系統(tǒng)100還包括廣播操作支持系統(tǒng)170、網(wǎng)絡(luò)操作支持系統(tǒng)180等,分別提供mbms服務(wù)必要的支持。無線終端160還可以與bm-sc120之間通過http單播文件修復(fù)和接收報告。
需要注意的是,mbms系統(tǒng)100僅是移動網(wǎng)絡(luò)中提供廣播多播技術(shù)的一個示例,其也可以是長期演進lte或第五代移動通信(5g)網(wǎng)絡(luò)中的演進mbms(embms)系統(tǒng)。另外,在此使用的術(shù)語“無線終端”是具有無線通信功能的任何終端設(shè)備,包括但不限于,手機、計算機、個人數(shù)字助理、游戲機、可穿戴設(shè)備、以及傳感器等。術(shù)語“基站”可以表示節(jié)點b(nodeb,或者nb)、演進節(jié)點b(enb)、諸如微微基站、毫微微基站等的低功率節(jié)點、基本收發(fā)器站(bts)、基站(bs)、或者基站子系統(tǒng)(bss)等等。
對于區(qū)塊鏈網(wǎng)絡(luò),盡管區(qū)塊鏈p2p網(wǎng)絡(luò)中的各個節(jié)點如前所述是相互對等的,但是根據(jù)所提供的功能不同,各節(jié)點可能具有不同的分工。一些節(jié)點保有一份完整的、最新的區(qū)塊鏈拷貝,這樣的節(jié)點被稱為全節(jié)點。全節(jié)點能夠獨立自主地校驗所有交易,而不需借由任何外部參照。另外還有一些節(jié)點只保留了區(qū)塊鏈的一部分,它們通過一種稱為簡易支付驗證(spv,simplepaymentverification)的方式來完成交易驗證。這樣的節(jié)點被稱為spv節(jié)點。
一般而言,區(qū)塊鏈中的每個區(qū)塊包括區(qū)塊頭部和區(qū)塊體。區(qū)塊體中記錄區(qū)塊生成時間段內(nèi)的交易清單,區(qū)塊鏈的其他功能通過區(qū)塊頭部實現(xiàn)。區(qū)塊頭部包括例如版本號、時間戳、區(qū)塊哈希值、難度值、隨機數(shù)nonce等。其中版本號標識軟件及協(xié)議的相關(guān)版本信息;時間戳記錄區(qū)塊產(chǎn)生的時間;區(qū)塊哈希值是區(qū)塊所鏈接的前一區(qū)塊(即父區(qū)塊)的區(qū)塊頭的哈希值;難度值是區(qū)塊相關(guān)數(shù)學(xué)題的難度目標;隨機數(shù)nonce是解密該區(qū)塊相關(guān)數(shù)學(xué)題的答案的值。
當區(qū)塊鏈網(wǎng)絡(luò)中由具有挖礦或產(chǎn)生新區(qū)塊能力的節(jié)點創(chuàng)建出新區(qū)塊時,spv節(jié)點只需要接收區(qū)塊頭部,而全節(jié)點需要接收整個區(qū)塊信息。
圖2示出了根據(jù)本公開的實施例的移動寬帶網(wǎng)絡(luò)中的單播多播混合網(wǎng)絡(luò)200的示意架構(gòu)圖。在圖2中,embms區(qū)塊節(jié)點是指具有embms多播能力的全節(jié)點(稱之為區(qū)塊組播節(jié)點),它們是可信任節(jié)點,可以配置為普通全節(jié)點和spv節(jié)點的種子節(jié)點。每個區(qū)塊組播節(jié)點都具有相應(yīng)的多播(也稱為組播)區(qū)域。不同的組播區(qū)域可以有不同的區(qū)塊組播節(jié)點。這些區(qū)塊組播節(jié)點可以屬于不同的移動網(wǎng)絡(luò)運營商,也可以占用不同的embms信道。
如圖2所示出的,區(qū)塊鏈網(wǎng)絡(luò)200包括組播區(qū)域210和220。在每個組播區(qū)域中存在相應(yīng)的區(qū)塊組播節(jié)點,即embms區(qū)塊節(jié)點211和221。在組播區(qū)域210中包括普通全節(jié)點212、214、215以及spv節(jié)點213。在組播區(qū)域220中包括普通全節(jié)點222、223、225以及spv節(jié)點224。
在實際應(yīng)用中,任何機器如計算機、移動終端、智能手機、物聯(lián)網(wǎng)設(shè)備等都可以加入?yún)^(qū)塊鏈網(wǎng)絡(luò)200而成為節(jié)點??梢岳斫?,圖2中僅是示意了區(qū)塊鏈網(wǎng)絡(luò)200中的各節(jié)點之間的邏輯關(guān)聯(lián),物理上區(qū)塊鏈網(wǎng)絡(luò)200中的各節(jié)點之間可以通過包括有線、無線等各種方式連接。本公開在此方面不做限制。
區(qū)塊鏈網(wǎng)絡(luò)200中的節(jié)點既可以具有接收embms多播的能力,也可以不具有接收embms多播的能力,但是它們都有通過單播與其他節(jié)點交互的能力。作為示例,例如組播區(qū)域210中的全節(jié)點212、spv節(jié)點213和全節(jié)點215(以陰影示出)具備接收embms多播的能力,而全節(jié)點214不具備接收embms多播的能力。同樣地,組播區(qū)域220中的全節(jié)點222、全節(jié)點223和全節(jié)點225(以陰影示出)具備接收embms多播的能力,而spv節(jié)點224不具備接收embms多播的能力。
根據(jù)本公開的實施例,區(qū)塊鏈節(jié)點通過單播相互握手時,告訴對方自己是否具有發(fā)送和接收多播的能力。而且,每個具有挖礦或產(chǎn)生新區(qū)塊能力的節(jié)點一旦創(chuàng)建出新區(qū)塊,其優(yōu)先將新區(qū)塊信息發(fā)送給相互連接的embms區(qū)塊節(jié)點和不具有接收embms多播能力的節(jié)點。
在這樣的區(qū)塊鏈網(wǎng)絡(luò)200中,embms區(qū)塊節(jié)點獲得新區(qū)塊信息并驗證通過后,通過多播將區(qū)塊信息發(fā)送給其多播區(qū)域中的具有多播接收能力的節(jié)點。此外,對于不具有接收多播能力的節(jié)點,其可以采用傳統(tǒng)的單播方式獲取區(qū)塊信息。由此,區(qū)塊鏈網(wǎng)絡(luò)200可以支持spv節(jié)點,也可以支持全節(jié)點,并且可以支持具有多播接收能力的節(jié)點,也可以支持只具有單播能力的節(jié)點。
不同的組播區(qū)域210和220之間可以經(jīng)由embms區(qū)塊節(jié)點之間的單播傳遞區(qū)塊信息或者其他節(jié)點將區(qū)塊信息轉(zhuǎn)發(fā)給相應(yīng)的embms區(qū)塊節(jié)點,以此方式,通過embms多播可以將最新區(qū)塊鏈同步到網(wǎng)絡(luò)內(nèi)區(qū)塊鏈節(jié)點,有效解決了傳統(tǒng)p2p網(wǎng)絡(luò)占用網(wǎng)絡(luò)資源過多和容易引起網(wǎng)絡(luò)風(fēng)暴的缺點,特別適合移動寬帶網(wǎng)絡(luò)和物聯(lián)網(wǎng)相結(jié)合的場景。另一方面,區(qū)塊鏈節(jié)點通過embms多播同步區(qū)塊鏈的速度快,經(jīng)過的中間節(jié)點少,可以降低軟分叉的概率,降低采用工作量(pow,proveofwork)證明的區(qū)塊鏈的能耗。
embms區(qū)塊節(jié)點211可以通過組播區(qū)塊的報文封裝來實現(xiàn)對組播區(qū)域中的報文組播。圖3示出了根據(jù)本公開的實施例的可以由組播節(jié)點執(zhí)行的方法300。方法300例如可以在embms區(qū)塊節(jié)點211處執(zhí)行。
在310,在區(qū)塊鏈網(wǎng)絡(luò)的區(qū)塊組播節(jié)點處,獲得新區(qū)塊信息。在一個實施例中,該新區(qū)塊信息可以是embms區(qū)塊節(jié)點211從區(qū)塊鏈網(wǎng)絡(luò)中的區(qū)塊節(jié)點接收的,或者是由該embms區(qū)塊節(jié)點211產(chǎn)生的。隨后在320,區(qū)塊組播節(jié)點對新區(qū)塊信息進行驗證。
在330,響應(yīng)于經(jīng)驗證的新區(qū)塊信息有效,區(qū)塊組播節(jié)點基于區(qū)塊鏈網(wǎng)絡(luò)中的多個區(qū)塊節(jié)點的節(jié)點類型和新區(qū)塊信息,生成不同類型的區(qū)塊組播報文。
根據(jù)本公開的實施例,將每一個區(qū)塊當作一個獨立的文件,使用類似embms組播文件的方案來組播區(qū)塊。為了提高區(qū)塊信息的組播效率并有效利用帶寬資源,組播節(jié)點生成不同類型的區(qū)塊組播報文。
圖4示出了傳統(tǒng)的embms組播文件的報文封裝400。如圖所示,文件可以被分割許多小的數(shù)據(jù)塊放在組播報文的單向傳輸上的文件傳遞(flute:filedeliveryoverunidirectionaltransport)包體(即有效載荷)中發(fā)送出去。字段401指示單播ip地址,例如報文將發(fā)往的bm-sc的地址。字段402和405指示用戶數(shù)據(jù)報協(xié)議(udp:userdatagramprotocol)報文頭部。字段403為sync頭部,指示sync協(xié)議信息。sync協(xié)議用于廣播報文的實體(例如各基站)之間的時間同步。字段404指示與組播區(qū)域相對應(yīng)的多播ip地址。而被分割的數(shù)據(jù)塊在字段406中被分別承載發(fā)送。
由于區(qū)塊鏈中的spv節(jié)點只需要接收區(qū)塊頭部,而區(qū)塊頭部一般比較小。例如,比特幣的區(qū)塊頭部為80字節(jié),其可以直接放入一個udp包中。由此,本公開的實施例引入?yún)^(qū)塊報文頭部(blockpacketheader)字段,其包括區(qū)塊數(shù)據(jù)類型(blocktype)以及區(qū)塊高度(blockheight)。區(qū)塊數(shù)據(jù)類型標記該報文中的內(nèi)容是區(qū)塊頭部信息還是區(qū)塊交易信息,區(qū)塊高度用于存放當前區(qū)塊的高度。在一個示例中,區(qū)塊報文頭可以為9字節(jié),其中區(qū)塊數(shù)據(jù)類型可以為1字節(jié),另外8個字節(jié)用于存放當前區(qū)塊的高度。
圖5和圖6分別示出了根據(jù)本公開的一些實施例的第一類型的組播報文封裝500和第二類型的組播報文封裝600的示意圖。如圖5所示,第一類型的組播報文封裝500除了報文協(xié)議棧400中401-405各字段外,還包括區(qū)塊報文頭字段501和區(qū)塊頭部502。區(qū)塊報文頭字段501由如前所述的類型和高度兩個子字段構(gòu)成。區(qū)塊頭部502包括區(qū)塊鏈中的區(qū)塊的區(qū)塊頭部信息,如前所述。
在圖6中,第二類型的組播報文封裝600除了報文協(xié)議棧400中401-405各字段外,還包括區(qū)塊報文頭字段601、flute頭部602和flute有效載荷字段603。同樣地,區(qū)塊報文頭字段601由如前所述的類型和高度兩個子字段構(gòu)成。flute有效載荷字段603中承載區(qū)塊交易數(shù)據(jù)。在一個示例中,當類型字段的值為為0x01時,表示后面的數(shù)據(jù)是區(qū)塊頭部。當類型字段為0x02時,表示后面的數(shù)據(jù)是區(qū)塊交易信息。
當區(qū)塊組播節(jié)點按照如上過程生成并封裝了不同類型的區(qū)塊組播報文后,在340,向移動寬帶網(wǎng)絡(luò)中的mbms節(jié)點發(fā)送不同類型的區(qū)塊組播報文,以使得經(jīng)由移動寬帶網(wǎng)絡(luò)向多個區(qū)塊節(jié)點廣播區(qū)塊組播報文。
在一個實施例中,區(qū)塊鏈組播節(jié)點211生成不同類型的區(qū)塊組播報文,發(fā)送給移動網(wǎng)絡(luò)中的mbms節(jié)點例如bm-sc120。經(jīng)由bm-sc120,不同類型的區(qū)塊組播報文被廣播出去。由此,組播區(qū)域210中具有接收多播能力的節(jié)點可以接收這些區(qū)塊組播報文,并對報文進行處理,從而獲取區(qū)塊信息。
根據(jù)本公開的一個實施例,對于spv節(jié)點,只需要接收并解析blocktype為0x01的報文,而忽略blocktype為0x02的報文,以節(jié)省能耗。而對于全節(jié)點,兩種類型的報文都需要接收。對于任意節(jié)點,如果根據(jù)報文中的區(qū)塊高度發(fā)現(xiàn)該區(qū)塊已經(jīng)通過別的方式接收過,也可以忽略該報文。
由于mbms多播發(fā)送的是基于udp包的報文,也即并不保證可靠信息傳送,因而在多播接收端信號不好的時候,傳送有可能發(fā)生丟包的情況。本公開的實施例還提供針對兩種不同blocktype的報文丟包的不同解決方案。
對于第二類型的區(qū)塊組播報文(即區(qū)塊交易報文),區(qū)塊交易數(shù)據(jù)作為一個文件通過flute協(xié)議封裝而發(fā)送,可以使用前向糾錯編碼(fec,forwarderrorcorrection)技術(shù)來對區(qū)塊交易數(shù)據(jù)進行編碼。具體地,根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的丟包率,可以使用特定的fec編碼算法(例如,rator10),為諸如新區(qū)塊的區(qū)塊交易數(shù)據(jù)生成一定比例的修復(fù)數(shù)據(jù)。
根據(jù)本公開的一個實施例,將區(qū)塊交易數(shù)據(jù)分為多個傳送源塊;對多個傳送源塊進行前向糾錯編碼,之后將經(jīng)編碼的多個傳送源塊基于flute協(xié)議封裝為多個組播報文。例如,如果區(qū)塊交易數(shù)據(jù)可以分為n個報文發(fā)送,那么經(jīng)前向糾錯編碼的數(shù)據(jù)可以通過m個報文發(fā)送。在區(qū)塊鏈節(jié)點處,如果接收到的報文的總數(shù)為k,只要滿足k>n+l(0<l<m),fec解碼算法就可以將原始區(qū)塊交易數(shù)據(jù)還原出來。由此,通過文件前向糾錯編碼,實現(xiàn)對區(qū)塊交易數(shù)據(jù)的有效和可靠傳送。
對于第一類型的區(qū)塊組播報文(即區(qū)塊頭部報文),同樣可以使用前向糾錯編碼技術(shù)來應(yīng)對包丟失。在另一實施例中,可以使用重復(fù)發(fā)送的方式來解決區(qū)塊頭部報文丟失的問題。例如,區(qū)塊組播節(jié)點在發(fā)送一個區(qū)塊的交易數(shù)據(jù)之前,總是先發(fā)送預(yù)定次數(shù)(例如,2次)的區(qū)塊頭部報文。在發(fā)送區(qū)塊交易數(shù)據(jù)過程中,還可以按照需求配置多次穿插重復(fù)發(fā)送區(qū)塊頭部報文。以此方式,實現(xiàn)對區(qū)塊頭部信息的有效和可靠傳送。
此外,如果一個節(jié)點沒有接收到區(qū)塊頭部報文或者完整的區(qū)塊交易數(shù)據(jù),可以通過單播的方式從相鄰節(jié)點獲取。
圖7和圖8分別示出了根據(jù)本公開的實施例的可以由全節(jié)點和spv執(zhí)行的方法??梢杂扇?jié)點例如全節(jié)點212執(zhí)行的方法700包括在710,在組播區(qū)域中的區(qū)塊鏈全節(jié)點處,接收來自組播區(qū)域中的區(qū)塊組播節(jié)點的區(qū)塊組播報文。該區(qū)塊組播報文包括如上的第一類型和第二類型,第一類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊頭部,并且第二類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊交易數(shù)據(jù)。
然后在720,全節(jié)點解析第一類型和第二類型的區(qū)塊組播報文,以得到區(qū)塊信息。具體地,例如具有多播接收能力的全節(jié)點212可以通過識別區(qū)塊組播報文的區(qū)塊報文頭部,確定區(qū)塊組播報文的類型。如果是第一類型,則提取區(qū)塊組播報文中的區(qū)塊頭部;如果區(qū)塊組播報文為第二類型,則提取區(qū)塊組播報文中的區(qū)塊交易數(shù)據(jù)。
在一個實施例中,全節(jié)點212還基于通信雙方所交互的fec算法對所接收到的多個第二類型的組播報文進行fec解碼,從而獲取區(qū)塊交易數(shù)據(jù)。在另一實施例中,全節(jié)點212還確定得到的區(qū)塊信息是否完整。如果到的區(qū)塊信息不完整,則向相鄰節(jié)點發(fā)送請求以獲取完整的區(qū)塊信息。
根據(jù)本公開的實施例,如果全節(jié)點212產(chǎn)生了一個新區(qū)塊,其向區(qū)塊組播節(jié)點211和組播區(qū)域210中不具有接收多播能力的節(jié)點(例如全節(jié)點214)發(fā)送該新區(qū)塊信息,以使得通過區(qū)塊組播節(jié)點211將新區(qū)塊廣播到組播區(qū)域210。與此同時,組播區(qū)域220中的區(qū)塊組播節(jié)點221可以進一步將該新區(qū)塊廣播給組播區(qū)域220中的區(qū)塊鏈節(jié)點。
圖8示出了根據(jù)本公開的實施例的可以由spv節(jié)點(例如spv節(jié)點213)執(zhí)行的方法800。在810,在組播區(qū)域中的spv節(jié)點處,接收來自組播區(qū)域中的區(qū)塊組播節(jié)點的區(qū)塊組播報文,區(qū)塊組播報文包括第一類型和第二類型,第一類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊頭部,并且第二類型的區(qū)塊組播報文至少包括區(qū)塊信息的區(qū)塊交易數(shù)據(jù)。
然后在820,解析第一類型的區(qū)塊組播報文,以獲取區(qū)塊信息。具體地,例如具有多播接收能力的spv節(jié)點213可以通過識別區(qū)塊組播報文的區(qū)塊報文頭部,確定區(qū)塊組播報文的類型。如果是第一類型,則提取區(qū)塊組播報文中的區(qū)塊頭部;如果區(qū)塊組播報文為第二類型,則忽略或丟棄該報文。以此方式,不僅有利于節(jié)省帶寬資源,也有利于節(jié)省spv節(jié)點的功耗。
在某些實施例中,spv節(jié)點213向其組播區(qū)域中的相鄰節(jié)點通知多播能力信息,該多播能力信息指示自己是否具有發(fā)送多播的能力、接收多播的能力或者發(fā)送和接收多播的能力。
通過以上所描述的本公開的實施例,提供了在移動寬帶網(wǎng)絡(luò)下通過單播和embms多播為區(qū)塊鏈混合組網(wǎng)的方案。該方案網(wǎng)絡(luò)吞吐量大,實時性好,適用于交易頻率高,交易實時性要求高的場景。另外,對原有的區(qū)塊鏈p2p網(wǎng)絡(luò)的改動較小,實現(xiàn)比相對簡便。
圖9圖示了可以用來實施本公開的實施例的電子設(shè)備900的示意性框圖。應(yīng)當理解,電子設(shè)備900可以被實現(xiàn)為圖2所描述的任一節(jié)點,或者電子設(shè)備900也可以被實現(xiàn)為圖2所描述的任一節(jié)點中的任一個模塊。如圖9所示,設(shè)備900包括中央處理單元(cpu)901(例如處理器),其可以根據(jù)存儲在只讀存儲器(rom)902中的計算機程序指令或者從存儲單元908加載到隨機訪問存儲器(ram)903中的計算機程序指令,來執(zhí)行各種適當?shù)膭幼骱吞幚?。在ram903中,還可存儲設(shè)備900操作所需的各種程序和數(shù)據(jù)。cpu901、rom902以及ram903通過總線904彼此相連。輸入/輸出(i/o)接口905也連接至總線904。
設(shè)備900中的多個部件連接至i/o接口905,包括:輸入單元906,例如鍵盤、鼠標等;輸出單元907,例如各種類型的顯示器、揚聲器等;存儲單元908,例如磁盤、光盤等;以及通信單元909,例如網(wǎng)卡、調(diào)制解調(diào)器、無線通信收發(fā)機等。通信單元909允許設(shè)備900通過諸如因特網(wǎng)的計算機網(wǎng)絡(luò)和/或各種電信網(wǎng)絡(luò)與其他設(shè)備交換信息/數(shù)據(jù)。
上文所描述的各種方法,例如方法300、700或800,可由處理單元901執(zhí)行。例如,在一些實施例中,方法300、700或800可被實現(xiàn)為計算機軟件程序,其被有形地包含于機器可讀介質(zhì),例如存儲單元908。在一些實施例中,計算機程序的部分或者全部可以經(jīng)由rom902和/或通信單元909而被載入和/或安裝到設(shè)備900上。當計算機程序被加載到ram903并由cpu901執(zhí)行時,可以執(zhí)行上文描述的方法300、700或800中的一個或多個動作或步驟。
一般而言,本公開的各種示例實施例可以在硬件或?qū)S秒娐?、軟件、固件、邏輯,或其任何組合中實施。某些方面可以在硬件中實施,而其他方面可以在可以由控制器、微處理器或其他計算設(shè)備執(zhí)行的固件或軟件中實施。當本公開的實施例的各方面被圖示或描述為框圖、流程圖或使用某些其他圖形表示時,將理解此處描述的方框、裝置、系統(tǒng)、技術(shù)或方法可以作為非限制性的示例在硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其他計算設(shè)備,或其某些組合中實施。
作為示例,可以用通用處理器、數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)或其它可編程邏輯器件、分立門或者晶體管邏輯、分立硬件組件或用于執(zhí)行本文所述的功能的任意組合來實現(xiàn)或執(zhí)行結(jié)合本公開所描述的各種示例性的邏輯塊、模塊和電路。通用處理器可以是微處理器,或者,處理器也可以是任何普通的處理器、控制器、微控制器或者狀態(tài)機。處理器也可以實現(xiàn)為計算設(shè)備的組合,例如,dsp和微處理器的組合、多個微處理器、一個或多個微處理器與dsp內(nèi)核的結(jié)合,或者任何其它此種結(jié)構(gòu)。
作為示例,本公開的實施例可以在機器可執(zhí)行指令的上下文中被描述,機器可執(zhí)行指令諸如包括在目標的真實或者虛擬處理器上的器件中執(zhí)行的程序模塊中。一般而言,程序模塊包括例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等,其執(zhí)行特定的任務(wù)或者實現(xiàn)特定的抽象數(shù)據(jù)結(jié)構(gòu)。在各實施例中,程序模塊的功能可以在所描述的程序模塊之間合并或者分割。用于程序模塊的機器可執(zhí)行指令可以在本地或者分布式設(shè)備內(nèi)執(zhí)行。在分布式設(shè)備中,程序模塊可以位于本地和遠程存儲介質(zhì)二者中。
用于實現(xiàn)本公開的方法的計算機程序代碼可以用一種或多種編程語言編寫。這些計算機程序代碼可以提供給通用計算機、專用計算機或其他可編程的數(shù)據(jù)處理裝置的處理器,使得程序代碼在被計算機或其他可編程的數(shù)據(jù)處理裝置執(zhí)行的時候,引起在流程圖和/或框圖中規(guī)定的功能/操作被實施。程序代碼可以完全在計算機上、部分在計算機上、作為獨立的軟件包、部分在計算機上且部分在遠程計算機上或完全在遠程計算機或服務(wù)器上執(zhí)行。
在本公開的上下文中,機器可讀介質(zhì)可以是包含或存儲用于或有關(guān)于指令執(zhí)行系統(tǒng)、裝置或設(shè)備的程序的任何有形介質(zhì)。機器可讀介質(zhì)可以是機器可讀信號介質(zhì)或機器可讀存儲介質(zhì)。機器可讀介質(zhì)可以包括但不限于電子的、磁的、光學(xué)的、電磁的、紅外的或半導(dǎo)體系統(tǒng)、裝置或設(shè)備,或其任意合適的組合。機器可讀存儲介質(zhì)的更詳細示例包括帶有一根或多根導(dǎo)線的電氣連接、便攜式計算機磁盤、硬盤、隨機存儲存取器(ram)、只讀存儲器(rom)、可擦除可編程只讀存儲器(eprom或閃存)、光存儲設(shè)備、磁存儲設(shè)備,或其任意合適的組合。
另外,盡管操作以特定順序被描繪,但這并不應(yīng)該理解為要求此類操作以示出的特定順序或以相繼順序完成,或者執(zhí)行所有圖示的操作以獲取期望結(jié)果。在某些情況下,多任務(wù)或并行處理會是有益的。同樣地,盡管上述討論包含了某些特定的實施細節(jié),但這并不應(yīng)解釋為限制任何發(fā)明或權(quán)利要求的范圍,而應(yīng)解釋為對可以針對特定發(fā)明的特定實施例的描述。本說明書中在分開的實施例的上下文中描述的某些特征也可以整合實施在單個實施例中。反之,在單個實施例的上下文中描述的各種特征也可以分離地在多個實施例或在任意合適的子組合中實施。
盡管已經(jīng)以特定于結(jié)構(gòu)特征和/或方法動作的語言描述了主題,但是應(yīng)當理解,所附權(quán)利要求中限定的主題并不限于上文描述的特定特征或動作。相反,上文描述的特定特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而被公開的。