區(qū)塊鏈集成了密碼學、分布式數(shù)據(jù)庫的技術,能夠有效并且安全的實現(xiàn)跨組織的數(shù)據(jù)共享的協(xié)作,以發(fā)揮在新基建中的作用。
而新基建下的區(qū)塊鏈,有以下四個特征:
范圍廣,分區(qū)治理,跨鏈互聯(lián)
層級化治理,滿足現(xiàn)有治理體系
統(tǒng)一的實名身份,按身份授權
支持敏感數(shù)據(jù)的跨鏈傳輸
首先是服務范圍更加廣。不再像之前幾年只是少數(shù)幾個企業(yè)聯(lián)盟搭建了一個信息化的設施,所以就要求能夠進行分區(qū)的治理,各個區(qū)域、業(yè)務可以建設相對獨立的區(qū)塊鏈,同時又支持與其他不同地域、業(yè)務的區(qū)塊鏈進行跨鏈協(xié)作。
第二個特征是層級化的治理。區(qū)塊鏈在新基建場景下,節(jié)點并不是完全對等的,是有層級的,以滿足政府或者是企業(yè)現(xiàn)有的治理體系。
第三是身份實名。最好是有統(tǒng)一的身份系統(tǒng),類似于全國統(tǒng)一的身份證,即便是在跨地域或者是跨業(yè)務的時候,也可以按身份進行授權與驗證。
第四個特征是要支持敏感數(shù)據(jù)的跨鏈傳輸。我們在保障數(shù)據(jù)跨機構共享的同時,還要保護數(shù)據(jù)的隱私。
下面舉個例子說明一下新基建的區(qū)塊鏈應用場景到底是怎么樣的。
在教育領域中,可以使用區(qū)塊鏈來管理學生的學籍、檔案,這些是需要長期去管理的重要數(shù)據(jù),保證其不可以后續(xù)被篡改,保證數(shù)據(jù)是可以追溯的。通常不同的省市都會有自己的區(qū)塊鏈系統(tǒng)來維護其當?shù)氐臄?shù)據(jù),但如果學生升學或者是轉學,就會涉及到跨區(qū)塊鏈的數(shù)據(jù)流轉。
在政務領域也有很多這樣的例子,比如戶口的遷移或者社保的轉移,都涉及到跨地域的數(shù)據(jù)流通,也會有很多跨業(yè)務的信息協(xié)作場景。
總之,會存在很多按區(qū)域或者業(yè)務劃分的分區(qū)的鏈,這就涉及到跨鏈的協(xié)作。
一個區(qū)塊鏈的內(nèi)部數(shù)據(jù)是可以做到不可篡改,變更過程可追溯的。但在涉及到跨區(qū)塊鏈的環(huán)節(jié),分區(qū)的鏈之間互相平行,不能夠驗證對方的數(shù)據(jù)是否可靠。
在這種情況下為了保障區(qū)塊鏈的基本特性,就需要引入一個跨鏈治理的平臺。它的功能包括跨鏈的身份管理以及跨鏈的事務管理。
既然區(qū)塊鏈被拉入到新基建的場景當中,就會要求區(qū)塊鏈能夠服務更廣的使用戶群體、管理更多的數(shù)據(jù),這些最終都會歸結于區(qū)塊鏈能否實現(xiàn)更高的可擴展。
目前區(qū)塊鏈在擴展性上所面臨的的問題主要有三點:
單個區(qū)塊鏈承載的數(shù)據(jù)量有限
單個區(qū)塊鏈不能滿足不同業(yè)務的數(shù)據(jù)管理模式
平行業(yè)務、地域、部門組建的區(qū)塊鏈相對獨立,但又有協(xié)作要求
區(qū)塊鏈為了追求去中心化以及數(shù)據(jù)的不可篡改、可追溯等特性,付出的成本與代價遠比我們通常使用的數(shù)據(jù)庫要高。所以用單個區(qū)塊鏈承載整個產(chǎn)業(yè)互聯(lián)網(wǎng)的數(shù)據(jù)是不現(xiàn)實的。
第二點在產(chǎn)業(yè)區(qū)塊鏈里面各種各樣的業(yè)務會有不同的管理模式,比如不同的共識機制以及策略,這種情況下把不同的業(yè)務全部落在同一個區(qū)塊鏈里面也是不現(xiàn)實的。
第三個問題就是每個區(qū)域、業(yè)務都會構建自己的區(qū)塊鏈。比如各個城市會有自己獨立的區(qū)塊鏈,但又涉及到跨地域、跨業(yè)務的協(xié)作,這也是擴展性的一個大問題。
針對這些問題,目前的解決方案是通過跨鏈去解決區(qū)塊鏈的水平擴展問題,再通過分層解決跨鏈的效率監(jiān)管。
因為區(qū)塊鏈強調(diào)去中心化,所以就要求各個參與方之間要相互進行驗證。在產(chǎn)業(yè)互聯(lián)網(wǎng)的場景中,因為數(shù)據(jù)量規(guī)模很大,不同業(yè)務、不同地域的鏈之間是互相平行平等的,沒辦法去驗證其他業(yè)務鏈的數(shù)據(jù)是否正確,所以就有了分層的概念。
層級化的治理模式可以提升效率,并且可以滿足監(jiān)管的要求。這一點和我們的整個社會機制是相似的,包括政府、企業(yè)都是層級化管理。
分層之所以能夠提升區(qū)塊鏈的效率,是因為分層相當于犧牲了一部分去中心化的特性。如果不進行分層,整個區(qū)塊鏈就是一個完全扁平的結構,就像大家熟知的公有鏈,每個節(jié)點都是對等的。做一次共識需要所有人來進行投票或者競爭,共識的節(jié)點就會非常多。如果我們把區(qū)塊鏈變成層次化,就可以讓共識的范圍限制在一小部分節(jié)點當中,共識的規(guī)模就會小很多。
比如在比特幣中,為了提升比特幣應用的效率,會在比特幣上構建第二層的網(wǎng)絡,這也是分層的一個思路。
騰訊云區(qū)塊鏈的分層方案在系統(tǒng)上主要分為兩個大的層面,上面是應用層,下面是治理層。
應用層可以構建大量平行的應用子鏈,應用子鏈可以實現(xiàn)不同的業(yè)務,也可以用不同的治理模式。子鏈只需要聚焦于自己的區(qū)塊鏈應用,并提供相關的 API 就可以,不需要關心復雜的跨鏈流程如何實現(xiàn),也不需要關心和其他鏈互相通信的時候應該如何實現(xiàn),因為跨鏈的流程是由治理層負責實現(xiàn)的。
治理層為應用層的跨鏈協(xié)作或者是數(shù)據(jù)流通提供了底層的支持,功能主要分成兩部分:跨鏈的事務管理和跨鏈的身份管理。
跨鏈的事務管理需要管理一筆交易在多個不同的鏈之間的執(zhí)行狀態(tài),以保證數(shù)據(jù)的一致性。也就是說交易在多個區(qū)塊鏈上要么全部執(zhí)行成功,要么全部都失敗,從而確保數(shù)據(jù)的一致性。
和傳統(tǒng)的分布式事務不同的一點,跨鏈事務處理的過程需要保證去中心化,因為是基于區(qū)塊鏈來管理事務,所以稱為事務鏈。
這里采用了兩階段的去中心化的跨鏈互操作是可以實現(xiàn)靈活的,并且可以大規(guī)模跨鏈互聯(lián)的區(qū)塊鏈系統(tǒng)。
最下面是跨鏈的身份管理,為區(qū)塊鏈的上層應用提供一個可信的身份服務,我們稱之為身份鏈,用于管理子鏈的身份以及用戶的身份。
子鏈的身份就是上層應用子鏈的身份,應用子鏈如果需要與其他平行的子鏈進行跨鏈操作,必須先在身份鏈上注冊自己的身份。這個身份中包含子鏈對外公開的一些資源管理 API,以便實現(xiàn)基于身份的服務發(fā)現(xiàn)。
所以身份鏈相當于一個公開的通訊錄,管理了各類的身份信息。
身份信息包含兩類,第一個是區(qū)塊鏈應用的用戶身份,身份鏈為上層的所有子鏈都頒發(fā)了一個統(tǒng)一的身份,從而使子鏈可以驗證其他子鏈的用戶身份。有了身份鏈,我們就可以打通數(shù)據(jù)的擁有者、管理者以及訪問者不同權限間的驗證流程,為安全的跨鏈互通提供了信任的基礎。
在聯(lián)盟鏈中,身份是信任的基石,基本上所有的授權驗證都是基于身份實現(xiàn),一個統(tǒng)一的身份系統(tǒng)是跨鏈的關鍵。
身份信息主要包含以下幾類:
身份標識符(ID):作為該身份的唯一識別碼;
身份類型(Type):分為個人、設備、機構、應用子鏈幾大類;
身份公鑰:該身份對應的非對稱加密公鑰,用于驗簽(私鑰由身份擁有者私有);
身份頒發(fā)簽名:由簽發(fā)機構/聯(lián)盟對該身份的簽名;
身份服務:記錄該身份的服務地址、API 等信息,按身份類型不同可分為「機構與應用子鏈」和「個人」。
這里面最關鍵的就是身份服務,它記錄了身份關聯(lián)的網(wǎng)絡服務地址和 API 等信息。以個人身份為例,比如“我”現(xiàn)在在深圳,那么“我”的個人身份可能就是深圳某個應用鏈上對外的服務地址,把這些身份用區(qū)塊鏈的形式進行管理,就形成了身份鏈。
身份鏈相當于提供了一個統(tǒng)一的身份,類似于現(xiàn)實中的身份證,可以為跨鏈提供身份的注冊查詢還有驗證等功能。
有了身份鏈之后就可以走出跨鏈的第一步,基于身份的區(qū)塊鏈服務發(fā)現(xiàn)。身份鏈作為公開透明的身份注冊中心,提供對身份的信任背書,同時提供區(qū)塊鏈服務發(fā)現(xiàn)功能。
因為我們的身份里面包括對外服務的 API。比如說我有一個區(qū)塊鏈服務,我想提供我的服務就需要在區(qū)塊鏈上注冊我的身份,服務的調(diào)用者就可以在相關的鏈上查詢到我的服務并且發(fā)起調(diào)用。
以查詢某個個人數(shù)據(jù)為例。某個 APP 要使用某個個人 A 的身份去查詢他在身份鏈上的身份服務,身份鏈就會返回個人的身份服務,也就是應用子鏈的身份 ID,APP 拿到應用子鏈的身份 ID 后再去區(qū)塊鏈上查詢鏈的身份服務,找到后就相當于找到了對外的網(wǎng)絡服務地址,也就是查詢 API 或者更新 API。這樣 APP 就可以直接調(diào)用 API 訪問應用鏈,發(fā)起對個人用戶的數(shù)據(jù)查詢或者更新操作。
應用子鏈也可以審核操作權限并執(zhí)行,這就是服務發(fā)現(xiàn)的功能。有了服務發(fā)現(xiàn)后,可以實現(xiàn)跨鏈的查詢。
跨鏈查詢只相當于跨鏈里面的一小步,那么如何通過身份服務去實現(xiàn)跨鏈查詢?如圖所示,圖中共有四個角色
最底層是身份鏈,最上面是申請者 C 以及兩條應用鏈 A 和 B。這個場景表示的是一個用戶的數(shù)據(jù)托管在藍色的區(qū)塊鏈鏈 A 上,但現(xiàn)在用戶要授權區(qū)塊鏈 B 去查詢其托管在 A 上的數(shù)據(jù),這個場景中 A、B、C 都需要去身份鏈上查詢對方的身份信息并驗證對方的身份是否合法,以及請求或者授權的數(shù)字簽名是否正確。查到對方的服務地址之后,身份鏈就可以直接按照身份鏈上的服務地址去訪問對方。
通常來說身份鏈是由監(jiān)管部門管理的,比如發(fā)現(xiàn)某個身份有問題后,監(jiān)管部門可以對其進行冷凍,凍結之后身份信息就相當于失效了。
這里有一個細節(jié),比如應用鏈 B 要去查詢身份鏈,他還要查詢子鏈 A,就涉及到區(qū)塊鏈的跨鏈查詢功能。對于區(qū)塊鏈來說,如果要查詢一個鏈外的數(shù)據(jù),目前來說是不太好實現(xiàn)的,對于外部數(shù)據(jù)來說,它的有效性無法進行驗證,所以如果要查詢外部數(shù)據(jù),就要引入?yún)^(qū)塊鏈的預言機功能,這也是區(qū)塊鏈中比較新的技術方向。
預言機簡單來講就是區(qū)塊鏈外的信息寫入?yún)^(qū)塊鏈內(nèi)的一個機制。我們把區(qū)塊鏈分為兩類節(jié)點,一類是普通的區(qū)塊鏈點,另一類是預言機的節(jié)點。
預言機節(jié)點里面內(nèi)置了預言機的模塊,當我們要訪問鏈外數(shù)據(jù)時,通常是調(diào)用預言機的智能合約,讓預言機去代理讀取鏈外的數(shù)據(jù)寫入到區(qū)塊鏈,之后同步給其他的區(qū)塊鏈節(jié)點。其他的節(jié)點會把這個數(shù)據(jù)寫入到它的狀態(tài)數(shù)據(jù)庫中,隨后這些普通的智能合約就可以使用這些鏈外的數(shù)據(jù)。
區(qū)塊鏈不內(nèi)置預言機的功能,原因是大部分的智能合約并不能直接訪問外部的網(wǎng)絡資源。有一些智能合約會采用通用的編程語言,比如 Java、GO,是可以調(diào)用網(wǎng)絡接口訪問外部的,但通常不用智能合約直接去調(diào)用外部接口,因為并不太規(guī)范。所以通常會從預言機來統(tǒng)一管理網(wǎng)絡接口的調(diào)用,然后把外部的數(shù)據(jù)最終寫入?yún)^(qū)塊鏈。
用統(tǒng)一的方式管理一是比較規(guī)范,二是它能夠把鏈外數(shù)據(jù)直接寫到區(qū)塊里,寫入?yún)^(qū)塊里后這個外部數(shù)據(jù)才是可以追溯的。
(2)預言機簡化
這個流程比較復雜,對于聯(lián)盟鏈來說有更簡單的方案。因為聯(lián)盟鏈的節(jié)點規(guī)模并不太多,所以可以簡化智能合約的開發(fā)流程和部署的方式。
如下圖所示就是把驗證節(jié)點和預言機節(jié)點融合在一起,不會單獨區(qū)分哪些是驗證節(jié)點哪些是預言機節(jié)點,都是通用的區(qū)塊鏈節(jié)點。智能合約也不會去區(qū)分預言機的智能合約和普通的智能合約,而是把它當成一份統(tǒng)一的智能合約,這樣智能合約既可以像普通的智能合約一樣去訪問本地的狀態(tài)數(shù)據(jù)庫,也可以訪問預言機模塊。
智能合約的調(diào)用過程,也需要通過共識。整個數(shù)據(jù)流程簡化,如從外部調(diào)用智能合約,然后在智能合約的執(zhí)行過程中,如果碰到查詢外部數(shù)據(jù)的指令,就會把指令發(fā)到預言機的模塊上,預言機就會代理合約去外部查詢數(shù)據(jù),預言機得到外部數(shù)據(jù)后直接把數(shù)據(jù)返回給智能合約,智能合約就可以根據(jù)外部數(shù)據(jù)進行下一步的計算,把計算結果寫入到狀態(tài)數(shù)據(jù)庫。最終智能合約的處理結果以及預言機獲取的中間結果會被一起寫入到區(qū)塊鏈中。
這里有一個關鍵,在使用預言機后,要如何保證可信度?可信主要包含兩個方面,一個是去中心化,一個是數(shù)據(jù)可驗證。
去中心化就是可以部署多個不同組織的預言機節(jié)點,通過區(qū)塊鏈的方式保證去中心化。比如超過 2/3 的預言機節(jié)點都返回同樣的結果,我們就認為預言機獲取的結果是可信的。預言機的合約跟普通的預言機合約已經(jīng)融為一體,所以也是通過共識的。只是因為它讀取的是鏈外的數(shù)據(jù),所以本地沒有辦法對這個數(shù)據(jù)進行校驗,要依賴于預言機節(jié)點做背書,這是和本地數(shù)據(jù)不一樣的地方。
第二個是數(shù)據(jù)可驗證,也就是要如何驗證外部的數(shù)據(jù)是有效的。這個過程是預言機的鏈外數(shù)據(jù)也需要有其他節(jié)點驗證和提交,并且一定要寫入到區(qū)塊文件里面。
鏈外的數(shù)據(jù)就需要規(guī)范它的數(shù)據(jù)格式,才能保證它是可驗證的,第一就是鏈外的服務也要有身份,也就是證書,屬于哪個機構或者哪個鏈,數(shù)據(jù)的路徑訪問的是哪一個,鏈外服務可能或提供 URL 之類。除了數(shù)據(jù)的原始內(nèi)容還有數(shù)據(jù)的簽名,鏈外服務的身份私鑰對原始數(shù)據(jù)進行簽名,通過這個方式,保證預言機的可信。
預言機只能解決讀取鏈外數(shù)據(jù)的問題,但還有一個更復雜的就是跨鏈互操作。
跨鏈互操作不是簡單的讀取,而是意味著一筆交易可能同時要修改多個鏈上的數(shù)據(jù),相對于跨鏈查詢來說更為復雜。跨鏈互操作有三個挑戰(zhàn):
一致性
去中心化
跨鏈數(shù)據(jù)可驗證
現(xiàn)有的分布式系統(tǒng),解決一致性問題有比較成熟的方案,比如通過一個協(xié)調(diào)者來實現(xiàn)兩階段的提交。但問題在于區(qū)塊鏈要求去中心化,就需要有多個協(xié)調(diào)者做公證人,把公證人集合做成一個聯(lián)盟鏈,以聯(lián)盟鏈的方式做公證人的協(xié)調(diào)。
第三就是跨鏈數(shù)據(jù)的可驗證,對于區(qū)塊鏈來說有一個非常重要的一點就是數(shù)據(jù)可驗證,如果數(shù)據(jù)不可驗證,就跟通常使用的數(shù)據(jù)庫沒有區(qū)別了。
比如說在使用數(shù)據(jù)庫時,用客戶端提交了一個請求,數(shù)據(jù)庫返回給我們一個成功的響應。比如返回一個 OK,我們就認為這個數(shù)據(jù)在數(shù)據(jù)庫里已經(jīng)提交了,這種方式對于區(qū)塊鏈來說是不可驗證的,因為對區(qū)塊鏈來說,它覺得這個數(shù)據(jù)是不可信的。
所以采用去中心化的、兩階段的提交方式實現(xiàn)跨鏈互操作,并且保證事務的一致性。
我們會從事務鏈里面選取多個節(jié)點作為一個公證人集合,公證人去協(xié)調(diào)不同的子鏈之間的互操作。為了保證跨鏈過程的可驗證,公證人集合和子鏈之間需要相互驗證。
相互驗證包含兩個部分,一個是公證人會發(fā)起一個提案,就是兩邊都按我的提案去做,所以這個提案要求可以驗證。因為是公證人集合發(fā)起的,不是某一個公證人發(fā)起的,所以提案可驗證是為了防止公證人作惡,需要兩邊的應用子鏈對公證人的提案有效性進行驗證。
第二個方面就是提交的可驗證。提交可驗證是防止兩邊的應用子鏈作惡。它需要公證人集合去對應用子鏈交易的執(zhí)行結果進行驗證,要驗證交易所在的區(qū)塊有沒有確定提交,有沒有通過哈希的方式構成條鏈。
舉個例子,從鏈 A 有一個用戶要將 10 塊錢轉到鏈 B 上的某個用戶,中間是一個公證人集合。如果要完成交易,首先由公證人集合發(fā)起提案,提案就是在左邊這個鏈 A 減掉 10 塊錢,右面的鏈 B 加上 10 塊錢。發(fā)起的提案也是要在區(qū)塊鏈上進行的,區(qū)塊鏈 A 和 B 都要驗證這個提案是否有效。
假如公證人作惡,給鏈 A 發(fā)起的提案是鏈 A 減掉 10 塊錢,給 B 的提案是減掉 20 塊錢,就會出問題。這就是公證人作惡的情況,所以需要公證人也要去中心化,也要通過區(qū)塊鏈的方式來表決。另一方面就是公眾人集合也要驗證 A 和 B 是否真的提交了。
可驗證要如何實現(xiàn),就需要借助事務鏈。事務鏈是由公證人組成的聯(lián)盟鏈,管理跨鏈事務狀態(tài)、公開記錄跨鏈憑證。跨鏈的憑證分為兩部分,一個是應用子鏈的跨鏈憑證,另一個是公眾人的跨鏈憑證。
子鏈的跨鏈憑證包括子鏈的元信息以及交易提交憑證,子鏈的元信息需要預先公開在事務鏈上。在跨鏈過程中,公證人要驗證子鏈的區(qū)塊以及子鏈的交易憑證是否滿足子鏈的提交條件。公證人及公證人集合的跨鏈憑證,包括公證人提案的簽名策略,以及提案的簽名集合。
所以,需要公證人把提案集合事先要把已經(jīng)約定好的提案寫到事務鏈中。提案策略會規(guī)定一個有效的策略應該滿足什么樣的公證和條件,比如需要哪些公證人一起簽名才是一個有效的提案,或者滿足多少百分比的簽名才有效。
所以說在跨鏈的過程中,子鏈也會驗證公證人集合提案簽名是否滿足提案策略,這就是跨鏈互操作中數(shù)據(jù)可驗證的一些細節(jié)。
事務鏈作為一個去中心化的協(xié)調(diào)者,通過兩階段的方式去協(xié)調(diào)多個不同的應用鏈,來維護數(shù)據(jù)的一致性。
兩階段提交中的第一階段,就是預執(zhí)行。一筆交易肯定是由事務鏈中的智能合約發(fā)起,最終會觸發(fā)到應用鏈的智能合約去執(zhí)行,調(diào)用應用鏈。
應用鏈智能合約執(zhí)行的過程中,會調(diào)用智能合約的 API 去讀寫本地區(qū)塊鏈的賬本。當然,第一階段還只是預執(zhí)行,并不是真正的提交。
所以當應用鏈的合約要調(diào)用某個 API 去修改某個 key 的時候,需要對 key 先進行備份。原因是跨鏈的過程中,有可能提交成功了但另一個鏈沒辦法執(zhí)行成功,這就需要支持后續(xù)的回滾操作。
所以要事先進行備份,同時還要鎖定這個 key,以防在當前事務的執(zhí)行過程中,就被其他的事務進行了修改。也就是說當我這個事務還沒有提交時,其他的事務也修改了這個 key 的值,如果不鎖定的話,當要執(zhí)行回滾操作的時候就會出現(xiàn)問題。
所以我們會把它轉換成 4 個操作。第一個操作就是查詢 key 的原始值,第二步是鎖定這個 key,第三步是對 key 的原始值進行備份,最后一步是真正對 key 進行修改。
第二階段會出現(xiàn)兩種情況。如果應用鏈在預執(zhí)行階段比較順利,就會進入第二階段的確認分支。
確認分支比較簡單,會把第一階段預執(zhí)行的備份先刪掉,然后接解除key 的鎖定狀態(tài),完成交易。
如果有一條應用鏈的第一步失敗了,那么需要回滾其他鏈的預執(zhí)行操作。在回滾的過程中,需要找出 key 的備份。比如說先找回備份,重置key的數(shù)據(jù),最后再釋放鎖。
在這里會涉及到一個 key 的修改機制,會替換成 4 個讀寫操作。為了降低開銷,后面的三個操作都是寫操作,也就是可以把后面的三個寫操作批量提交。最終相當于是一次讀、一次寫,兩次請求。
加了兩階段后,為了防止跨鏈事務的邏輯侵入到應用合約的開發(fā)過程中,兩階段的執(zhí)行過程的細節(jié)是由系統(tǒng)完成的。比如合約要修改某個 key,它其實是不知道底層做了幾步操作。這樣做的好處是可以支持不同的異構的區(qū)塊鏈。
我們看到跨鏈的過程是很復雜的,整個跨鏈的流程也非常繁瑣,既要遵循去中心化,又要追求數(shù)據(jù)的可驗證,這就導致一次跨鏈事務的效率非常低。
事務鏈作為多個應用鏈之間的一個通信的中間人,即使在簡單的跨鏈操作中也會涉及到三條鏈,并且沒有任何一個節(jié)點能夠單獨進行決策。就好比三群人來開會,沒有一個人能夠拍板做決定。所以共識決策的過程非常低效。
為了找到一個在去中心化和效率之間兼顧的一個方案。在某些場景中,我們將跨鏈變成兩個流程。
第一個流程就是在線的流程,我們假設節(jié)點是可信的,不會有節(jié)點作惡,我們就可以像傳統(tǒng)的中心化系統(tǒng)一樣進行通信。比如在每個鏈中找出一個代理,鏈與鏈之間的通信變成兩個代理間的通信。
在線的流程中,任何的交付都需要附帶憑證。不管是做了一個響應或者發(fā)起一個請求,都會有自己的數(shù)字簽名,同時還有數(shù)據(jù)在提交過程中可驗證的數(shù)據(jù)結構。雖然為了簡化流程不會實時進行驗證,但會在第二部分的離線流程中,對在線流程中產(chǎn)生的各種憑證進行校驗。因為是離線的,所以對效率不會造成影響。
在追求效率的場景下,可以利用聯(lián)盟鏈實名的特點,把跨鏈的流程分成在線和離線兩部分,把一些復雜的東西放到離線的對賬流程去進行。
除了上述提到的可擴展性跨鏈互聯(lián),還有一些比較重要的區(qū)塊鏈技術。
第一個就是鏈上鏈下協(xié)同。區(qū)塊鏈為了安全可信,犧牲了一定的效率。這種低效的處理方式如果想把一個業(yè)務完全放到區(qū)塊鏈上,完全閉環(huán)的解決,場景是有限的。區(qū)塊鏈只能解決鏈上數(shù)據(jù)的可信,但在現(xiàn)實世界肯定需要考慮到鏈上鏈下數(shù)據(jù)的協(xié)同。比如要如何保證現(xiàn)實世界的數(shù)據(jù)映射到鏈上,并且是可信的。
比如說基于可信硬件的方法,就是先在鏈下把數(shù)據(jù)進行預處理,處理完之后再上鏈。也可以借助一些可信的系統(tǒng)進行背書,這都是鏈上鏈下協(xié)同相關的一些技術。
第二個就是隱私保護。區(qū)塊鏈為跨組織的數(shù)據(jù)共享協(xié)作帶來了便利,相對于中心化的互聯(lián)網(wǎng)業(yè)務,區(qū)塊鏈在可靠性和隱私性上面會面臨更大的挑戰(zhàn)。因為原來的數(shù)據(jù)只要在內(nèi)部訪問就可以了,現(xiàn)在可能要公開給其他聯(lián)盟鏈中的成員,就會出現(xiàn)很多數(shù)學方法,比如像同臺加密和零知識證明相關的技術。
但復雜的計算需要借助可信的硬件來實現(xiàn)。可信硬件的原理是把我們受保護的一些邏輯運行在可信的硬件模塊上,這就要求一定要相信 硬件是可信的。對外部來說是無法對運行邏輯和內(nèi)存中的數(shù)據(jù)進行窺探或者篡改。
第三就是領域特定語言的智能合約。智能合約其實是一個多方約定的規(guī)則或者合同,本質(zhì)上是越簡潔越好。
簡潔一方面意味著代碼的 bug 少,另一方面對合約進行審計的時候也簡單。合約不像普通的程序,它會給更多的人看,并且不同的組織和公司都要共同審計它是否安全。所以在現(xiàn)實的應用中,會碰到幾百行、幾千行的智能合約,這個邏輯就非常復雜,對審計人員的技術背景要求也較高。
所以以后有可能會出現(xiàn)針對特定場景的智能合約。因為針對特定場景,開發(fā)的部分就會比較少,審計難度和 bug 方面都會有比較大的改善。
本文鏈接:http://www.tebozhan.com/showinfo-40-308-0.html深度剖析騰訊云區(qū)塊鏈的數(shù)據(jù)管理模式
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 人,是新平臺 Web3