CN111602166A - 在区块链上提供可遍历键值数据存储的方法和设备 - Google Patents

在区块链上提供可遍历键值数据存储的方法和设备 Download PDF

Info

Publication number
CN111602166A
CN111602166A CN201980004257.5A CN201980004257A CN111602166A CN 111602166 A CN111602166 A CN 111602166A CN 201980004257 A CN201980004257 A CN 201980004257A CN 111602166 A CN111602166 A CN 111602166A
Authority
CN
China
Prior art keywords
key
value
user
value pair
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201980004257.5A
Other languages
English (en)
Other versions
CN111602166B (zh
Inventor
陈盛龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN111602166A publication Critical patent/CN111602166A/zh
Application granted granted Critical
Publication of CN111602166B publication Critical patent/CN111602166B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information 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)键值对,所述第一键至索引键值对的键包括所述第一用户提供键且其值包括所述第一索引;以及将所述第一用户提供键值对、所述第一索引至键键值对和所述第一键至索引键值对存储在所述存储系统上。
在另一个方面,一种用于提供可遍历键值数据存储的设备包括:一个或多个处理器;以及耦接至所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行,以接收用以记录在存储系统上的第一用户提供键值对,所述第一用户提供键值对包括第一用户提供键和第一用户提供值;向所述第一用户提供键值对分配第一索引;生成第一索引至键键值对,所述第一索引至键键值对的键包括所述第一索引且其值包括所述第一用户提供键的值;生成第一键至索引键值对,所述第一键至索引键值对的键包括所述第一用户提供键且其值包括所述第一索引;以及将所述第一用户提供键值对、所述第一索引至键键值对和所述第一键至索引键值对存储在所述存储系统上。
在又一个方面,非暂态计算机可读介质具有存储于其中的指令,所述指令当由设备的处理器执行时,促使所述设备执行用于提供可遍历键值数据存储的方法。所述方法包括:接收用以记录在存储系统上的第一用户提供键值对,所述第一用户提供键值对包括第一用户提供键和第一用户提供值;向所述第一用户提供键值对分配第一索引;生成第一索引至键键值对,所述第一索引至键键值对的键包括所述第一索引且其值包括所述第一用户提供键;生成第一键至索引键值对,所述第一键至索引键值对的键包括所述第一用户提供键且其值包括所述第一索引;以及将所述第一用户提供键值对、所述第一索引至键键值对和所述第一键至索引键值对存储在所述存储系统上。
附图说明
包含在本文中并构成其一部分的附图示出了实施例。在下列指定附图的说明中,除非另有所示,不同附图中的相同数字表示相同或类似的元素。
图1是根据实施例的区块链系统的示意图。
图2是根据实施例的用于实现区块链系统中的节点的计算设备的示意图。
图3是根据实施例的可遍历键值数据存储解决方案的示意图。
图4是根据实施例的处理遍历键值对的请求的方法的流程图。
图5是根据实施例的处理检索键值对的请求的方法的流程图。
图6是根据实施例的处理设置既有键值对的请求的方法的流程图。
图7是根据实施例的处理设置新键值对的请求的方法的流程图。
图8是根据实施例的处理删除键值对的请求的方法的流程图。
图9是根据实施例的处理删除键值对的请求的方法的流程图。
图10是根据实施例的提供可遍历键值数据存储的方法的流程图。
图11是根据实施例的提供可遍历键值数据存储的装置的框图。
具体实施方式
本文的实施例提供了用于在区块链上提供可遍历键值数据存储的方法和设备。该方法和设备利用区块链系统支持的键值数据结构来提供可遍历键值数据存储解决方案。这些方法和设备还支持键值数据操作,例如“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。
接收模块102可以接收用以记录在例如区块链系统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)的任何类型的网络连接到第一计算设备。
计算机可读程序指令可以被提供给通用或专用计算机的处理器或其他可编程数据处理装置以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实施上述方法的装置。
附图中的流程图和示图示出了根据本文各种实施例的设备、方法和计算机程序产品的可能实施例的架构、功能和操作。在这方面,流程图或示图中的框可以表示软件程序、代码段或代码的一部分,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,示图和/或流程图的每个框以及示图和流程图中的框的组合可以由执行特定功能或动作的专用目的的基于硬件的系统、或者专用目的的硬件和计算机指令的组合来实施。
应当理解,为了清楚起见,在单独的实施例的上下文中描述的本文的某些特征也可以在单个实施例中组合提供。相反,为了简洁起见,在单个实施例的上下文中描述的本文的各种特征也可以单独提供或者以任何合适的子组合提供,或者在本文的任何其他所述实施例中合适地提供。除非另有说明,否则在各种实施例的上下文中描述的某些特征不是那些实施例的必要特征。
尽管已经结合具体实施例描述了本文,但是许多替换、修改和变体对于本领域技术人员而言将是显现的。因此,以下权利要求包含落入权利要求的范围内的所有这些替换、修改和变体。

Claims (17)

1.一种计算机实现的用于提供可遍历键值数据存储的方法,所述方法包括:
接收用以记录在存储系统上的第一用户提供键值对,所述第一用户提供键值对包括第一用户提供键和第一用户提供值;
向所述第一用户提供键值对分配第一索引;
生成第一索引至键键值对,所述第一索引至键键值对的键包括所述第一索引且其值包括所述第一用户提供键;
生成第一键至索引键值对,所述第一键至索引键值对的键包括所述第一用户提供键且其值包括所述第一索引;以及
将所述第一用户提供键值对、所述第一索引至键键值对和所述第一键至索引键值对存储在所述存储系统上。
2.根据权利要求1所述的方法,进一步包括:
在区块链上提供所述可遍历键值数据存储;以及
提供编程接口以接收来自执行于所述区块链上的智能合约的数据请求。
3.根据前述任一权利要求所述的方法,进一步包括:
接收遍历存储在所述存储系统上的多个用户提供键值对的请求;
确定分配给所述多个用户提供键值对的索引的列表;
基于所述索引的列表遍历多个索引至键键值对,以获得用户提供键的列表;以及
基于所获得的用户提供键的列表遍历所述多个用户提供键值对。
4.根据前述任一权利要求所述的方法,进一步包括:
接收用以记录在所述存储系统上的第二用户提供键值对,所述第二用户提供键值对包括第二用户提供键和第二用户提供值;
确定所述存储系统上是否存储有包括与所述第二用户提供键匹配的用户提供键的任何用户提供键值对;以及
响应于确定所述存储系统上存储的特定用户提供键值对包括与所述第二用户提供键匹配的用户提供键,将所述第二用户提供值设置为所述特定用户提供键值对的值。
5.根据权利要求4所述的方法,进一步包括:
响应于确定所述存储系统上没有存储包括与所述第二用户提供键匹配的用户提供键的用户提供键值对,处理所述第二用户提供键值对以记录在所述存储系统上。
6.根据权利要求5所述的方法,其中,处理所述第二用户提供键值对以记录在所述存储系统上,进一步包括:
向所述第二用户提供键值对分配第二索引;
生成第二索引至键键值对,所述第二索引至键键值对的键包括所述第二索引且其值包括所述第二用户提供键;
生成第二键至索引键值对,所述第二键至索引键值对的键包括所述第二用户提供键且其值包括所述第二索引;以及
将所述第二用户提供键值对、所述第二索引至键键值对和所述第二键至索引键值对存储在所述存储系统上。
7.根据前述任一权利要求所述的方法,进一步包括:
接收删除所述第一用户提供键值对的请求;
确定分配给所述第一用户提供键值对的所述第一索引是否位于索引序列的末尾;以及
响应于确定所述第一索引位于所述索引序列的末尾,从所述存储系统上删除所述第一用户提供键值对、所述第一索引至键键值对和所述第一键至索引键值对。
8.根据权利要求7所述的方法,还包括:
响应于确定所述第一索引不在所述索引序列的末尾,重新排列所述索引序列。
9.根据权利要求8所述的方法,其中,重新排列所述索引序列,进一步包括:
识别替换索引至键键值对,所述替换索引至键键值对已被索引在所述索引序列的末尾;
将所述第一索引至键键值对的值替换为包含于所述替换索引至键键值对中的值;
识别替换键至索引键值对,所述替换键至索引键值对的键包括包含在所述替换索引至键键值对中的值;
将所述第一索引设置为所述替换键至索引键值对的值;以及
从所述存储系统上删除所述第一用户提供键值对、所述替换索引至键键值对和所述第一键至索引键值对。
10.根据权利要求2所述的方法,其中,所述数据请求包括以下至少一项:用以记录用户提供键值对的请求、用以检索用户提供键值对的请求、用以删除用户提供键值对的请求、或用以遍历存储在所述区块链上的用户提供键值对的请求。
11.根据前述任一权利要求所述的方法,进一步包括:
根据拼接规则,将包含在用户提供键值对中的键、包含在索引至键键值对中的键和包含在键至索引键值对中的键拼接。
12.根据权利要求11所述的方法,其中,所述拼接规则包括对用户标识和类型指示的指定。
13.根据权利要求12所述的方法,其中,所述类型指示用于指示键是用户提供键、系统生成的索引至键键值对中的键、还是系统生成的键至索引键值对中的键。
14.根据权利要求11至13中任一项所述的方法,其中,所述拼接规则是前缀规则。
15.一种用于在存储系统上提供可遍历键值数据存储的设备,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至14中任一项所述的方法。
16.一种用于在存储系统上提供可遍历键值数据存储的装置,所述装置包括用于执行权利要求1至14中任一项所述的方法的多个模块。
17.一种其上存储有指令的非暂态计算机可读介质,所述指令在由设备的处理器执行时,促使所述设备执行权利要求1至14中任一项所述的方法。
CN201980004257.5A 2019-08-30 2019-08-30 在区块链上提供可遍历键值数据存储的方法和设备 Active CN111602166B (zh)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN111602166A true CN111602166A (zh) 2020-08-28
CN111602166B CN111602166B (zh) 2023-08-22

Family

ID=68699010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980004257.5A Active CN111602166B (zh) 2019-08-30 2019-08-30 在区块链上提供可遍历键值数据存储的方法和设备

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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765269A (zh) * 2020-12-31 2021-05-07 杭州趣链科技有限公司 数据处理方法、装置、设备和存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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
US11861222B2 (en) * 2021-05-17 2024-01-02 Micron Technology, Inc. Object management in tiered memory systems

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126722A (zh) * 2016-06-30 2016-11-16 中国科学院计算技术研究所 一种基于验证的前缀混合树及设计方法
KR101680540B1 (ko) * 2015-06-18 2016-11-30 주식회사 코인플러그 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법
CN107273455A (zh) * 2017-05-31 2017-10-20 深圳前海微众银行股份有限公司 区块链数据访问方法和装置
CN109063016A (zh) * 2018-07-11 2018-12-21 物数(上海)信息科技有限公司 区块链数据储存方法、装置、电子设备、存储介质
US20190042620A1 (en) * 2017-08-01 2019-02-07 International Business Machines Corporation Optimizing queries and other retrieve operations in a blockchain
WO2019156533A1 (ko) * 2018-02-12 2019-08-15 박성배 블록 체인에 기반한 노드 장치, 노드 장치의 동작 방법 및 데이터 처리 시스템
US20190268140A1 (en) * 2018-02-27 2019-08-29 International Business Machines Corporation Managing assets with expiration on a blockchain

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101680540B1 (ko) * 2015-06-18 2016-11-30 주식회사 코인플러그 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법
CN106126722A (zh) * 2016-06-30 2016-11-16 中国科学院计算技术研究所 一种基于验证的前缀混合树及设计方法
CN107273455A (zh) * 2017-05-31 2017-10-20 深圳前海微众银行股份有限公司 区块链数据访问方法和装置
US20190042620A1 (en) * 2017-08-01 2019-02-07 International Business Machines Corporation Optimizing queries and other retrieve operations in a blockchain
WO2019156533A1 (ko) * 2018-02-12 2019-08-15 박성배 블록 체인에 기반한 노드 장치, 노드 장치의 동작 방법 및 데이터 처리 시스템
US20190268140A1 (en) * 2018-02-27 2019-08-29 International Business Machines Corporation Managing assets with expiration on a blockchain
CN109063016A (zh) * 2018-07-11 2018-12-21 物数(上海)信息科技有限公司 区块链数据储存方法、装置、电子设备、存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FEI PENG等: "Research and Application of Block Chain Technology in Crowdsourcing Platform" *
尤瑶;孔兰菊;肖宗水;郑永清;李庆忠;: "一种支持区块链交易溯源的混合索引机制" *
王千阁;何蒲;聂铁铮;申德荣;于戈;: "区块链系统的数据存储与查询技术综述" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765269A (zh) * 2020-12-31 2021-05-07 杭州趣链科技有限公司 数据处理方法、装置、设备和存储介质
CN112765269B (zh) * 2020-12-31 2022-06-10 杭州趣链科技有限公司 数据处理方法、装置、设备和存储介质

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
TWI742586B (zh) 2021-10-11
WO2019228558A3 (en) 2020-05-28
EP3676787A2 (en) 2020-07-08
US20210064585A1 (en) 2021-03-04
EP3676787B1 (en) 2022-10-12
EP3676787A4 (en) 2020-09-23

Similar Documents

Publication Publication Date Title
CN111602166B (zh) 在区块链上提供可遍历键值数据存储的方法和设备
CN110024357B (zh) 使用分布式分类帐进行数据处理的系统和方法
JP2020519983A (ja) 並列処理ブロックチェーントランザクションのためのシステムおよび方法
CN111033489B (zh) 用于数据遍历的方法和设备
EP3613203B1 (en) Methods and devices for performing off-chain testing on smart contract
CN111034151B (zh) 用于管理对区块链系统中的账户的访问的方法和设备
US11314885B2 (en) Cryptographic data entry blockchain data structure
CN110022315A (zh) 一种块链式账本中的权重管理方法、装置及设备
KR102284422B1 (ko) 블록체인 시스템에서 노드 사이의 통신 확립 방법 및 디바이스
WO2021139391A1 (en) Methods and devices for mitigating invoice financing fraud
CN113810185B (zh) 一种抗陷门泄露的链上数据修复系统及方法
WO2023099357A1 (en) Compressible blockchains
US20220399988A1 (en) Linking blockchain operations
CN114846765B (zh) 提供去中心化身份验证的方法和设备
WO2021139543A1 (en) Methods and devices for managing standby letter of credit
Prata et al. Blockchain Technology applied to Education
WO2023046312A1 (en) Methods and systems for confidential recording of verifiable linked event data
WO2023167636A1 (en) Methods and devices for providing privacy-preserving auditable ledger for managing tokens
CN111580982A (zh) 检测实时全额结算系统中死锁的方法、设备、装置和介质
CN111580983A (zh) 检测实时全额结算系统中死锁的方法、设备、装置和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201012

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201012

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40036621

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant