TW202040964A - 更新區塊鏈世界狀態默克爾派特裡夏字典樹子樹 - Google Patents
更新區塊鏈世界狀態默克爾派特裡夏字典樹子樹 Download PDFInfo
- Publication number
- TW202040964A TW202040964A TW108143888A TW108143888A TW202040964A TW 202040964 A TW202040964 A TW 202040964A TW 108143888 A TW108143888 A TW 108143888A TW 108143888 A TW108143888 A TW 108143888A TW 202040964 A TW202040964 A TW 202040964A
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- subtree
- current node
- world state
- nodes
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2372—Updates performed during offline database operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文實施方式包括通過多次疊代遍歷世界狀態MPT的子樹,在每次疊代,針對子樹的當前節點,執行以下操作之一:將世界狀態MPT的當前節點添加到更新樹,並且移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述擴展節點引用的節點,將世界狀態MPT的當前節點添加到更新樹,並且移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為子樹的當前節點的槽指向的節點,將更新樹發送到用於使用更新樹更新本機儲存的子樹的用戶端。
Description
本發明關於區塊鏈領域,尤其關於更新區塊鏈世界狀態默克爾派特裡夏字典樹子樹的方法。
分散式帳本系統(DLS),也可稱為共識網路及/或區塊鏈網路,使參與的實體能夠安全地且不可竄改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路的示例類型可以包括公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。公有區塊鏈網路向所有實體開放使用DLS,並開放參與共識處理。私有區塊鏈網路針對特定實體提供,該實體集中控制讀寫許可權。聯盟區塊鏈網路針對選擇的實體組群提供,該實體組群控制共識處理,並且聯盟區塊鏈網路包括存取控制層。
雜湊樹可以用於區塊鏈網路儲存資訊。例如,區塊鏈網路的世界狀態(例如,區塊鏈網路中的節點(帳戶)的狀態)可以被儲存在雜湊樹中。雜湊樹的示例包括維護區塊鏈網路內的所有節點(帳戶)的世界狀態的世界狀態默克爾派特裡夏字典樹(Merkle Patricia Trie,MPT)。隨著區塊鏈網路增長,世界狀態資訊相應地增加,從而產生複雜的資料密集型雜湊樹。
不是區塊鏈網路內的所有節點都需要維護區塊鏈的世界狀態。例如,參與將交易添加到區塊鏈網路內的區塊鏈的所謂的共識節點(全量用戶端)維護世界狀態雜湊樹以能夠參與共識處理。僅在區塊鏈網路內進行交易的其他節點(輕量用戶端)不需要維護世界狀態,或者甚至不需要知道世界狀態。然而,這樣的節點需要知道他們自己的狀態和在區塊鏈內與他們交易的其他節點的狀態(例如,局部狀態)。考慮到世界狀態雜湊樹的大小和複雜度以及輕量用戶端使用的設備的資源限制,需要資源和頻寬高效的資料結構以及用於更新資料結構以維護區塊鏈網路的局部狀態的處理。
本文實施方式包括一種電腦實現的方法,用於產生世界狀態默克爾派特裡夏字典樹MPT的子樹並更新該子樹。
在一些實施方式中,操作包括:區塊鏈網路的共識用戶端建立包括世界狀態MPT的根節點並且最初沒有其他節點的更新樹;該共識用戶端多次疊代地對子樹的至少一部分執行遍歷,在每次疊代中,針對該子樹的當前節點,執行以下操作之一:確定該子樹的當前節點和該世界狀態MPT的當前節點是葉節點並且他們的值不相等,作為回應,將該世界狀態MPT的當前節點添加到該更新樹,確定該子樹的該當前節點和該世界狀態MPT的該當前節點是擴展節點,作為回應,將該世界狀態MPT的該當前節點添加到該更新樹,並且移動至遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述擴展節點引用的節點,確定該子樹的當前節點和該世界狀態MPT的當前節點是分支節點,並且他們的值不相等,作為回應,將該世界狀態MPT的當前節點添加到更新樹,確定該子樹的當前節點和該世界狀態MPT的當前節點是分支節點,並且他們的值相等,作為回應,移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為該子樹的當前節點的槽指向的節點;由該共識用戶端將該子樹的該更新樹發送到該區塊鏈網路的非共識用戶端,該非共識用戶端使用該更新樹更新本機儲存的子樹以提供更新的子樹,該更新的子樹提供與該非共識用戶端關聯的帳戶的狀態。其他實施方式包括相應系統、設備和編碼在電腦存放裝置上被配置為執行方法的操作的電腦程式。
這些和其他實施方式均各可選地包括以下特徵中的一個或多個:操作還包括在至少一次疊代期間,查找世界狀態MPT中的相應節點,並提供搜尋路徑,該搜尋路徑中的一個或多個節點被標記為中間節點,並被標記為不在子樹中;回應於確定該子樹的當前節點和該世界狀態MPT的當前節點是分支節點,並且當前疊代是該子樹的當前節點被考慮的首次疊代,將該子樹的當前節點的值與該世界狀態MPT的當前節點的值進行比較;回應於確定該子樹的當前節點是根節點,終止遍歷;該本機儲存的子樹是通過一次或多次地用更新樹的節點替換該子樹的節點,並將該更新樹的節點插入該子樹來更新的;回應於共識用戶端從非共識用戶端接收到的請求而建立該更新樹;回應於確定該子樹的根節點的值與該世界狀態MPT的該根節點的值不同而建立該更新樹。
本文還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
本文還提供了用於實施本文提供的所述方法的系統。該系統包括一個或多個處理器以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
應瞭解,依據本文的方法可以包括本文描述的方面和特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的方面和特徵的組合,還包括所提供的方面和特徵的任意組合。
以下在圖式和描述中闡述了本文的一個或多個實施例的細節。根據描述和圖式以及申請專利範圍,本文的其他特徵和優點將顯而易見。
本文實施方式包括電腦實現的方法,用於產生世界狀態默克爾派特裡夏字典樹(MPT)的子樹並更新該子樹。在一些實施方式中,操作包括通過多次疊代遍歷世界狀態MPT的子樹,並且在每次疊代中,針對該子樹的當前節點,執行以下操作之一:將世界狀態MPT的當前節點添加到更新樹,將世界狀態MPT的當前節點添加到更新樹,並移動至遍歷的下一次疊代,其將子樹的當前節點設置為由擴展節點引用的節點;將世界狀態MPT的當前節點添加到更新樹,並移動至遍歷的下一次疊代,其將子樹的當前節點設置為子樹的當前節點的槽指向的節點。所述操作還包括將更新樹發送到用戶端以使得該用戶端使用更新樹更新本機儲存的子樹。
為本文實施方式提供進一步的背景,並且如上所述,分散式帳本系統(DLS),又可稱為共識網路(例如,由點對點節點組成)和區塊鏈網路,使參與的實體能夠安全地、不可竄改地進行交易和儲存資料。雖然“區塊鏈”一詞通常與特定網路及/或用例相關聯,但是本文所使用的區塊鏈一般指在不參考任何特定用例情況下的DLS。
區塊鏈是以交易不可竄改的方式儲存交易的資料結構。因此,區塊鏈上記錄的交易是可靠且可信的。區塊鏈包括一個或多個區塊。鏈中的每個區塊通過包含在鏈中緊鄰其之前的前一區塊的加密雜湊值(cryptographic hash)連結到該前一區塊。每個區塊還包括時間戳記、自身的加密雜湊值以及一個或多個交易。已經被區塊鏈網路中的節點驗證的交易經雜湊處理並編入默克爾(Merkle)樹中。Merkle樹是一種資料結構,在該樹的葉節點處的資料是經雜湊處理的,並且在該樹的每個分支中的所有雜湊值在該分支的根處連接。此過程沿著樹持續一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的雜湊值。聲稱是儲存在樹中的交易的雜湊值可以通過確定其是否與樹的結構一致而被快速驗證。區塊鏈是用於儲存交易的分散或至少部分分散的資料結構,而區塊鏈網路是通過廣播、驗證和確認交易等來管理、更新和維護一個或多個區塊鏈的計算節點的網路。
如上所述,區塊鏈網路可作為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路被提供。本文參考聯盟區塊鏈網路進一步詳細描述了本文實施方式。然而,可以預期,本文實施方式可以在任何適當類型的區塊鏈網路中實現。雖然本文描述的技術被指示為與聯盟區塊鏈網路相關,但是所述技術可以在進行改變或不做改變的情況之下用於其他類型的區塊鏈網路,包括公有區塊鏈網路和私有區塊鏈網路。
通常,聯盟區塊鏈網路在參與實體之間是私有的。在聯盟區塊鏈網路中,共識處理由可被稱為共識節點的授權的節點集控制,一個或多個共識節點由相應的實體(例如,金融機構、保險公司)操作。例如,由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體可以操作聯盟區塊鏈網路中的至少一個節點。
在一些示例中,在聯盟區塊鏈網路內,全域區塊鏈作為跨所有節點複製的區塊鏈被提供。也就是說,所有共識節點相對於全域區塊鏈處於完全共識狀態。為了達成共識(例如,同意向區塊鏈添加區塊),在聯盟區塊鏈網路內實施共識協定。示例共識協定包括但不限於實用拜占庭容錯(PBFT)、工作量證明(POW)、權益證明(POS)和許可權證明(POA)。
鑒於以上背景,本文進一步詳細描述了本文實施方式。更具體地,並且如本文進一步詳細描述的那樣,本文實施方式執行深度優先前序遍歷(depth-first pre-order traversal)以改進在MPT中定址的次序,並在遍歷過程中利用兩個帳戶節點(葉節點)之間的特定類型的節點,在本文被稱為過渡節點。
更詳細地,本文實施方式基於世界狀態MPT T0和位址清單L0提供世界狀態子樹,在本文被稱為子樹T2。本文實施方式通過首先從位址清單L0構建子樹(在本文稱為子樹T1),隨後在子樹T1中執行深度優先前序遍歷,避免針對每個位址從根節點至葉節點查找路徑。通過深度優先前序遍歷依次查找帳戶節點位址和過渡節點位址。如果在兩個帳戶節點之間存在過渡節點,則從第一帳戶節點返回到過渡節點,且從過渡節點查找至另一帳戶節點。以這種方式,對第二帳戶節點的搜尋不需要從根節點處開始,而從過渡節點處開始。
如本文還進一步詳細描述的,本文實施方式降低了對處理器和儲存的要求。例如,針對每個位址,保存了從根節點至其相應葉節點的路徑,併合並這些路徑中的重疊節點。更具體地,如果在兩個帳戶節點之間存在過渡節點,不儲存從根節點至每個帳戶節點(即,與帳戶位址對應的每個葉節點)的完整路徑,而是僅保存從過渡節點至下一帳戶節點的路徑。以這種方式,至多個帳戶節點的路徑被合併,這提高了效率並避免了由重疊路徑造成的操作和儲存浪費。
圖1描繪了可用於執行本文實施方式的環境100的示例。在一些示例中,示例環境100使實體能夠參與到聯盟區塊鏈網路102中。示例環境100包括電腦設備106、108以及網路110。在一些示例中,網路110包括局域網(LAN)、廣域網路(WAN)、網際網路或其組合,並且連接網路網站、使用者設備(例如,電腦設備)和後臺系統。在一些示例中,可以通過有線及/或無線通訊鏈路來存取網路110。在一些示例中,網路110使得與聯盟區塊鏈網路102通信以及在聯盟區塊鏈網路102內部進行通信成為可能。通常,網路110表示一個或多個通信網路。在一些情況下,電腦設備106、108可以是雲端運算系統(未示出)的節點,或者電腦設備106、108均可以是包括由網路互聯的多個電腦並用作分散式處理系統的獨立的雲端運算系統。
在所描繪的示例中,計算系統106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當的電腦設備120。示例電腦設備包括但不限於伺服器、桌上型電腦、筆記型電腦、平板電腦設備以及智慧型電話。在一些示例中,計算系統106、108承載一個或多個由電腦實施的服務,用於與聯盟區塊鏈網路102進行互動。例如,計算系統106可以承載第一實體(例如,參與者A)的由電腦實施的、例如交易管理系統的服務,第一實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他參與者)的交易。計算系統108可以承載第二實體(例如,參與者B)的由電腦實施的、例如交易管理系統的服務,例如,第二實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他參與者)的交易。在圖1的示例中,聯盟區塊鏈網路102被表示為節點的點對點網路(Peer-to-Peer network),且計算系統106、108分別提供參與聯盟區塊鏈網路102的第一實體和第二實體的節點。
圖2描繪了根據本文實施方式的概念架構200的示例。示例性概念架構200包括分別對應於參與者A、參與者B和參與者C的參與者系統202、204、206。每個參與者(例如,使用者、企業)參與到作為點對點網路提供的區塊鏈網路212中,該點對點網路包括多個節點214,至少一些節點將資訊不可竄改地記錄在區塊鏈216中。如圖中進一步詳述,儘管在區塊鏈網路212中示意性地描述了單個區塊鏈216,但是在區塊鏈網路212上提供並維護了區塊鏈216的多個副本。
在所描繪的示例中,每個參與者系統202、204、206分別由參與者A、參與者B和參與者C提供或代表參與者A、參與者B和參與者C,並且在區塊鏈網路中作為各自的節點214發揮作用。如這裡所使用的,節點通常是指連接到區塊鏈網路212且使相應的參與者能夠參與到區塊鏈網路中的個體系統(例如,電腦、伺服器)。在圖2的示例中,參與者對應於每個節點214。然而,可以預期,一個參與者可以操作區塊鏈網路212內的多個節點214,及/或多個參與者可以共用一個節點214。在一些示例中,參與者系統202、204、206使用協定(例如,超文字傳輸協定安全(HTTPS))及/或使用遠端程式呼叫(RPC)與區塊鏈網路212通信或通過區塊鏈網路212進行通信。
節點214可以在區塊鏈網路212內具有不同的參與程度。例如,一些節點214可以參與共識處理(例如,作為將區塊添加到區塊鏈216的礦工節點),而其他節點214不參與此共識處理。作為另一示例,一些節點214儲存區塊鏈216的完整的副本,而其他節點214僅儲存區塊鏈216的一部分的副本。例如,資料存取特權可以限制相應的參與者在其相應系統記憶體儲的區塊鏈資料。在圖2的示例中,參與者系統202、204儲存區塊鏈216的相應的完整副本216’、216’’。
參與區塊鏈網路的節點可被稱為用戶端,其以點對點方式與其他用戶端連接。如上所述,用戶端(節點)可不同程度地參與區塊鏈網路。例如,用戶端可包括全量用戶端和輕量用戶端。
在一些示例中,全量用戶端參與共識處理,並維護區塊鏈的狀態(例如,儲存並持續更新區塊鏈)。因此,每個全量用戶端下載並驗證被添加到區塊鏈的每個區塊,並因此下載並驗證了每個區塊中的每個交易。在圖2的示例中,參與者系統202、204可被視為全量用戶端(全量節點)。
在一些示例中,輕量用戶端(輕量節點)使使用者能夠存取區塊鏈系統並與區塊鏈系統互動。輕量用戶端不參與共識處理,並且不同步整個區塊鏈。因此,輕量用戶端可被稱為非共識節點。而輕量用戶端連接到一個或多個全量用戶端,輕量節點據此與區塊鏈互動。也就是說,輕量用戶端不是直接與區塊鏈互動,而是使用全量節點作為媒介與區塊鏈互動。因此,與全量用戶端相比,輕量用戶端需要明顯更少(例如,更小的數量級)的計算資源和儲存。然而,輕量用戶端可能不能夠存取區塊鏈的全部,而僅能夠查看或存取他們被授權存取的資料。在圖2的示例中,參與者系統206可被視為不具有區塊鏈216的副本的輕量用戶端。
區塊鏈(例如,圖2的區塊鏈216)由一系列區塊組成,每個區塊儲存資料。示例性資料封包括表示兩個或多個參與者之間的交易的交易資料。儘管本文通過非限制性示例使用了“交易”,但是可以預期,任何適當的資料(例如,文檔、影像、視訊、音訊)可以儲存在區塊鏈中。示例交易可以包括但不限於有價物(例如,資產、產品、服務、貨幣)的交換。交易資料不可竄改地儲存在區塊鏈中。也就是說,交易資料不能被改變。
在將交易資料儲存在區塊中之前,對交易資料進行雜湊處理。雜湊處理是將交易資料(作為字串資料提供)轉換為固定長度雜湊值(也作為字串資料提供)的處理。對雜湊值進行去雜湊處理(un-hash)以獲得交易資料是不可能的。雜湊處理可確保即使交易資料輕微改變也會導致完全不同的雜湊值。此外,如上所述,雜湊值具有固定長度。也就是說,無論交易資料的大小如何,雜湊值的長度都是固定的。雜湊處理包括通過雜湊函數處理交易資料以產生雜湊值。示例性雜湊函數包括但不限於輸出256位雜湊值的安全雜湊演算法(SHA)-256。
多個交易的交易資料被雜湊處理並儲存在區塊中。例如,提供兩個交易的雜湊值,並對它們本身進行雜湊處理以提供另一個雜湊值。重複此處理,直到針對所有要儲存在區塊中的交易提供單個雜湊值為止。該雜湊值被稱為默克爾(Merkle)根雜湊值,並儲存在區塊的頭中。任何交易中的更改都會導致其雜湊值發生變化,並最終導致Merkle根雜湊值發生變化。
通過共識協定將區塊添加到區塊鏈。區塊鏈網路中的多個節點參與共識協定,並執行將區塊添加到區塊鏈中的工作。這樣的節點被稱為共識節點。上文介紹的PBFT用作共識協定的非限制性示例。共識節點執行共識協定以將交易添加到區塊鏈。
更詳細地,共識節點產生區塊頭,對區塊中的所有交易進行雜湊處理,並將所得的雜湊值成對地組合以產生進一步的雜湊值,直到為區塊中的所有交易提供單個雜湊值(Merkle根雜湊值)。將此雜湊值添加到區塊頭中。共識節點還確定區塊鏈中最新的區塊(即添加到區塊鏈中的最後一個區塊)的雜湊值。共識節點還向區塊頭添加亂數(nonce)值和時間戳記。
通常,PBFT提供容忍拜占庭錯誤(例如,故障節點、惡意節點)的實用拜占庭機器狀態複製。這通過假設錯誤將在PBFT中發生(例如,假設存在獨立的節點失效及/或由共識節點發送的竄改消息)來實現。在PBFT中,在包括主共識節點和備共識節點的序列中提供共識節點。主共識節點週期性地改變,通過區塊鏈網路內的所有共識節點就區塊鏈網路的全域狀態達成一致,將交易添加到區塊鏈中。在該處理中,消息在共識節點之間傳輸,並且每個共識節點證明消息是從指定的對等節點接收的,並驗證在交易期間消息未竄改。
在PBFT中,共識協定是在所有共識節點始於相同的狀態的情況下分多個階段提供的。首先,用戶端向主共識節點發送呼叫服務操作(例如,在區塊鏈網路內執行交易)的請求。回應於接收到該請求,主共識節點將該請求組播到備共識節點。備共識節點執行該請求,並各自向用戶端發送恢復。用戶端等待直到收到臨限值數量的恢復。在一些示例中,用戶端等待接收到f+1個副本,其中,f為區塊鏈網路內可以容忍的錯誤共識節點的最大數量。最終結果是,足夠數量的共識節點就將記錄添加到區塊鏈的順序達成一致,該記錄被接受或者被拒絕。
在一些區塊鏈網路中,用加密處理來維護交易的隱私。例如,如果兩個節點想要保持交易隱私,以使得區塊鏈網路中的其他節點不能看出交易的細節,則這兩個節點可以對交易資料進行加密。示例加密處理包括但不限於對稱加密和非對稱加密。對稱加密是指使用單個密鑰既進行加密(從明文產生密文)又進行解密(從密文產生明文)的加密處理。對稱加密中,同一密鑰可用於多個節點,因此每個節點可對交易資料進行加密/解密。
非對稱加密使用密鑰對,每個密鑰對包括私鑰和公鑰,私鑰僅對於相應節點是已知的,而公鑰對於區塊鏈網路中的任何或所有其他節點是已知的。節點可以使用另一個節點的公鑰來加密資料,並且該加密的資料可以使用其他節點的私鑰被解密。例如,再次參考圖2,參與者A可以使用參與者B的公鑰來加密資料,並將加密資料發送給參與者B。參與者B可以使用其私鑰來解密該加密資料(密文)並提取原始資料(明文)。使用節點的公鑰加密的消息只能使用該節點的私鑰解密。
非對稱加密用於提供數位簽章,這使得交易中的參與者能夠確認交易中的其他參與者以及交易的有效性。例如,節點可以對消息進行數位簽章,而另一個節點可以根據參與者A的該數位簽章來確認該消息是由該節點發送的。數位簽章也可以用於確保消息在傳輸過程中不被竄改。例如,再次參考圖2,參與者A將向參與者B發送消息。參與者A產生該消息的雜湊值,然後使用其私鑰加密該雜湊值以提供為加密雜湊值的數位簽章。參與者A將該數位簽章附加到該消息上,並將該具有數位簽章的消息發送給參與者B。參與者B使用參與者A的公鑰解密該數位簽章,並提取雜湊值。參與者B對該消息進行雜湊處理並比較雜湊值。如果雜湊值相同,參與者B可以確認該消息確實來自參與者A,且未被竄改。
為了提供本文實施方式的進一步背景,雜湊樹(也被稱為默克爾樹(Merkle tree),如上所述)是節點以及節點間邊緣的樹。Merkle樹包括根節點、子節點和葉節點。在區塊鏈網路中,Merkle樹儲存雜湊值,如上所述。在Merkle樹中,每個葉節點被標記有資料塊的雜湊值,每個非葉節點被標記有其子節點的標記的雜湊值。Merkle樹實現對諸如區塊鏈的大數據結構的內容進行高效且安全的驗證。字典樹(trie,也被稱為首碼樹)是可用於儲存用字母表達的串的多叉樹結構。派特裡夏字典樹(Patricia trie)是字典樹的緊湊表示形式,其中作為唯一子節點的任何節點與其父節點合併。默克爾派特裡夏字典樹(也被稱為默克爾派特裡夏樹(Merkle Patricia trie(樹)或MPT)是包含Merkle樹和派特裡夏字典樹(首碼樹)兩者的樹,其繼承了兩者的優點。MPT提供了資料的快速比較和更新。
更詳細地,MPT可被描述為在256位元二進位段與任意長度二進位資料(位元組陣列)之間進行映射的永久易變的資料結構。在一些示例中,MPT可被實現為資料庫。MPT提供標識鍵值對的給定集的單個值,該值可以是32位元組序列或空位元組序列。例如,當從根節點至葉節點遍歷MPT時,相應鍵值對被提供。鍵通過遍歷被累積,從每個分支節點獲取單個四位元字(nibble,即單個十六進位數,hex digit),如下所述。在多個鍵共用同一首碼的示例中,或在具有唯一尾碼的單個鍵的情況下,提供最佳化節點。因此,當遍歷MPT時,可從其他兩個節點類型(擴展節點和葉節點)分別獲取多個四位元字。
在MPT中,葉節點被各自提供為兩項(two-item)結構。一項對應於鍵中沒有被鍵的累積和從根遍歷的分支所考慮的四位元字。使用十六進位首碼編碼,並且要求函數的第二參數為真(true)。本文進一步詳細描述葉節點和對應項的示例。擴展節點各自被提供為兩項結構。一項對應於大小大於1的一系列四位元字,所述一系列四位元字由至少兩個不同的鍵共用,所述至少兩個不同的鍵經過了四位元字鍵的累積和從根起被遍歷的分支。使用十六進位首碼編碼,並且要求函數的第二參數為假(false)。本文進一步詳細描述了擴展節點和對應項的示例。分支節點被提供為17項結構,前十六項分別與鍵在遍歷中在該點處的十六個可能的四位元字值中的每個(例如,十六進位值0-f)相對應。第17項用於分支節點為終止節點的情況,並且因此鍵在遍歷中在該點處終止。僅在必要時使用分支,可能不存在僅包含單個非零條目(entry)的分支節點。
在區塊鏈網路中,MPT實現密碼認證和性能平衡,並被用於世界狀態資料管理以管理使用者的帳戶狀態(和智慧合約)。在一些區塊鏈網路中,提供了用於通過所謂的世界狀態MPT查詢帳戶的狀態的介面。例如,可通過介面輸入帳戶位址,區塊鏈網路的節點(例如,全量用戶端)返回帳戶的狀態。當查詢大量帳戶的狀態時,介面被反復呼叫,每個帳戶的狀態被返回。可注意到返回的資料(例如,帳戶、狀態)是碎片化的並且不具有結構。雖然所述資料可在本機群組裝到狀態樹中,但是所產生的狀態樹與世界狀態MPT通常不一致。因此,失去了MPT自身的優勢,且操作和儲存的性能相對較低。
如本文進一步詳細描述的,本文實施方式執行深度優先前序遍歷以改進MPT樹中搜尋位址的次序,並在遍歷過程中利用兩個帳戶節點(葉節點)之間在本文被稱為過渡節點的特定類型的節點。更詳細地,本文實施方式基於世界狀態MPT T0和位址清單L0提供本文稱為子樹T2的世界狀態子樹。本文實施方式通過首先從位址清單L0構建本文稱為子樹T1的子樹,隨後在子樹T1中執行深度優先前序遍歷,避免針對每個位址從根節點起查找至葉節點的路徑。通過深度優先前序遍歷依次查找帳戶節點位址和過渡節點位址。如果在兩個帳戶節點之間存在過渡節點,則第一帳戶節點被返回到過渡節點,從該過渡節點起查找至另一帳戶節點。以這種方式,對第二帳戶節點的搜尋不需要在根節點處開始,而在過渡節點處開始。
如本文還進一步詳細描述的,本文實施方式降低了對處理器和儲存的要求。例如,針對每個位址,保存從根節點至其相應葉節點的路徑,併合並這些路徑中的重疊節點。更具體地,如果在兩個帳戶節點之間存在過渡節點的話,不是儲存從根節點至每個帳戶節點(即,與帳戶位址對應的每個葉節點)的完整路徑,而是僅保存從過渡節點至下一帳戶節點的路徑。以這種方式,至多個帳戶節點的路徑被合併,這提高了效率並避免了由重疊路徑造成的操作和儲存浪費。
在一些實施方式中,並且如本文進一步詳細描述的,給定世界狀態MPT中的帳戶位址的列表,提供該位址清單的子樹。本文實施方式採用深度優先前序遍歷演算法來改進MPT中的搜尋位址的次序並提高節點的效率。此外,本文實施方式提供包括兩個帳戶節點之間的過渡節點的節點遍歷處理。為避免由從根節點開始查找每個帳戶節點造成的搜尋浪費,實施方式包括保存從過渡節點至下一帳戶節點的路徑,解決根節點至兩個帳戶節點的路徑的重疊。如本文所述,本文實施方式提高了效率並且避免了由重疊路徑造成的操作和儲存浪費。
參照示例性世界狀態MPT進一步詳細描述了本文實施方式。示例性世界狀態MPT基於瑞士楚格的乙太坊基金會(The Ethereum Foundation of Zug, Switzerland)提供的乙太坊區塊鏈應用平臺。乙太坊提供被稱為乙太幣(ETH)的數位資產,乙太幣的最小單位被稱為偉(Wei,WEI)。然而,預期可以在任何適當區塊鏈網路和任何適當世界狀態MPT中實現本文實施方式。
圖3描繪了世界狀態MPT 300的示例。應理解圖3的示例性世界狀態MPT 300相對簡單化以說明容易地理解本文實施方式。然而,預期可以利用具有不同複雜度(例如,成百上千個節點)的MPT來實現本文實施方式。在圖3的示例中,MPT 300包括根節點302、分支節點304、306、擴展節點308和葉節點310、312、314。在一些示例中,葉節點310、312、314對應於區塊鏈網路內的相應帳戶(帳戶_1、帳戶_2、帳戶_3)。示例性世界狀態MPT 300還包括記錄鍵值對的表320。在圖3的示例中,表320包括分別對應於葉節點310、312、314的鍵值對322、324、326。
在一些示例中,圖3的世界狀態MPT 300由區塊鏈網路內的多個用戶端維護(例如,構建、更新)。例如,如上所述的全量用戶端可參與共識處理,並維護區塊鏈網路內的區塊鏈的世界狀態。這可包括,例如儲存區塊鏈的完整副本和世界狀態MPT 300。示例性全量用戶端包括如上所述的圖2的參與者系統202、204。
如上所述,區塊鏈網路可包括輕量用戶端,該輕量用戶端不維護區塊鏈的世界狀態,並且不儲存區塊鏈的完整副本和世界狀態MPT 300。作為非限制性示例,輕量用戶端可對區塊鏈網路內的帳戶的子集(例如,帳戶_1、帳戶_2)感興趣或僅可存取區塊鏈網路內的帳戶的子集,並且既不對其他帳戶(例如,帳戶_3)感興趣也不被授權存取其他帳戶。根據本文實施方式,輕量用戶端可維護與世界狀態MPT 300中提供的狀態一致的帳戶的子集的狀態。如本文進一步詳細描述的,全量用戶端產生MPT 300的子樹,該子樹表示世界狀態MPT 300的與帳戶的子集相關的部分。子樹被提供給輕量用戶端,並被週期性地更新以確保子樹的狀態與世界狀態MPT 300的狀態一致。
圖4描繪了根據本文實施方式的基於圖3的示例性世界狀態MPT 300產生的子樹400的示例。在圖4中,示例性子樹400包括分別對應於圖3的世界狀態MPT 300的根節點302、分支節點304、306、擴展節點308和葉節點310、312的根節點402、分支節點404、406、擴展節點408和葉節點410、412。葉節點410、412對應於相應用戶端(例如,輕量用戶端),該用戶端可以在區塊鏈網路內存取的相應帳戶(帳戶_1、帳戶_2)。示例性子樹400還包括記錄鍵值對的表420。在圖4的示例中,表420包括分別對應於葉節點410、412的鍵值對422、424。
圖4的子樹400不具有與圖3的世界狀態MPT 300的葉節點314對應的葉節點(例如,輕量用戶端不可存取由葉節點314表示的帳戶(帳戶_3))。而分支節點406包括第10項中的預留位置字元(*)。
根據本文實施方式,並且如本文詳細描述的,子樹400可由全量用戶端針對輕量用戶端產生。例如,輕量用戶端可將對子樹的請求提交給區塊鏈網路。回應於該請求,全量用戶端可基於輕量用戶端可存取的帳戶和由全量用戶端維護的世界狀態MPT 300產生子樹400。在一些示例中,來自輕量用戶端的請求包括對應於輕量用戶端可存取的帳戶的子集的位址清單。在一些示例中,由全量用戶端確定輕量用戶端可存取的帳戶的子集的位址清單,例如,在區塊鏈網路內使用輕量用戶端的唯一識別碼索引存取控制表(ACL)。如本文進一步詳細描述的,給定世界狀態MPT 300和位址清單,全量用戶端產生子樹400,並將子樹400返回到請求的輕量用戶端。
圖5A和圖5B描繪了可根據本文實施方式執行的過程500、550的示例。在一些實施方式中,可以使用利用一個或多個電腦設備執行的一個或多個電腦可執行程式來執行示例性處理500、550。例如,示例處理500、550可由全量用戶端執行以在區塊鏈網路內產生針對輕量用戶端的子樹。
具體參照圖5A,示例性處理500可被執行以從世界狀態MPT T0提供位址清單L1用於構建子樹T2。
提供世界狀態MPT T0和位址清單L0(502)。例如,世界狀態MPT T0(例如,圖3的世界狀態MPT 300)和位址清單L0被提供作為用於由全量用戶端產生位址清單的子樹的輸入(例如,全量用戶端儲存世界狀態MPT 300並接收位址清單)。在一些示例中,位址清單L0中的每個位址是MPT T0的葉節點(例如,MPT 300的葉節點310、312、314)的位址。可在位址清單L0內提供任何次序的帳戶位址。在一些實施方式中,並且如本文所進一步詳細描述的,深度優先前序遍歷演算法被用於在MPT樹T0的節點上進行搜尋。
從位址清單L0提供MPT樹T1(502)。在一些示例中,位址清單L0基於表示允許特定輕量用戶端存取的位址的列表的ACL。在一些示例中,位址清單L0提供將被包括在要建立的子樹T2中的位址。在一些示例中,位址清單L0中的每個位址的值被預設為空字串(例如,被稱為空(null)),並且T1中的每個節點的值可被計算。建立空位址清單L1(504)。從T1的根節點開始執行節點遍歷,並利用深度優先前序遍歷來遍歷T1(506)。如本文進一步詳細描述的,示例性處理500遞迴地將相應位址清單L0中的位址的節點以及他們之間的過渡節點記錄在位址清單L1中。
確定當前節點是否為葉節點(508)。如果當前節點是葉節點,則該節點對應於位址清單中的節點。該節點被標記(例如,為“帳戶節點”),並且該節點的位址和標記被保存到位址清單L1(510)。遍歷返回到葉節點的父節點(512)。如果當前節點不是葉節點,則確定當前節點是否為擴展節點(514)。如果當前節點是擴展節點,則節點的值指向對另一節點的引用,遍歷移動到被引用的節點(516)。
如果當前節點不是擴展節點,則當前節點是分支節點,並確定是否第一次至該節點(520)。如果不是第一次,則確定當前節點的所有子節點是否已被遍歷(522)。如果所有子節點已被遍歷,則遍歷返回至分支節點的父節點(512)。如果不是所有子節點都已被遍歷,則該節點被標記為“過渡節點”,並且該節點的位址和標記被保存在L1中(524),遍歷移動至還沒有被遍歷的子節點(526)。如果是第一次至當前節點(分支節點),則確定其值是否為空(例如,空字串,也被稱為空(null))(528)。如果其值為空,指示該節點對應於位址清單中的節點,則將該節點標記為“帳戶節點”,並且標記和位址被保存到L1(530),且遍歷移動到第一子節點(526)。
具體參照圖5B,示例性處理550可被執行以從位址清單L1和世界狀態MPT T0構建子樹T2。如本文所述,子樹T2包括與世界狀態MPT T0相同的根節點,通過遞迴地執行以下操作從根節點起構建子樹T2的剩餘部分。
子樹T2被提供有T0的根節點(552)。選擇位址清單L1中被標記為“帳戶節點”的第一位址(554)。在T0中查找相應節點(556)。因此,提供從T0中的根節點至相應節點的搜尋路徑。將路徑上的每個節點添加到T2(558)。選擇位址清單L1中的下一位址(560)。確定與該位址對應的節點是否被標記為“帳戶節點”(562)。如果節點被標記為“帳戶節點”,則在T0中的當前節點開始,在T0中查找對應於該位址的節點,將路徑上的每個節點添加到T2(564)。
如果節點沒有被標記為“帳戶節點”,則確定該節點是否被標記為“過渡節點”(566)。如果該節點被標記為“過渡節點”,則在T0中的當前節點開始,對應於該位址的節點被確定並被提供作為T0中的(新的)當前節點(568)。帳戶節點至過渡節點的路徑不被添加到T2。在遍歷了位址清單L1中的所有位址之後,所產生的T2為原始世界狀態MPT T0中的位址清單L0的子樹。
如上所述,本文實施方式還涉及基於世界狀態MPT更新子樹。更具體地,由於世界狀態記錄所有節點(例如,使用者、智慧合約)的帳戶狀態,因此記錄在世界狀態MPT中的資料量會很大。對於例如輕量用戶端的用戶端來說,大量資料是不相關的或不可存取的(例如,沒有存取權限)。因此,並且如上所述,一些用戶端可能僅願意本地維護世界狀態中與他們關聯的一些使用者(和智慧合約)的帳戶狀態。如本文所述,這通過向用戶端(輕量用戶端)提供用戶端本機儲存的世界狀態MPT的子樹來實現。
然而,由共識節點維護的世界狀態(例如,在世界狀態MPT中)被頻繁地更新。因此,由用戶端維護的子樹也需要被週期地更新。通常,更新子樹可包括將子樹的最新資料與共識節點的世界狀態MPT的資料同步。鑒於此,本文實施方式提供從更新的世界狀態MPT確定子樹的更新的狀態,用於以高效頻寬、高效處理器和高效記憶體的方式更新子樹。
圖6描繪了包括更新的圖3的示例性世界狀態MPT 300。在圖6的示例中,MPT 300包括根節點302、分支節點304、306、擴展節點308、葉節點310、312、314和葉節點318。在一些示例中,並且如上所述,葉節點310、312、314對應於區塊鏈網路內的相應帳戶(帳戶_1、帳戶_2、帳戶_3)。葉節點318對應於(例如,在圖3的世界狀態MPT 300被提供之後)被添加到區塊鏈網路的相應帳戶(帳戶_4)。示例表320記錄分別對應於葉節點310、312、314的鍵值對322、324、326和對應於葉節點318的鍵值對328。因此,對世界狀態MPT 300的更新包括葉節點318和相應的鍵值對328。
根據本文實施方式,並且如本文詳細描述的,可基於全量用戶端針對輕量用戶端提供的一組更新來更新圖4的子樹400。例如,輕量用戶端可將對更新的子樹的請求提交給區塊鏈網路。回應於該請求,全量用戶端可基於由全量用戶端維護的世界狀態MPT 300(例如,圖6中描述的)的當前狀態確定對子樹400的更新。在一些示例中,全量用戶端產生一組更新(例如,與新的子樹對照),並將該組更新發送到輕量用戶端。輕量用戶端處理該組更新以更新子樹400。
圖7描繪了根據本文實施方式的基於圖6的示例性世界狀態MPT 300的包括更新的圖4的子樹。圖7的示例性子樹400包括分別對應於圖3的世界狀態MPT 300的根節點302、分支節點304、306、擴展節點308和葉節點310、312的根節點402、分支節點404、406、擴展節點408、葉節點410、412。葉節點410、412對應於相應用戶端(例如,輕量用戶端),該用戶端可以在區塊鏈網路內存取的相應帳戶(帳戶_1、帳戶_2)。示例性子樹400還包括記錄鍵值對的表420。在圖7的示例中,表420包括分別對應於葉節點410、412、414的鍵值對422、424、426。
如圖4中那樣,圖7的子樹400不具有與圖3和圖6的世界狀態MPT 300的葉節點314對應的葉節點(例如,輕量用戶端不可存取由葉節點314表示的帳戶(帳戶_3))。而分支節點406包括第10項中的預留位置字元(*)。此外,圖7的子樹400不具有與圖6的世界狀態MPT 300的葉節點318對應的葉節點(例如,輕量用戶端不可存取由葉節點318表示的帳戶(帳戶_4))。而分支節點404包括第16項中的預留位置字元(*)。
圖8A和圖8B描繪了可根據本文實施方式執行的處理800、850的示例。在一些實施方式中,可使用利用一個或多個電腦設備執行的一個或多個電腦可執行程式來執行示例性處理800、850。例如,示例性處理800可由全量用戶端執行以在區塊鏈網路內產生針對輕量用戶端的子樹的一組更新,示例性處理850可由輕量用戶端執行以更新本地維護的子樹。
具體參照圖8A,示例性處理800可被執行以從世界狀態MPT T0和子樹T2提供一組更新(例如,被提供為更新的節點的子樹T2’)。如本文所述,示例性處理800進行子樹T2的節點(當前節點)與世界狀態MPT T0的相應節點(當前節點)之間的成對節點比較,並將世界狀態MPT T0的任何不同的節點添加到更新樹T2’。
確定T0的根節點的值和T2的根節點的值(802),並比較所述值(804)。如果所述值相同,則子樹T2與MPT T0處於一致狀態,並照此指示(806)。例如,可從全量用戶端向請求更新的輕量用戶端發送指示子樹T2與世界狀態一致的回應。如果所述值不同,則世界狀態MPT T0自從子樹T2被建立已被更新。因此,利用MPT T0的根節點建立更新樹T2’,當前節點從子樹T2的根節點移動到值被引用的節點(808)。也就是說,葉節點的值是儲存在資料庫(儲存鍵值對)中的一些資料的鍵。因此,葉節點的值引用資料庫中的真實資料。對於非葉節點,其值是另一節點的位址。也就是說,非葉節點指向(引用)另一節點。
確定是否第一次至子樹T2中的當前節點(810)。如果是第一次至子樹T2中的當前節點,則在MPT T0中查找對應於當前節點的位址的節點,並提供搜尋路徑(812)。在一些示例中,搜尋路徑是MPT T0內至相應節點的深度遍歷。確定在搜尋路徑中是否存在任何中間節點(814)。如果搜尋路徑中存在一個或多個中間節點,則將中間節點添加到樹T2’,並標籤(標記)每個中間節點以指示他們是子樹T2不包括的節點(816)。在一些示例中,如本文所述,標籤被提供為用於標記節點的中繼資料。
確定T2中的當前節點是否為葉節點(818)。如果T2中的當前節點是葉節點,則確定T0中的當前節點是否是葉節點(820)。如果T0中的當前節點是葉節點,則比較T2和T0的當前節點的值(822)。如果所述值不同,則將T0中的當前節點添加到T2’(824)。如果所述值相同,則T2中的當前節點移動到父節點(826)。以這種方式,僅如果T0的當前節點是與T2的當前節點不同類型的節點,或與T2的當前節點具有不同的值,則T0的當前節點被添加到更新樹T2’。如果T0的當前節點與T2的當前節點類型相同並且他們的值相同,則T0的當前節點不被添加到更新樹T2’。如果T2中的當前節點不是葉節點,則確定T2中的當前節點是否是擴展節點(828)。如果T2中的當前節點是擴展節點,則T0中的當前節點被添加到T2’,T2中的當前節點移動到槽(slot)指向的節點(830),示例性處理(800)返回迴圈。
如果T2中的當前節點不是擴展節點,則T2中的當前節點和T0中的當前節點均為分支節點。確定是否第一次考慮T2中的當前節點(832)。如果是第一次,則確定T2的當前節點的值與T0的當前節點的值是否不同(834)。如果所述值不同,則T0的當前節點被添加到更新樹T2’(824)。如果所述值相同,則確定T2中的當前節點中指向T2中的另一節點的下一槽,T2的當前節點移動到槽指向的節點。也就是說,不考慮不指向T2中的另一節點的任何槽,即使其值不為空也不考慮,這是因為這種槽指向T0中不在T2中的節點。相應地,示例處理800提供槽比較,從第一槽開始,直到遇到具有不同值的槽為止,T2中的當前節點移動到由該槽指向的節點(836),示例性處理800返回迴圈。
如果不是第一次至T2的當前節點(832),則確定是否已經比較了T2的當前節點與T0的當前節點之間的所有槽(838)。如果已比較了所有槽,則示例處理800返回迴圈以移動到父節點(826)。如果未比較所有槽,則疊代地將剩餘的非空的槽與T0的當前節點的槽進行比較,直到在剩餘的槽中遇到不同的值為止(840)。T0的當前節點移動到該槽指向的節點(842),示例性處理800返回迴圈。
隨著示例性處理800遞迴地執行,並且子樹T2的當前節點疊代地移動到父節點(826),確定父節點是否是根節點(844)。如果父節點不是根節點,則示例性處理800返回迴圈以考慮與MPT T0相關的子樹T2的(新的)當前節點。如果父節點是根節點,則返回更新樹T2’(846)。更新子樹由子樹T2的所有根據更新的世界狀態MPT T0而更新的節點組成。也就是說,更新樹T2’僅包括子樹T2的已根據更新的MPT T0而更新的那些節點。
具體參照圖8B,示例性處理850可被執行以基於從全量用戶端提供的更新樹T2’在輕量用戶端更新子樹T2。也就是說,全量用戶端僅需要將更新樹T2’發送到輕量用戶端,而不是全新建立的子樹。由於更新樹T2’僅包括更新的節點,相比於子樹T2,其為更小的資料結構。因此,通過僅發送更新樹T2’,節省了計算資源和頻寬(例如,相對於將全新子樹T2發送到輕量用戶端)。在一些示例中,一旦接收到更新樹T2’,輕量用戶端就執行示例性處理850以本地更新子樹T2。
從更新樹T1的根節點開始,示例性處理850執行深度優先遍歷以考慮每個節點(作為當前節點)。確定當前節點是否已被考慮(852)。如果當前節點已被考慮,則將下一節點選為當前節點(854),示例處理返回迴圈。如果當前節點還沒有被考慮,則確定當前節點是否具有標籤(被標記)(856)。如果當前節點不具有標籤,則確定位址在原始子樹T2中的節點,並用來自更新樹T2’的新節點替換舊節點(858)。如果當前節點具有標籤(即,其位址在原始子樹T2中不具有相應節點),則節點被插入子樹T2(860)。在遍歷更新樹T2’的所有節點之後,子樹T2被更新以反映更新的MPT T0的相關更新。
圖9描繪了根據本文實施方式的裝置900的模組的示例。裝置900可以是諸如聯盟區塊鏈網路的區塊鏈網路中被配置為產生世界狀態MPT的子樹的區塊鏈節點的示例實施方式。裝置900可對應於上述實施方式,裝置900可包括以下:產生器或產生單元902,用於提供世界狀態MPT和用於儲存區塊鏈網路內的節點的位址的位址清單;執行器或執行單元904,用於遍歷世界狀態MPT;建立器或建立單元906,用於產生世界狀態MPT的子樹;發送器或發送單元908,用於將世界狀態MPT的子樹發送到區塊鏈網路的非共識用戶端。
圖10描繪了根據本文實施方式的裝置1000的模組的示例。裝置1000可以是諸如聯盟區塊鏈網路的區塊鏈網路中被配置為更新世界狀態MPT的子樹的區塊鏈節點的示例實施方式。裝置1000可對應於上述實施方式,裝置1000可包括以下:產生器或產生單元1002,用於建立包括世界狀態MPT的根節點並且最初不具有其他節點的更新樹;執行器或執行單元1004,用於通過多次疊代遍歷子樹的至少一部分;發送器或發送單元1006,用於將子樹的更新樹發送到區塊鏈網路的非共識用戶端,非共識用戶端使用所述更新樹更新本機儲存的子樹以提供更新的子樹,該更新的子樹提供與非共識用戶端關聯的帳戶的狀態。
在先前實施例中示出的系統、裝置、模組或單元可以通過使用電腦晶片或實體來實現,或者可以通過使用具有特定功能的產品來實現。典型的實現設備是電腦,電腦可以是個人電腦、筆記型電腦、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或這些設備的任意組合。
對於裝置中各個單元的功能和角色的實施過程,可以參考前一方法中相應步驟的實施過程。為簡單起見,這裡省略了細節。
由於裝置實施基本上對應於方法實施,對於相關部分,可以參考方法實施中的相關描述。先前描述的裝置實施僅是示例。被描述為單獨部分的單元可以是或不是實體上分離的,並且顯示為單元的部分可以是或不是實體單元,可以位於一個位置,或者可以分佈在多個網路單元上。可以基於實際需求來選擇一些或所有模組,以實現本說明書方案的目標。本發明所屬技術領域具有通常知識者無需付出進步性勞動就能理解和實現本申請的實施方式。
再次參照圖9,其可被解釋為示出世界狀態MPT的子樹產生裝置的內部功能模組和結構。世界狀態MPT的子樹產生裝置可以是被配置為在區塊鏈網路內產生世界狀態MPT的子樹的區塊鏈節點的示例。再次參照圖10,其可以被解釋為示出世界狀態MPT的子樹更新裝置的內部功能模組和結構。世界狀態MPT的子樹更新裝置可以是被配置為在區塊鏈網路內更新世界狀態MPT的子樹的區塊鏈節點的示例。執行主體本質上可以是電子設備和包括以下的電子設備:一個或多個處理器;以及儲存一個或多個處理器的可執行指令的記憶體。
描述的主題的實施方式可單獨包括一個或多個特徵或者一個或多個特徵的組合。例如,在第一實施方式中,操作可被執行為:建立包括世界狀態MPT的根節點並且最初沒有其他節點的更新樹;通過多次疊代遍歷子樹的至少一部分,在每次疊代,針對子樹的當前節點,執行以下操作之一:確定子樹的當前節點和世界狀態MPT的當前節點是葉節點並且他們的值不相等,作為回應,將世界狀態MPT的當前節點添加到更新樹,確定子樹的當前節點和世界狀態MPT的當前節點是擴展節點,作為回應,將世界狀態MPT的當前節點添加到更新樹,並且移動遍歷的下一次疊代,該下一次疊代將子樹的當前節點設置為由擴展節點引用的節點,確定子樹的當前節點和世界狀態MPT的當前節點是分支節點,並且他們的值不相等,作為回應,將世界狀態MPT的當前節點添加到更新樹,確定子樹的當前節點和世界狀態MPT的當前節點是分支節點,並且他們的值相等,作為回應,移動至遍歷的下一次疊代,該下一次疊代將子樹的當前節點設置到子樹的當前節點的槽指向的節點;將子樹的更新樹發送到區塊鏈網路的非共識用戶端,非共識用戶端使用更新樹更新本機儲存的子樹以提供更新的子樹,該更新的子樹提供與非共識用戶端關聯的帳戶的狀態。
以上和描述的其他實施方式可均可選地包括以下特徵中的一個或多個:
在可與以下特徵中的任何特徵組合的第一特徵中,操作還包括:在至少一次疊代期間,查找世界狀態MPT中的相應節點,並提供搜尋路徑,搜尋路徑中的一個或多個節點被標記為中間節點,並被標記為不在子樹中。
在可與以下特徵中的任何特徵組合的第二特徵中,回應於確定子樹的當前節點和世界狀態MPT的當前節點是分支節點,並且當前疊代是子樹的當前節點被考慮的首次疊代,將子樹的當前節點的值與世界狀態MPT的當前節點的值進行比較。
在可與以下特徵中的任何特徵組合的第三特徵中,回應於確定子樹的當前節點是根節點,終止遍歷。
在可與以下特徵中的任何特徵組合的第四特徵中,本機儲存的子樹是通過一次或多次地用更新樹的節點替換子樹的節點,並將更新樹的節點插入子樹來更新的。
在可與以下特徵中的任何特徵組合的第五特徵中,回應於共識用戶端從非共識用戶端接收到的請求而建立更新樹。
在可與以上特徵中的任何特徵組合的第六特徵中,回應於確定子樹的根節點的值與世界狀態MPT的根節點的值不同而建立更新樹。
本文中描述的主題、動作以及操作的實施可以在數位電子電路、有形體現的電腦軟體或韌體、電腦硬體中實現,包括本說明書中公開的結構及其結構等同物,或者它們中的一個或多個的組合。本文中描述的主題的實施可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理裝置的操作。載體可以是有形的非暫態電腦儲存媒體。可選地或附加地,載體可以是人工產生的傳播信號,例如,機器產生的電、光或電磁信號,其被產生來編碼資訊用於傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或部分是機器可讀存放裝置、機器可讀儲存基板、隨機或串列存取記憶體設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播信號。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式設計處理器、電腦或者多處理器或電腦。資料處理裝置可以包括專用邏輯電路,例如FPGA(現場可程式設計閘陣列)、ASIC(特殊應用積體電路)或GPU(圖形處理單元)。除了硬體,該裝置還可以包括為電腦程式建立執行環境的碼,例如,構成處理器韌體、協定堆疊、資料庫管理系統、作業系統或者它們中的一個或多個的組合的碼。
電腦程式也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、腳本或碼,可以以任何形式的程式設計語言編寫,包括編譯或演繹性語言、說明或程式性語言;它可以配置為任何形式,包括作為獨立程式,或者作為模組、元件、引擎、副程式或適合在計算環境中執行的其他單元,該環境可包括由通信資料網路互聯的在一個或多個位置的一台或多台電腦。
電腦程式可以但非必須對應於檔案系統中的檔。電腦程式可以儲存在:保存其他程式或資料的檔的一部分中,例如,儲存在標記語言文檔中的一個或多個腳本;專用於所討論的程式的單個檔;或者多個協調檔,例如,儲存一個或多個模組、副程式或碼部分的多個檔。
本文描述的處理和邏輯流程可由一台或多台電腦執行一個或多個電腦程式進行,以進行通過對輸入資料進行運算並產生輸出的操作。處理和邏輯流程也可以由例如FPGA、ASIC、GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式設計電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用及/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體及/或隨機存取記憶體接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元以及用於儲存指令和資料的一個或多個記憶體設備。中央處理單元和記憶體可以補充有專用邏輯電路或整合在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接至一個或多個大型存放區設備,以從一個或多個大型存放區設備接收資料或將資料傳輸到一個或多個大型存放區設備。大型存放區設備可以是例如,磁片、磁光碟或光碟或固態驅動器。但是,電腦不需要具有這樣的設備。此外,電腦可以嵌入在另一個設備中,例如行動電話、個人數位助理(PDA)、移動音訊或視訊播放機、遊戲控制台、全球定位系統(GPS)接收器或例如通用序列匯流排(USB)快閃記憶體驅動器的可攜式存放裝置,僅舉幾例。
為了提供與使用者的互動,本文描述的主題的實施例可以在電腦上實現或配置為與該電腦通信,該電腦具有:顯示裝置,例如,LCD(液晶顯示器)監視器,用於向使用者顯示資訊;以及輸入裝置,使用者可以通過該輸入裝置向該電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸控板等的指標裝置。其他類型的設備也可用於提供與用戶的互動;例如,提供給使用者的回饋可以是任何形式的感官回饋,例如視覺回饋、聽覺回饋或觸覺回饋;並且可以接收來自使用者的任何形式的輸入,包括聲音、語音或觸覺輸入。此外,電腦可以通過向使用者使用的設備發送文檔和從使用者使用的設備接收文檔來與使用者互動;例如,通過向使用者設備上的web瀏覽器發送web頁面以回應從web瀏覽器收到的請求,或者通過與例如智慧型電話或電子平板電腦等的使用者設備上運行的應用程式(app)進行互動。此外,電腦可以通過向個人設備(例如,運行消息應用的智慧型手機)輪流發送簡訊或其他形式的消息並接收來自使用者的回應訊息來與使用者互動。
本文使用與系統、裝置和電腦程式元件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中促使該系統執行所述操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
雖然本文包含許多具體實施細節,但是這些不應被解釋為由申請專利範圍本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本說明書多個單獨實施例的上下文中描述的多個特定特徵也可以在單個實施例中的組合實現。相反,在單個實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且可以要求保護指向子組合或子組合的變體。
類似地,雖然以特定順序在附圖中描繪了操作並且在申請專利範圍中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有示出的操作。在一些情況下,多工和平行處理可能是有利的。此外,上述實施例中的各種系統模組和元件的劃分不應被理解為所有實施例中都要求如此劃分,而應當理解,所描述的程式元件和系統通常可以一起整合在單個軟體產品或者打包成多個軟體產品。
已經描述了主題的特定實施方式。其他實施方式在以下申請專利範圍的範圍內。例如,申請專利範圍中記載的動作可以以不同的循序執行並且仍然實現期望的結果。作為一個示例,附圖中描繪的處理無需要求所示的特定順序或次序來實現期望的結果。在一些情況下,多工和平行處理可能是有利的。
100:環境
102:聯盟區塊鏈網路
106:電腦設備
108:電腦設備
110:網路
120:電腦設備
200:概念架構
202:參與者系統
204:參與者系統
206:參與者系統
212:區塊鏈網路
214:節點
216:區塊鏈
300:世界狀態MPT
302:根節點
304:分支節點
306:分支節點
308:擴展節點
310:葉節點
312:葉節點
314:葉節點
320:表
322:鍵值對
324:鍵值對
326:鍵值對
328:鍵值對
400:子樹
402:根節點
404:分支節點
406:分支節點
408:擴展節點
410:葉節點
412:葉節點
420:表
422:鍵值對
424:鍵值對
500:過程
502:步驟
504:步驟
506:步驟
508:步驟
510:步驟
512:步驟
514:步驟
516:步驟
520:步驟
522:步驟
524:步驟
526:步驟
528:步驟
530:步驟
550:過程
552:步驟
554:步驟
556:步驟
558:步驟
560:步驟
562:步驟
564:步驟
566:步驟
568:步驟
800:處理
802:步驟
804:步驟
806:步驟
808:步驟
810:步驟
812:步驟
814:步驟
816:步驟
818:步驟
820:步驟
822:步驟
824:步驟
826:步驟
828:步驟
830:步驟
832:步驟
834:步驟
836:步驟
838:步驟
840:步驟
842:步驟
844:步驟
846:步驟
850:處理
852:步驟
854:步驟
856:步驟
858:步驟
860:步驟
900:裝置
902:產生器
904:執行器
906:建立器
908:發送器
1000:裝置
1002:產生器
1004:執行器
1006:發送器
216’:副本
216’’:副本
A:參與者
B:參與者
C:參與者
L0:位址清單
T0:世界狀態MPT
T1:子樹
T2:子樹
[圖1]描繪了可用於執行本文實施方式的環境的示例。
[圖2]描繪了根據本文實施方式的概念架構的示例。
[圖3]描繪了世界狀態默克爾派特裡夏字典樹(Merkle Patricia Trie,MPT)的示例。
[圖4]描繪了根據本文實施方式的基於圖3的示例性世界狀態MPT產生的子樹的示例。
[圖5A]和[圖5B]描繪了可根據本文實施方式執行的處理的示例。
[圖6]描繪了包括更新的圖3的示例世界狀態MPT。
[圖7]描繪了根據本文實施方式的基於圖6的示例性世界狀態MPT的包括更新的圖4的子樹。
[圖8A]和[圖8B]描繪了可根據本文實施方式執行的處理的示例。
[圖9]描繪了根據本文實施方式的裝置的模組的示例。
[圖10]描繪了根據本文實施方式的裝置的模組的示例。
各圖式中的相同圖式標記表示相同的元件。
400:子樹
402:根節點
404:分支節點
406:分支節點
408:擴展節點
410:葉節點
412:葉節點
420:表
422:鍵值對
424:鍵值對
Claims (21)
- 一種電腦實現的方法,所述方法用於更新區塊鏈網路內的世界狀態默克爾派特裡夏字典樹MPT的子樹,所述方法包括: 所述區塊鏈網路的共識用戶端建立包括所述世界狀態MPT的根節點並且最初沒有其他節點的更新樹; 所述共識用戶端通過多次疊代遍歷所述子樹的至少一部分,並且在每次疊代中,針對所述子樹的當前節點,執行以下操作之一: 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是葉節點並且他們的值不相等,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是擴展節點,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹,並且移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述擴展節點引用的節點, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且他們的值不相等,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且他們的值相等,且作為回應,並且移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述子樹的當前節點的槽指向的節點; 所述共識用戶端將所述子樹的所述更新樹發送到所述區塊鏈網路的非共識用戶端,所述非共識用戶端使用所述更新樹更新本機儲存的子樹以提供更新的子樹,所述更新的子樹提供與所述非共識用戶端關聯的帳戶的狀態。
- 如請求項1所述的方法,還包括: 在至少一次疊代期間,查找所述世界狀態MPT中的相應節點,並提供搜尋路徑,所述搜尋路徑中的一個或多個節點被標記為中間節點,並被標記為不在所述子樹中。
- 如請求項1所述的方法,其中,回應於確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且當前疊代是所述子樹的當前節點被考慮的首次疊代,將所述子樹的當前節點的值與所述世界狀態MPT的當前節點的值進行比較。
- 如請求項1所述的方法,其中,回應於確定所述子樹的當前節點是所述根節點,終止所述遍歷。
- 如請求項1所述的方法,其中,所述本機儲存的子樹是通過一次或多次地用所述更新樹的節點替換該子樹的節點,並將所述更新樹的節點插入該子樹來更新的。
- 如請求項1所述的方法,其中,回應於所述共識用戶端從所述非共識用戶端接收到的請求而建立所述更新樹。
- 如請求項1所述的方法,其中,回應於確定所述子樹的根節點的值與所述世界狀態MPT的所述根節點的值不同而建立所述更新樹。
- 一種耦接到一個或多個電腦且其上儲存有指令的非暫時性電腦可讀儲存媒體,所述指令能夠執行以更新區塊鏈網路內的世界狀態默克爾派特裡夏字典樹MPT的子樹,所述指令能夠由所述一個或多個電腦執行以實現以下操作: 所述區塊鏈網路的共識用戶端建立包括所述世界狀態MPT的根節點並且最初沒有其他節點的更新樹; 所述共識用戶端通過多次疊代遍歷所述子樹的至少一部分,並且在每次疊代中,針對所述子樹的當前節點,執行以下操作之一: 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是葉節點並且他們的值不相等,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是擴展節點,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹,並且移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述擴展節點引用的節點, 確定所述子樹的所述當前節點和所述世界狀態MPT的所述當前節點是分支節點,並且他們的值不相等,且作為回應,將所述世界狀態MPT的所述當前節點添加到所述更新樹, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且他們的值相等,且作為回應,移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述子樹的當前節點的槽指向的節點; 所述共識用戶端將所述子樹的所述更新樹發送到所述區塊鏈網路的非共識用戶端,所述非共識用戶端使用所述更新樹更新本機儲存的子樹以提供更新的子樹,所述更新的子樹提供與所述非共識用戶端關聯的帳戶的狀態。
- 如請求項8所述的電腦可讀儲存媒體,進一步配置有可由所述一個或多個電腦執行的指令以實現以下操作:在至少一次疊代期間,查找所述世界狀態MPT中的相應節點,並提供搜尋路徑,所述搜尋路徑中的一個或多個節點被標記為中間節點,並被標記為不在所述子樹中。
- 如請求項8所述的電腦可讀儲存媒體,其中,回應於確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且當前疊代是所述子樹的當前節點被考慮的首次疊代,將所述子樹的所述節點的值與所述世界狀態MPT的當前節點的值進行比較。
- 如請求項8所述的電腦可讀儲存媒體,其中,回應於確定所述子樹的當前節點是所述根節點,終止所述遍歷。
- 如請求項8所述的電腦可讀儲存媒體,其中,所述本機儲存的子樹是通過一次或多次地用所述更新樹的節點替換該子樹的節點,並將所述更新樹的節點插入該子樹來更新的。
- 如請求項8所述的電腦可讀儲存媒體,其中,回應於所述共識用戶端從所述非共識用戶端接收到的請求而建立所述更新樹。
- 如請求項8所述的電腦可讀儲存媒體,其中,回應於確定所述子樹的根節點的值與所述世界狀態MPT的所述根節點的值不同而建立所述更新樹。
- 一種系統,包括: 一個或多個電腦;以及 耦接到所述一個或多個電腦並儲存有指令的一個或多個電腦可讀記憶體,所述指令能夠執行以更新區塊鏈網路內的世界狀態默克爾派特裡夏字典樹MPT的子樹,所述指令能夠由所述一個或多個電腦執行所述指令以實現以下操作: 所述區塊鏈網路的共識用戶端建立包括所述世界狀態MPT的根節點並且最初沒有其他節點的更新樹; 所述共識用戶端通過多次疊代遍歷所述子樹的至少一部分,並且在每次疊代中,針對所述子樹的當前節點,執行以下操作之一: 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是葉節點並且他們的值不相等,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是擴展節點,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹,並且移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述擴展節點引用的節點, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且他們的值不相等,且作為回應,將所述世界狀態MPT的當前節點添加到所述更新樹, 確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且他們的值相等,且作為回應,移動至所述遍歷的下一次疊代,該下一次疊代將所述子樹的當前節點設置為所述子樹的當前節點的槽指向的節點; 由所述共識用戶端將所述子樹的所述更新樹發送到所述區塊鏈網路的非共識用戶端,所述非共識用戶端使用所述更新樹更新本機儲存的子樹以提供更新的子樹,所述更新的子樹提供與所述非共識用戶端關聯的帳戶的狀態。
- 如請求項15所述的系統,其中,所述一個或多個電腦可讀記憶體被進一步配置有能夠由所述一個或多個電腦執行的指令以實現以下操作:在至少一次疊代期間,查找所述世界狀態MPT中的相應節點,並提供搜尋路徑,所述搜尋路徑中的一個或多個節點被標記為中間節點,並被標記為不在所述子樹中。
- 如請求項15所述的系統,其中,回應於確定所述子樹的當前節點和所述世界狀態MPT的當前節點是分支節點,並且當前疊代是所述子樹的當前節點被考慮的首次疊代,將所述子樹的當前節點的值與所述世界狀態MPT的當前節點的值進行比較。
- 如請求項15所述的系統,其中,回應於確定所述子樹的當前節點是所述根節點,終止所述遍歷。
- 如請求項15所述的系統,其中,所述本機儲存的子樹是通過一次或多次地用所述更新樹的節點替換該子樹的節點,並將所述更新樹的節點插入該子樹來更新的。
- 如請求項15所述的系統,其中,回應於所述共識用戶端從所述非共識用戶端接收到的請求而建立所述更新樹。
- 如請求項15所述的系統,其中,回應於確定所述子樹的根節點的值與所述世界狀態MPT的所述根節點的值不同而建立所述更新樹。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/076812 WO2019101229A2 (en) | 2019-03-04 | 2019-03-04 | Updating blockchain world state merkle patricia trie subtree |
WOPCT/CN2019/076812 | 2019-03-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI706666B TWI706666B (zh) | 2020-10-01 |
TW202040964A true TW202040964A (zh) | 2020-11-01 |
Family
ID=66631222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108143888A TWI706666B (zh) | 2019-03-04 | 2019-12-02 | 更新區塊鏈世界狀態默克爾派特裡夏字典樹子樹 |
Country Status (10)
Country | Link |
---|---|
US (1) | US10691676B1 (zh) |
EP (1) | EP3593490A4 (zh) |
JP (1) | JP6830549B2 (zh) |
KR (1) | KR102322729B1 (zh) |
CN (1) | CN110800255B (zh) |
AU (1) | AU2019203849C1 (zh) |
CA (1) | CA3058225C (zh) |
SG (1) | SG11201908978UA (zh) |
TW (1) | TWI706666B (zh) |
WO (1) | WO2019101229A2 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11036720B2 (en) | 2019-06-28 | 2021-06-15 | Advanced New Technologies Co., Ltd. | Blockchain-based hierarchical data storage |
CN110300167B (zh) * | 2019-06-28 | 2020-07-31 | 京东数字科技控股有限公司 | 基于区块链的业务信息处理方法、设备及可读存储介质 |
US10789222B2 (en) | 2019-06-28 | 2020-09-29 | Alibaba Group Holding Limited | Blockchain-based hierarchical data storage |
CN110334154B (zh) * | 2019-06-28 | 2020-07-21 | 阿里巴巴集团控股有限公司 | 基于区块链的分级存储方法及装置、电子设备 |
US11113272B2 (en) | 2019-07-31 | 2021-09-07 | Advanced New Technologies Co., Ltd. | Method and apparatus for storing blockchain state data and electronic device |
CN112887421B (zh) * | 2019-07-31 | 2023-07-18 | 创新先进技术有限公司 | 区块链状态数据同步方法及装置、电子设备 |
US10956444B2 (en) | 2019-07-31 | 2021-03-23 | Advanced New Technologies Co., Ltd. | Block chain state data synchronization method, apparatus, and electronic device |
US11720526B2 (en) | 2019-11-12 | 2023-08-08 | ClearTrace Technologies, Inc. | Sustainable energy tracking system utilizing blockchain technology and Merkle tree hashing structure |
CN110928948B (zh) * | 2019-11-18 | 2021-08-13 | 天津大学 | 一种基于Hyperledger Fabric的数据高效共享方法 |
US11354198B2 (en) | 2019-11-19 | 2022-06-07 | International Business Machines Corporation | Snapshot for world state recovery |
CN111339191B (zh) * | 2020-02-20 | 2023-05-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
KR102176715B1 (ko) | 2020-03-03 | 2020-11-09 | 전운배 | 트라이 데이터 구조의 접근을 제어하는 방법 및 장치 |
CN111447216B (zh) * | 2020-03-25 | 2021-12-10 | 百度国际科技(深圳)有限公司 | 用于变更共识节点的方法和装置 |
CN111488606B (zh) * | 2020-04-08 | 2021-04-27 | 北京瑞策科技有限公司 | 基于业务数据区块链的数据共享方法及装置 |
CN111488608A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数据验证方法及装置 |
CN111522833B (zh) * | 2020-07-03 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的mpt树的更新方法、装置和电子设备 |
CN114258037B (zh) * | 2020-09-22 | 2024-04-12 | 华为技术有限公司 | 一种网络控制方法、装置及电子设备 |
KR102473672B1 (ko) * | 2020-10-20 | 2022-12-02 | 주식회사 커먼컴퓨터 | 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템 |
CN112235420B (zh) * | 2020-12-10 | 2021-04-02 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、系统及相关设备 |
CN112287034B (zh) * | 2020-12-24 | 2021-04-02 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
US11715950B2 (en) | 2021-01-29 | 2023-08-01 | ClearTrace Technologies, Inc. | Sustainable energy physical delivery tracking and verification of actual environmental impact |
CN112988910B (zh) * | 2021-05-07 | 2021-09-24 | 支付宝(杭州)信息技术有限公司 | 区块链数据存储方法及装置、电子设备 |
CN114153848A (zh) * | 2021-05-07 | 2022-03-08 | 支付宝(杭州)信息技术有限公司 | 区块链数据存储方法及装置、电子设备 |
CN113220685B (zh) * | 2021-05-11 | 2022-04-19 | 支付宝(杭州)信息技术有限公司 | 智能合约存储内容的遍历方法及装置、电子设备 |
CN114218232B (zh) * | 2022-02-21 | 2022-05-24 | 浙商银行股份有限公司 | 一种基于增量桶的世界状态分片存储方法及装置 |
CN115617818B (zh) * | 2022-12-15 | 2023-03-24 | 深圳市迈科龙电子有限公司 | 区块链中的mpt树批量更新方法、电子设备及存储介质 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764915B (zh) * | 2003-02-06 | 2012-01-25 | 捷讯研究有限公司 | 通过比较散列值同步数据库的设备及方法 |
US8156029B2 (en) * | 2005-02-24 | 2012-04-10 | Michael Gregory Szydlo | Process for verifiably communicating risk characteristics of an investment portfolio |
CA2509496A1 (en) * | 2005-06-06 | 2006-12-06 | 3618633 Canada Inc. | Search-enhanced trie-based syntactic pattern recognition of sequences |
GB2452760A (en) * | 2007-09-14 | 2009-03-18 | Data Connection Ltd | Storing and searching data in a database tree structure for use in data packet routing applications. |
US8868926B2 (en) * | 2012-04-06 | 2014-10-21 | Exablox Corporation | Cryptographic hash database |
US9619585B2 (en) * | 2013-06-11 | 2017-04-11 | InfiniteBio | Fast, scalable dictionary construction and maintenance |
US9495373B2 (en) * | 2013-12-06 | 2016-11-15 | International Business Machines Corporation | File versions within content addressable storage |
US9697220B2 (en) * | 2013-12-13 | 2017-07-04 | Oracle International Corporation | System and method for supporting elastic data metadata compression in a distributed data grid |
US11586680B2 (en) * | 2014-03-31 | 2023-02-21 | International Business Machines Corporation | Fast and accurate geomapping |
US20160103858A1 (en) * | 2014-10-13 | 2016-04-14 | Freescale Semiconductor, Inc. | Data management system comprising a trie data structure, integrated circuits and methods therefor |
US9870562B2 (en) * | 2015-05-21 | 2018-01-16 | Mastercard International Incorporated | Method and system for integration of market exchange and issuer processing for blockchain-based transactions |
US10366247B2 (en) * | 2015-06-02 | 2019-07-30 | ALTR Solutions, Inc. | Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data |
CN106657187A (zh) * | 2015-10-30 | 2017-05-10 | 南京中兴新软件有限责任公司 | 报文处理的方法及装置 |
US20170132621A1 (en) * | 2015-11-06 | 2017-05-11 | SWFL, Inc., d/b/a "Filament" | Systems and methods for autonomous device transacting |
US10693658B2 (en) * | 2016-02-12 | 2020-06-23 | Visa International Service Association | Methods and systems for using digital signatures to create trusted digital asset transfers |
EP3423999A1 (en) * | 2016-03-03 | 2019-01-09 | NEC Laboratories Europe GmbH | Method for managing data in a network of nodes |
US10046228B2 (en) * | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
US11128603B2 (en) * | 2016-09-30 | 2021-09-21 | Nec Corporation | Method and system for providing a transaction forwarding service in blockchain implementations |
US10938571B2 (en) * | 2016-10-26 | 2021-03-02 | Acronis International Gmbh | System and method for verification of data transferred among several data storages |
CN111917864B (zh) * | 2017-02-22 | 2023-08-22 | 创新先进技术有限公司 | 一种业务校验的方法及装置 |
US10832230B2 (en) * | 2017-04-04 | 2020-11-10 | International Business Machines Corporation | Scalable and distributed shared ledger transaction management |
US10387271B2 (en) * | 2017-05-10 | 2019-08-20 | Elastifile Ltd. | File system storage in cloud using data and metadata merkle trees |
AU2018278351A1 (en) * | 2017-06-01 | 2020-01-23 | Schvey, Inc. d/b/a/ Axoni | Distributed privately subspaced blockchain data structures with secure access restriction management |
US10833861B2 (en) * | 2017-11-28 | 2020-11-10 | International Business Machines Corporation | Protection of confidentiality, privacy and ownership assurance in a blockchain based decentralized identity management system |
US10783272B2 (en) * | 2017-12-08 | 2020-09-22 | Nec Corporation | Method and system of preserving privacy for usage of lightweight blockchain clients |
CN108197226A (zh) * | 2017-12-29 | 2018-06-22 | 山大地纬软件股份有限公司 | Mptc账户状态树以及mptc区块链快速检索方法 |
CN108282474B (zh) * | 2018-01-18 | 2020-04-17 | 山东大学 | 基于区块链的数字资产交易一致性的维护方法 |
US11016959B2 (en) * | 2018-01-31 | 2021-05-25 | Salesforce.Com, Inc. | Trie-based normalization of field values for matching |
US11449842B2 (en) * | 2018-02-23 | 2022-09-20 | Jpmorgan Chase Bank, N.A. | Systems and methods for private settlement of distributed ledger transactions |
CN108805565B (zh) * | 2018-05-17 | 2022-01-18 | 深圳前海微众银行股份有限公司 | 基于区块链的承诺存在性证明方法、设备及可读存储介质 |
TW202004626A (zh) * | 2018-05-18 | 2020-01-16 | 香港商泰德陽光有限公司 | 分散式金流稽核方法、裝置及系統 |
CN108711052B (zh) * | 2018-05-18 | 2021-04-30 | 电子科技大学 | 一种基于区块链的信息验证系统 |
CN109408551B (zh) * | 2018-08-06 | 2021-07-06 | 杭州复杂美科技有限公司 | 数据查询方法及系统、共识方法及系统、设备和存储介质 |
CN108985100B (zh) * | 2018-08-15 | 2022-02-25 | 百度在线网络技术(北京)有限公司 | 基于区块链的元素安全性证明方法、装置、设备和介质 |
CN109165224B (zh) * | 2018-08-24 | 2021-02-19 | 东北大学 | 一种在区块链数据库上针对关键字key的索引方法 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
-
2019
- 2019-03-04 WO PCT/CN2019/076812 patent/WO2019101229A2/en unknown
- 2019-03-04 KR KR1020197028794A patent/KR102322729B1/ko active IP Right Grant
- 2019-03-04 EP EP19725900.5A patent/EP3593490A4/en not_active Withdrawn
- 2019-03-04 CN CN201980003023.9A patent/CN110800255B/zh active Active
- 2019-03-04 JP JP2019553280A patent/JP6830549B2/ja active Active
- 2019-03-04 SG SG11201908978U patent/SG11201908978UA/en unknown
- 2019-03-04 AU AU2019203849A patent/AU2019203849C1/en active Active
- 2019-03-04 CA CA3058225A patent/CA3058225C/en active Active
- 2019-09-30 US US16/587,155 patent/US10691676B1/en active Active
- 2019-12-02 TW TW108143888A patent/TWI706666B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN110800255A (zh) | 2020-02-14 |
AU2019203849B2 (en) | 2020-12-10 |
CA3058225C (en) | 2022-04-12 |
CN110800255B (zh) | 2023-03-31 |
SG11201908978UA (en) | 2019-10-30 |
EP3593490A4 (en) | 2020-03-25 |
JP2020522149A (ja) | 2020-07-27 |
JP6830549B2 (ja) | 2021-02-17 |
TWI706666B (zh) | 2020-10-01 |
AU2019203849C1 (en) | 2021-04-29 |
AU2019203849A1 (en) | 2019-05-31 |
EP3593490A2 (en) | 2020-01-15 |
KR20200107772A (ko) | 2020-09-16 |
WO2019101229A3 (en) | 2019-12-26 |
WO2019101229A2 (en) | 2019-05-31 |
CA3058225A1 (en) | 2019-05-31 |
US10691676B1 (en) | 2020-06-23 |
KR102322729B1 (ko) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI706666B (zh) | 更新區塊鏈世界狀態默克爾派特裡夏字典樹子樹 | |
TWI720712B (zh) | 構建區塊鏈世界狀態默克爾帕特里夏字典樹子樹 | |
CN111448781B (zh) | 一种计算机实现的用于通信共享的区块链数据的方法 | |
TWI721691B (zh) | 用於隔離儲存在由區塊鏈網路維護的區塊鏈上的資料的電腦實現的方法、裝置及系統 | |
EP3669280B1 (en) | Shared blockchain data storage | |
CN111837115A (zh) | 共享的区块链数据存储 | |
US11119987B2 (en) | Shared blockchain data storage based on error correction code | |
CN110998633A (zh) | 在基于读写集模型的区块链技术中避免双花问题的方法和设备 |