本發明涉及區塊鏈跨鏈通信技術,尤其涉及一種鏈路由及實現區塊鏈跨鏈通信的系統。
背景技術:
狹義上的區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,并以密碼學方式保證的不可篡改和不可偽造的分布式賬本。廣義上的區塊鏈是指利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算范式。區塊鏈技術通過去中心化、去信任的方式集體維護一個可靠數據庫,解決交易的信任和安全問題。
區塊鏈技術并不是一種單一的技術,而是多種技術整合的結果,這些技術以新的結構組合在一起,形成了一種新的數據記錄、存儲和表達的方式,主要涉及以下四種技術:
一、分布式賬本。即交易記賬由分布在不同地方的多個節點共同完成,而且每一個節點都記錄的是完整的賬目,因此它們都可以參與監督交易合法性,同時也可以共同為其作證。不同于傳統的中心化記賬方案,沒有任何一個節點可以單獨記錄賬目,從而避免了單一記賬人被控制或者被賄賂而記假賬的可能性。另一方面,由于記賬節點足夠多,理論上講除非所有的節點被破壞,否則賬目就不會丟失,從而保證了賬目數據的安全性。
二、非對稱加密和授權技術。存儲在區塊鏈上的交易信息是公開的,但是賬戶身份信息是高度加密的,只有在數據擁有者授權的情況下才能訪問到,從而保證了數據的安全和個人的隱私。
三、共識機制。即所有記賬節點之間如何達成共識,去認定一個記錄的有效性,這既是認定的手段,也是防止篡改的手段。
四、智能合約。智能合約是基于可信的不可篡改的數據,可以自動化地執行一些預先定義好的規則和條款。
目前階段區塊鏈的網絡屬性僅僅被發揮到類似局域網的程度,不同的區塊鏈之間不僅無法聯通,更無信任可言。此外,對一條區塊鏈而言,我們也飽受其能力不足的困擾,全局共識機制在提供安全性的同時也大大限制了區塊鏈系統的發展,我們無法通過增加節點的方式提高交易的處理能力。
技術實現要素:
本發明的目的之一是提供一種鏈路由,通過其可實現區塊鏈之間的通信,從而使得不同區塊鏈之間可以互信互通,還可以通過增加節點的方式提高交易的處理能力。
根據上述目的,本發明提出了一種鏈路由,所述鏈路由為實現通信包接收和轉發的第一區塊鏈,所述鏈路由與不能實現通信包轉發的第二區塊鏈或其他鏈路由連接,用以實現各第二區塊鏈之間的通信,所述通信包內包括交易,所述交易對應對數據庫狀態的改變。
針對區塊鏈發展所面臨的前述問題,發明人提出“鏈路由”的概念。這樣做主要有兩個目的:其一,增強區塊鏈系統對交易的處理能力,實現區塊鏈交易處理能力的水平擴展;其二,打通區塊鏈之間的通信壁壘,實現區塊鏈之間的互聯,互通,互信。
現有的一些區塊鏈,如比特幣,以太坊等,是先于所述鏈路由存在的,而且在設計之初這些現有的區塊鏈也不具有與其它區塊鏈通信的功能。而鏈路由則要像路由器一樣能夠接納一切區塊鏈,因此發明人考慮設計所述鏈路由的同時,基于鏈路由制定一套區塊鏈之間的通信協議,符合這套協議的區塊鏈系統可以輕松接入鏈路由。對于先于所述鏈路由存在的區塊鏈系統,在不改變其本身設計的基礎上,可以額外設計一套適配系統來輔助其與所述鏈路由之間的通信。
本發明中,所述第一區塊鏈和所述第二區塊鏈作廣義上的區塊鏈理解,即包括區塊鏈數據結構的、基于區塊鏈技術實現的、具備區塊鏈數據庫維護功能的架構,該架構包括相應的計算范式,可以在計算機上實現。
本發明中,所述鏈路由提供了區塊鏈之間的聯通與分發的功能。通常基于鏈路由制定一套區塊鏈之間的通信協議,使不同的區塊鏈之間可以像網絡中的各種設備一樣相互通信,從而使得不同區塊鏈之間可以互信互通,還可以通過增加第二區塊鏈節點的方式提高交易的處理能力。
本發明基于區塊鏈技術設計所述鏈路由,將所述鏈路由本身設計為第一區塊鏈,基于區塊鏈的交易和數據庫技術以及通信技術實現所述第一區塊鏈與所述第二區塊鏈之間安全、可靠的通信,以及實現區塊鏈交易處理能力的水平擴展。
進一步地,本發明所述的鏈路由中,所述鏈路由包括:路由信息管理模塊、通信包處理器和分發器,所述路由信息管理模塊內存儲有路由表,所述通信包處理器將接收的通信包進行解析,然后根據路由表將通信包經由分發器轉發出去。
上述方案中,所述路由信息管理模塊內存儲有路由表是指:所述路由表中的信息由信息管理模塊管理,但通常所述路由表中的信息是存在鏈路由的數據庫中。
上述方案中,所述路由信息管理模塊、通信包處理器和分發器可以基于鏈間通信協議(crossblockchaincommunicationprotocol,縮寫為cbcp)實現。
更進一步地,上述鏈路由中,所述路由表為動態更新的路由表。
進一步地,本發明所述的鏈路由中,所述鏈路由采用代理權益拜占庭容錯算法對所述交易進行驗證,所述鏈路由具有若干個節點,所述節點包括具有驗證賬號的驗證節點和不具有驗證賬號的非驗證節點,所述非驗證節點將權益委托給驗證節點,以使驗證節點代理非驗證節點進行投票以進行驗證。
上述方案中,由于所述鏈路由本身就是一條區塊鏈,因此通常具有若干節點。理論上一個節點的區塊鏈是可以正常運行的,但實際上,分布式賬本和拜占庭容錯共識算法的作用要在多個節點上才能體現出來,在使用的共識算法中,建議節點數至少為4個。
上述方案中,所述鏈路由采用代理權益拜占庭容錯算法對所述交易進行驗證,其設計思路如下:
工作量證明算法(pow)是被應用在比特幣和以太坊上的一種拜占庭容錯(bft)共識算法。自比特幣開始發行至今,工作量證明算法已經證明了其可靠性,但其對資源的浪費也是有目共睹。權益證明算法(pos)是一種為了解決工作量證明算法資源浪費問題而提出的共識算法,通過投票人在投票權益池中的權益比重來代替礦工在挖礦時貢獻的算力,配以相應的處罰機制,確保投票人的誠信。然而,算力和權益之間還是有很大區別的,最重要的一點區別就是在于算力是不能分散的,一個算力固定的礦工不可以同時在兩條鏈上挖礦且保持總算力翻倍,但是擁有一定權益的投票人卻可以對每一個可能的區塊投票,只要任何一個區塊成為了將來的勝出者就可以保證自己的權益不受損。但這樣做是有很大的安全隱患的,因為這樣大大降低了作惡者所需要的作惡成本。
raft作為一種常用的高效共識算法,其最大的弊病在于不能防止拜占庭節點,一個擁有強大網絡配置的拜占庭領導者節點會給raft算法的共識帶來毀滅性打擊。在拜占庭容錯共識算法的發展歷程中,一些結合raft和bft的算法被提出來。以pbft(practicalbyzantinefaulttolerance,實用拜占庭容錯算法)為例,一部分可靠的節點被稱為驗證人,驗證人具有成為領導者的機會,在每一輪區塊鏈生成的過程中,都會有一個新的驗證人會默認成為該輪的領導者,領導者負責打包新的區塊,并將一個自己認為合理的區塊廣播給所有驗證人。經過兩輪超過2/3的全部驗證人的投票確認,新的區塊才會被共識。這種共識方式大大提升了出塊速度,而且只要保證小于1/3的驗證人不是拜占庭節點,區塊就可以被持續生產。
不可否認的是,pbft中所使用的拜占庭節點容錯算法對于保證1/3以下拜占庭節點的網絡的安全是可靠的。但是,在實際應用中,尤其是當與經濟利益相關時,即使驗證人是經過挑選的可靠節點,發明人考慮也不能單純的依賴沒有處罰機制的1/3的安全,保證安全必須要做到賞務速而后有勸,罰務速而后有懲。而其中的賞與罰必須是與經濟利益直接關聯的。因此,發明人對原有的共識機制進行了修改,使驗證人投票的權重與其所抵押的鏈上代幣權益相對應。這樣一來,原本需要超過2/3投票人才能確認生成區塊的機制被修改成超過2/3的總權益。此外,在pbft共識算法中,普通節點只是在同步來自領導節點發來的新區塊,并不參與共識,導致其共識算法的安全性僅依賴于驗證節點的數量,普通節點的數量增加并不能提升拜占庭容錯的安全性。新的共識機制中增加了非驗證節點的參與性。一個驗證節點對應一個驗證人賬號,非驗證人可以通過將權益委托給驗證人,通過驗證人代理投票的方式賺取屬于自己的利益。因為利益的關系,非驗證人會慎重選擇代理驗證人,從而做到了所有人都參與到共識中,而又沒有所有節點參與共識而帶來的效率降低的缺陷。這樣的共識算法發明人稱之為代理權益拜占庭容錯算法(ds-pbft)。
上述方案中,所述鏈路由使用通過驗證人投票實現的代理權益拜占庭容錯算法作為共識算法,使得所有節點都參與到鏈路由的共識中,而又沒有所有節點參與共識而帶來的效率降低的缺陷。
上述方案還有個好處是為打造輕量級的客戶端奠定了基礎。現階段區塊鏈的客戶端通常都為全節點,即需要存儲區塊鏈的所有數據。輕量級客戶端,也稱輕客戶端,只存儲少量區塊鏈數據,但是同樣可以驗證區塊鏈中的數據的真實性,更適合手機等移動、輕型終端的使用。上述方案的共識算法是一種更適合輕客戶端使用的算法,因此為輕客戶端的誕生奠定了基礎。
發明人注意到,普通的區塊鏈客戶端需要同步區塊鏈中的所有區塊才可以驗證交易,這樣的客戶端雖然功能強大,但是由于需要存儲的數據太多導致其本身過重,在實際應用中往往有著諸多不便。
輕客戶端中只需要實時同步某條區塊鏈上的最新驗證人組,就可以對該區塊鏈上的一些信息進行驗證。如,輕客戶端只需要連續同步某區塊鏈的區塊頭并更新驗證人信息,就可以實時跟進并驗證該區塊鏈上的最新的區塊高度,世界狀態等信息。當然,相較于全節點客戶端,輕客戶端能實現的功能是有限的,但是這樣的客戶端更適合被使用在硬盤空間不夠大的移動端或物聯網行業,幫助其獲取重要的狀態。
進一步地,本發明所述的鏈路由中,所述鏈路由具有數量不斷增加的若干個區塊,其中每一個區塊均包括區塊頭部分和數據部分。
上述方案中,由于鏈路由本身也是區塊鏈,其狀態信息以區塊的形式保存和更新。所述狀態信息通常包含于所述數據庫中。
更進一步地,上述鏈路由中,其中所述區塊頭部分至少包括:鏈標識、區塊高度、時間、世界狀態的哈希值、與該區塊緊鄰的前一個區塊的區塊頭部分的哈希值、與該區塊緊鄰的前一個區塊的分塊、驗證人哈希值、數據部分的哈希值的至少其中之一。
更進一步地,上述鏈路由中,所述數據部分至少包括該區塊內的所有交易。
上述方案中,一個交易是指對數據庫的狀態進行了一次改變。
本發明的另一目的是提供一種實現區塊鏈跨鏈通信的系統,其可實現區塊鏈之間的通信,從而使得不同區塊鏈之間可以互信互通,還可以通過增加節點的方式提高交易的處理能力。
根據上述目的,本發明提出了一種實現區塊鏈跨鏈通信的系統,其包括多個上述鏈路由以及與該多個鏈路由連接的多個第二區塊鏈。
本發明所述的實現區塊鏈跨鏈通信的系統中,所述多個鏈路由之間以某種連接結構通信連接,所述多個第二區塊鏈與所述多個鏈路由之間以某種連接結構通信連接。其中,一個鏈路由可以連接一個或多個第二區塊鏈。所述第二區塊鏈通過其連接的鏈路由與其它第二區塊鏈通信,或者通過其連接的鏈路由與其它第二區塊鏈連接的鏈路由通信,從而與所述其它第二區塊鏈通信,從而使得不同區塊鏈之間可以互信互通,還可以通過增加第二區塊鏈節點的方式提高交易的處理能力。
通常在所述系統中,一些鏈路由可以起到類似路由器的功能,根據通信協議將通信請求解析并轉發,動態維護所述系統的網絡拓撲結構。
在理想狀況下,所述多個鏈路由之間以鏈狀結構連接,所有第二區塊鏈通過該鏈狀結構進行通信,這樣的好處是通信速度快。但是隨著新的第二區塊鏈的不斷增加,通信量也會增加,鏈路由的存儲和計算負擔將以平方級增加,因此鏈路由通常需要采用分層結構。
這里將問題簡化,假設所述多個鏈路由只包括底層鏈和上層鏈兩層結構:底層鏈負責連通上層鏈,負責維護上層鏈之間的通信。即,如果目標鏈在同一個上層鏈中,那么就直接通過上層鏈通信。如果目標鏈不在同一個上層鏈中,則需要通過底層鏈通信。在實際應用中,所述多個鏈路由將不止兩層,最底層構成路由主干。
進一步地,本發明所述的實現區塊鏈跨鏈通信的系統中,所述多個鏈路由呈樹狀結構分布或呈網狀結構分布。
上述方案中,所述樹狀結構是指每個節點的父節點是唯一的拓撲結構,所述網狀結構是指每個節點的父節點不是唯一的拓撲結構,該拓撲結構形成分層結構,其拓撲關系對應分層關系。
進一步地,本發明所述的實現區塊鏈跨鏈通信的系統中,所述多個鏈路由呈樹狀結構和網狀結構結合的形式分布。
上述方案中,所述樹狀結構是指每個節點的父節點是唯一的拓撲結構,所述網狀結構是指每個節點的父節點不是唯一的拓撲結構,該拓撲結構形成分層結構,其拓撲關系對應分層關系。
鏈路由網絡的最終結構受諸多因素影響,其中,最主要的影響因素就是需要通信的區塊鏈的數量。隨著接入鏈網絡的區塊鏈逐漸增多,接入一個鏈路由中的區塊鏈會不斷增多,當多到一定的程度超過一個鏈路由的負載,可以采用增加鏈路由的方式來分攤壓力。對于位于同一層的鏈路由來講,它們既可以通過相互間建立連接完成通信傳遞,也可以接入同一個上層鏈路由,并通過共同的鏈路由來實現通信傳遞。所以樹形結構是可能存在的,當然,網狀結構也是可能存在的。也可能是在最上層的鏈路由中使用類似bgp的規則,在其下的每個分域內采用樹形、網狀、樹形和網狀的結構。
本發明所述的鏈路由,通過其可實現區塊鏈之間的通信,從而使得不同區塊鏈之間可以互信互通,還可以通過增加節點的方式提高交易的處理能力。
本發明所述的實現區塊鏈跨鏈通信的系統,其同樣具有上述效果,同時還擴大了節點容量。
附圖說明
圖1為本發明所述的鏈路由在一種實施方式下的結構示意圖。
圖2為本發明所述的鏈路由在一種實施方式下的代理權益拜占庭容錯算法的流程示意圖。
圖3為本發明所述的鏈路由在一種實施方式下的區塊的結構示意圖。
具體實施方式
下面將結合說明書附圖和具體的實施例來對本發明所述的鏈路由和實現區塊鏈跨鏈通信的系統進行進一步地詳細說明,但是該詳細說明不構成對本發明的限制。
圖1顯示了本發明所述的鏈路由在一種實施方式下的結構。
如圖1所示,該實施方式下的鏈路由為實現通信包接收和轉發的第一區塊鏈,鏈路由與不能實現通信包轉發的作為第二區塊鏈的子鏈(本具體實施方式中,將第二區塊鏈稱為子鏈,其掛接的鏈路由稱為相應的母鏈)連接,用以實現各第二區塊鏈之間的通信,通信包內包括交易,交易對應對數據庫狀態的改變。
在其它實施方式中,鏈路由還可以與其他鏈路由連接,用以實現各子鏈之間的通信。
該實施方式下的鏈路由包括:路由信息管理模塊、通信包處理器和分發器,路由信息管理模塊內存儲有路由表,通信包處理器將接收的通信包進行解析,然后根據路由表將通信包經由分發器轉發出去。該路由表為動態更新的路由表。路由信息管理模塊、通信包處理器和分發器基于鏈間通信協議(cbcp)實現。
該實施方式中,不同于傳統區塊鏈系統的機構,鏈路由中的共識算法和p2p網絡通信模塊是與賬本邏輯分離開的,將鏈路由分割為兩個部分。其中共識算法與p2p網絡通信模塊負責交易的廣播,共識等,其可以替代諸多區塊鏈系統中的共識及p2p網絡通信模塊部分。賬本部分負責驗證,查詢等邏輯。二者之間通過套接字協議被結合在一起。鏈路由使用通訊包處理器解析通信包,然后跟據其動態維護的路由表,通過鏈間通信協議將消息轉發給子鏈。
該實施方式下的鏈路由采用代理權益拜占庭容錯算法對交易進行驗證,鏈路由具有若干個節點,節點包括具有驗證賬號的驗證節點和不具有驗證賬號的非驗證節點,非驗證節點將權益委托給驗證節點,以使驗證節點代理非驗證節點進行投票以進行驗證。
圖2顯示了本發明所述的鏈路由在一種實施方式下的代理權益拜占庭容錯算法的流程。
如圖2所示,該實施方式下的鏈路由的代理權益拜占庭容錯算法(ds-pbft)在流程上與pbft算法的流程類似。pbft算法是目前比較成熟的拜占庭容錯共識算法。pbft算法中,一部分可靠的節點被稱為驗證人,驗證人具有成為領導者的機會,在每一輪區塊鏈生成的過程中,都會有一個新的驗證人會默認成為該輪的領導者,領導者負責打包新的區塊,并將一個自己認為合理的區塊廣播給所有驗證人。經過兩輪超過2/3的全部驗證人的投票確認,新的區塊才會被共識。ds-pbft算法與pbft算法的不同之處在于,ds-pbft算法中,驗證人投票的權重與其所抵押的鏈上代幣權益相對應,即pbft算法中需要超過2/3投票人才能確認生成區塊的機制在ds-pbft算法中被修改成超過2/3的總權益。此外,在pbft算法中,普通節點只是在同步來自領導節點發來的新區塊,并不參與共識。ds-pbft算法中增加了非驗證節點的參與性,一個驗證節點對應一個驗證人賬號,非驗證人可以通過將權益委托給驗證人,通過驗證人代理投票的方式賺取屬于自己的利益。ds-pbft算法與pbft算法的區別主要體現在設定上,包括ds-pbft算法中擁有權益的人可以將權益抵押給驗證人,并通過驗證人誠實投票幫助驗證人和權益擁有者獲利。
圖3顯示了本發明所述的鏈路由在一種實施方式下的區塊的結構。
鏈路由本身也是區塊鏈,狀態信息以區塊的形式保存和更新。該狀態信息包含于數據庫中。由于該實施方式下的鏈路由采用了代理權益拜占庭容錯算法作為共識算法,其區塊的結構與比特幣、以太坊等區塊鏈系統的區塊的組成有很大不同。
如圖3所示,該實施方式下的鏈路由具有數量不斷增加的若干個區塊,其中每一個區塊均包括區塊頭部分(header)、數據部分(data)以及起到認證上一個區塊的投票部分(lastcommit)。
區塊頭部分包括:鏈標識(chainid)、區塊高度(hight)、時間(time)、世界狀態的哈希值(apphash)、與該區塊緊鄰的前一個區塊的區塊頭部分的哈希值(lastheaderhash)、與該區塊緊鄰的前一個區塊的分塊(lastblockparts)、驗證人哈希值(validatorshash)、數據部分的哈希值(datahash)、投票部分的哈希值(lastcommithash)。其中,后兩部分是對本區塊整體性的檢查。
數據部分包括該區塊內的所有交易。其中,一個交易是指對數據庫的狀態進行了一次改變。
比較不同的是投票部分,這個部分的目的是建立新的區塊與上一個區塊之間的鏈接。
之前我們提到過,區塊的共識需要兩輪超過2/3驗證節點權益的投票。其中第二輪的全部2/3驗證節點投票(commit)會被暫時保存起來,等到下一個區塊被提議時,被放在該區塊的投票的部分(lastcommit)。所以一個區塊的投票部分包括了上一輪投票中超過2/3驗證人的投票。
本實施方式下的實現區塊鏈跨鏈通信的系統包括多個上述鏈路由以及與該多個鏈路由連接的多個子鏈。在該系統中,一些鏈路由起到類似路由器的功能,根據通信協議將通信請求解析并轉發,動態維護該系統的網絡拓撲結構。
某些實施方式中,上述多個鏈路由呈樹狀結構分布或呈網狀結構分布。
某些實施方式中,上述多個鏈路由呈樹狀結構和網狀結構結合的形式分布。
上述實施方式中,樹狀結構是指每個節點的父節點是唯一的拓撲結構,網狀結構是指每個節點的父節點不是唯一的拓撲結構,該拓撲結構形成分層結構,其拓撲關系對應分層關系。
上述實施方式中,底層鏈負責連通上層鏈,負責維護上層鏈之間的通信。即,如果目標鏈在同一個上層鏈中,那么就直接通過上層鏈通信。如果目標鏈不在同一個上層鏈中,則需要通過底層鏈通信。最底層構成鏈路由主干。
下面進一步說明該實施方式下的鏈路由和實現區塊鏈跨鏈通信的系統的信息傳輸流程、狀態維護以及動態擴容。
(1)信息傳輸流程。
假設子鏈a需要給子鏈b發送一條消息m,那么需要經過以下流程:
通過共識,子鏈a將以下包含以下信息的交易寫入區塊鏈
[消息內容:m,消息接收鏈:b];
鏈路由監測到子鏈a上需要傳輸的信息的請求,一旦發現需要轉發的消息,便把包含以下信息的交易寫入區塊鏈
[消息內容:m,消息接收鏈:b,消息發送鏈:a];
子鏈b檢測到鏈路由上有需要接收的消息,就將包含以下信息的交易寫入區塊鏈
[消息內容:m,消息來源:a]。
(2)狀態維護。
作為不同子鏈之間溝通的橋梁,鏈路由要負責維護關于子鏈的一些狀態。
首先,子鏈若希望與鏈路由進行通信,則必須在鏈路由上進行注冊。包括子鏈的身份標識(chainid),子鏈上驗證節點的信息,子鏈上資產的種類等。以此來幫助鏈路由能夠在接收到通信請求的時候解析出對應的子鏈,完成轉發操作。
其次,鏈路由需要實時接收子鏈的最新區塊信息和對最新區塊的投票(commit),以此來滿足對子鏈基本狀態的維護,幫助輕客戶端的用戶實時查詢子鏈高度,狀態,驗證從子鏈發來的交易等等。
此外,因為驗證節點的身份是實時變更的,鏈路由還需要維護所有子鏈上的動態驗證節點信息,以此來驗證一筆來自子鏈的交易是否為合法。
同理,子鏈上也需要維護關于鏈路由上的相應信息,以此來確定一筆交易確實是由鏈路由發來的。包括鏈路由的身份標識,鏈路由上的驗證節點信息,鏈路由上的最新區塊及投票等。
(3)動態擴容。
前文提到,鏈路由機制的一個重大意義在于實現區塊鏈系統的水平擴展。因此,我們可以在現有鏈路由系統交易處理能力接近飽和之前在鏈路由上加入新的子鏈,降低每條鏈上所承載的交易數量。為了讓新加入鏈路由的子鏈可以迅速分攤壓力,我們制定了能夠實時反應的動態路由規則。
首先,鏈路由會維護一個關于注冊在其上的子鏈列表,在子鏈加入到鏈路由之前,子鏈列表會先行更新。輕客戶端會效仿分布式配置管理機制,不定時向母鏈讀取當前的最新子鏈數量。輕客戶端每次會在0.5至1秒之間隨機選取一個時間,倒計時觸發向鏈路由子鏈數量的查詢,并存儲在本地文件中。若查詢結果與本地存儲數字不同,則向其他輕客戶端廣播最新子鏈數量及時間戳。收到消息的其他輕客戶端對比本地文件,數量若一致,則重置倒計時;若數量不一致且時間戳晚于本地數值寫入時間,則向鏈路由發起關于子鏈數量的查詢,寫入新數據之后,重啟倒計時;若數量不一致但時間戳早于本地寫入時間,則忽略消息。此外,我們還可以設定一個屏蔽機制,若一個輕客戶端收到來自另一個輕客戶端的廣播,然后觸發了向母鏈的查詢,但是發現數量與本地儲存的子鏈數量一致。這時可能是因為兩次查詢中,母鏈上的子鏈增減數量相同,廣播者沒有撒謊;或者廣播者撒謊。但是這個輕客戶端可以主動選擇屏蔽接受來自對方的消息,每次的屏蔽時間隨受欺騙次數增加。
通過以上方法,我們保證了輕客戶端中存儲的子鏈數量與母鏈中所存的保持實時一致。每當一筆請求從輕客戶端發起時,輕客戶端需要指定交易的觸發鏈,輕客戶端計算應用標識的哈希值,并對本地儲存的子鏈數量取模,所得值即為該請求的目標鏈的編號。
需要注意的是,以上列舉的僅為本發明的具體實施例,顯然本發明不限于以上實施例,隨之有著許多的類似變化。本領域的技術人員如果從本發明公開的內容直接導出或聯想到的所有變形,均應屬于本發明的保護范圍。