CN111226209B - 在基于区块链的系统中执行映射迭代 - Google Patents
在基于区块链的系统中执行映射迭代 Download PDFInfo
- Publication number
- CN111226209B CN111226209B CN201980004890.4A CN201980004890A CN111226209B CN 111226209 B CN111226209 B CN 111226209B CN 201980004890 A CN201980004890 A CN 201980004890A CN 111226209 B CN111226209 B CN 111226209B
- Authority
- CN
- China
- Prior art keywords
- key
- forest
- keys
- node
- hash
- 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.)
- Active
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000006870 function Effects 0.000 claims description 88
- 230000004044 response Effects 0.000 claims description 28
- 230000015654 memory Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 abstract description 18
- 230000008569 process Effects 0.000 description 45
- 238000012545 processing Methods 0.000 description 21
- 238000003780 insertion Methods 0.000 description 12
- 230000037431 insertion Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 7
- 238000012217 deletion Methods 0.000 description 7
- 230000037430 deletion Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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/3242—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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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/3247—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 involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Power Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本文公开了用于由区块链网络的网络节点执行映射迭代的方法、系统、装置,包括编码在计算机存储介质上的计算机程序。所述方法之一包括:所述网络节点接收用于获得包括在映射中的多个键的请求,所述映射存储包括多个键和与所述多个键相对应的多个值的多个键值对。所述网络节点维护表示存储有在所述映射中存储的所述多个键的森林的数据。所述森林包括多棵树,每棵树包括多达相应数量的存储节点,每个存储节点存储多个键的子集。网络节点遍历所述森林以检索存储在所述森林中的多个键,并返回所述多个键。
Description
技术领域
本文涉及例如在基于区块链的系统中执行映射迭代。
背景技术
在计算机科学的背景中,映射(map)是一种数据结构,可以用于存储键值(kv)对的集合并记录从键到对应值/数据对象的映射。映射被提供在各种计算机系统中,并且可以被设计为具有永久性特征,这些特征允许开发人员简单、透明地读取和写入磁盘数据,从而减轻了开发负担。可以执行映射迭代或遍历以检索存储在映射中的键值对的键和/或值。映射迭代通常涉及访问存储在映射中的每个键值(kv)对,以按顺序检索键和/或值。在一些情况下,区块链系统中的某些应用或用例可能需要检索映射中的键值对的所有键或所有值,但不一定两者都需要检索。期望开发一种映射迭代方案以便以一种有效的方式检索所有键或值。
发明内容
所描述的主题的实施例可以单独或组合地包括一个或多个特征。
例如,在一个实施例中,区块链网络的网络节点接收用于获得包括在映射中的多个键的请求。所述映射存储包括多个键和与所述多个键相对应的多个值的多个键值对。所述网络节点维护表示存储有在所述映射中存储的所述多个键的森林的数据。所述森林包括多棵树,每棵树包括多达相应数量的存储节点。每个存储节点存储映射的多个键的子集。网络节点遍历所述森林以检索存储在所述森林中的多个键,并返回所述多个键。
在一些实施例中,可以使用系统、方法或计算机程序或系统、方法和计算机程序的任意组合来实现这些一般和特定方面。上述和其他描述的实施例可以各自可选地包括一个或多个以下方面:
在一些实施例中,所述网络节点通过迭代所述森林的每个存储节点以及检索存储在所述森林的每个存储节点中的一个或多个键来遍历所述森林。
在一些实施例中,所述网络节点通过对所述森林执行深度优先搜索或对所述森林执行广度优先搜索来遍历所述森林。
在一些实施例中,所述多棵树中的每棵树包括相应数量的级,并且每级包括一个或多个存储节点。
在一些实施例中,所述相应数量的级对应于多个不同的哈希函数,基于使用所述多个不同哈希函数中的一个或多个哈希函数计算出的所述键的一个或多个哈希值,将每个键存储在所述森林中。
在一些实施例中,所述网络节点响应于键值对被存储在所述映射中,接收用于将所述键值对的键添加到所述森林的请求。所述网络节点基于使用所述多个不同哈希函数中的一个或多个哈希函数计算出的所述键的一个或多个哈希值,确定所述森林中要插入所述键的存储节点,以及将所述键存储到所述存储节点。
在一些实施例中,所述网络节点响应于所述键值对被从所述映射中删除,接收用于从所述森林中删除所述键值对的键的请求。所述网络节点基于使用所述多个不同哈希函数中的一个或多个哈希函数计算出的所述键的一个或多个哈希值,确定所述森林中存储有所述键的存储节点,以及从所述存储节点中删除所述键。
在一些实施例中,所述网络节点响应于多个键值对被存储在所述映射中,接收用于将所述多个键值对各自的键添加到所述森林中的一个以上请求。所述网络节点基于使用多个不同哈希函数中的一个或多个哈希函数计算出的所述键的一个或多个哈希值,确定森林中要插入所述键的不同的存储节点;以及将各个所述键存储到所述不同的存储节点。
在一些实施例中,所述多棵树中的每棵树包括多个叶存储节点和一个或多个非叶存储节点,所述一个或多个非叶存储节点中的每个非叶存储节点对应于可配置数量的子节点。
在一些实施例中,所述森林中的每个存储节点存储可配置数量的键。
应当理解的是,根据本文的方法可以包括本文描述的方面和特征的任何组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任何组合。
在附图和以下描述中阐述了本文的一个或多个实施例的细节。根据说明书和附图以及权利要求书,本文的其他特征和优点将显现。
附图说明
图1是示出可以用于执行本文实施例的环境的示例的图。
图2是示出根据本文实施例的架构的示例的图。
图3是示出根据本文实施例的用于执行映射迭代的基于区块链的系统的示例的图。
图4是示出根据本文实施例的森林数据结构的示例的图。
图5是示出根据本文实施例的执行可以被执行的映射迭代的处理的流程图。
图6是示出根据本文实施例的可以被执行的键插入的处理的流程图。
图7是示出根据本文实施例的可以被执行的键删除的处理的流程图。
图8是示出根据本文实施例的装置的模块的示例的图。
在各个附图中,相同的附图标记和名称表示相同的元件。
具体实施方式
本文描述了用于执行映射迭代以检索存储在映射中的键和/或值的技术。所述映射可以是存储多个键值对的数据结构,所述键值对包括多个键和与所述多个键对应的多个值。在本文中,执行映射迭代可以包括在返回映射中存储的键和/或值时实现映射迭代的目标、而不必遍历映射本身的操作。例如,用于执行映射迭代的技术可以包括维护存储所述多个键和/或值的副本的森林数据结构,以及遍历该森林数据结构而不遍历所述映射,以便以更有效的方式检索所述多个键和/或值。
为简洁起见,本文描述了用于执行映射迭代以检索存储在映射中的键值对的多个键的技术。对于本领域技术人员将理解或显现的是,该技术可以被应用于检索存储在映射中的键值对的多个值、或检索存储在映射中的键值对的多个键和多个值二者,例如分别通过将键的角色替换为键的相应值以及将键的角色替换为相应的键值对。
本文中描述的技术产生若干技术效果。在一些实施例中,区别于存储键值对的映射数据结构(也被简称为映射),引入森林数据结构(也被简称为森林)来存储在映射数据结构中存储的键值对的所有键。森林数据结构可以包括多棵树,这些树允许对森林数据结构的多个同时访问,使能在基于区块链的系统中的高并发处理。例如,森林数据结构的多树配置可以使能在森林的各棵树上并行执行对森林的多个同时或并发数据访问或其他操作。这可以避免仅单点数据访问的瓶颈,并减少可能以其他方式发生在单棵树或其他串行或顺序数据结构(例如队列(queue)或阵列(array))上的数据访问冲突的可能性。在一些实施例中,森林数据结构可以使用哈希函数来在其存储节点中分发键。森林数据结构可以将树结构的低复杂度与哈希函数的去中心化映射功能结合起来,以提供低延迟、高并发的映射迭代请求。在一些实施例中,所描述的映射迭代方案可以显著降低键插入和删除的I/O复杂度。在一些实施例中,所描述的映射迭代方案通过配置森林数据结构的参数(例如,树的数量、每棵树的宽度和/或深度)来提供可配置且可定制的多通道并发性、数据访问/检索速度以及其他性能指标。因此,所描述的映射迭代方案可以用于具有改进的整体系统性能的各种应用,或为这些应用专门定制。例如,所描述的映射迭代方案可以在基于区块链的系统中的智能合约中实现,该智能合约提供适用于基于区块链的系统提供的一个或多个服务的可配置且可定制的数据检索服务。
为了提供本文实施方式的进一步背景,并且如上所述,分布式账本系统(DLS),又可以被称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。尽管术语“区块链”通常与特定网络和/或用例相关联,但是在不参考任何特定用例的情况下,本文使用“区块链”来一般地指代DLS。
区块链是以交易不可篡改的方式存储交易的数据结构。因此,记录在区块链上的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包括区块链中紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还包括本地时间戳(例如,由生成该区块的计算设备或管理区块链的计算系统提供),其自身的哈希值以及一个或多个交易。例如,区块可以包括区块头和区块主体。区块头可以包括本地时间戳,其自身的哈希值以及前一区块的哈希值。区块主体可以包括有效载荷信息,例如一个或多个交易(或交易数据)。已经被区块链网络的节点验证的交易经哈希处理并编入默克尔(Merkle)树中。默克尔树是一种数据结构,在树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处级联(concatenate)。此处理沿着树持续一直到整个树的根,在整棵树的根处存储了代表树中所有数据的哈希值。通过确定声称是存储在树中的交易的哈希值是否与该树的结构一致,可以快速验证该哈希值。
区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,可以将区块链网络提供作为公有区块链网络、私有区块链网络或联盟区块链网络。
通常,联盟区块链网络在参与的实体间是私有的。在联盟区块链网络中,共识处理由可以被称为共识节点的授权的节点集控制,一个或多个共识节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。
在一些示例中,在联盟区块链网络内,提供全局区块链作为跨所有节点复制的区块链。也就是说,对于全局区块链,所有的共识节点处于完全共识状态。为了达成共识(例如,同意将区块添加到区块链),在联盟区块链网络内实现共识协议。例如,联盟区块链网络可以实现实用拜占庭容错(PBFT)共识,下面将进一步详细描述。
在一些实施例中,中心化账本系统还可以采用区块链的数据结构,以利用存储在区块链上的数据的不可篡改性、可靠性和可信赖性。在一些实施例中,这种中心化账本系统可以被称为基于区块链的中心化账本系统或通用的可审计账本服务系统。在一些实施例中,基于区块链的中心化账本系统可以包括中央可信机构,该中央可信机构提供存储在区块链数据结构的区块中的透明、不可篡改和可密码验证的数据。所存储的数据可以是日志格式,例如不仅包括交易日志,还包括其他交易数据和区块数据。由于中央可信机构的存在,基于区块链的中心化账本系统无需执行共识处理来建立信任。在一些实施例中,与典型的基于区块链的分布式或去中心化账本系统相比,基于区块链的中心化账本系统可以更有效。在一些实施例中,基于区块链的中心化账本系统可以为基于云的存储服务提供增强的信任度、效率和存储性能。
在一些实施例中,中心化账本系统可以是区块链网络的节点。例如,中心化账本系统可以是区块链网络中的非共识节点,并且可以为区块链网络中的共识节点或其他非共识节点或区块链网络的外部实体提供高度可靠且高性能的可审计流账本服务。
在一些实施例中,分布式账本系统(DLS)和基于区块链的中心化账本系统可以被统称为基于区块链的系统。换句话说,基于区块链的系统用于指代并足够广泛涵盖分布式账本系统(DLS)、基于区块链的中心化账本系统、或采用区块链的数据结构以利用存储在区块链上的数据的不可篡改性、可靠性和可信赖性的另一系统。
图1是示出可以用于执行本文实施例的环境100的示例的图。在一些示例中,环境100使得实体能够参与至联盟区块链网络102中。环境100包括计算系统106、108和网络110。在一些示例中,网络110包括局域网(LAN)、广域网(WAN)、因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后台系统。在一些示例中,网络110可以通过有线和/或无线通信链路访问。在一些示例中,网络110使得能够与联盟区块链网络102通信或在联盟区块链网络102内通信。通常,网络110表示一个或多个通信网络。在一些情况下,计算系统106、108可以是云计算系统的节点(未示出),或者计算系统106、108中的每个可以是包括通过网络互连并作为分布式处理系统运行的多个计算机的单独的云计算系统。
在所描绘的示例中,计算系统106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当的计算设备。计算设备的示例包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备以及智能电话。在一些示例中,计算系统106、108承载一个或多个由计算机实现的服务,用于与联盟区块链网络102交互。例如,计算系统106可以承载第一实体(例如,用户A)的计算机实施的服务,例如第一实体使用其管理与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。计算系统108可以承载第二实体(例如,用户B)的由计算机实施的服务,例如,第二实体使用其管理与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。在图1的示例中,联盟区块链网络102被表示为节点的点对点(peer-to-peer)网络,以及计算系统106、108分别提供参与联盟区块链网络102的第一实体的节点和第二实体的节点。
图2是示出根据本文实施例的架构200的示例的图。示例性概念架构200包括分别对应于参与者A、参与者B和参与者C的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到被提供为包括多个节点214的点对点网络的区块链网络212中,至少一些节点在区块链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、206分别存储区块链216的完整副本216’、216”、216”’。
区块链(例如,图2的区块链216)由区块的链组成,每个区块存储数据。数据的示例包括表示两个或更多个参与者之间的交易的交易数据。交易数据用作存储在区块链中的数据记录的示例。交易的示例可以包括但不限于交换有价物(例如,资产、产品、服务、货币)。在一些实施例中,在账本系统中执行的一个或多个操作可以作为交易数据存储在区块链中。例如,交易数据可以包括对存储在区块链中的数据、从外部资源获得的信息(例如,时间戳信息)或任何可以存储在区块链中的适当的数据(例如,文档、图像、视频、音频)进行的一种或多种操作或操纵。交易数据被不可篡改地存储在区块链中。也就是说,交易数据不能被改变。
在将交易数据存储至区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度的哈希值(也作为字符串数据提供)的处理。无法对哈希值进行去哈希处理(un-hash)以获得交易数据。哈希处理确保即使交易数据中的轻微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括但不限于输出256位哈希值的安全哈希算法(SHA)-256。
多个交易的交易数据被哈希处理并存储在区块中。例如,提供了两个交易的哈希值,并对它们自身进行哈希处理以提供另一个哈希值。重复该处理,直到对于所有要存储在区块中的交易提供单个哈希值。该哈希值被称为默克尔(Merkle)根哈希值,并存储在区块的区块头中。任何交易的更改都会导致其哈希值发生变化,并最终导致默克尔根哈希值发生变化。
通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并执行工作以将区块添加到区块链中。这样的节点被称为共识节点。上文介绍的PBFT用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。
更详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(Merkle根哈希值)。将此哈希值添加到区块头中。共识节点还确定区块链中最新的区块(即添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数(nonce)值和时间戳。
通常,PBFT提供容忍拜占庭故障(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过在PBFT中假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的操纵消息)而实现。在PBFT中,以包括主共识节点和备共识节点的序列提供共识节点。主共识节点被周期性地改变,通过区块链网络内的所有共识节点对区块链网络的全局状态达成一致,将交易添加到区块链中。在该处理中,消息在共识节点之间传输,并且每个共识节点证明消息是从指定的对等节点(peer node)接收的,并验证在传输期间消息未被修改。
在PBFT中,共识协议是在所有共识节点以相同的状态开始的情况下分多个阶段提供的。首先,客户端向主共识节点发送调用服务操作(例如,在区块链网络内执行交易)的请求。响应于接收到请求,主共识节点将请求多播到备共识节点。备共识节点执行请求,并且各自向客户端发送回复。客户端等待直到接收到阈值数量的回复。在一些示例中,客户端等待直到接收到f+1个回复,其中f是区块链网络内可以容忍的错误共识节点的最大数量。最终结果是,足够数量的共识节点就将记录添加到区块链的顺序达成一致,并且该记录或被接受或被拒绝。
在一些区块链网络中,实施密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能够看出交易的细节,则这两个节点可以对交易数据进行加密处理。加密处理的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密过程。在对称加密中,同一密钥对于多个节点可用,因此每个节点都可以对交易数据进行加密/解密。
非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且加密的数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者A可以使用参与者B的公钥来对数据进行加密,并将加密的数据发送给参与者B。参与者B可以使用其私钥来对该加密的数据(密文)进行解密并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。
非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以根据参与者A的该数字签名来确认该消息是由该节点发送的。数字签名也可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者A将向参与者B发送消息。参与者A生成该消息的哈希值,然后使用其私钥对该哈希值进行加密以提供作为加密哈希值的数字签名。参与者A将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者B。参与者B使用参与者A的公钥对该数字签名进行解密,并提取哈希值。参与者B对该消息进行哈希处理并比较哈希值。如果哈希值相同,则参与者B可以确认该消息确实来自参与者A,且未被篡改。
图3是示出根据本文实施例的系统300的示例的图。系统300实现了用于执行映射迭代的基于区块链的系统。如图所示,系统300包括用户302、客户终端304、网络306(例如,互联网)以及包括多个网络节点(例如,网络节点310)的区块链网络308。
客户终端304可以包括例如被编程为执行本文描述的方法的任何适当的计算机、模块、服务器、或计算元件。用户302可以使用客户终端304(例如移动电话、个人计算机或可以连接到网络306的任何计算设备)访问区块链网络308。
在一些实施例中,区块链网络308的每个网络节点可以是区块链网络的共识节点或非共识节点。在一些实施例中,一个或多个网络节点可以与维护不同类型的数据的计算机服务器相关联。在该示例中,网络节点310与维护一个或多个映射316和一个或多个森林318的计算机服务器314相关联。在一些实施例中,映射316中的每一个可以存储键值对的集合。在一些实施例中,映射316可以包括可以存储键值对的任何合适的数据类型,诸如关联阵列、映射、符号表或字典等。
在所描绘的示例中,映射316可以存储多个键320和与键320相对应的多个值322。在一些实施例中,键320可以用作索引或标识,以定位或检索对应的值322。在一些示例中,键320可以表示对应值322的类型、数量、时间、日期、状态或另一属性中的一个或多个。作为示例,值322可以包括与企业、个人或任何其他合适的实体的资产(例如,货币资金、短期和长期投资、应收账款和预付款、库存、递延费用、无形资产、生物资产和其他资产)相关的数值,并且键320可以是与资产相关联的类型、数量、时间、日期和状态,反之亦然。
在一些实施例中,用户302可以访问与网络节点310相关联的计算机服务器314,并且对存储在计算机服务器314的映射316中的键值对执行各种操作。在一些实施例中,这些操作可以包括将键值对添加到映射316,从映射316中移除键值对,修改映射316中的现有键值对以及查找与映射316中的特定键相关联的值,等等。
如所指出的,映射(例如,映射316)可以用于记录从键到值/数据对象的映射。它们具有简单、灵活和高效的优势,并且可以用于区块链智能合约的编译。在各种区块链架构中都提供有映射。在区块链系统中,映射通常具有持久特征,这些特征允许开发人员简单、透明地读取和写入磁盘数据,从而减轻了开发负担。
在一些情况下,在将数据插入到映射中后,为了检索存储在映射中的所有键或值的列表,可能需要遍历整个映射中的每个键值对,例如,使用映射的一个或多个内置功能。基于映射数据结构本身的映射迭代或遍历可能需要消耗大量的计算和时间。
在一些实施例中,基于区块链的系统的用户或开发人员可以例如使用智能合约来设计他们自己的映射迭代方案。例如,链表或阵列可以用于存储在映射中存储的键或值。链表的每个节点用于记录一个或多个键,并且这些节点通过单向或双向指针连接。
在一些实施例中,森林数据结构(例如,森林318)可以用于存储在映射中存储的键或值。森林数据结构可以结合树结构的低复杂度和哈希函数的去中心化映射功能来实现低延迟、高并发的映射迭代方案。例如,与链表的实现相比,基于森林的映射迭代方案可以提高系统吞吐量和执行效率。例如,如果使用单个链表来存储键或值,则数据(例如,键或值)的插入点往往是并发冲突点。当多个智能合约被调用以执行数据插入时,只有一个智能合约调用可以成功,从而导致事实上的串行执行。大多数其他智能合约调用将失败,并可能发生回滚,从而浪费大量系统资源,这可能会严重影响整个系统的输出带宽。此外,基于森林的映射迭代方案可以支持随机访问,而链表的结构不适合随机访问。例如,当使用链表实现删除(或并发随机插入)时,可能需要I/O复杂度为O(n)的线性迭代以遍历整个链表,并且需要逐一比较存储的键。在正常情况下,由于磁盘读写,这种线性复杂度可能是不可接受的。相比之下,基于森林的映射迭代方案的键插入和键删除的I/O复杂度可以为O(lg(n)),从而显着减少了延迟。
在一些实施例中,森林数据结构可以包括N棵树,其中N大于1。每棵树可以包括多个存储节点,所述多个存储节点包括叶节点和非叶节点。在一些实施例中,每棵树可以具有可配置的宽度W。例如,树的每个非叶节点可以具有多达W个子节点(例如,2个子节点、8个子节点等)。每个存储节点(包括叶节点和非叶节点)可以存储在对应映射中存储的键的子集。存储节点最多可以存储L个键,例如512个键、1024个键等。在一些实施例中,每棵树可以具有深度D。即,每棵树可以包括D级,其中每级中可以包括一个或多个存储节点。例如,树的第一级可以包括树的根节点,树的第二级可以包括根节点的子节点,树的第三级可以包括第二级中的所述子节点各自的子节点,依此类推。在一些实施例中,参数N、L、W或D中的一个或多个可以是可配置的,例如,基于系统吞吐量、并发要求、延迟容限或其他标准来配置。
在一些实施例中,可以通过与树的多级相对应的一系列哈希函数将映射中存储的每个键存储到树的存储节点。例如,树的第一级可以对应于第一哈希函数,树的第二级可以对应于可以与第一哈希函数不同的第二哈希函数,依此类推。
在一些实施例中,当将键被插入森林中时,第一级哈希函数用于确定森林中存储该键的树。如果树的根节点仍具有存储空间,则可以将键插入到根节点中。否则,如果树的根节点不具有可用空间,则可以使用第二级哈希函数来确定可以存储该键的下一级的存储节点。映射可以继续进行,直到在树中找到具有可用空间的存储节点。然后可以将键存储在具有可用空间的存储节点中,并且可以将存储节点的用于键的计数器(也称为键计数器)加1。
从森林中删除键的处理可以类似于键的插入。在一些示例中,哈希函数可以用于定位存储该键的对应树和存储节点,然后可以从该存储节点中删除该键。例如,当要从森林中删除键时,使用第一级哈希函数来确定森林中要删除该键的树。如果可以在所确定的树的根节点中找到该键,则可以从根节点中删除该键。如果在根节点中未找到该键,则可以使用第二级哈希函数来确定可以删除该键的下一级的存储节点。该处理可以继续进行,直到在森林的存储节点中找到该键。当从存储节点删除该键时,可以将存储节点的键计数器减1。在一些实施例中,如果树的存储节点的键计数器低于某个阈值(可以被配置),则可以例如通过将特定数量的键从树的一个或多个叶节点移动至更高级的存储节点中来重建或重构树。在一些实施例中,如果存储节点的键计数器变为零,则可以删除该存储节点。
图4是示出根据本文实施例的森林数据结构400的示例的图。森林数据结构400可以用于实现图3的森林318。在所描绘的示例中,森林400包括树410和430。注意,仅出于说明目的,森林400被示出为包括两棵树。森林400可以例如基于系统吞吐量、并发要求来包括任何合适数量的树。在一些实施例中,森林400可以包括N棵树,从而允许对森林400的N个并发访问。
树410和树430各自包括相应的根节点412和432。根节点412和432各自包括两个子节点。如图所示,根节点412具有子节点414和416,根节点432具有子节点434和436。注意,仅出于说明性目的,示出了根节点412和432包括两个子节点。根节点412和432可以具有任何合适数量的子节点。如所指出的,非叶节点的子节点的数量W可以是可配置的,例如基于等待时间容限和树的整体存储空间来配置。例如,给定相同的树整体存储空间和相同的每个存储节点存储空间的条件下,较小的W值可以使得检索存储在树中的键时的延迟较低。在一些实施例中,不同树的非叶节点可以具有不同数量的子节点。例如,根节点412可以具有第一数量的子节点,根节点432可以具有第二数量的子节点,其中第二数量不同于第一数量。
如图所示,树410和430各自包括三级存储节点。第一级(“级1”)包括根节点(例如,节点412和432)。第二级(“级2”)包括根节点的子节点(例如,节点414、416、434和436)。第三级(“级3”)包括叶节点(例如,节点418、420、422、424、438、440、442和444)。在一些实施例中,每级存储节点对应于可以用于确定键在森林中的存储位置的哈希函数。例如,对应于级1的第一哈希函数可以用于确定键被存储在森林400中的哪棵树(例如,树410或430)中。在一些实施例中,可以通过使用第一哈希函数计算出该键的第一哈希值,通过对该第一哈希值执行第一模运算(例如,关于森林400中的树的数量)计算出第一模值,以及基于所述第一模值确定要存储键的树,来确定该键的存储位置。
继续以上示例,如果确定所确定的树的根节点(例如,节点412或432)具有可用空间,则可以将键存储在所确定的树的根节点中。如果确定所确定的树的根节点不具有可用空间,则可以使用与级2相对应的第二哈希函数来确定所确定的树的根节点中要存储该键的子节点。例如,可以通过以下方式来确定键的存储位置:使用第二哈希函数计算键的第二哈希值,通过对第二哈希值执行第二模运算(例如,关于所确定的树的根节点的子节点的数量)计算出第二模值,以及基于所述第二模值确定所述根节点中要存储该键的子节点。如果所确定的级2处的子节点不具有可用空间来存储键,则该处理可以继续确定下一级的存储节点来存储键,直到找到具有可用空间的存储节点。
在一些实施例中,对应于树的级的哈希函数对于不同的树可以是不同的。例如,与树410的级2相对应的哈希函数(例如,hash12)可以不同于与树430的级2相对应的哈希函数(例如,hash32)。类似地,与树410的级3相对应的哈希函数(例如,hash13)可以不同于与树430的级3相对应的哈希函数(例如,hash33),即(例如,hash12)。在这种情况下,给定一个键,可以通过以下方式逐级地按照顺序方式确定其存储位置:首先基于第一哈希函数和第一模运算确定该键要被存储在哪棵树中,然后基于与所确定的树的级2相对应的特定哈希函数,确定所确定的树中要存储该键的存储节点,也可能在确定了所确定的树中的级2中要存储该键的存储节点之后,基于与所确定的树的级3相对应的特定哈希函数,确定所确定的树中要存储该键的存储节点。
在一些实施例中,不同的树可以针对相同的级使用相同的哈希函数。例如,树410和树430中的每一个可以共享与级2相对应的同一个哈希函数(例如,hash2)和与级3相对应的同一个哈希函数(例如,hash3)。在这种情况下,给定一个键,可以通过基于三个哈希函数一次计算该键的三个哈希值来确定其存储位置,而无需按照先识别键将被存储在哪棵树上,然后识别与所确定的树的下级相对应的特定哈希函数的顺序处理。例如,对于给定键(例如,k),可以计算三个哈希值(例如,h1=hash1(k),h2=hash2(k)和h3=hash3(k)),其中,hash1是与森林的级1对应的哈希函数。可以对三个哈希值执行三个相应的模运算,以确定键的目标存储节点。在一些实施例中,可以将存储位置表示为长度为D的向量,其中,D是森林的深度或森林中级的总数。作为示例,键k的存储位置可以用[modulo(h1,N),modulo(h2,W2),modulo(h3,W3)]表示,其中,N是森林中树的数量,W2是级2中树的宽度,W3是级3中树的宽度。基于存储位置矢量[modulo(h1,N),modulo(h2,W2),modulo(h3,W3)],可以将存储节点标识为例如第(modulo(h1,N)+1)棵树的级2的第(modulo(h2,W2)+1)个子节点的级3的第(modulo(h3,W3)+1)个子节点。
从森林400中删除键的处理的示例可以包括基于森林400的一个或多个哈希函数来确定键在森林400中的存储位置(例如,森林400的存储节点的位置),例如,根据与插入处理相关的上述类似技术来确定。在识别了键在森林400中的存储位置(例如,存储位置向量)之后,可以从森林400的存储节点中删除该键。在一些实施例中,与顺序插入处理相反,可以以顺序方式执行从森林400中删除键。例如,顺序删除处理可以包括基于与森林400的第一级相对应的第一哈希函数来定位森林400中存储键的树,并确定树的根节点是否存储有该键。如果在树的根节点中找到了该键,则可以从根节点中移除该键。如果在树的根节点中未找到该键,则可以使用第二哈希函数来定位该根节点中可能存储该键的子节点。该处理可以继续进行,直到找到存储该键的存储节点。
使用上述插入处理,可以将映射中的键存储在森林中,并且可以建立映射与森林之间的对应关系。如所指出的,如本文中所描述的基于哈希的森林数据结构(例如,森林318、400)可以用于遍历或迭代映射以获取映射中的键。在一些实施例中,这可以通过在与映射相对应的森林上执行遍历或迭代处理来完成。在一些实施例中,遍历或迭代处理可以包括对森林执行深度优先搜索或对森林执行广度优先搜索,以检索存储在森林中的所有键。
在一些实施例中,所描述的映射迭代方案允许多线程并发,这有效地改善了系统的整体性能。例如,可以并发处理多个插入和/或删除请求,其中可以确定森林的不同树和存储节点来插入或删除相应的键。这样可以减少并发冲突并提高系统的整体吞吐量。
图5是示出根据本文实施例的可以被执行的处理500的示例的信号流。该信号流表示用于执行映射迭代的处理500。为方便起见,该处理将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当地编程的基于区块链的系统(例如,图3的系统300)可以执行该处理。在一些实施例中,处理500可以在基于区块链的系统中的智能合约中实现。例如,处理500可以提供适合于基于区块链的系统提供的一项或多项服务的可配置且可定制的数据检索服务。
在502,区块链网络(例如,区块链网络308)的网络节点(例如,网络节点310)接收用于获得包括在映射(例如,映射316)中的多个键(例如,键320)的请求。在一些实施例中,映射可以存储包括多个键和与所述多个键相对应的多个值(例如,值322)的多个键值对。
在504,维护表示森林(例如,森林318和400)的数据。在一些实施例中,森林存储有在映射中存储的多个键。在一些实施例中,维护表示森林的数据包括:以除所述映射之外,或以独立于映射的方式,生成森林数据结构,以存储在映射中存储的多个键。在一些实施例中,维护表示森林的数据包括:例如,响应于将与新键相对应的键值对被存储在映射中,将该新键添加到森林中;响应于将与现有键相对应的键值对被从映射中移除,从森林中删除该现有键;以及响应于与现有键相对应的键值对在映射中被改变,修改森林中的该现有键;或对表示森林的数据的其他操作。
在一些实施例中,森林包括多棵树(例如,树410和430),其中,每棵树包括多达相应数量的存储节点(例如,节点412-444)。每个存储节点可以被配置为存储映射的多个键的子集。
在一些实施例中,森林的每棵树包括相应数量的级,其中,每级包括一个或多个存储节点。在一些实施例中,树的级对应于多个不同的哈希函数。基于使用不同哈希函数中的一个或多个哈希函数计算出映射中的键的一个或多个哈希值,将该键存储在森林中。
在一些实施例中,网络节点可以响应于键值对被存储在映射中,接收用于将该键值对的键添加到森林的请求。网络节点可以例如根据关于图4所描述的技术,基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,确定森林中要插入该键的存储节点。然后可以将键存储到所确定的存储节点。
在一些实施例中,网络节点可以响应于键值对被从映射中删除,接收用于从森林中删除该键值对的键的请求。网络节点可以例如根据关于图4所描述的技术,基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,确定森林中存储该键的存储节点。然后可以从所确定的存储节点中删除该键。
在一些实施例中,网络节点可以支持用于操纵映射中的一个或多个键的多个并发请求。例如,该请求可以例如包括以下一个或多个:用于响应于第一键值对被存储在映射中而将第一键值对的第一键添加到森林的第一请求;用于响应于第二键值对被从映射中移除而从森林中删除第二键值对的第二键的请求;或用于响应于第三键值对在映射中被改变而修改森林中的第三键值对的第三键的第三请求。网络节点可以基于使用森林的一个或多个哈希函数计算出的第一键、第二键和第三键的一个或多个哈希值来确定各个键在森林中的对应存储节点。各个键的不同存储节点(例如,在森林的不同树中)允许对森林的并发访问和操作。各个键可以相应地被添加、删除或修改到不同的存储节点。作为示例,网络节点可以响应于多个键值对被存储在映射中,接收用于将多个键值对各自的键添加到森林中的一个以上请求。网络节点可以基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,确定森林中要插入键的不同的存储节点。然后,可以将各个键并发地存储到所述不同的存储节点。
在506,遍历森林以检索存储在森林中的多个键。在一些实施例中,可以通过访问森林的每个存储节点并检索存储在森林的存储节点中的一个或多个键来执行对森林的遍历。可以根据任何适当的森林遍历或迭代算法遍历该森林。例如,遍历森林可以包括对森林执行深度优先搜索或对森林执行广度优先搜索。
在508,返回所检索的多个键。在一些实施例中,可以检索存储在森林中的所有键并将其返回给请求映射迭代的用户。
图6是示出根据本文实施例可以被执行的处理600的示例的信号流。所述信号流表示用于对森林执行键插入的处理600。为方便起见,该处理将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的基于区块链的系统(例如,图3的系统300)可以执行该处理。在一些实施例中,处理600可以在基于区块链的系统中的智能合约中实现。例如,处理600可以提供适用于基于区块链的系统提供的一项或多项服务的可配置且可定制的数据插入或存储服务。
在602,在区块链网络(例如,区块链网络308)的网络节点(例如,网络节点310)中维护森林数据结构(例如,森林318和400)。在一些实施例中,森林存储有多个键,所述多个键(例如,键320)属于存储在映射(例如,映射316)中的多个键值对。在一些实施例中,森林可以包括多棵树(例如,树410和430),其中每棵树可以包括相应数量的存储节点。每个存储节点被配置为存储映射的多个键的子集。在一些实施例中,多棵树各自包括相应数量的级,并且每级对应于相应的哈希函数。
在604,网络节点接收用于将键值对的键添加到森林中的请求。在一些实施例中,所述键值对是存储在映射中的键值对之一。
在606,使用第一哈希函数来计算键的第一哈希值。例如,对于给定键(例如,k),使用第一哈希函数(例如,hash1)来计算该键的第一哈希值(例如,h1)。即,h1=hash1(k)。在一些实施例中,第一哈希函数对应于森林的第一级中的存储节点。在一些实施例中,森林的第一级中的存储节点包括森林中的树的根节点。
在608,基于第一哈希值确定多棵树中要存储该键的一棵树。在一些实施例中,可以通过对第一哈希值执行模运算以生成第一模值、并基于该第一模值确定多棵树中要存储该键的一棵树来确定要存储该键的树。在一些实施例中,模运算是关于森林中的树的数量(例如,L)的模运算。例如,可以根据以下公式获得第一模值(例如,m1):m1=modulo(hash1(k),L)。第一模值可以具有值0、1、2、......、L-1,其可以对应于森林中的第1、第2、第3、......或者第L棵树。
在610,网络节点确定所确定的树中要存储该键的目标存储节点。在一些实施例中,目标存储节点可以通过确定所确定的树的根节点是否具有用于存储键的可用空间来确定。如果确定根节点具有用于存储键的可用空间,则可以将根节点确定为目标存储节点,并且可以将键存储在根节点中。
如果确定根节点不具有用于存储键的可用空间,则网络节点可以使用第二哈希函数来计算键的第二哈希值,其中,所述第二哈希函数对应于所确定的树的第二级。例如,使用第二哈希函数(例如,hash2)来计算键的第二哈希值(例如,h2)。即,h2=hash2(k)。第二哈希函数可以与第一哈希函数不同。然后,网络节点可以基于第二哈希值在所确定的树的第二级中确定要存储键的第二存储节点。在一些实施例中,网络节点可以对第二哈希值执行模运算以生成第二模值,并基于该第二模值确定所确定的树的第二级中要存储该键的第二存储节点。在一些实施例中,模运算是关于所确定的树的根节点的子节点的数量或所确定的树的宽度(例如,W)的模运算。例如,可以根据以下公式获得第二模值(例如,m2):m2=modulo(hash2(k),W)。第二模值可以是值0、1、2、......、W-1,其可以对应于森林中所确定的树的根节点的第1、第2、第3、......或者第W个子节点。
在一些实施例中,网络节点确定第二存储节点是否具有用于存储键的可用空间。如果确定所述第二存储节点具有可用空间,则可以将第二存储节点确定为目标存储节点,并且可以将键存储在第二级中的第二存储节点中。如果网络节点确定所述第二存储节点不具有可用空间,则可以使用第三哈希函数来计算键的第三哈希值,并基于第三哈希值来确定第三级中的目标存储节点。此处理可以继续进行,直到找到目标存储节点。
在612,网络节点将键存储在所确定的目标存储节点中。在一些实施例中,当将键被插入到目标存储节点中时,可以将目标存储节点的键计数器增加1。在一些实施例中,当目标存储节点的键计数器达到预定阈值(例如1024个键)时,可以认为目标存储节点已满,并且不再有键将被插入到目标存储节点。在一些实施例中,可以向森林中添加新一级(例如,第四级)以添加用于存储键的新存储节点。
图7是示出根据本文实施例的可以被执行的处理700的示例的信号流。所述信号流表示用于对森林执行键删除的处理700。为方便起见,该处理将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的基于区块链的系统(例如,图3的系统300)可以执行该处理。在一些实施例中,处理700可以在基于区块链的系统中的智能合约中实现。例如,处理700可以提供适合于基于区块链的系统提供的一项或多项服务的可配置且可定制的数据删除或管理服务。
在702,在区块链网络(例如,区块链网络308)的网络节点(例如,网络节点310)中维护森林数据结构(例如,森林318和400)。在一些实施例中,森林存储有多个键,所述多个键(例如,键320)属于存储在映射(例如,映射316)中的多个键值对。在一些实施例中,森林可以包括多棵树(例如,树410和430),其中每棵树可以包括相应数量的存储节点。每个存储节点被配置为存储映射的多个键的子集。在一些实施例中,多棵树中的每一棵包括相应数量的级,并且每级对应于相应的哈希函数。
在704,网络节点接收用于从森林中删除键值对的键的请求。在一些实施例中,所述键值对是存储在映射中的键值对之一。
在706,使用第一哈希函数来计算键的第一哈希值。例如,对于给定键(例如,k),使用第一哈希函数(例如,hash1)来计算键的第一哈希值(例如,h1)。即,h1=hash1(k)。在一些实施例中,第一哈希函数对应于森林的第一级中的存储节点。在一些实施例中,森林第一级中的存储节点包括森林中的树的根节点。
在708,基于第一哈希值确定多棵树中存储有该键的一棵树。在一些实施例中,可以通过对第一哈希值执行模运算以生成第一模值、并基于该第一模值确定多棵树中存储有该键的一棵树来确定存储有该键的树。在一些实施例中,模运算是关于森林中的树的数量(例如,L)的模运算。例如,可以根据以下公式获得第一模值(例如,m1):m1=modulo(hash1(k),L)。第一模值可以具有值0、1、2、......、L-1,其可以对应于森林中的第1、第2、第3……或者第L棵树。
在710,网络节点确定所确定的树中存储有该键的目标存储节点。在一些实施例中,可以通过确定是否可以在所确定的树的根节点中找到该键来确定目标存储节点。如果确定可以在根节点中找到该键,则可以将该根节点确定为目标存储节点,并且可以从根节点中删除该键。
如果确定在根节点中找不到该键,则网络节点可以使用第二哈希函数来计算该键的第二哈希值,其中,第二哈希函数对应于所确定的树的第二级。例如,使用第二哈希函数(例如,hash2)来计算键的第二哈希值(例如,h2)。即,h2=hash2(k)。在一些实施例中,第二哈希函数可以与第一哈希函数不同。然后,网络节点可以基于第二哈希值在所确定的树的第二级中确定可能存储有该键的第二存储节点。在一些实施例中,网络节点可以对第二哈希值执行模运算以生成第二模值,并基于第二模值确定所确定的树的第二级中可能存储有该键的第二存储节点。在一些实施例中,模运算是关于所确定的树的根节点的子节点的数量或所确定的树的宽度(例如,W)的模运算。例如,可以根据以下公式获得第二模值(例如,m2):m2=modulo(hash2(k),W)。第二模值可以是值0、1、2、......、W-1,其可以对应于森林中所确定的树的根节点的第1、第2、第3、......、第w个子节点。
在一些实施例中,网络节点确定是否可以在第二存储节点中找到键。如果确定可以在第二存储节点中找到该键,则可以将第二存储节点确定为目标存储节点,并且可以从第二级中的第二存储节点中删除该键。如果网络节点确定在第二存储节点中找不到键,则可以使用第三哈希函数来计算键的第三哈希值,并基于所述第三哈希值来确定第三级中的目标存储节点。该处理可以继续进行,直到在目标存储节点中找到该键。
在712,网络节点从所确定的目标存储节点中删除键。在一些实施例中,当该键被从目标存储节点中删除时,可以将目标存储节点的键计数器减1。在一些实施例中,如果目标存储节点的键计数器低于某个阈值(可以被配置),则可以例如通过将一定数量的键从树的一个或多个叶节点移动至更上级的存储节点来重构或重建目标存储节点所在的树。在一些实施例中,如果目标存储节点的键计数器变为零,则可以删除目标存储节点。
图8是根据本文实施例的装置800的模块的示例的图。装置800可以是被配置为执行映射迭代的区块链节点的实施例的示例。装置800可以对应于上述实施例,并且装置800包括以下:接收模块802,用于由网络节点接收用于获得包括在映射中的多个键的请求,该映射存储包括多个键和与所述多个键相对应的多个值的多个键值对;维护模块804,用于维护表示存储有在映射中存储的多个键的森林的数据,该森林包括多棵树,每棵树包括多达相应的多个存储节点,每个存储节点存储所述多个键的子集;遍历模块806,用于遍历森林以检索存储在森林中的多个键;以及返回模块808,用于返回所述多个键。
在一些实施例中,装置800还包括:迭代子模块,用于迭代森林的每个存储节点;以及检索子模块,用于检索存储在森林的每个存储节点中的一个或多个键。
在一些实施例中,遍历森林包括:对森林执行深度优先搜索和/或对森林执行广度优先搜索。
在一些实施例中,多棵树中的每棵树包括相应的多级,并且其中,每级包括一个或多个存储节点。
在一些实施例中,所述多级对应于多个不同的哈希函数,并且基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,将每个键存储在森林中。
在一些实施例中,装置800还包括:接收子模块,用于响应于键值对被存储在映射中,接收用于将键值对的键添加到森林的请求;以及确定子模块,用于基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,确定森林中要插入该键的存储节点;以及存储子模块,用于将键存储到该存储节点。
在一些实施例中,装置800还包括:接收子模块,用于响应于键值对被从映射中删除,接收用于从森林中删除键值对的键的请求;确定子模块,基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,确定森林中存储该键的存储节点;以及删除子模块,用于从该存储节点中删除该键。
在一些实施例中,装置800还包括:接收子模块,用于响应于多个键值对被存储在映射中,接收用于将多个键值对各自的键添加到森林中的一个以上请求;确定子模块,用于基于使用多个不同哈希函数中的一个或多个哈希函数计算出的键的一个或多个哈希值,确定森林中要插入键的不同的存储节点;以及存储子模块,用于将各个键并发地存储到所述不同的存储节点。
在一些实施例中,多棵树中的每棵树包括多个叶存储节点和一个或多个非叶存储节点,并且一个或多个非叶存储节点中的每个非叶存储节点对应于可配置数量的子节点。
在一些实施例中,森林中的每个存储节点存储可配置数量的键。
在一些实施例中,维护表示存储有在映射中存储的多个键的森林的数据包括以下一项或多项:生成要存储多个键的森林数据结构;响应于与新键相对应的键值对被存储在映射中,将该新键添加到森林中;响应于与现有键相对应的键值对被从映射中移除,从森林中删除该现有键;或响应于与现有键相对应的键值对在映射中被改变,修改森林中的该现有键。
前述实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实施,或者可以通过使用具有特定功能的产品来实施。典型的实施例设备是计算机(该计算机可以是个人计算机)、膝上型计算机、蜂窝电话、相机电话、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。
对于装置中每个模块的功能和作用的实施例处理,可以参考前一方法中相应步骤的实施例处理。为了简明,这里省略了细节。
由于装置实施例基本上对应于方法实施例,对于相关部件,可以参考方法实施例中的相关描述。先前描述的装置实施例仅是示例。被描述为单独部分的模块可以是或不是物理上分离的,并且显示为模块的部分可以是或不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文解决的目标。本领域的普通技术人员无需付出创造性劳动就可以理解和实现本申请的实施例。
再次参考图8,它可以被解释为示出基于区块链的映射迭代装置的内部功能模块和结构。基于区块链的映射迭代装置可以是与区块链网络节点相关联的计算机服务器(例如,与区块链网络节点310相关联的计算机服务器314)的示例。执行主体本质上可以是电子设备,并且该电子设备包括以下:一个或多个处理器;以及被配置为存储一个或多个处理器的可执行指令的一个或多个计算机可读存储器。在一些实施例中,所述一个或多个计算机可读存储器耦接到所述一个或多个处理器且其上存储有编程指令,所述编程指令可以由所述一个或多个处理器执行时以执行本文所描述的算法、方法、功能、处理、流程和程序。本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由一个或多个处理器执行时,所述指令促使一个或多个处理器执行根据本文提供的方法的实施例的操作。
本文还提供了用于实现本文提供的方法的系统。该系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当该指令由一个或多个处理器执行时,该指令促使一个或多个处理器执行根据本文提供的方法的实施例的操作。
本文中描述的主题、动作和操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实施,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施可以实现为一个或多个计算机程序,例如,编码在计算机程序载体上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括其上编码有或存储有指令的一个或多个计算机可读存储介质。载体可以是有形的非暂态计算机可读介质,诸如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(RAM)、只读存储器(ROM)或其他类型的介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电信号、光信号或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或可以部分是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
计算机程序,也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释性语言、或声明或程序性语言;并且它可以配置为任何形式,包括作为独立程序,或作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可以包括由数据通信网络互连的一个或多个位置上的一台或多台计算机。
计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件中;或者多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的多个文件。
用于执行计算机程序的处理器包括:例如,通用微处理器和专用微处理器两者,和任意种类的数字计算机的任意一个或多个处理器。通常,处理器将从耦接至处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令以及数据。
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。数据处理装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPU(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中一个或多个的组合的代码。
本文中描述的处理和逻辑流程可以由执行一个或多个计算机程序的一台或多台计算机或处理器执行,以通过对输入数据进行操作并生成输出来执行操作。处理和逻辑流程也可以由例如FPGA、ASIC或GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
适合于执行计算机程序的计算机可以基于通用处理器和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或结合在专用逻辑电路中。
通常,计算机还将包括或可操作地耦接至一个或多个存储设备,以从一个或多个存储设备接收数据或向一个或多个存储设备传送数据。存储设备可以是例如,磁盘、磁光盘或光盘、固态驱动器或任何其他类型的非暂态计算机可读介质。但是,计算机非必需这样的设备。因此,计算机可以耦接到例如一个或多个存储器的本地和/或远程的一个或多个存储设备。例如,计算机可以包括作为计算机的组成部件的一个或多个本地存储器,或者计算机可以耦接到云网络中的一个或多个远程存储器。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或例如通用串行总线(USB)闪存驱动器的便携式存储设备,这里仅举几例。
组件可以通过直接或经由一个或多个中间件例如电连接或光连接地彼此连接通信而彼此“耦接”。如果部件中的一个部件被集成到另一个中,则部件也可以被彼此“耦接”。例如,集成到处理器中的存储组件(例如,L2高速缓存组件)被“耦接到”处理器。
为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户设备上的web浏览器接收到的请求来将网页发送到该web浏览器,或者通过与在例如智能手机或电子平板电脑等的用户设备上运行的应用程序(app)交互。此外,计算机可以通过向个人设备(例如,运行消息收发应用程序的智能手机)发送文本消息或其他形式的消息并且作为回应从用户接收响应消息来与用户交互。
本文使用与系统、装置和计算机程序组件有关的术语“被配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在操作中使得系统执行该操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括被数据处理装置执行时促使该装置执行该操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行该操作或动作的电子逻辑。
虽然本文包含许多具体实施例细节,但是这些细节不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文中单个实施例的上下文中描述的多个特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从要求保护的组合中删除该组合的一个或多个特征,并且权利要求书可以指向子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到理想的效果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为在所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中或打包成多个软件产品。
已经描述了主题的特定实施方式。其他实施方式在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序执行并且仍然实现所期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或次序以实现所期望的结果。在一些情况下,多任务和并行处理可能是有利的。
Claims (11)
1.一种计算机实现的用于由区块链网络的网络节点执行映射迭代的方法,所述方法包括:
所述网络节点接收用于获得包括在映射中的多个键的请求,所述映射存储包括所述多个键和与所述多个键相对应的多个值的多个键值对;
维护表示存储有在所述映射中存储的所述多个键的森林的数据,所述森林包括多棵树,每棵树包括多达相应的多个存储节点,每个存储节点存储所述多个键的子集;
遍历所述森林以检索存储在所述森林中的所述多个键;以及
返回所述多个键;
其中,所述多棵树中的每棵树包括相应的多级,并且每级包括一个或多个存储节点;
其中,所述多级对应于多个不同的哈希函数,并且基于使用所述多个不同的哈希函数中的一个或多个哈希函数计算出的每个键的一个或多个哈希值,将该键存储在所述森林中;
每级存储节点对应于可以用于确定键在森林中的存储位置的哈希函数,树的第一级对应于第一哈希函数,树的第二级对应于与第一哈希函数不同的第二哈希函数,依此类推;
通过使用第一哈希函数计算出该键的第一哈希值,通过对该第一哈希值执行第一模运算计算出第一模值,以及基于所述第一模值确定要存储键的树,来确定该键的存储位置;如果确定所确定的树的根节点不具有可用空间,则使用第二哈希函数计算键的第二哈希值,通过对第二哈希值执行第二模运算计算出第二模值,以及基于所述第二模值确定所述根节点中要存储该键的子节点;如果所确定的子节点不具有可用空间来存储键,则继续确定下一级的存储节点来存储键,直到找到具有可用空间的存储节点。
2.根据权利要求1所述的方法,其中,遍历所述森林以检索存储在所述森林中的所述多个键包括:
迭代所述森林的每个存储节点;以及
检索存储在所述森林的每个存储节点中的一个或多个键。
3.根据前述任一权利要求所述的方法,其中,遍历所述森林包括以下中至少一个:
对所述森林上执行深度优先搜索;或
对所述森林执行广度优先搜索。
4.根据权利要求1所述的方法,其中,所述方法还包括:
响应于键值对被存储在所述映射中,接收用于将该键值对的键添加到所述森林的请求;
基于使用所述多个不同的哈希函数中的一个或多个哈希函数计算出的该键的一个或多个哈希值,确定所述森林中要插入该键的存储节点;以及
将该键存储到所述存储节点。
5.根据权利要求1所述的方法,其中,所述方法还包括:
响应于键值对被从所述映射中删除,接收用于从所述森林中删除该键值对的键的请求;
基于使用所述多个不同的哈希函数中的一个或多个哈希函数计算出的该键的一个或多个哈希值,确定所述森林中存储有该键的存储节点;以及
从所述存储节点中删除该键。
6.根据权利要求1所述的方法,其中,所述方法还包括:
响应于多个键值对被存储在所述映射中,接收用于将所述多个键值对各自的键添加到所述森林中的一个以上请求;
基于使用所述多个不同的哈希函数中的一个或多个哈希函数计算出的所述键的一个或多个哈希值,确定所述森林中要插入所述键的不同的存储节点;以及
将各个所述键并发地存储到所述不同的存储节点。
7.根据前述权利要求1或2所述的方法,其中,
所述多棵树中的每棵树包括多个叶存储节点和一个或多个非叶存储节点,并且
所述一个或多个非叶存储节点中的每个非叶存储节点对应于可配置数量的子节点。
8.根据前述权利要求1或2所述的方法,其中,所述森林中的每个存储节点存储可配置数量的键。
9.根据前述权利要求1或2所述的方法,其中,维护表示存储有在所述映射中存储的所述多个键的森林的数据包括以下一项或多项:
生成用于存储所述多个键的森林数据结构;
响应于与新键相对应的键值对被存储在所述映射中,将所述新键添加到所述森林中;
响应于与现有键相对应的键值对被从所述映射中移除,从所述森林中删除所述现有键;或者
响应于与现有键相对应的键值对在所述映射中被改变,修改所述森林中的所述现有键。
10.一种用于实现基于区块链的映射迭代系统的装置,所述装置包括用于执行权利要求1至9中任一项所述的计算机实现的方法的多个模块。
11.一种基于区块链的映射迭代系统,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,当由所述一个或多个处理器执行时,所述指令用以执行权利要求1至9中任一项所述的计算机实现的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/123242 WO2020098819A2 (en) | 2019-12-05 | 2019-12-05 | Performing map iterations in a blockchain-based system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111226209A CN111226209A (zh) | 2020-06-02 |
CN111226209B true CN111226209B (zh) | 2024-03-01 |
Family
ID=70733018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980004890.4A Active CN111226209B (zh) | 2019-12-05 | 2019-12-05 | 在基于区块链的系统中执行映射迭代 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11251969B2 (zh) |
EP (1) | EP3769233B1 (zh) |
CN (1) | CN111226209B (zh) |
AU (1) | AU2019379711B2 (zh) |
CA (1) | CA3098649A1 (zh) |
SG (1) | SG11202010541UA (zh) |
WO (1) | WO2020098819A2 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111295650B (zh) | 2019-12-05 | 2023-05-16 | 支付宝(杭州)信息技术有限公司 | 在基于区块链的系统中执行映射迭代 |
AU2019379711B2 (en) | 2019-12-05 | 2022-04-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Performing map iterations in a blockchain-based system |
CN112286939A (zh) * | 2020-06-12 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111526219B (zh) | 2020-07-03 | 2021-02-09 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
US11756117B2 (en) * | 2021-07-20 | 2023-09-12 | Progrexion IP, Inc. | Electronic certification data structures for verifying resource integrity |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110268394A (zh) * | 2017-02-09 | 2019-09-20 | 美光科技公司 | Kvs树 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058639B1 (en) * | 2002-04-08 | 2006-06-06 | Oracle International Corporation | Use of dynamic multi-level hash table for managing hierarchically structured information |
US20180152442A1 (en) | 2003-12-22 | 2018-05-31 | Guardtime Ip Holdings Limited | Blockchain-supported, hash tree-based digital signature infrastructure |
US7464103B2 (en) * | 2004-10-29 | 2008-12-09 | Microsoft Corporation | Multi-level nested open hashed data stores |
CN103518364B (zh) * | 2013-03-19 | 2016-03-09 | 华为技术有限公司 | 分布式存储系统的数据更新方法及服务器 |
CN103823865A (zh) | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
US10075298B2 (en) * | 2015-06-02 | 2018-09-11 | ALTR Solutions, Inc. | Generation of hash values within a blockchain |
US10200198B2 (en) | 2015-06-11 | 2019-02-05 | PeerNova, Inc. | Making cryptographic claims about stored data using an anchoring system |
US10204046B1 (en) * | 2015-11-19 | 2019-02-12 | Netronome Systems, Inc. | High-speed and memory-efficient flow cache for network flow processors |
US10097346B2 (en) * | 2015-12-09 | 2018-10-09 | Cisco Technology, Inc. | Key catalogs in a content centric network |
CN108733710A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 外包数据查询验证的方法、装置、电子设备和可读介质 |
US10678768B2 (en) | 2017-06-30 | 2020-06-09 | Intel Corporation | Logical band-based key-value storage structure |
US10984134B2 (en) | 2017-07-14 | 2021-04-20 | Microsoft Technology Licensing, Llc | Blockchain system for leveraging member nodes to achieve consensus |
WO2019089742A1 (en) | 2017-11-01 | 2019-05-09 | Swirlds, Inc. | Methods and apparatus for efficiently implementing a fast-copyable database |
US20190034427A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
EP3564873B1 (en) * | 2018-04-30 | 2022-11-30 | Hewlett Packard Enterprise Development LP | System and method of decentralized machine learning using blockchain |
CN109408551B (zh) | 2018-08-06 | 2021-07-06 | 杭州复杂美科技有限公司 | 数据查询方法及系统、共识方法及系统、设备和存储介质 |
WO2020049357A1 (en) * | 2018-09-06 | 2020-03-12 | Bank Of Montreal | Systems and methods for encryption of data on a blockchain |
WO2019072293A2 (en) * | 2018-12-13 | 2019-04-18 | Alibaba Group Holding Limited | DATA INSULATION IN A BLOCK CHAIN NETWORK |
CN110334154B (zh) | 2019-06-28 | 2020-07-21 | 阿里巴巴集团控股有限公司 | 基于区块链的分级存储方法及装置、电子设备 |
CN111295650B (zh) | 2019-12-05 | 2023-05-16 | 支付宝(杭州)信息技术有限公司 | 在基于区块链的系统中执行映射迭代 |
AU2019379711B2 (en) | 2019-12-05 | 2022-04-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Performing map iterations in a blockchain-based system |
-
2019
- 2019-12-05 AU AU2019379711A patent/AU2019379711B2/en active Active
- 2019-12-05 CN CN201980004890.4A patent/CN111226209B/zh active Active
- 2019-12-05 SG SG11202010541UA patent/SG11202010541UA/en unknown
- 2019-12-05 WO PCT/CN2019/123242 patent/WO2020098819A2/en unknown
- 2019-12-05 EP EP19883366.7A patent/EP3769233B1/en active Active
- 2019-12-05 CA CA3098649A patent/CA3098649A1/en active Pending
-
2020
- 2020-10-28 US US17/082,756 patent/US11251969B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110268394A (zh) * | 2017-02-09 | 2019-09-20 | 美光科技公司 | Kvs树 |
Non-Patent Citations (1)
Title |
---|
Andrei Z. Broder等.Multilevel adaptive hashing.《SODA '90: Proceedings of the first annual ACM-SIAM symposium on Discrete algorithms》.1990,第43–53页. * |
Also Published As
Publication number | Publication date |
---|---|
WO2020098819A3 (en) | 2020-10-15 |
US11251969B2 (en) | 2022-02-15 |
EP3769233A2 (en) | 2021-01-27 |
US20210119806A1 (en) | 2021-04-22 |
AU2019379711B2 (en) | 2022-04-07 |
EP3769233B1 (en) | 2023-05-03 |
CA3098649A1 (en) | 2020-05-22 |
AU2019379711A1 (en) | 2021-06-24 |
WO2020098819A2 (en) | 2020-05-22 |
CN111226209A (zh) | 2020-06-02 |
SG11202010541UA (en) | 2020-11-27 |
EP3769233A4 (en) | 2021-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111295650B (zh) | 在基于区块链的系统中执行映射迭代 | |
US10929374B2 (en) | Constructing blockchain world state Merkle Patricia Trie subtree | |
US10691676B1 (en) | Updating blockchain world state Merkle Patricia Trie subtree | |
CN111226209B (zh) | 在基于区块链的系统中执行映射迭代 | |
US10977114B2 (en) | Indexing and recovering encoded blockchain data | |
US11119987B2 (en) | Shared blockchain data storage based on error correction code | |
US11095434B2 (en) | Shared blockchain data storage based on error correction code | |
US11188418B2 (en) | Shared blockchain data storage based on error correction code |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40031023 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |