TWI720712B - 構建區塊鏈世界狀態默克爾帕特里夏字典樹子樹 - Google Patents
構建區塊鏈世界狀態默克爾帕特里夏字典樹子樹 Download PDFInfo
- Publication number
- TWI720712B TWI720712B TW108143941A TW108143941A TWI720712B TW I720712 B TWI720712 B TW I720712B TW 108143941 A TW108143941 A TW 108143941A TW 108143941 A TW108143941 A TW 108143941A TW I720712 B TWI720712 B TW I720712B
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- subtree
- world state
- current node
- account
- 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/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- 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/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
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本文實施方式包括以多次迭代遍歷世界狀態MPT,在每次迭代中,針對世界狀態MPT的當前節點,執行以下操作之一:將當前節點標記為帳戶節點,並將該當前節點的位址儲存在位址列表中,確定該當前節點是擴展節點,並且移動至遍歷的下一次迭代,該下一次迭代將該當前節點設置為擴展節點引用的節點,將該當前節點標記為過渡節點,並將該當前節點的位址儲存在位址列表中;基於位址列表創建世界狀態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的節點對應的一個或多個子節點的位址儲存在位址列表中。
為本文實施方式提供進一步的背景,並且如上所述,分布式帳本系統(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的鍵值對422、424。
如圖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)迴環(loop back)。
如果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內的路徑,並將該路徑添加至子樹。
在可與以上特徵中的任何特徵組合的第六特徵中,遍歷包括深度優先前序遍歷。
本文中描述的主題、動作以及操作的實施可以在數位電子電路、有形體現的計算機軟體或韌體、計算機硬體中實現,包括本說明書中公開的結構及其結構等同物,或者它們中的一個或多個的組合。本文中描述的主題的實施可以實現為一個或多個計算機程式,例如,一個或多個計算機程式指令模組,編碼在計算機程式載體上,用於由資料處理裝置執行或控制資料處理裝置的操作。載體可以是有形的非暫態計算機儲存媒體。可選地或附加地,載體可以是人工生成的傳播信號,例如,機器生成的電、光或電磁信號,其被生成來編碼資訊用於傳輸到合適的接收器裝置以供資料處理裝置執行。計算機儲存媒體可以是或部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串行存取記憶體設備或它們中的一個或多個的組合。計算機儲存媒體不是傳播信號。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可編程處理器、計算機或者多處理器或計算機。資料處理裝置可以包括專用邏輯電路,例如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:區塊鏈
216’:副本
216”:副本
300:世界狀態默克爾帕特里夏字典樹
302:根節點
304:分支節點
306:分支節點
308:擴展節點
310:葉節點
312:葉節點
314:葉節點
318:葉節點
320:表
322:鍵值對
324:鍵值對
326:鍵值對
328:鍵值對
400:子樹
402:根節點
404:分支節點
406:分支節點
408:擴展節點
410:葉節點
412:葉節點
420:表
422:鍵值對
424:鍵值對
900:裝置
902:生成器
904:執行器
906:創建器
908:發送器
1000:裝置
1002:生成器
1004:執行器
1006:發送器
[圖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的該子樹發送到該區塊鏈網路的非共識客戶端,該子樹提供與該非共識客戶端關聯的帳戶的狀態。
- 如請求項1所述的方法,其中,反應於確定該當前節點是葉節點和缺少空值的分支節點之一,將該當前節點標記為帳戶節點。
- 如請求項1所述的方法,其中,反應於確定該當前節點是分支節點,並且該分支節點的非全部子節點已被遍歷,將該當前節點標記為過渡節點。
- 如請求項1所述的方法,其中,在將該當前節點標記為帳戶節點之後,該遍歷的下一次迭代的當前節點包括該帳戶節點的父節點。
- 如請求項1所述的方法,其中,在將該當前節點標記為帳戶節點之後,該遍歷的下一次迭代的當前節點包括該過渡節點的子節點。
- 如請求項1所述的方法,其中,基於該位址列表創建該世界狀態MPT的子樹至少部分地包括:針對該位址列表中被標記為帳戶節點的位址,確定該世界狀態MPT內的路徑,並將該路徑添加至該子樹。
- 如請求項1所述的方法,其中,該遍歷包括深度優先前序遍歷。
- 一種耦接到一個或多個計算機且其上儲存有指令的非暫時性計算機可讀儲存媒體,該指令能夠執行以提供區塊鏈網路內的世界狀態默克爾帕特里夏字典樹MPT的子樹,該指令能夠由該一個或多個計算機執行以實現以下操作:該區塊鏈網路的共識客戶端提供世界狀態MPT和用於 儲存該區塊鏈網路內的節點的位址的位址列表,該位址列表初始為空;該共識客戶端以多次迭代遍歷該世界狀態MPT的至少一部分,並且在每次迭代中,針對該世界狀態MPT的該至少一部分的當前節點,執行以下操作之一:將該當前節點標記為帳戶節點,並將該當前節點的位址儲存在該位址列表中,確定該當前節點是擴展節點,並且移動至該遍歷的下一次迭代,該下一次迭代將該當前節點設置為該擴展節點引用的節點,將該當前節點標記為過渡節點,並將該當前節點的位址儲存在該位址列表中;該共識客戶端基於該位址列表創建該世界狀態MPT的子樹,該子樹的根節點包括該世界狀態MPT的根節點,該子樹的與該世界狀態MPT的節點對應的一個或多個子節點的位址儲存在該位址列表中;該共識客戶端將該世界狀態MPT的該子樹發送到該區塊鏈網路的非共識客戶端,該子樹提供與該非共識客戶端關聯的帳戶的狀態。
- 如請求項8所述的計算機可讀儲存媒體,其中,反應於確定該當前節點是葉節點和缺少空值的分支節點之一,將該當前節點標記為帳戶節點。
- 如請求項8所述的計算機可讀儲存媒體,其中,反應於確定該當前節點是分支節點,並且該分 支節點的非全部子節點已被遍歷,將該當前節點標記為過渡節點。
- 如請求項8所述的計算機可讀儲存媒體,其中,在將該當前節點標記為帳戶節點之後,該遍歷的下一次迭代的當前節點包括該帳戶節點的父節點。
- 如請求項8所述的計算機可讀儲存媒體,其中,在將該當前節點標記為帳戶節點之後,該遍歷的下一次迭代的當前節點包括該過渡節點的子節點。
- 如請求項8所述的計算機可讀儲存媒體,其中,基於該位址列表創建該世界狀態MPT的子樹至少部分地包括:針對該位址列表中被標記為帳戶節點的位址,確定該世界狀態MPT內的路徑,並將該路徑添加至該子樹。
- 如請求項8所述的計算機可讀儲存媒體,其中,該遍歷包括深度優先前序遍歷。
- 一種計算機的系統,包括:一個或多個計算機;以及耦接到該一個或多個計算機並儲存有指令的一個或多個計算機可讀記憶體,該指令能夠執行以提供區塊鏈網路內的世界狀態默克爾帕特里夏字典樹MPT的子樹,該指令能夠由該一個或多個計算機執行該指令以實現以下操作:該區塊鏈網路的共識客戶端提供世界狀態MPT和用於儲存該區塊鏈網路內的節點的位址的位址列表,該位址列表初始為空; 該共識客戶端以多次迭代遍歷該世界狀態MPT的至少一部分,並且在每次迭代中,針對該世界狀態MPT的該至少一部分的當前節點,執行以下操作之一:將該當前節點標記為帳戶節點,並將該當前節點的位址儲存在該位址列表中,確定該當前節點是擴展節點,並且移動至該遍歷的下一次迭代,該下一次迭代將該當前節點設置為該擴展節點引用的節點,將該當前節點標記為過渡節點,並將該當前節點的位址儲存在該位址列表中;該共識客戶端基於該位址列表創建該世界狀態MPT的子樹,該子樹的根節點包括該世界狀態MPT的根節點,該子樹的與該世界狀態MPT的節點對應的一個或多個子節點的位址儲存在該位址列表中;及該共識客戶端將該世界狀態MPT的該子樹發送到該區塊鏈網路的非共識客戶端,該子樹提供與該非共識客戶端關聯的帳戶的狀態。
- 如請求項15所述的系統,其中,反應於確定該當前節點是葉節點和缺少空值的分支節點之一,將該當前節點標記為帳戶節點。
- 如請求項15所述的系統,其中,反應於確定該當前節點是分支節點,並且該分支節點的非全部子節點已被遍歷,將該當前節點標記為過渡節點。
- 如請求項15所述的系統,其中,在將該 當前節點標記為帳戶節點之後,該遍歷的下一次迭代的當前節點包括該帳戶節點的父節點。
- 如請求項15所述的系統,其中,在將該當前節點標記為帳戶節點之後,該遍歷的下一次迭代的當前節點包括該過渡節點的子節點。
- 如請求項15所述的系統,其中,基於該位址列表創建該世界狀態MPT的子樹至少部分地包括:針對該位址列表中被標記為帳戶節點的位址,確定該世界狀態MPT內的路徑,並將該路徑添加至該子樹。
- 如請求項15所述的系統,其中,該遍歷包括深度優先前序遍歷。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/076814 | 2019-03-04 | ||
PCT/CN2019/076814 WO2019101230A2 (en) | 2019-03-04 | 2019-03-04 | Constructing blockchain world state merkle patricia trie subtree |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202034246A TW202034246A (zh) | 2020-09-16 |
TWI720712B true TWI720712B (zh) | 2021-03-01 |
Family
ID=66631231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108143941A TWI720712B (zh) | 2019-03-04 | 2019-12-02 | 構建區塊鏈世界狀態默克爾帕特里夏字典樹子樹 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10691665B1 (zh) |
EP (1) | EP3596684A4 (zh) |
JP (1) | JP6865851B2 (zh) |
KR (1) | KR102277289B1 (zh) |
CN (1) | CN110800008B (zh) |
AU (1) | AU2019203850B2 (zh) |
CA (1) | CA3057738A1 (zh) |
SG (1) | SG11201908944WA (zh) |
TW (1) | TWI720712B (zh) |
WO (1) | WO2019101230A2 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11582042B2 (en) * | 2018-03-16 | 2023-02-14 | General Electric Company | Industrial data verification using secure, distributed ledger |
CN110046901B (zh) * | 2018-12-28 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 联盟链的可信度验证方法、系统、装置及设备 |
SG11201908944WA (en) | 2019-03-04 | 2019-10-30 | Alibaba Group Holding Ltd | Constructing blockchain world state merkle patricia trie subtree |
EP3970029A4 (en) * | 2019-06-04 | 2023-06-28 | Digital Asset (Switzerland) GmbH | Multi-user database system and method |
SG11202002017YA (en) | 2019-07-11 | 2020-04-29 | Alibaba Group Holding Ltd | Shared blockchain data storage |
EP3673620B8 (en) | 2019-07-11 | 2022-02-16 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage |
CN111837115A (zh) | 2019-07-11 | 2020-10-27 | 创新先进技术有限公司 | 共享的区块链数据存储 |
CN111902817B (zh) * | 2019-08-20 | 2024-04-09 | 创新先进技术有限公司 | 基于共享节点和纠错编码的区块链数据存储 |
CN110990410B (zh) * | 2019-09-20 | 2021-09-17 | 腾讯科技(深圳)有限公司 | 区块链中的信息查找方法、装置、存储介质和计算机设备 |
US11720526B2 (en) * | 2019-11-12 | 2023-08-08 | ClearTrace Technologies, Inc. | Sustainable energy tracking system utilizing blockchain technology and Merkle tree hashing structure |
CN111026806A (zh) * | 2019-11-14 | 2020-04-17 | 杭州复杂美科技有限公司 | 一种默克尔状态树同步方法、设备及存储介质 |
US11528146B1 (en) * | 2019-12-10 | 2022-12-13 | Hiro Systems Pbc | Fork table of an authenticated index data structure |
CN111209341B (zh) * | 2020-01-07 | 2023-03-14 | 北京众享比特科技有限公司 | 区块链的数据存储方法、装置、设备及介质 |
CN111339191B (zh) * | 2020-02-20 | 2023-05-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN111488349A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 基于业务数据区块链的数据查询方法及装置 |
SG11202102371QA (en) | 2020-04-15 | 2021-04-29 | Alipay Hangzhou Inf Tech Co Ltd | Distributed blockchain data storage under account model |
WO2020143853A2 (en) | 2020-04-20 | 2020-07-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Distributed blockchain data storage under account model |
CN113301002B (zh) * | 2020-04-24 | 2023-05-09 | 阿里巴巴集团控股有限公司 | 一种信息处理方法、装置、电子设备以及存储介质 |
CN111553669B (zh) * | 2020-04-28 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 一种交易路由方法、装置及计算机可读存储介质 |
CN111651300B (zh) * | 2020-06-05 | 2023-03-21 | 成都质数斯达克科技有限公司 | 一种区块链数据恢复方法、装置、设备及介质 |
EP3933638A1 (en) * | 2020-06-29 | 2022-01-05 | Siemens Aktiengesellschaft | Consensus method for a distributed database |
CN112511629B (zh) * | 2020-11-30 | 2022-11-11 | 上海简苏网络科技有限公司 | 一种mpt结构的账户树的数据压缩方法及系统 |
US11715950B2 (en) | 2021-01-29 | 2023-08-01 | ClearTrace Technologies, Inc. | Sustainable energy physical delivery tracking and verification of actual environmental impact |
US11743327B2 (en) * | 2021-02-05 | 2023-08-29 | International Business Machines Corporation | Topological ordering of blockchain associated proposals |
CN113220685B (zh) * | 2021-05-11 | 2022-04-19 | 支付宝(杭州)信息技术有限公司 | 智能合约存储内容的遍历方法及装置、电子设备 |
CN113435896B (zh) * | 2021-05-18 | 2022-05-31 | 腾讯科技(深圳)有限公司 | 一种交易验证方法、装置、设备及存储介质 |
CN113780779A (zh) * | 2021-08-31 | 2021-12-10 | 杭州协能科技股份有限公司 | 数据状态控制方法、系统及梯次电池数据状态控制方法 |
CN114218232B (zh) * | 2022-02-21 | 2022-05-24 | 浙商银行股份有限公司 | 一种基于增量桶的世界状态分片存储方法及装置 |
CN116701414A (zh) * | 2022-02-24 | 2023-09-05 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN114866567B (zh) * | 2022-05-26 | 2023-06-02 | 成都质数斯达克科技有限公司 | 一种抗容灾的多层次区块链网络区块同步方法和装置 |
CN115617818B (zh) * | 2022-12-15 | 2023-03-24 | 深圳市迈科龙电子有限公司 | 区块链中的mpt树批量更新方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786962A (zh) * | 2005-12-21 | 2006-06-14 | 中国科学院计算技术研究所 | 完美双数组trie树词典管理与检索方法 |
US20180097779A1 (en) * | 2016-09-30 | 2018-04-05 | Nec Europe Ltd. | Method and system for providing a transaction forwarding service in blockchain implementations |
US20180115428A1 (en) * | 2016-10-26 | 2018-04-26 | Acronis International Gmbh | System and method for verification of data transferred among several data storages |
CN108711052A (zh) * | 2018-05-18 | 2018-10-26 | 电子科技大学 | 一种基于区块链的信息验证系统 |
CN108846013A (zh) * | 2018-05-04 | 2018-11-20 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361093C (zh) * | 2004-12-07 | 2008-01-09 | 华为技术有限公司 | 一种处理器中使用缓存区的方法 |
US20130132547A1 (en) * | 2011-05-09 | 2013-05-23 | Respect Network Corporation | Apparatus and Method for Address Book Automation Over a Trust Network |
CN103404092B (zh) * | 2011-11-30 | 2015-11-25 | 华为技术有限公司 | 路由前缀存储方法、装置及路由地址查找方法、装置 |
US9619585B2 (en) * | 2013-06-11 | 2017-04-11 | InfiniteBio | Fast, scalable dictionary construction and maintenance |
US10264001B2 (en) * | 2015-08-12 | 2019-04-16 | Wizard Tower TechnoServices Ltd. | Method and system for network resource attack detection using a client identifier |
CN106657187A (zh) * | 2015-10-30 | 2017-05-10 | 南京中兴新软件有限责任公司 | 报文处理的方法及装置 |
WO2017148527A1 (en) * | 2016-03-03 | 2017-09-08 | Nec Europe Ltd. | Method for managing data in a network of nodes |
US10046228B2 (en) * | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
CN106126722B (zh) | 2016-06-30 | 2019-10-18 | 中国科学院计算技术研究所 | 一种基于验证的前缀混合树及设计方法 |
CN108197226A (zh) | 2017-12-29 | 2018-06-22 | 山大地纬软件股份有限公司 | Mptc账户状态树以及mptc区块链快速检索方法 |
CN108282474B (zh) | 2018-01-18 | 2020-04-17 | 山东大学 | 基于区块链的数字资产交易一致性的维护方法 |
CN108805565B (zh) * | 2018-05-17 | 2022-01-18 | 深圳前海微众银行股份有限公司 | 基于区块链的承诺存在性证明方法、设备及可读存储介质 |
SG11201908944WA (en) | 2019-03-04 | 2019-10-30 | Alibaba Group Holding Ltd | Constructing blockchain world state merkle patricia trie subtree |
-
2019
- 2019-03-04 SG SG11201908944W patent/SG11201908944WA/en unknown
- 2019-03-04 AU AU2019203850A patent/AU2019203850B2/en active Active
- 2019-03-04 JP JP2019553426A patent/JP6865851B2/ja active Active
- 2019-03-04 WO PCT/CN2019/076814 patent/WO2019101230A2/en unknown
- 2019-03-04 CA CA3057738A patent/CA3057738A1/en active Pending
- 2019-03-04 KR KR1020197028618A patent/KR102277289B1/ko active IP Right Grant
- 2019-03-04 CN CN201980003201.8A patent/CN110800008B/zh active Active
- 2019-03-04 EP EP19725904.7A patent/EP3596684A4/en not_active Ceased
- 2019-09-30 US US16/587,236 patent/US10691665B1/en active Active
- 2019-12-02 TW TW108143941A patent/TWI720712B/zh active
-
2020
- 2020-06-22 US US16/908,502 patent/US10929374B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786962A (zh) * | 2005-12-21 | 2006-06-14 | 中国科学院计算技术研究所 | 完美双数组trie树词典管理与检索方法 |
US20180097779A1 (en) * | 2016-09-30 | 2018-04-05 | Nec Europe Ltd. | Method and system for providing a transaction forwarding service in blockchain implementations |
US20180115428A1 (en) * | 2016-10-26 | 2018-04-26 | Acronis International Gmbh | System and method for verification of data transferred among several data storages |
CN108846013A (zh) * | 2018-05-04 | 2018-11-20 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
CN108711052A (zh) * | 2018-05-18 | 2018-10-26 | 电子科技大学 | 一种基于区块链的信息验证系统 |
Also Published As
Publication number | Publication date |
---|---|
US10929374B2 (en) | 2021-02-23 |
AU2019203850A1 (en) | 2019-05-31 |
CN110800008B (zh) | 2023-06-30 |
US20200320055A1 (en) | 2020-10-08 |
EP3596684A4 (en) | 2020-04-01 |
JP6865851B2 (ja) | 2021-04-28 |
WO2019101230A2 (en) | 2019-05-31 |
CN110800008A (zh) | 2020-02-14 |
KR20200107771A (ko) | 2020-09-16 |
US10691665B1 (en) | 2020-06-23 |
CA3057738A1 (en) | 2019-05-31 |
TW202034246A (zh) | 2020-09-16 |
EP3596684A2 (en) | 2020-01-22 |
KR102277289B1 (ko) | 2021-07-16 |
WO2019101230A3 (en) | 2019-12-26 |
AU2019203850B2 (en) | 2021-09-16 |
JP2020530213A (ja) | 2020-10-15 |
SG11201908944WA (en) | 2019-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI720712B (zh) | 構建區塊鏈世界狀態默克爾帕特里夏字典樹子樹 | |
TWI706666B (zh) | 更新區塊鏈世界狀態默克爾派特裡夏字典樹子樹 | |
US11270308B2 (en) | Shared blockchain data storage | |
EP3669280B1 (en) | Shared blockchain data storage | |
JP6892513B2 (ja) | 信頼できる実行環境に基づいたオフチェーンスマートコントラクトサービス | |
WO2019179538A2 (en) | Shared blockchain data storage | |
US11119987B2 (en) | Shared blockchain data storage based on error correction code | |
CN110998633A (zh) | 在基于读写集模型的区块链技术中避免双花问题的方法和设备 |