TWI742586B - 在區塊鏈上提供可遍歷金鑰值資料儲存的方法和設備 - Google Patents
在區塊鏈上提供可遍歷金鑰值資料儲存的方法和設備 Download PDFInfo
- Publication number
- TWI742586B TWI742586B TW109110466A TW109110466A TWI742586B TW I742586 B TWI742586 B TW I742586B TW 109110466 A TW109110466 A TW 109110466A TW 109110466 A TW109110466 A TW 109110466A TW I742586 B TWI742586 B TW I742586B
- Authority
- TW
- Taiwan
- Prior art keywords
- key
- index
- value pair
- value
- user
- Prior art date
Links
Images
Classifications
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
- G06F16/1837—Management specially adapted to peer-to-peer storage networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Automation & Control Theory (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Lock And Its Accessories (AREA)
Abstract
本文揭示了用於提供可遍歷金鑰值資料儲存的方法、設備和裝置,包括儲存在電腦可讀媒體上的電腦程式。所述方法之一包括:接收用以記錄在儲存系統上的第一使用者提供金鑰值對,所述第一使用者提供金鑰值對包括第一使用者提供金鑰和第一使用者提供值;向所述第一使用者提供金鑰值對分配第一索引;產生第一索引至金鑰金鑰值對,所述第一索引至金鑰金鑰值對包括所述第一索引的金鑰和包括所述第一使用者提供金鑰的值;產生第一金鑰至索引金鑰值對,所述第一金鑰至索引金鑰值對包括所述第一使用者提供金鑰的金鑰和包括所述第一索引的值;以及將所述第一使用者提供金鑰值對、所述第一索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對儲存在所述儲存系統上。
Description
本文總體上涉及電腦技術,更具體地,涉及用於在區塊鏈上提供可遍歷金鑰值資料儲存的方法和設備。
區塊鏈系統,也稱為分散式帳本系統(DLS)或共識系統,可以使參與的實體安全地且不可篡改地儲存資料。在不引用任何特定用例的情况下,區塊鏈系統可以包括任何DLS,並且可以被用於公有、私有和聯盟區塊鏈網路。公有區塊鏈網路對所有實體開放使用該系統並參與共識過程。私有區塊鏈網路為特定實體提供,該特定實體集中控制讀寫權限。聯盟區塊鏈網路為選擇的實體組群提供,該實體組群控制共識處理並包括存取控制層。
使用點對點(peer-to-peer,P2P)網路實現區塊鏈系統,其中節點例如在不需要固定的中央伺服器的情况下與彼此直接通信。P2P網路中的每個節點可以發起與P2P網路中的另一節點的通信。
區塊鏈系統維護一個或多個區塊鏈。區塊鏈是用於儲存諸如交易之類的資料的資料結構,其可以防止資料被惡意方篡改和操縱。區塊鏈系統可以將資料儲存為金鑰值對。每個金鑰值對可以包括一個金鑰和一個可以使用該金鑰檢索的值。例如,使用者的金融帳戶資訊可以作為金鑰值對儲存在區塊鏈系統上。金鑰值對可以包括作為金鑰的帳號和作為值的餘額。以這種方式,帳號可以用作檢索指示使用者的金融帳戶餘額的值的金鑰(key)。然而,如果使用者擁有儲存在區塊鏈系統上的多個金鑰值對,例如,如果使用者擁有多個金融帳戶,則區塊鏈系統可能難以遍歷所有這些金鑰值對。因此,需要一種提高遍歷儲存在區塊鏈系統上的金鑰值對的能力的方法。
在一個方面,一種電腦實現的用於提供可遍歷金鑰值資料儲存的方法包括:接收用以記錄在儲存系統上的第一使用者提供金鑰值對,所述第一使用者提供金鑰值對包括第一使用者提供金鑰和第一使用者提供值;向所述第一使用者提供金鑰值對分配第一索引;產生第一索引至金鑰(index-to-key)金鑰值對,所述第一索引至金鑰金鑰值對的金鑰包括所述第一索引且其值包括所述第一使用者提供金鑰;產生第一金鑰至索引(key-to-index)金鑰值對,所述第一金鑰至索引金鑰值對的金鑰包括所述第一使用者提供金鑰且其值包括所述第一索引;以及將所述第一使用者提供金鑰值對、所述第一索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對儲存在所述儲存系統上。
在另一個方面,一種用於提供可遍歷金鑰值資料儲存的設備包括:一個或多個處理器;以及耦接至所述一個或多個處理器且其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行,以接收用以記錄在儲存系統上的第一使用者提供金鑰值對,所述第一使用者提供金鑰值對包括第一使用者提供金鑰和第一使用者提供值;向所述第一使用者提供金鑰值對分配第一索引;產生第一索引至金鑰金鑰值對,所述第一索引至金鑰金鑰值對的金鑰包括所述第一索引且其值包括所述第一使用者提供金鑰的值;產生第一金鑰至索引金鑰值對,所述第一金鑰至索引金鑰值對的金鑰包括所述第一使用者提供金鑰且其值包括所述第一索引;以及將所述第一使用者提供金鑰值對、所述第一索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對儲存在所述儲存系統上。
在又一個方面,非暫態電腦可讀媒體具有儲存於其中的指令,所述指令當由設備的處理器執行時,促使所述設備執行用於提供可遍歷金鑰值資料儲存的方法。所述方法包括:接收用以記錄在儲存系統上的第一使用者提供金鑰值對,所述第一使用者提供金鑰值對包括第一使用者提供金鑰和第一使用者提供值;向所述第一使用者提供金鑰值對分配第一索引;產生第一索引至金鑰金鑰值對,所述第一索引至金鑰金鑰值對的金鑰包括所述第一索引且其值包括所述第一使用者提供金鑰;產生第一金鑰至索引金鑰值對,所述第一金鑰至索引金鑰值對的金鑰包括所述第一使用者提供金鑰且其值包括所述第一索引;以及將所述第一使用者提供金鑰值對、所述第一索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對儲存在所述儲存系統上。
本文的實施例提供了用於在區塊鏈上提供可遍歷金鑰值資料儲存的方法和設備。該方法和設備利用區塊鏈系統支援的金鑰值資料結構來提供可遍歷金鑰值資料儲存解決方案。這些方法和設備還支援金鑰值資料操作,例如“get”、“set”、“delete”和“traverse”。在一些實施例中,可遍歷金鑰值資料儲存解決方案可以被提供為部署在區塊鏈系統上的函式庫,從而允許使用者透過呼叫函式庫中提供的函式來利用該可遍歷金鑰值資料儲存解決方案。在一些實施例中,可以將可遍歷金鑰值資料儲存解決方案嵌入到諸如智慧合約等的程式中,該程式經編寫用作在區塊鏈系統上執行各種類型的交易。
本文中揭示的實施例具有一個或多個技術效果。在一些實施例中,所述方法和設備利用區塊鏈系統支援的金鑰值資料結構來提供可遍歷金鑰值資料儲存解決方案。這提高了金鑰值資料結構的可用性。在一些實施例中,所述方法和設備利用金鑰值資料結構來定義多個金鑰值對之間的關係。這使金鑰值資料結構能夠跟蹤儲存在區塊鏈上的金鑰值對之間的某些類型的關係。在一些實施例中,所述方法和設備支援在諸如智慧合約等的程式中使用可遍歷金鑰值資料儲存解決方案。這使區塊鏈系統更具使用者友善性,並可以有效地遍歷儲存在區塊鏈系統上的金鑰值對。在實際中,所述方法和設備允許區塊鏈系統使用金鑰值資料結構來支援諸如“traverse”、“get”、“set”和“delete”等的資料操作。
區塊鏈是以交易不可篡改並隨後可被驗證的方式儲存資料(例如,交易)的資料結構。區塊鏈包括一個或多個區塊。每個區塊透過包括區塊鏈中緊鄰其之前的前一區塊的加密哈希值(cryptographic hash)鏈接到該前一區塊。每個區塊還可以包括時間戳記、其自身的加密哈希值以及一個或多個交易。通常已經被區塊鏈系統的節點驗證的交易可以經哈希處理並編入例如默克爾(Merkle)樹的資料結構。在Merkle樹中,樹的葉節點處的資料是經哈希處理的,並且在該樹的每個分支中的所有哈希值在該分支的根處級聯(concatenate)。此處理沿著樹持續一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的哈希值。聲稱是儲存在樹中的交易的哈希值可以透過確定其是否與樹的結構一致而被快速驗證。
區塊鏈系統包括管理、更新和維護一個或多個區塊鏈的計算節點的網路。網路可以是公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路。例如,諸如數百、數千或甚至數百萬個實體的許多實體可以在公有區塊鏈網路中操作,並且每個實體操作該公有區塊鏈網路中的至少一個節點。因此,公有區塊鏈網路可被認為是關於參與的實體的公有網路。有時,大多數實體(節點)必須對每個區塊簽名才能使該區塊有效並被添加到區塊鏈網路的區塊鏈中。公有區塊鏈網路的示例包括利用分散式帳本(稱為區塊鏈)的特定點對點支付網路。
通常,公有區塊鏈網路可以支援公開交易。公開交易為公有區塊鏈網路內的所有節點共享,並儲存在全域區塊鏈中。全域區塊鏈是跨所有節點複製的區塊鏈,並且所有節點相對於全域區塊鏈處於完全共識狀態。為了達成共識(例如,同意向區塊鏈添加區塊),在公有區塊鏈網路內實施共識協定。共識協定的示例包括工作量證明(POW)(例如,在一些加密貨幣網路中實施)、權益證明(POS)和權限證明(POA)。
通常,可以為特定實體提供私有區塊鏈網路,該特定實體集中控制讀寫權限。該實體控制哪些節點能夠參與到區塊鏈網路中。因此,私有區塊鏈網路通常被稱為許可網路,其對誰被允許參與網路及其參與級別(例如,僅可參與某些交易)作出限制。可以使用各種類型的存取控制機制(例如,現有參與者投票添加新實體、管理機構可以控制許可)。
通常,聯盟區塊鏈網路在參與的實體之間是私有的。在聯盟區塊鏈網路中,共識處理由一組被授權的節點控制,一個或多個節點由相應實體(例如,金融機構、保險公司)操作。例如,由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體可以操作聯盟區塊鏈網路中的至少一個節點。因此,聯盟區塊鏈網路可以被認為是與參與實體相關的私有網路。在一些示例中,每個區塊必須經每個實體(節點)簽名才能被驗證並被添加到區塊鏈中。在一些示例中,每個區塊必須經至少實體(節點)的子集(例如,至少7個實體)簽名才能被驗證並被添加到區塊鏈中。
圖1示出了根據實施例的區塊鏈系統100的示意圖。參考圖1,區塊鏈系統100可以包括被配置為在區塊鏈120上操作的多個節點,例如節點102-110。節點102-110可以形成例如點對點(P2P)網路的網路112。節點102-110中的每個可以是被配置為儲存區塊鏈120的副本的計算設備,例如電腦或電腦系統,或者可以是在計算設備上運行的軟體,諸如處理或應用。節點102-110中的每個可以具有唯一標識符。
區塊鏈120可以包括為例如圖1中的區塊B1-B5的資料塊形式的記錄的增長列表。區塊B1-B5中的每個可以包括時間戳記、前一區塊的加密哈希值,以及本區塊的可以是諸如貨幣交易之類的交易的資料。例如,如圖1所示,區塊B5可以包括時間戳記、區塊B4的加密哈希值和區塊B5的交易資料。而且,例如,可以對前一區塊執行哈希操作以產生前一區塊的加密哈希值。哈希操作可以透過諸如SHA-256的哈希演算法將各種長度的輸入轉換為固定長度的加密輸出。
節點102-110可以被配置為對區塊鏈120執行操作。例如,當節點(例如,節點102)想要將新資料儲存到區塊鏈120上時,該節點可以產生要被添加到區塊鏈120的新區塊,並將該新區塊廣播到網路112中的例如節點104-110的其他節點。基於新區塊的合法性,例如,其簽名和交易的有效性,其他節點可以確定接受新區塊,使得節點102和其他節點可以將新區塊添加到它們各自的區塊鏈120的副本中。重複該過程,可以將越來越多的資料區塊添加到區塊鏈120。
圖2示出了根據實施例的用於實現區塊鏈系統中的節點(例如,節點102(圖1))的計算設備200的示意圖。參考圖2,計算設備200可以包括通信介面202、處理器204和記憶體206。
通信介面202可以便於計算設備200與實現為網路中的其他節點(例如,節點104-110(圖1))的設備之間的通信。在一些實施例中,通信介面202被配置為支援一個或多個通信標準,例如網際網路標準或協定、整合服務數位網路(ISDN)標準等。在一些實施例中,通信介面202可以包括以下中的一個或多個:區域網路(LAN)卡、電纜數據機、衛星數據機、資料匯流排、電纜、無線通信通道、基於無線電的通信通道、蜂巢式通信通道、基於網際網路協定(IP)的通信設備、或用於有線和/或無線通信的其他通信設備。在一些實施例中,通信介面202可以基於公有雲端基礎設施、私有雲端基礎設施、混合公有/私有雲端基礎設施。
處理器204可以包括一個或多個專用處理單元、專用積體電路(ASIC)、現場可程式化閘陣列(FPGA)或各種其他類型的處理器或處理單元。處理器204與記憶體206耦接,並且被配置為執行儲存在記憶體206中的指令。
記憶體206可以儲存可由處理器執行的指令和資料,例如區塊鏈120(圖1)的副本。記憶體206可以包括任何類型的揮發性或非揮發性記憶體設備或其組合,例如靜態隨機存取記憶體(SRAM)、電可抹除可程式化唯讀記憶體(EEPROM)、可抹除可程式化唯讀記憶體(EPROM)、可程式化唯讀記憶體(PROM)、唯讀記憶體(ROM)、磁記憶體、快閃記憶體或磁碟或光碟。當記憶體206中的指令由處理器204執行時,計算設備200可以對區塊鏈120執行操作。
返回參考圖1,區塊鏈系統100可以根據一個或多個智慧合約操作。每個智慧合約可以是電腦碼形式的電腦協定,其被合併到區塊鏈120中,以幫助、驗證或強制合約的協商或執行。例如,區塊鏈系統100的使用者可以使用諸如C++、Java、Solidity、Python等的程式化語言將商定的條款程式化為智慧合約,並且當滿足條款時,可以由區塊鏈系統100自動執行智慧合約,例如執行交易。又例如,智慧合約可以包括多個子常式或函式,每個子常式或函式可以是執行特定任務的一系列程式指令。智慧合約可以是全部或部分沒有人工交互情况下執行的操作碼。
具有智慧合約的區塊鏈系統100可以用以記錄使用者金融資訊並進行包括貨幣轉帳在內的交易。例如,可以將關於使用者的資產和該資產的對應值的資訊記錄在區塊鏈系統100上。假設使用者擁有一個銀行帳戶形式的資產,並且進一步假設該銀行帳戶的帳號為“AAAA”,餘額為“ZZZZ”,則可以將指示該資產及其對應值存在的金鑰值對記錄在區塊鏈系統100上。在區塊鏈系統100上記錄這樣的金鑰值對可以使其他人能夠進行一些驗證,例如驗證使用者是否具有足夠的資金來在區塊鏈系統100上進行某些交易。
在一些實施例中,提供“設定(set)”操作以在區塊鏈系統100上記錄金鑰值對。可以使用格式如set(key, value)的函式呼叫來呼叫“set”操作,其中可以將帳號“AAAA”設定為金鑰,將餘額“ZZZZ”設定為值。如果金鑰是新的,則意味著區塊鏈系統100還沒有為帳號“AAAA”建立金鑰值對,則區塊鏈系統100可以記錄新的金鑰值對“AAAA”:“ZZZZ”。如果金鑰已經存在,意味著區塊鏈系統100已經具有以“AAAA”為金鑰的金鑰值對,則區塊鏈系統100可以更新與該金鑰對應的值以反映更新後的餘額。
在一些實施例中,提供“得到(get)”操作以檢索對應於金鑰的值。可以使用格式如get(key)的函式呼叫來呼叫“get”操作。繼續上面的示例,函式呼叫get (“AAAA”)可用於檢索為金鑰“AAAA”記錄的值“ZZZZ”。
在一些實施例中,提供“删除(delete)”操作以删除對應於金鑰的值。可以使用格式如delete(key)的函式呼叫來呼叫“delete”操作。繼續上面的示例,函式呼叫delete(“AAAA”)可用於删除金鑰值對“AAAA”:“ZZZZ”。
在一些實施例中,可以將關於使用者的多個資產或帳戶的資訊記錄在區塊鏈系統100上。例如,使用者可能想要在區塊鏈系統100上記錄關於多個銀行帳戶的資訊。因此,可以將例如表示該使用者的五個不同帳戶的帳號和餘額的包括“AAAA”:“ZZZZ”、“BBBB”:“UUUU”、“CCCC”:“OOOO”、“DDDD”:“YYYY”和“EEEE”:“XXXX”的金鑰值對,記錄在區塊鏈系統100上。
在一些實施例中,可以利用可遍歷金鑰值資料儲存解決方案以將金鑰值對儲存在區塊鏈系統100上。可遍歷金鑰值資料儲存解決方案可以提供遍歷儲存在區塊鏈系統100上的金鑰值對的能力,以便,例如,使用簡單的函式呼叫來識別和遍歷代表該使用者的銀行帳戶的所有金鑰值對。此外,在一些實施例中,可遍歷金鑰值資料儲存解決方案可以提供確定表示該使用者的所有銀行帳戶的總和的合計值的能力。這樣的合計值可以用於,例如,確定使用者是否具有足夠的資金來在區塊鏈系統100上進行交易。
圖3是根據實施例的例如區塊鏈系統100(圖1)的區塊鏈系統的可遍歷金鑰值資料儲存解決方案300的示意圖。參照圖3,所述可遍歷金鑰值資料儲存解決方案300可以包括一組金鑰值對,被描述為金鑰至值集合302。金鑰至值集合302可以包括使用者想要在區塊鏈系統100上記錄的使用者提供的金鑰值對。繼續上述示例,金鑰至值集合302可以包括金鑰值對{“AAAA”:“ZZZZ”, “BBBB”: “UUUU”, “CCCC”:“OOOO”, “DDDD”:“YYYY”, “EEEE”: “XXXX”},表示使用者的五個不同帳戶的帳號和餘額。
可遍歷金鑰值資料儲存解決方案300還可以包括一組系統產生的索引至金鑰金鑰值對,在本文中稱為索引至金鑰集合304。例如,可遍歷金鑰值資料儲存解決方案300可以對使用者提供金鑰值對分配索引,並指示區塊鏈系統100產生索引至金鑰集合304,以記錄索引及其對應的使用者提供金鑰。例如,索引至金鑰集合304可以包括金鑰值對{0:“EEEE”, 1:“AAAA”, 2:“BBBB”, 3:“CCCC”, 4:“DDDD”}。在一些實施例中,索引分配的順序可能不重要。換句話說,如圖3所示,將索引0分配給“EEEE”、將索引1分配給“AAAA”並依此類推的分配方式,僅作為示例提供,並不旨在限制。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以以固定的起始索引(例如0)開始索引,並對每個被索引的使用者提供金鑰值對依次增加索引。在一些實施例中,在圖3所示的示例中,可遍歷金鑰值資料儲存解決方案300可以記錄最終索引(例如4),供以後參考。可遍歷金鑰值資料儲存解決方案300可以利用所記錄的最終索引值,來快速確定特定使用者的被索引的使用者提供金鑰的總數,這反過來又可以使可遍歷金鑰值資料儲存解決方案300能夠遍歷該使用者的所有的使用者提供金鑰,如下文將詳述的那樣。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以將最終索引記錄為金鑰值對,例如END_INDEX: index。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以進一步指示區塊鏈系統100產生一組金鑰至索引金鑰值對。這組金鑰至索引金鑰值對在圖3中稱為金鑰至索引集合306,可以透過調換索引至金鑰集合304中的金鑰值對來產生。繼續上面的示例,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100產生金鑰至索引金鑰值對{{“AAAA”:1, “BBBB”:2, “CCCC”:3, “DDDD”:4, “EEEE”:0}。以此方式,索引至金鑰集合304中的系統產生的金鑰值對和金鑰至索引集合306中的系統產生的金鑰值對可以共同形成使用者提供金鑰之間的雙向映射,例如“AAAA”、“BBBB”、“CCCC”、“DDDD”和“EEEE”,以及各自被分配到的索引,例如分別為1、2、3、4和0。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以將所有金鑰值對儲存在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上,而不管金鑰值對是否由使用者提供或由區塊鏈系統100產生。僅出於說明的目的,在圖3中分別描繪了金鑰至值集合302、索引至金鑰集合304和金鑰至索引集合306。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以利用例如前綴或後綴的串接(concatenation)來唯一地標識儲存在區塊鏈系統100上的各金鑰值對。例如,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100將使用者提供金鑰值對{“AAAA”:“ZZZZ”, “BBBB”:“UUUU”, “CCCC”:“OOOO”, “DDDD”:“YYYY”, “EEEE”:“XXXX”}儲存為例如:
{“USERID_KEY_TO_VALUE_AAAA”:“ZZZZ”,
“USERID_KEY_TO_VALUE_BBBB”:“UUUU”,
“USERID_KEY_TO_VALUE_CCCC”:“OOOO”,
“USERID_KEY_TO_VALUE_DDDD”:“YYYY”,
“USERID_KEY_TO_VALUE_EEEE”:“XXXX”}。
注意,在添加前綴之後,原始的使用者提供金鑰仍包含在金鑰中。還應注意,“USERID”前綴可以是可以基於與提供金鑰值對的使用者相關聯的標識而改變的變量。以這種方式,可遍歷金鑰值資料儲存解決方案300可以使用“USERID”前綴來區分由不同使用者提供的金鑰值對。“KEY_TO_VALUE”前綴可以是類型指示符(indicator),用於指示這些金鑰值對包括使用者提供金鑰值對的記錄,該記錄不同於系統產生的金鑰值對。
類似地,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100將系統產生的金鑰值對{0:“EEEE”, 1:“AAAA”, 2:“BBBB”, 3:“CCCC,” 4:“DDDD”}儲存為例如:
{“USERID_INDEX_TO_KEY_0”:“EEEE”,
“USERID_INDEX_TO_KEY_1”:“AAAA”,
“USERID_INDEX_TO_KEY_2”:“BBBB”,
“USERID_INDEX_TO_KEY_3”:“CCCC”,
“USERID_INDEX_TO_KEY_4”:“DDDD”},
並將系統產生的金鑰值對{“AAAA”:1, “BBBB”:2, “CCCC”:3, “DDDD”:4, “EEEE”:0}儲存為例如:
{“USERID_KEY_TO_INDEX_AAAA”:1,
“USERID_KEY_TO_INDEX_BBBB”:2,
“USERID_KEY_TO_INDEX_CCCC”:3,
“USERID_KEY_TO_INDEX_DDDD”:4,
“USERID_KEY_TO_INDEX_EEEE”:0}。
以這種方式,可遍歷金鑰值資料儲存解決方案300可以利用前綴來唯一地標識儲存在區塊鏈系統100上的各金鑰值對,從而消除了對跟蹤和維護金鑰至值集合302、索引至金鑰集合304和金鑰至索引集合306的特殊資料結構的需要。圖4提供了描繪儲存在區塊鏈系統100上時的各金鑰值對的圖示。以這種方式儲存的金鑰值對允許可遍歷金鑰值資料儲存解決方案300支援各種類型的資料操作,包括,例如,“traverse”、“get”、“set”和“delete”。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以在部署在區塊鏈系統100上的函式庫中提供各種資料操作,從而允許使用者透過呼叫函式庫中提供的函式來利用該可遍歷金鑰值資料儲存解決方案300。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以提供程式化介面以接收來自執行於區塊鏈系統100上的程式(包括智慧合約等)的函式呼叫。
圖4示出了根據實施例的處理遍歷金鑰值對的請求的方法400的流程圖。方法400可以在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上執行。在該實施例中,假設使用者想要遍歷USERID的所有帳戶(取決於特定用例,該USERID可以標識使用者本人或另一個使用者)。因此,使用者可以使用格式如traverse (USERID)的函式呼叫來呼叫可遍歷金鑰值資料儲存解決方案300提供的“遍歷(traverse)”函式。在接收到該呼叫後,可遍歷金鑰值資料儲存解決方案300可以使用方法400繼續遍歷USERID的所有帳戶。
在步驟402,可遍歷金鑰值資料儲存解決方案300可以確定分配給USERID提供的金鑰值對的索引的列表。例如,如圖4所示,可遍歷金鑰值資料儲存解決方案300可以確定所有索引i到j,已經被分配給了USERID提供的金鑰值對,其中,i=起始索引0,j=最終索引4。
在步驟404,可遍歷金鑰值資料儲存解決方案300可以遍歷包含在索引至金鑰集合304中的金鑰值對,以獲得使用者提供金鑰(儲存為包含在索引至金鑰集合304中的金鑰值對的值)的列表。例如,如圖4所示,可遍歷金鑰值資料儲存解決方案300可以使用金鑰USERID_INDEX_TO_KEY_i到USERID_INDEX_TO_KEY_j來遍歷包含在索引至金鑰集合304中的金鑰值對,其中,i=起始索引0,j=最終索引4,以獲得使用者提供金鑰“EEEE”、“AAAA”,“BBBB”、“CCCC”和“DDDD”的列表。
在步驟406,可遍歷金鑰值資料儲存解決方案300可基於在步驟404中獲得的使用者提供金鑰的列表遍歷金鑰至值集合302中包含的金鑰值對。例如,如圖4所示,可遍歷金鑰值資料儲存解決方案300可以使用與“AAAA”、“BBBB”、“CCCC”、“DDDD”和“EEEE”串接的金鑰“USERID_KEY_TO_VALUE_”,來遍歷金鑰至值集合302中包含的金鑰值對。可遍歷金鑰值資料儲存解決方案300可以分別獲得值“ZZZZ”、“UUUU”、“OOOO”、“YYYY”和“XXXX”的列表,並完成“traverse”函式呼叫。
圖5示出了根據實施例的處理檢索金鑰值對的請求的方法500的流程圖。方法500可以在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上執行。在該實施例中,假設使用者想要驗證USERID(取決於特定用例,該USERID可以標識使用者本人或另一個使用者)的例如“DDDD”的特定帳戶是否具有足夠的餘額來實現貨幣轉帳。因此,使用者可以使用格式如get(USERID, DDDD)的函式呼叫來呼叫可遍歷金鑰值資料儲存解決方案300提供的“get”函式。在接收到該呼叫後,可遍歷金鑰值資料儲存解決方案300可以使用方法500繼續檢索所請求的金鑰值對。
在步驟502,可遍歷金鑰值資料儲存解決方案300可以基於上述前綴規則來建構要用於檢索所請求的金鑰值對的金鑰。例如,如圖5所示,可遍歷金鑰值資料儲存解決方案300可以將該金鑰建構為“USERID_KEY_TO_VALUE_DDDD”。可以使用“USERID”前綴來識別提供所請求的金鑰值對的使用者。可以使用“KEY_TO_VALUE”前綴來指示應當從金鑰至值集合302中檢索金鑰值對。在“get”函式呼叫中提供的帳號“DDDD”作為金鑰的一部分被包括在內,以指示應檢索金鑰至值集合302中的哪個特定金鑰值對。
在步驟504,可遍歷金鑰值資料儲存解決方案300可以從金鑰至值集合302中檢索具有與所建構的金鑰匹配的金鑰的金鑰值對。例如,如圖5所示,可遍歷金鑰值資料儲存解決方案300可以檢索金鑰值對310。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以返回金鑰值對310以完成“get”函式呼叫。替代地或可選地,可遍歷金鑰值資料儲存解決方案300可以從金鑰值對310獲得值“YYYY”,並返回該值以完成“get”函式呼叫。
圖6示出了根據實施例的處理設定既有金鑰值對的值的請求的方法600的流程圖。方法600可以在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上執行。在該實施例中,假設金鑰值對312已經記錄在區塊鏈系統100上,並且使用者在進行貨幣轉帳交易後想要將金鑰值對312中記錄的值更新為“KKKK”。因此,使用者可以使用格式如set(USERID, EEEE, KKKK)的函式呼叫來呼叫可遍歷金鑰值資料儲存解決方案300提供的“set”函式。在接收到所述呼叫後,可遍歷金鑰值資料儲存解決方案300可以使用方法600繼續設定金鑰值對的值。
在步驟602,可遍歷金鑰值資料儲存解決方案300可以基於上述前綴規則建構金鑰,例如“USERID_KEY_TO_VALUE_EEEE”,並使用該金鑰來定位(locate)金鑰值對312。
在步驟604,可遍歷金鑰值資料儲存解決方案300可以根據“set”函式中提供的新值來設定金鑰值對312的值。例如,如圖6所示,可遍歷金鑰值資料儲存解決方案300可以將金鑰值對312的值設定為“set”函式呼叫中指定的“KKKK”。完成此操作後,金鑰值對312將為金鑰“USERID_KEY_TO_VALUE_EEEE”儲存值“KKKK”,該值表示在執行貨幣轉帳交易後該帳戶的更新的餘額。
在一些實施例中,使用者還可以使用“set”函式來設定區塊鏈系統100上的新帳戶的值。設定新帳戶的值可能需要可遍歷金鑰值資料儲存解決方案300將新的使用者提供金鑰值對記錄在區塊鏈系統100上。
圖7示出了根據實施例的處理設定新金鑰值對的請求的方法700的流程圖。方法700可以在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上執行。在該實施例中,假設使用者想要在區塊鏈系統100上記錄表示新帳戶“FFFF”的值“VVVV”的金鑰值對。因此,使用者可以使用格式如set(USERID, FFFF, VVVV)的函式呼叫來呼叫可遍歷金鑰值資料儲存解決方案300提供的“set”函式。在接收到該呼叫後,可遍歷金鑰值資料儲存解決方案300可以基於上述前綴規則建構金鑰,例如“USERID_KEY_TO_VALUE_FFFF”,並嘗試定位其金鑰為“USERID_KEY_TO_VALUE_FFFF”的金鑰值對。如果可遍歷金鑰值資料儲存解決方案300定位到這樣的金鑰值對,則可遍歷金鑰值資料儲存解決方案300可以繼續使用方法600為該金鑰值對設定值。另一方面,如果可遍歷金鑰值資料儲存解決方案300無法定位到這樣的金鑰值對,意味著金鑰至值集合302中的金鑰值對中沒有一個包含帳號“FFFF”的金鑰,則可遍歷金鑰值資料儲存解決方案300可以繼續使用方法700將該金鑰值對作為新金鑰值對314記錄在區塊鏈系統100上。
在步驟702,可遍歷金鑰值資料儲存解決方案300可以為新金鑰值對314分配索引。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以基於為提供新金鑰值對的使用者而記錄的最終索引,來確定要分配給新金鑰值對314的索引。例如,如圖7所示,為提供新金鑰值對的使用者而記錄的最終索引是4(記錄在金鑰值對USERID_END_INDEX:4中),因此可遍歷金鑰值資料儲存解決方案300可以將最終索引順序地增加1,並將增加後的索引(例如5)分配到新的金鑰值對314。
在步驟704,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100產生索引至金鑰金鑰值對316。可以設定金鑰值對316的金鑰以包括分配給新金鑰值對314的索引,並且可以設定金鑰值對316的值以包括在新金鑰值對314中指定的使用者提供金鑰。例如,如圖7所示,可以將金鑰值對316的金鑰設定為包括索引5,並且可以將金鑰值對316的值設定為包括帳號“FFFF”。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100在產生金鑰值對316時遵循上述相同的前綴規則。在這樣的實施例中,金鑰值對316的金鑰可以被設定為“USERID_INDEX_TO_KEY_5”,因此金鑰值對316可以被提供為“USERID_INDEX_TO_KEY_5”:“FFFF”。
在步驟706,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100產生金鑰至索引金鑰值對318。可以設定金鑰值對318的金鑰以包括在新金鑰值對314中指定的金鑰,並且可以設定金鑰值對318的值以包括分配給新金鑰值對314的索引。例如,如圖7所示,可以將金鑰值對318的金鑰設定為包括帳號“FFFF”,並且可以將金鑰值對318的值設定為包括索引5。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以指示區塊鏈系統100在產生金鑰值對318時遵循上述相同的前綴規則。在這樣的實施例中,金鑰值對318的金鑰可以被設定為“USERID_KEY_TO_INDEX_FFFF”,因此金鑰值對318可以被提供為“USERID_KEY_TO_INDEX_FFFF”:5。
在步驟708,可遍歷金鑰值資料儲存解決方案300可以在區塊鏈系統100上儲存新金鑰值對314、索引至金鑰金鑰值對316和金鑰至索引金鑰值對318,以完成“set”函式呼叫。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以為使用者提供删除區塊鏈系統100上儲存的金鑰值對的能力。圖8示出了根據實施例的處理删除金鑰值對的請求的方法800的流程圖。方法800可以在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上執行。在該實施例中,假設使用者想要删除關於帳戶“DDDD”的資訊。因此,使用者可以使用格式如delete(USERID, DDDD)的函式呼叫來呼叫可遍歷金鑰值資料儲存解決方案300提供的“删除(delete)”函式。在接收到該呼叫後,可遍歷金鑰值資料儲存解決方案300可以基於上述前綴規則建構金鑰,例如“USERID_KEY_TO_VALUE_DDDD”,並嘗試定位其金鑰為“USERID_KEY_TO_VALUE_DDDD”的金鑰值對。如果可遍歷金鑰值資料儲存解決方案300無法定位到這樣的金鑰值對,則可遍歷金鑰值資料儲存解決方案300可以報告錯誤。另一方面,如果可遍歷金鑰值資料儲存解決方案300定位到這樣的金鑰值對,例如,如圖8所示的金鑰值對320,則可遍歷金鑰值資料儲存解決方案300可以使用方法800繼續删除金鑰值對320。
在步驟802,可遍歷金鑰值資料儲存解決方案300可以確定分配給金鑰值對320的索引是否位於用於索引金鑰至值集合302中的金鑰值對的索引序列的末端。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以透過檢索包含在金鑰值對324中其金鑰為“USERID_KEY_TO_INDEX_DDDD”的值,來確定分配給金鑰值對320的索引。例如,如圖8所示,可遍歷金鑰值資料儲存解決方案300可以確定分配給金鑰值對320的索引是4。可遍歷金鑰值資料儲存解決方案300還可以使用該索引來定位金鑰值對322。再例如,可遍歷金鑰值資料儲存解決方案300可以使用“USERID_INDEX_TO_KEY_4”作為金鑰來定位金鑰值對322。
可遍歷金鑰值資料儲存解決方案300可以將分配給金鑰值對320的索引與記錄在USERID_END_INDEX中的最終索引進行比較,以確定分配給金鑰值對320的索引是否位於索引序列的末端。如果可遍歷金鑰值資料儲存解決方案300確定分配給金鑰值對320的索引位於索引序列的末端,則可遍歷金鑰值資料儲存解決方案300可以在步驟804删除金鑰值對320,及其相應的系統產生的金鑰值對324和322,並將所記錄的USERID_END_INDEX的最終索引值减少1,以完成“delete”函式呼叫。另一方面,如果可遍歷金鑰值資料儲存解決方案300確定分配給金鑰值對320的索引不在索引序列的末端,則可遍歷金鑰值資料儲存解決方案300可重新排列索引序列,以避免在索引序列中產生間隙。對索引序列的重新排列在圖9中示出。
圖9示出了根據實施例的處理當金鑰值對不在索引序列末端時删除金鑰值對的請求的方法900的流程圖。方法900可以在區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)上執行。在該實施例中,假設使用者想要删除關於帳戶“AAAA”的資訊。因此,使用者可以使用格式如delete(USERID, AAAA)的函式呼叫來呼叫可遍歷金鑰值資料儲存解決方案300提供的“delete”函式。在接收到該呼叫後,可遍歷金鑰值資料儲存解決方案300可以基於上述前綴規則建構金鑰,例如“USERID_KEY_TO_VALUE_AAAA”,並嘗試定位其金鑰為“USERID_KEY_TO_VALUE_AAAA”的金鑰值對。如果可遍歷金鑰值資料儲存解決方案300無法定位到這樣的金鑰值對,則可遍歷金鑰值資料儲存解決方案300可以報告錯誤。另一方面,如果可遍歷金鑰值資料儲存解決方案300定位到這樣的金鑰值對,例如,如圖9所示的金鑰值對330,則可遍歷金鑰值資料儲存解決方案300可以使用方法900繼續删除金鑰值對330。
在步驟902,可遍歷金鑰值資料儲存解決方案300可以確定分配給金鑰值對330的索引是否位於所述索引序列的末端。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以透過檢索包含在金鑰值對334中其金鑰為“USERID_KEY_TO_INDEX_AAAA”的值,來確定分配給金鑰值對330的索引。例如,如圖9所示,可遍歷金鑰值資料儲存解決方案300可以確定分配給金鑰值對330的索引是1。可遍歷金鑰值資料儲存解決方案300還可以使用該索引來定位金鑰值對332。再例如,可遍歷金鑰值資料儲存解決方案300可以使用“USERID_INDEX_TO_KEY_1”作為金鑰來尋找金鑰值對332。
可遍歷金鑰值資料儲存解決方案300可以將分配給金鑰值對330的索引與記錄在USERID_END_INDEX中的最終索引進行比較,以確定分配給金鑰值對330的索引是否位於索引序列的末端。因為分配給金鑰值對330的索引不在索引序列的末端,所以可遍歷金鑰值資料儲存解決方案300可能需要重新排列索引序列,以避免在索引序列中產生間隙。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以在步驟904將金鑰值對336識別為位於索引序列的末端,並在步驟906將金鑰值對332的值替換為包含在金鑰值對336中的值。金鑰值對336也可以稱為替換索引至金鑰金鑰值對。在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以將金鑰值對336識別為位於索引序列的末端,因為所記錄的最終索引為4,其包括在金鑰值對336的金鑰中。由於金鑰值對336位於索引序列的末端,因此可以將其删除而不會在索引序列中產生任何間隙。
在一些實施例中,可遍歷金鑰值資料儲存解決方案300可以在步驟908將金鑰值對338識別為受此重新排列影響,並在步驟910將金鑰值對338的值從4設定為1 (對應於分配給金鑰值對330的索引)。金鑰值對338也可以稱為替換金鑰至索引金鑰值對。可遍歷金鑰值資料儲存解決方案300可基於包括包含在金鑰值對336中的值“DDDD”的金鑰“USERID_KEY_TO_INDEX_DDDD”將金鑰值對338識別為受影響的金鑰。可遍歷金鑰值資料儲存解決方案300可以將金鑰值對338的值從4設定為1,以反映“DDDD”已經被重新分配了1作為其新索引的事實。可遍歷金鑰值資料儲存解決方案300可以將所記錄的USERID_END_INDEX的最終索引值减小1,並在步驟912删除金鑰值對330、334和336,以完成“delete”函式。
應當理解,可遍歷金鑰值資料儲存解決方案300可以使用各種類型的程式化語言來實現,並且上述各函式的聲明僅作為示例提供,並不意味著限制。例如,上述“traverse”、“get”、“set”和“delete”操作可以用不同的方式聲明,例如,使用不同的函式名稱或不同的參數列表,同時仍然能夠執行上述的相同操作。
還應理解,上述前綴規則僅作為示例提供,並不意味著限制。只要可遍歷金鑰值資料儲存解決方案300可以唯一地標識儲存在區塊鏈系統100上的各種金鑰值對,就可以使用其他串接技術,例如附加後綴等。在一些實施例中,可以提供前綴規則(或其他串接規則)來支援附加指示符。例如,如果可以將銀行帳戶與餘額值和信用值都關聯,則可以定義前綴規則以支援對這兩個值的記錄。可以使用定義為如下的前綴來記錄餘額值,例如:
BALANCE_<USERID>_KEY_TO_VALUE_<ACCOUNT_NUMBER>、
BALANCE_<USERID>_INDEX_TO_KEY_<ACCOUNT_NUMBER>、
BALANCE_<USERID>_KEY_TO_INDEX_<ACCOUNT_NUMBER>以及
BALANCE_<USERID>_END_INDEX;
並且可以使用定義為如下的前綴,來記錄信用值,例如:
CREDIT_<USERID>_KEY_TO_VALUE_<ACCOUNT_NUMBER>、
CREDIT_<USERID>_INDEX_TO_KEY_<ACCOUNT_NUMBER>、
CREDIT_<USERID>_KEY_TO_INDEX_<ACCOUNT_NUMBER>以及
CREDIT_<USERID>_END_INDEX。
以這種方式,如果使用者想要對餘額值進行操作,則使用者例如使用函式參數來指示在執行上述操作時應當使用“BALANCE”前綴。另一方面,如果使用者想要對信用值進行操作,則使用者可以指示在執行上述操作時應當使用“CREDIT”前綴。可以預期,可以根據需要進一步擴展此類前綴規則(或其他串接規則)。
此外,應當理解,上述可遍歷金鑰值資料儲存解決方案300可以在不是區塊鏈系統的一部分的儲存系統中實現。可以預期,可遍歷金鑰值資料儲存解決方案300可以在能夠支援金鑰值對資料儲存的任何儲存系統中實現。
圖10示出了根據實施例的提供可遍歷金鑰值資料儲存的方法1000的流程圖。方法1000可以被區塊鏈系統100(圖1)的一個或多個節點(例如,節點102-110)執行。
在步驟1002,節點(例如,節點102)可以接收使用者提供金鑰值對,以記錄在儲存系統(例如,區塊鏈系統100)上。使用者提供金鑰值對可以包括使用者提供金鑰和使用者提供值。在步驟1004,節點102可以對使用者提供金鑰值對分配索引。在一些實施例中,節點102可以基於為使用者記錄的最終索引來確定要分配給使用者提供金鑰值對的索引。
在步驟1006,節點102可以產生索引至金鑰金鑰值對。可以設定索引至金鑰金鑰值對的金鑰,使其包括分配給使用者提供金鑰值對的索引。可以設定索引至金鑰金鑰值對的值,使其包括在使用者提供金鑰值對中指定的使用者提供金鑰。在步驟1008,節點102可以產生金鑰至索引金鑰值對。可以設定金鑰至索引金鑰值對的金鑰,使其包括在使用者提供金鑰值對中指定的使用者提供金鑰。可以設定金鑰至索引金鑰值對的值,使其包括分配給使用者提供金鑰值對的索引。在步驟1010,節點102可以將使用者提供金鑰值對、索引至金鑰金鑰值對和金鑰至索引金鑰值對儲存在儲存系統(例如,區塊鏈系統100)上。
在一些實施例中,節點102可以提供程式化介面以接收例如來自執行於區塊鏈系統100上的智慧合約的資料請求。在一些實施例中,所述資料請求可以是函式呼叫的形式。
在一些實施例中,所述資料請求可以包括遍歷金鑰值對的請求。節點102可以利用方法400(圖4)來處理遍歷請求。在一些實施例中,所述資料請求可以包括檢索金鑰值對的請求。節點102可以利用方法500(圖5)來處理檢索請求。在一些實施例中,所述資料請求可以包括記錄金鑰值對的請求。如果金鑰值對存在於儲存系統上,則節點102可以利用方法600(圖6)來處理請求並設定既有金鑰值對的值。如果金鑰值對不存在於儲存系統上,則節點102可以利用方法700(圖7)來處理請求並將新的金鑰值對記錄在儲存系統上。在一些實施例中,所述資料請求可以包括删除金鑰值對的請求。如果金鑰值對被索引在索引序列的末端,則節點102可以利用方法800(圖8)來處理請求並删除金鑰值對。如果金鑰值對沒有被索引在索引序列的末端,則節點102可以利用方法900(圖9)來處理請求並删除金鑰值對。
圖11是根據實施例的提供可遍歷金鑰值資料儲存的裝置1100的方塊圖。例如,裝置1100可以是軟體處理的實現,並且可以對應方法1000(圖10)。參照圖11,裝置1100可以包括接收模組1102、索引管理模組1104、索引至金鑰金鑰值對產生模組1106、金鑰至索引金鑰值對產生模組1108、儲存模組1110,以及資料處理模組1112。
接收模組1102可以接收用以記錄在例如區塊鏈系統100(圖1)的儲存系統上的使用者提供金鑰值對。索引管理模組1104可以對使用者提供金鑰值對分配索引。
索引至金鑰金鑰值對產生模組1106可以為使用者提供金鑰值對產生索引至金鑰金鑰值對。可以設定索引至金鑰金鑰值對的金鑰,使其包括分配給使用者提供金鑰值對的索引。可以設定索引至金鑰金鑰值對的值,使其包括在使用者提供金鑰值對中指定的使用者提供金鑰。金鑰至索引金鑰值對產生模組1108可以為使用者提供金鑰值對產生金鑰至索引金鑰值對。可以設定金鑰至索引金鑰值對的金鑰,使其包括在使用者提供金鑰值對中指定的使用者提供金鑰。可以設定金鑰至索引金鑰值對的值,使其包括分配給使用者提供金鑰值對的索引。儲存模組1110可以將使用者提供金鑰值對、索引至金鑰金鑰值對和金鑰至索引金鑰值對儲存在儲存系統(例如,區塊鏈系統100)上。
資料處理模組1112可以提供程式化介面以接收例如來自執行於區塊鏈系統100上的智慧合約的資料請求。在一些實施例中,所述資料請求可以是函式呼叫的形式。在一些實施例中,所述資料請求可以包括遍歷金鑰值對的請求。資料處理模組1112可以利用方法400(圖4)來處理遍歷請求。在一些實施例中,所述資料請求可以包括檢索金鑰值對的請求。資料處理模組1112可以利用方法500 (圖5)來處理檢索請求。在一些實施例中,所述資料請求可以包括記錄金鑰值對的請求。如果金鑰值對存在於儲存系統上,則資料處理模組1112可以利用方法600(圖6)來處理請求並設定既有金鑰值對的值。如果金鑰值對不存在於儲存系統上,則資料處理模組1112可以利用方法700(圖7)來處理請求並將新的金鑰值對記錄在儲存系統上。在一些實施例中,所述資料請求可以包括删除金鑰值對的請求。如果金鑰值對被索引在索引序列的末端,則資料處理模組1112可以利用方法800(圖8)來處理請求並删除金鑰值對。如果金鑰值對沒有被索引在索引序列的末端,則資料處理模組1112可以利用方法900(圖9)來處理請求並删除金鑰值對。
上述模組中的每一個可以被實現為軟體或硬體,或者軟體和硬體的組合。例如,可以使用執行儲存在記憶體中的指令的處理器來實現上述模組中的每一個。而且,例如,每個上述模組可以用一個或多個專用積體電路(ASIC)、數位信號處理器(DSP)、數位信號處理設備(DSPD)、可程式化邏輯器件(PLD)、現場可程式化閘陣列(FPGA)、控制器、微控制器、微處理器或其他電子組件執行所描述的方法來實現。進一步地,例如,上述模組中的每一個可以透過使用電腦晶片或實體來實現,或者透過使用具有特定功能的產品來實現。在一個實施例中,裝置1100可以是電腦,並且電腦可以是個人電腦、膝上型電腦、蜂巢式電話、照相手機、智慧型手機、個人數位助理、媒體播放器、導航設備、電子郵件接收和發送設備、遊戲機、平板電腦、可穿戴設備或這些設備的任何組合。
對於裝置1100中每個模組的功能和角色的實現過程,可以參考上述方法中的相應步驟。為簡單起見,這裡省略了細節。
在一些實施例中,電腦程式產品可以包括非暫態電腦可讀儲存媒體,其上儲存有電腦可讀程式指令,用於使處理器執行上述方法。
電腦可讀儲存媒體可以是有形設備,其可以儲存供指令執行設備使用的指令。所述電腦可讀儲存媒體可以是(但不限於),例如,電子儲存設備、磁儲存設備、光儲存設備、電磁儲存設備、半導體儲存設備或前述的任何合適組合。電腦可讀儲存媒體的更具體示例的非詳盡列表包括以下內容:可攜式電腦磁碟、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM)、靜態隨機存取記憶體(SRAM)、可攜式光碟唯讀記憶體(CD-ROM)、數位通用光碟(DVD)、記憶卡、軟碟、例如在其上記錄有指令的凹槽中的穿孔卡或凸起結構的機械編碼設備,以及前述的任何合適的組合。
用於執行上述方法的電腦可讀程式指令可以是彙編指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料或者以一種或多種程式語言的任意組合編寫的原始碼或目的碼,該程式語言包括物件導向程式語言和傳統程序程式語言。電腦可讀程式指令可以完全在計算設備上作為獨立軟體封裝執行,或者部分在第一計算設備上執行、部分在遠離第一計算設備的第二計算設備上執行。在後一種情况下,第二遠端計算設備可以透過包括區域網路(LAN)或廣域網路(WAN)的任何類型的網路連接到第一計算設備。
電腦可讀程式指令可以被提供給通用或專用電腦的處理器或其他可程式化資料處理裝置以產生機器,使得經由電腦的處理器或其他可程式化資料處理裝置執行的指令創建用於實施上述方法的裝置。
圖式中的流程圖和示圖示出了根據本文各種實施例的設備、方法和電腦程式產品的可能實施例的架構、功能和操作。在這方面,流程圖或示圖中的方塊可以表示軟體程式、碼段或碼的一部分,其包括用於實現特定功能的一個或多個可執行指令。還應注意,在一些替代實施方式中,方塊中提到的功能可以不按圖中所示的順序發生。例如,連續示出的兩個方塊實際上可以基本上同時執行,或者這些方塊有時可以以相反的順序執行,這取決於所涉及的功能。還應注意,示圖和/或流程圖的每個方塊以及示圖和流程圖中的方塊的組合可以由執行特定功能或動作的專用目的的基於硬體的系統、或者專用目的的硬體和電腦指令的組合來實施。
應當理解,為了清楚起見,在單獨的實施例的上下文中描述的本文的某些特徵也可以在單個實施例中組合提供。相反,為了簡潔起見,在單個實施例的上下文中描述的本文的各種特徵也可以單獨提供或者以任何合適的子組合提供,或者在本文的任何其他所述實施例中合適地提供。除非另有說明,否則在各種實施例的上下文中描述的某些特徵不是那些實施例的必要特徵。
儘管已經結合具體實施例描述了本文,但是許多替換、修改和變體對於本領域技術人員而言將是顯現的。因此,以下申請專利範圍包含落入申請專利範圍的範圍內的所有這些替換、修改和變體。
100:區塊鏈系統
102~110:節點
120:區塊鏈
200:計算設備
202:通信介面
204:處理器
206:記憶體
300:可遍歷金鑰值資料儲存解決方案
302:金鑰至值集合
304:索引至金鑰集合
306:金鑰至索引集合
400:方法
402,404,406:步驟
500:方法
502,504:步驟
310:金鑰值對
600:方法
602,604:步驟
312:金鑰值對
700:方法
702,704,706,708:步驟
314:新金鑰值對
316:索引至金鑰金鑰值對
318:金鑰至索引金鑰值對
800:方法
802,804:步驟
320,322,324:金鑰值對
900:方法
902,904,906,908,910,912:步驟
330,332,334,336,338:金鑰值對
1000:方法
1002,1004,1006,1008,1010:步驟
1100:裝置
1102:接收模組
1104:索引管理模組
1106:索引至金鑰金鑰值對產生模組
1108:金鑰至索引金鑰值對產生模組
1110:儲存模組
1112:資料處理模組
包含在本文中並構成其一部分的圖式示出了實施例。在下列指定圖式的說明中,除非另有所示,不同圖式中的相同數字表示相同或類似的元素。
[圖1]是根據實施例的區塊鏈系統的示意圖。
[圖2]是根據實施例的用於實現區塊鏈系統中的節點的計算設備的示意圖。
[圖3]是根據實施例的可遍歷金鑰值資料儲存解決方案的示意圖。
[圖4]是根據實施例的處理遍歷金鑰值對的請求的方法的流程圖。
[圖5]是根據實施例的處理檢索金鑰值對的請求的方法的流程圖。
[圖6]是根據實施例的處理設定既有金鑰值對的請求的方法的流程圖。
[圖7]是根據實施例的處理設定新金鑰值對的請求的方法的流程圖。
[圖8]是根據實施例的處理删除金鑰值對的請求的方法的流程圖。
[圖9]是根據實施例的處理删除金鑰值對的請求的方法的流程圖。
[圖10]是根據實施例的提供可遍歷金鑰值資料儲存的方法的流程圖。
[圖11]是根據實施例的提供可遍歷金鑰值資料儲存的裝置的方塊圖。
Claims (16)
- 一種電腦實現的用於提供可遍歷金鑰值資料儲存的方法,所述方法包括:接收用以記錄在儲存系統上的第一使用者提供金鑰值對,所述第一使用者提供金鑰值對包括第一使用者提供金鑰和第一使用者提供值;將第一索引分配給所述第一使用者提供金鑰值對;產生第一索引至金鑰金鑰值對,所述第一索引至金鑰金鑰值對包括所述第一索引的金鑰和包括所述第一使用者提供金鑰的值;產生第一金鑰至索引金鑰值對,所述第一金鑰至索引金鑰值對包括所述第一使用者提供金鑰的金鑰和包括所述第一索引的值;將所述第一使用者提供金鑰值對、所述第一索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對儲存在所述儲存系統上;接收遍歷儲存在所述儲存系統上的多個使用者提供金鑰值對的請求;確定分配給所述多個使用者提供金鑰值對的索引的列表;基於所述索引的列表遍歷多個索引至金鑰金鑰值對,以獲得使用者提供金鑰的列表;以及基於所獲得的使用者提供金鑰的列表遍歷所述多個使用者提供金鑰值對。
- 根據請求項1所述的方法,進一步包括:在區塊鏈上提供所述可遍歷金鑰值資料儲存;以及提供程式化介面以接收來自執行於所述區塊鏈上的智慧合約的資料請求。
- 根據請求項1所述的方法,進一步包括:接收用以記錄在所述儲存系統上的第二使用者提供金鑰值對,所述第二使用者提供金鑰值對包括第二使用者提供金鑰和第二使用者提供值;確定所述儲存系統上是否儲存有包括與所述第二使用者提供金鑰匹配的使用者提供金鑰的任何使用者提供金鑰值對;以及回應於確定所述儲存系統上儲存的特定使用者提供金鑰值對包括與所述第二使用者提供金鑰匹配的使用者提供金鑰,將所述第二使用者提供值設定為所述特定使用者提供金鑰值對的值。
- 根據請求項3所述的方法,進一步包括:回應於確定所述儲存系統上沒有儲存包括與所述第二使用者提供金鑰匹配的使用者提供金鑰的使用者提供金鑰值對,處理所述第二使用者提供金鑰值對以記錄在所述儲存系統上。
- 根據請求項4所述的方法,其中,處理所述第二使用者提供金鑰值對以記錄在所述儲存系統上,進一步包括:將第二索引分配給所述第二使用者提供金鑰值對; 產生第二索引至金鑰金鑰值對,所述第二索引至金鑰金鑰值對的金鑰包括所述第二索引和包括所述第二使用者提供金鑰的值;產生第二金鑰至索引金鑰值對,所述第二金鑰至索引金鑰值對的金鑰包括所述第二使用者提供金鑰和包括所述第二索引的值;以及將所述第二使用者提供金鑰值對、所述第二索引至金鑰金鑰值對和所述第二金鑰至索引金鑰值對儲存在所述儲存系統上。
- 根據請求項1所述的方法,進一步包括:接收删除所述第一使用者提供金鑰值對的請求;確定分配給所述第一使用者提供金鑰值對的所述第一索引是否位於索引序列的末端;以及回應於確定所述第一索引位於所述索引序列的末端,從所述儲存系統上删除所述第一使用者提供金鑰值對、所述第一索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對。
- 根據請求項6所述的方法,還包括:回應於確定所述第一索引不在所述索引序列的末端,重新排列所述索引序列。
- 根據請求項2所述的方法,其中,所述資料請求包括以下至少一項:用以記錄使用者提供金鑰值對的請求、用以檢索使用者提供金鑰值對的請求、用以删除使用者提供金鑰值對的請求、或用以遍歷儲存在所述區塊 鏈上的使用者提供金鑰值對的請求。
- 根據請求項8所述的方法,其中,重新排列所述索引序列,進一步包括:識別替換索引至金鑰金鑰值對,所述替換索引至金鑰金鑰值對已被索引在所述索引序列的末端;將所述第一索引至金鑰金鑰值對的值替換為包含於所述替換索引至金鑰金鑰值對中的值;識別替換金鑰至索引金鑰值對,所述替換金鑰至索引金鑰值對的金鑰包括包含在所述替換索引至金鑰金鑰值對中的值;將所述第一索引設定為所述替換金鑰至索引金鑰值對的值;以及從所述儲存系統上删除所述第一使用者提供金鑰值對、所述替換索引至金鑰金鑰值對和所述第一金鑰至索引金鑰值對。
- 根據請求項1所述的方法,進一步包括:根據串接規則,將包含在使用者提供金鑰值對中的金鑰、包含在索引至金鑰金鑰值對中的金鑰和包含在金鑰至索引金鑰值對中的金鑰串接。
- 根據請求項10所述的方法,其中,所述串接規則包括對使用者標識和類型指示符的指定。
- 根據請求項11所述的方法,其中,所述類型指示符用於指示金鑰是使用者提供金鑰、系統產生的 索引至金鑰金鑰值對中的金鑰、還是系統產生的金鑰至索引金鑰值對中的金鑰。
- 根據請求項10至12中任一項所述的方法,其中,所述串接規則是前綴規則。
- 一種用於在儲存系統上提供可遍歷金鑰值資料儲存的設備,包括:一個或多個處理器;以及耦接到所述一個或多個處理器且其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以執行請求項1至13中任一項所述的方法。
- 一種用於在儲存系統上提供可遍歷金鑰值資料儲存的裝置,所述裝置包括用於執行請求項1至13中任一項所述的方法的多個模組。
- 一種其上儲存有指令的非暫態電腦可讀媒體,所述指令在由設備的處理器執行時,促使所述設備執行請求項1至13中任一項所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/103809 WO2019228558A2 (en) | 2019-08-30 | 2019-08-30 | Methods and devices for providing traversable key-value data storage on blockchain |
WOPCT/CN2019/103809 | 2019-08-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202109306A TW202109306A (zh) | 2021-03-01 |
TWI742586B true TWI742586B (zh) | 2021-10-11 |
Family
ID=68699010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109110466A TWI742586B (zh) | 2019-08-30 | 2020-03-27 | 在區塊鏈上提供可遍歷金鑰值資料儲存的方法和設備 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210064585A1 (zh) |
EP (1) | EP3676787B1 (zh) |
CN (1) | CN111602166B (zh) |
SG (1) | SG11202002165RA (zh) |
TW (1) | TWI742586B (zh) |
WO (1) | WO2019228558A2 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020143855A2 (en) | 2020-04-22 | 2020-07-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Managing transaction requests in ledger systems |
SG11202103074PA (en) | 2020-04-22 | 2021-04-29 | Alipay Hangzhou Inf Tech Co Ltd | Managing transaction requests in ledger systems |
EP3834157B1 (en) * | 2020-04-22 | 2023-09-13 | Alipay (Hangzhou) Information Technology Co., Ltd. | Managing transaction requests in ledger systems |
US11900164B2 (en) | 2020-11-24 | 2024-02-13 | Nutanix, Inc. | Intelligent query planning for metric gateway |
US11822370B2 (en) | 2020-11-26 | 2023-11-21 | Nutanix, Inc. | Concurrent multiprotocol access to an object storage system |
CN112765269B (zh) * | 2020-12-31 | 2022-06-10 | 杭州趣链科技有限公司 | 数据处理方法、装置、设备和存储介质 |
US11861222B2 (en) * | 2021-05-17 | 2024-01-02 | Micron Technology, Inc. | Object management in tiered memory systems |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063016A (zh) * | 2018-07-11 | 2018-12-21 | 物数(上海)信息科技有限公司 | 区块链数据储存方法、装置、电子设备、存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101680540B1 (ko) * | 2015-06-18 | 2016-11-30 | 주식회사 코인플러그 | 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법 |
CN106126722B (zh) * | 2016-06-30 | 2019-10-18 | 中国科学院计算技术研究所 | 一种基于验证的前缀混合树及设计方法 |
CN107273455B (zh) * | 2017-05-31 | 2020-12-18 | 深圳前海微众银行股份有限公司 | 区块链数据访问方法和装置 |
US10565192B2 (en) * | 2017-08-01 | 2020-02-18 | International Business Machines Corporation | Optimizing queries and other retrieve operations in a blockchain |
KR102093010B1 (ko) * | 2018-02-12 | 2020-03-24 | 박성배 | 블록 체인에 기반한 노드 장치, 노드 장치의 동작 방법 및 데이터 처리 시스템 |
US11088826B2 (en) * | 2018-02-27 | 2021-08-10 | International Business Machines Corporation | Managing assets with expiration on a blockchain |
AU2018347188A1 (en) | 2018-11-07 | 2020-05-21 | Advanced New Technologies Co., Ltd. | Traversing smart contract database through logic map |
EP3665595B1 (en) * | 2019-05-14 | 2021-11-24 | Advanced New Technologies Co., Ltd. | Methods and devices for data traversal |
-
2019
- 2019-08-30 CN CN201980004257.5A patent/CN111602166B/zh active Active
- 2019-08-30 SG SG11202002165RA patent/SG11202002165RA/en unknown
- 2019-08-30 WO PCT/CN2019/103809 patent/WO2019228558A2/en unknown
- 2019-08-30 EP EP19810724.5A patent/EP3676787B1/en active Active
-
2020
- 2020-01-27 US US16/773,405 patent/US20210064585A1/en not_active Abandoned
- 2020-03-27 TW TW109110466A patent/TWI742586B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063016A (zh) * | 2018-07-11 | 2018-12-21 | 物数(上海)信息科技有限公司 | 区块链数据储存方法、装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019228558A2 (en) | 2019-12-05 |
SG11202002165RA (en) | 2020-04-29 |
TW202109306A (zh) | 2021-03-01 |
CN111602166B (zh) | 2023-08-22 |
WO2019228558A3 (en) | 2020-05-28 |
EP3676787A2 (en) | 2020-07-08 |
US20210064585A1 (en) | 2021-03-04 |
CN111602166A (zh) | 2020-08-28 |
EP3676787B1 (en) | 2022-10-12 |
EP3676787A4 (en) | 2020-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI742586B (zh) | 在區塊鏈上提供可遍歷金鑰值資料儲存的方法和設備 | |
US11023458B2 (en) | Systems and methods for blockchain interlinking and relationships | |
TWI721699B (zh) | 用於平行處理區塊鏈交易之系統及方法 | |
CN110024357B (zh) | 使用分布式分类帐进行数据处理的系统和方法 | |
US11720688B2 (en) | Secure initiation and transfer of a cryptographic database and/or a cryptographic unit | |
TW202018570A (zh) | 基於區塊鏈的節點管理方法和裝置 | |
CN111033489B (zh) | 用于数据遍历的方法和设备 | |
WO2019097322A1 (en) | Optimization of high volume transaction performance on a blockchain | |
CN110335042B (zh) | 基于环签名的匿名交易方法及装置 | |
US11314885B2 (en) | Cryptographic data entry blockchain data structure | |
CN110022315A (zh) | 一种块链式账本中的权重管理方法、装置及设备 | |
TW202034669A (zh) | 對智能合約執行鏈外測試的方法及裝置 | |
CN114710329A (zh) | 用于管理对区块链系统中的账户的访问的方法和设备 | |
CN113810185B (zh) | 一种抗陷门泄露的链上数据修复系统及方法 | |
Tan et al. | Blockchain for Decentralized Know Your Customer (KYC) and Customer Due Diligence (CDD) Pipelines in the Metaverse | |
Davies | Enhanced scalability and privacy for blockchain data using Merklized transactions | |
Prata et al. | Blockchain Technology applied to Education | |
US20230281585A1 (en) | Systems and Methods for Managing Network-Agnostic Smart Contracts | |
US20230119482A1 (en) | Method for securing private structured databases within a public blockchain | |
WO2023046312A1 (en) | Methods and systems for confidential recording of verifiable linked event data | |
US20220405426A1 (en) | Workflow management | |
WO2023167636A1 (en) | Methods and devices for providing privacy-preserving auditable ledger for managing tokens | |
WO2024054967A1 (en) | Customized blockchain infrastructure |