首页 / 专利库 / 银行与财务事项 / 智能合约 / 用于数据遍历的方法和设备

用于数据遍历的方法和设备

阅读:1049发布:2020-05-14

专利汇可以提供用于数据遍历的方法和设备专利检索,专利查询,专利分析的服务。并且本文公开了用于数据遍历的方法、设备和装置,包括存储在计算机可读介质上的 计算机程序 。方法之一包括:从程序获得用于在 区 块 链 上使用的一个或多个键值对;索引所述一个或多个键值对中的一个或多个键以生成索引,所述索引将所述一个或多个键与所述程序的标识相关联;以及基于所述索引在所述一个或多个键值对中检索至少一个值。,下面是用于数据遍历的方法和设备专利的具体信息内容。

1.一种计算机实现的用于数据遍历的方法,所述方法包括:
从程序获得用于在链上使用的一个或多个键值对;
索引所述一个或多个键值对中的一个或多个键以生成索引,所述索引将所述一个或多个键与所述程序的标识相关联;以及
基于所述索引在所述一个或多个键值对中检索至少一个值。
2.如权利要求1所述的方法,进一步包括:
在实施所述方法的计算机上本地记录所述索引。
3.如先前任意一项权利要求所述的方法,其中,所述程序是被提供用于在所述区块链上执行的智能合约
4.如权利要求3所述的方法,其中,所述程序的所述标识包括在所述程序被并入所述区块链时分配给所述程序的地址。
5.如权利要求3和4中任意一项所述的方法,进一步包括:
在所述区块链上记录所述索引的一个或多个特征。
6.如权利要求5所述的方法,其中,所述索引的所述一个或多个特征包括记录在所述索引中的多个数据记录。
7.如权利要求5所述的方法,其中,所述索引的所述一个或多个特征包括所述索引的哈希值。
8.如权利要求5至7中任意一项所述的方法,进一步包括:
确定维护所述区块链的多个节点关于所述索引的所述一个或多个特征是否达成一致。
9.如权利要求8所述的方法,进一步包括:
响应于确定所述多个节点关于所述索引的所述一个或多个特征未达成一致,更新所述索引。
10.如先前任意一项权利要求所述的方法,其中,所述索引将所述一个或多个键值对中的每一个的键与所述程序的所述标识相关联。
11.如先前任意一项权利要求所述的方法,其中,
所述一个或多个键值对包括与映射相对应的键值对组,且
所述索引将所述键值对组中的每一个键值对的键与所述程序的所述标识以及所述映射的标识相关联。
12.如权利要求10所述的方法,进一步包括:
接收遍历请求,所述遍历请求包括与所述程序的所述标识相对应的信息;以及基于所述遍历请求从所述索引检索键列表,所述键列表包括所述一个或多个键值对的所述一个或多个键。
13.如权利要求11所述的方法,进一步包括:
接收遍历请求,所述遍历请求包括与所述程序的所述标识以及所述映射的所述标识相对应的信息;以及
基于所述遍历请求从所述索引检索键列表,所述键列表包括所述键值对组中的每一个键值对的所述键。
14.如权利要求12和13中任意一项所述的方法,进一步包括:
检索与所述键列表中包括的每个键相对应的值。
15.一种用于数据遍历的设备,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行权利要求1至14中任一项所述的方法。
16.一种用于数据遍历的装置,所述装置包括用于执行权利要求1至14中任一项所述的方法的多个模块。
17.一种非暂态计算机可读介质,其上存储有指令,所述指令在由设备的处理器执行时,促使所述设备执行权利要求1至14中任一项所述的方法。

说明书全文

用于数据遍历的方法和设备

技术领域

[0001] 本文通常涉及计算机技术,更具体地,涉及用于数据遍历的方法和设备。

背景技术

[0002] 链系统,也被称为分布式账本系统(Distributed Ledger System,DLS)或共识系统,使得参与的实体能够安全且不可篡改地存储数据。区块链系统可以在不参考任何特定用例的情况下包括任何DLS,并可以被用于公有、私有和联盟区块链网络。公有区块链网络向所有实体开放使用该系统,并开放参与共识过程。私有区块链网络针对特定实体提供,该特定实体集中控制读写权限(permission)。联盟区块链网络针对选择的实体组群提供并包括访问控制层,该实体组群控制共识过程。
[0003] 使用点对点(peer-to-peer,P2P)网络实现区块链系统,其中的节点彼此直接通信,例如无需固定的中央服务器。P2P网络中的每个节点可以发起与P2P网络中的另一节点的通信。
[0004] 区块链系统维护一个或多个区块链。区块链是用于存储例如交易的数据的数据结构,其可以预防数据被恶意方篡改或操纵。区块链系统可以支持一个或多个智能合约的执行。每个智能合约可以是计算机代码形式的计算机协议,该计算机协议被并入区块链中以促进、验证或加强合约的协商或执行。
[0005] 智能合约可以使用键值对指定数据。每个键值对可以包括能够利用密钥检索的键和值。当智能合约被并入区块链时,在智能合约中指定的键值对可以被记录在区块链上。出于安全原因,区块链系统可以利用与智能合约中指定的初始密钥不同的、经修改的密钥来记录键值对。例如,与记录键值对不同,区块链系统可以在区块链上记录经修改的键值对,其中key1和key2是初始键值对,hash(key1)和hash(key2)表示根据预定义的哈希函数计算的key1和key2的哈希值。因为hash(key1)和hash(key2)彼此不相关,可以需要至少两个独立的输入/输出(I/O)操作来检索所记录的键值对
[0006] 此外,区块链系统的当前实施方式通常在树形数据结构中记录键值对。树形数据结构可以包括例如,字典树(Trie Tree)、梅克尔树(Merkle Tree)、梅克尔帕特丽夏树(Merkle Patricia Tree)、桶形树(Bucket Tree)等。在树形数据结构中记录例如的键值对可能会进一步增加遍历记录的键值对所需的I/O操作的数量。例如,如果智能合约包含n个键值对,且如果区块链系统利用深度等于d的梅克尔帕特丽夏树来记录这些键值对,则可能需要高达(d-1)x n个I/O操作来遍历n个记录的键值对。
[0007] 因此,需要一种方法来提高遍历智能合约中指定的键值对的能发明内容
[0008] 在一方面,一种用于数据遍历的计算机实现的方法包括:从程序获得用于在区块链上使用的一个或多个键值对;索引所述一个或多个键值对的一个或多个键以生成索引,所述索引将所述一个或多个键与所述程序的标识相关联;以及基于所述索引在所述一个或多个键值对中检索至少一个值。
[0009] 在另一方面,一种用于数据遍历的设备包括:一个或多个处理器和耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行以下操作:从程序获得用于在区块链上使用的一个或多个键值对;索引所述一个或多个键值对的一个或多个键以生成索引,所述索引将所述一个或多个键与所述程序的标识相关联;以及基于所述索引在所述一个或多个键值对中检索至少一个值。
[0010] 在还一方面,一种具有存储在其上的指令的非暂态计算机可读介质,所述指令当由设备的处理器执行时,促使所述设备执行用于数据遍历的方法。所述方法包括:从程序获得用于在区块链上使用的一个或多个键值对;索引所述一个或多个键值对的一个或多个键以生成索引,所述索引将所述一个或多个键与所述程序的标识相关联;以及基于所述索引在所述一个或多个键值对中检索至少一个值。附图说明
[0011] 与本文结合并构成本文一部分的附图解释了实施例。在下列引用附图的说明中,除非另有所示,不同附图中的相同数字表示相同或类似的元素。
[0012] 图1是根据实施例的区块链系统的示意图。
[0013] 图2是根据实施例的用于实现区块链系统中的节点的计算设备的示意图。
[0014] 图3是根据实施例的数据遍历方案的示意图。
[0015] 图4是根据实施例的用于数据遍历的方法的流程图
[0016] 图5是根据实施例的用于数据遍历的装置的框图

具体实施方式

[0017] 本文的实施例提供用于数据遍历的方法和设备。所述方法和设备利用索引追踪从智能合约获得的键值对。所述方法和设备还利用索引提供数据遍历方案,可以利用该方案帮助遍历智能合约中的键值对。所述方法和设备还提供接口,例如应用程序接口(API),其允许区块链系统的用户利用所提供的数据遍历方法。例如,用户可以通过所述API对智能合约编程以利用数据遍历方法。
[0018] 本文中公开的实施例具有一个或多个技术效果。在一些实施例中,所述方法和设备索引智能合约中的键值对。这提供了数据遍历方案,可以利用该方案帮助遍历智能合约中的键值对。在一些实施例中,所述方法和设备提供例如API的接口来支持数据遍历方案的使用。这减少了遍历智能合约中的键值对所需要的I/O操作的数量。在一些实施例中,所述方法和设备支持索引记录的本地维护。这允许区块链系统中的节点本地维护他们的索引记录,其可以被用于支持区块链上和区块链下的遍历操作。在一些实施例中,所述方法和设备利用在区块链系统中实施的共识协议来保证节点维护的索引记录是最新的。这提供了一种简单且计算上廉价的解决方案来管理节点维护的索引记录。这也允许节点维护其索引记录,而不会影响区块链上的其他操作。
[0019] 区块链是以交易可以不篡改并随后被验证的方式存储例如交易的数据的数据结构。区块链包括一个或多个区块。每个区块通过包含在区块链中紧邻其之前的前一区块的加密哈希值(cryptographic hash)而链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。通常已经被区块链系统中的节点验证的交易可以被进行哈希处理并编入例如默克尔(Merkle)树的数据结构中。在Merkle树中,在该树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值可以在该分支的根处连接。此过程沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。声称是存储在树中的交易的哈希值可以通过确定其是否与树的结构一致而被快速验证。
[0020] 区块链系统包括用于管理、更新并维护一个或多个区块链的计算节点的网络。区块链网络可以是公有区块链网络、私有区块链网络或联盟区块链网络。例如,诸如数百、数千甚至数百万个实体的无数个实体可以在公有区块链网络中操作,每个实体操作该公有区块链网络中的至少一个节点。因此,公有区块链网络可以被认为是关于参与实体的公有网络。有时,大多数实体(节点)必须对每个区块签名以使该区块有效,并被添加到区块链网络的区块链中。公有区块链网络的示例包括利用分布式账本(被称为区块链)的特定点对点支付网络。
[0021] 通常,公有区块链网络可以支持公开交易。公开交易对于公有区块链网络内的所有节点共享,并被存储在全局区块链中。全局区块链是跨所有节点复制的区块链,且所有节点都处于相对于全局区块链共识的完好状态。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络内实施共识协议。共识协议的示例包括工作量证明(POW)(例如,在某些加密货币网络中实施)、权益证明(POS)和权威证明(POA)。
[0022] 通常,可以为特定实体提供私有区块链网络,该特定实体集中控制读写权限。实体控制哪些节点能够参与到区块链网络中。因此,私有区块链网络通常被称为权限网络,其限制允许谁参与网络,以及它们的参与级别(例如,仅在某些交易中)。可以使用各种类型的访问控制机制(例如,现有参与者投票添加新实体,监管机构可以控制权限)。
[0023] 通常,联盟区块链网络在参与实体之间可以是私有的。在联盟区块链网络中,共识过程由授权的节点集控制,一个或多个节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是关于参与实体的私有网络。在一些示例中,每个实体(节点)必须对每个区块签名,以使区块被验证并被添加到区块链中。在一些示例中,至少实体(节点)的子集(例如,至少7个实体)必须对每个区块签名,以使区块被验证并被添加到区块链中。
[0024] 图1示出了根据实施例的区块链系统100的示意图。参考图1,区块链系统100可以包括多个节点,例如,节点102至节点110,其被配置为在区块链120上操作。节点102至节点110可以形成网络112,例如点对点(P2P)网络。节点102至节点110中的每一个可以是计算设备,例如计算机或计算机系统,其被配置为存储区块链120的副本,或可以是在所述计算设备上运行的软件,例如处理或应用。节点102至节点110中的每一个可以具有唯一的识别符。
[0025] 区块链120可以包括数据区块形式的记录的增长列表,例如图1中的区块B1至B5。区块B1至区块B5中的每一个包括时间戳、前一区块的加密哈希值以及当前区块的数据,该数据可以是例如货币交易的交易。例如,如图1中所示出的,区块B5可以包括时间戳、区块B4的加密哈希值和区块B5的交易数据。此外,例如,可以对前一区块执行哈希运算以生成前一区块的加密哈希值。该哈希运算可以通过例如SHA-256的哈希算法将各种长度的输入转化为固定长度的加密输出。
[0026] 节点102至节点110可以被配置为在区块链120上执行操作。例如,当例如节点102的节点想要将新数据存储到区块链120上时,该节点可以生成要被添加至区块链120的新区块并将该新区块广播至网络112中的其他节点,例如节点104至节点110。基于新区块的合法性,例如,其签名和交易的有效性,其他节点可以确定接受该新区块,使得节点102和其他节点可以将该新区块添加至他们相应的区块链120副本中。随着这项处理的重复进行,越来越多的数据的区块可以被添加至区块链120。
[0027] 图2示出了根据实施例的用于实现区块链系统中的节点(例如,节点102)的计算设备200的示意图。参考图2,计算设备200可以包括通信接口202、处理器204和存储器206.[0028] 通信接口202可以促进计算设备200和实施网络中其他节点(例如,图1中的节点104至节点110)的设备之间的通信。在一些实施例中,通信接口202被配置为支持一个或多个通信标准,例如互联网标准或协议、集成业务数字网络(ISDN)标准等。在一些实施例中,通信接口202可以包括一个或多个局域网(LAN)卡、有线调制解调器、卫星调制解调器、数据总线、线缆、无线通信信道、基于无线电的通信信道、蜂窝通信信道、基于互联网协议(IP)的通信设备或用于有线和/或无线通信的其它通信设备。在一些实施例中,通信接口202可以基于公共设施、私有云设施、混合公有/私有云设施。
[0029] 处理器204可以包括一个或多个专用处理单元、专用集成电路(ASIC)、现场可编程系列(FPGA)或各种其他类型的处理器或处理单元。处理器204与存储器206耦接并被配置为执行存储在存储器206中的指令
[0030] 存储器206可以存储处理器可执行的指令和数据,例如区块链120的副本(图1)。存储器206可以包括任意类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、闪存或磁盘或光盘。当存储器206中的指令由处理器204执行时,计算设备200可以在区块链120上执行操作。
[0031] 再次参考图1,区块链系统100可以支持一个或多个智能合约的执行。每个智能合约可以是计算机代码形式的计算机协议,该协议被并入区块链120中以促进、验证或加强合约的协商或执行。例如,区块链系统100的用户可以利用诸如C++、Java、Solidity、Python等的编程语言将约定的条款编程至智能合约中,并且当满足该条款时,区块链系统100可以自动执行该智能合约,例如以便执行交易。又例如,该智能合约可以包括多个子例程或函数,其中每个可以是执行特定任务的程序指令的序列。智能合约可以是在没有人类交互的情况下完全执行或部分执行的可操作代码。
[0032] 智能合约可以包含一个或多个数据记录。这样的数据记录可以被指定为智能合约中的键值对。例如,智能合约可以包括一组键值对,,…。这组键值对可以被称为“映射”。在映射中指定的键和值可以是任意数据类型,例如字符串、整数、浮点数、布尔值等。
[0033] 智能合约还可以包含多于一组的键值对,例如多于一个映射。例如,智能合约可以包括具有账号作为键、剩余余额作为值的第一映射(Map_1),如以下表1中所示:
[0034]
[0035] 表1
[0036] 又例如,智能合约还可以包括具有账号作为键、可用信用作为值的第二映射(Map_2),如以下表2中所示:
[0037]
[0038] 表2
[0039] 可以理解以上描述的映射仅被提供为示例且不旨在作为限制。智能合约可以包含附加映射。附加映射可以具有任意大小且他们可以使用或可以不使用相同的账号作为键。
[0040] 当智能合约被并入区块链120时,包含在智能合约中的映射所指定的键值对可以被记录在区块链120上。以这种方式记录键值对可以允许区块链系统100的用户使用键来检索智能合约中指定的值。例如,区块链系统100的用户可以通过查找与表示特定账户的键相关联的值来检索与特定账户相关联的余额信息。
[0041] 在一些实施例中,以这种方式记录键值对会限制遍历智能合约中指定的键值对的能力,因为这样做可能需要预先知道键值对中指定的键。如果区块链系统100修改用于在区块链120上记录的键值对,则遍历的能力也可能受到限制。例如,区块链系统100可以在区块链120上修改键值并记录修改后的键值对,,而不是记录第一映射(映射_1)中指定的键值对。如果区块链系统100利用树形数据结构来记录修改的键值对,则会进一步限制遍历的能力。
[0042] 可以利用数据遍历方案来帮助遍历智能合约中指定的数据,例如键值对。图3示出了根据实施例的用于如区块链系统100(图1)的区块链系统的数据遍历方案300的示意图。参考图3,数据遍历方案300可以在区块链系统100的(图1)如节点102至节点110的一个或多个节点中实现。
[0043] 在一些实施例中,诸如节点102的每个节点可以利用诸如存储器206(图2)的存储器来存储数据。存储在存储器中的数据可以包括链上下文132和索引136,以下对二者进行了详述。存储在存储器中的数据还可以包括区块链120的副本。在一些实施例中,存储在节点102中的区块链120的副本可以包括,例如,形成区块链120的区块、包含已被并入到区块链120的交易中包括的键的状态树140、以及包含与包括在状态树140中的键对应的值的状态数据库142。状态树140和状态数据库142还可以记录支持区块链120的操作的附加信息。
[0044] 在一些实施例中,例如节点102的每个节点还可以利用例如处理器204(图2)的处理器以支持执行层134的实现,该执行层134能够执行智能合约并执行用于实现数据遍历方案300的指令。在一些实施例中,执行层134可以被实现为用作智能合约的运行时间环境的虚拟机。这样的虚拟机可以按以太坊虚拟机等类似的方式实现。
[0045] 在一些实施例中,节点102可以通过在索引136中索引在智能合约中指定的数据来实现数据遍历方案300。例如,当节点102决定将智能合约144并入区块链120的新区块138时,节点102可以解析智能合约144以获得在智能合约144中指定的键值对。节点102可以索引在所获得的键值对中指定的初始键,使得索引136可以被用于帮助遍历这些键值对。节点102还可以在区块链120上执行其他操作。例如,节点102可以将智能合约指定的键记录在状态树140中。又例如,节点102可以将与键对应的值记录在状态数据库142中。
[0046] 在一些实施例中,节点102可以记录索引136中的信息以表明智能合约与该智能合约中指定的键值对的关联性。参考上述例子中的智能合约,节点102可以利用索引136记录智能合约、第一映射(映射_1)和第二映射(映射_2)、以及在第一映射(映射_1)和第二映射(映射_2)中各自指定的初始键之间的关联性。索引136可以包括表示>的记录,其中Smart_Contract_Identifier可以是用于在并入区块链系统100的所有智能合约当中唯一地识别智能合约的识别符;Map_Identifier可以是唯一地识别所识别的智能合约中例如第一映射或第二映射的特定映射的识别符;并且List_of_Original_Keys可以包括所识别的映射中指定的所有初始键的列表。
[0047] 在一些实施例中,Smart_Contract_Identifier可以包括当智能合约被并入区块链系统100时该区块链系统100分配给智能合约的地址。在一些实施例中,Map_Identifier可以由节点102生成。在一些实施例中,节点102可以解析智能合约并生成用于智能合约中指定的映射的序列识别符。继续上面智能合约的示例,索引136可以包括例如:
[0048] >,以及
[0049] >
[0050] 可以理解上述例如>的表示是提供用于说明的逻辑表示且不旨在作为限制。可以预期,索引136可以记录以各种方式表示逻辑表示的底层数据,只要该底层数据可以指示智能合约、智能合约中指定的映射以及智能合约中指定的每个映射中指定的初始键之间的关联性。例如,在一些实施例中,索引136可以将表示逻辑表示的底层数据记录在多维度阵列中。在一些实施例中,索引136可以将表示逻辑表示的底层数据记录在一个或多个数据库表中。在一些实施例中,索引136可以通过将Smart_Contract_Identifier、the Map_Identifier和the List_of_Original_Keys级联在一起来记录表示逻辑表示的底层数据。可以理解索引136也可以用其他方式记录表示逻辑表示的底层数据。
[0051] 在一些实施例中,节点102可以本地记录索引136而不将存储在索引136中的内容并入区块链120中。本地记录索引136可以将实现数据遍历方案300所需的改变最小化。在一些实施例中,节点102可以实现数据遍历方案300而不改变区块链120的操作。节点102可以例如通过链上下文132提供应用程序编程接口(API),其通过调用经过API提供的遍历函数允许智能合约144在执行层134中执行以遍历智能合约144中指定的键值对(或在其他智能合约中指定的键值对)。
[0052] 在一些实施例中,节点102可以利用链上下文132来存储执行上下文以支持智能合约144的执行。链上下文132可以包括区块链系统100提供的变量和共同使用的函数。例如,链上下文132可以包括区块编号()函数,其可以被调用以提供当前区块编号。链上下文132还可以包括信息发送方()函数,其可以被调用以识别消息的发送方。链上下文132还可以包括其他函数,包括但不限于如以太坊等的区块链系统中提供的函数。
[0053] 节点102可以实施链上下文132以进一步包括数据遍历函数。例如,在一些实施例中,链上下文132可以提供遍历(Smart_Contract_Identifier)函数。可以基于遍历请求来执行遍历(Smart_Contract_Identifier)函数,该请求包括与Smart_Contract_Identifier相对应的信息,且遍历(Smart_Contract_Identifier)函数可以允许诸如在执行层134中执行的智能合约144的调用方将Smart_Contract_Identifier指定为输入。链上下文132可以执行遍历(Smart_Contract_Identifier)函数并从索引136检索一列表,该列表包含在例如Smart_Contract_Identifier识别的智能合约中指定的所有初始键。链上下文132然后可以利用该初始键的列表检索他们对应的值并将该值返回给智能合约144以完成遍历操作。可选地和/或附加地,链上下文132可以将初始键的列表返回给智能合约144并让智能合约144决定如何对键进行处理。
[0054] 在一些实施例中,链上下文132还可以提供遍历(Smart_Contract_Identifier,Map_Identifier)函数。遍历(Smart_Contract_Identifier,Map_Identifier)函数可以基于遍历请求被执行,该请求包括与Smart_Contract_Identifier,Map_Identifier相对应的信息,并且可以允许例如在执行层134中执行的智能合约144的调用方将Smart_Contract_Identifier,Map_Identifier指定为输入。链上下文132可以执行遍历(Smart_Contract_Identifier,Map_Identifier)函数并从索引136检索一列表,该列表包含Smart_Contract_Identifier识别的智能合约中包含的Map_Identifier识别的映射中指定的所有初始键。链上下文132然后可以利用该初始键的列表检索他们对应的值并将值返回给智能合约144以完成遍历操作。可选地和/或附加地,链上下文132可以将初始键的列表返回给智能合约144并让智能合约144决定如何对键进行处理。
[0055] 可以理解,上述遍历()函数可以利用各种类型的编程语言实现且这些函数的上述声明仅作为示例提供,并不旨在作为限制。遍历()函数可以被不同地声明,例如,具有不同的函数名称或不同的参数列表,同时仍然能够执行上述相同的操作。
[0056] 在一些实施例中,节点102可以将关于索引136的某些类型的特征,在没有索引136的内容的情况下,并入区块链120中。可以被并入区块链120中的特征可以包括,例如,记录在索引136中的键的总数量。例如,在一些实施例中,节点102可以确定记录在索引136中的键的总数量并将该数量记录在状态数据库142中。以这种方式记录的总数可以遵循区块链系统100提供的共识协议,其可以由区块链系统100中的节点102以及其他节点104至节点110使用以针对总数应该是多少确定它们是否一致。如果例如节点104的节点具有记录在其本地索引中的不同数量的键,则节点104可以确定其本地索引需要被更新。以这种方式,通过将针对索引136的某些特征并入区块链120中,区块链系统100可以确保区块链系统100中的节点102至节点110具有用于检查他们本地索引的状态的机制。
[0057] 针对索引136的其他类型的特征也可以被并入区块链120中。例如,在一些实施例中,节点102可以将索引136存储为Merkle树。节点102可以计算Merkle树的哈希值并将产生的哈希值记录在状态数据库142中。以这种方式记录的哈希值可以接着遵循区块链系统100提供的共识协议,其可以由区块链系统100中的节点102以及其他节点104至节点110使用以确定他们各自本地维护的索引是否仍是最新的。如果例如节点104的节点具有针对存储其本地索引的内容不同的哈希值,则节点104可以确定其本地索引需要被更新。
[0058] 图4示出了根据实施例的用于数据遍历的方法400的流程图。方法400可以由区块链系统100(图1)的一个或多个节点执行,例如节点102至节点110。在一些实施例中,每次节点102至节点110将智能合约并入如区块链120(图3)的区块链时,节点102至节点110可以调用方法400。
[0059] 在步骤402处,例如节点102的节点可以将例如智能合约144(图3)的程序加载到运行时间环境中,例如,执行层134(图3)。执行层134可以解析智能合约144以获得智能合约144中指定的数据。在一些实施例中,智能合约144中指定的数据可以包括一个或多个键值对且执行层134可以从智能合约144获得一个或多个键值对。
[0060] 在步骤404处,执行层134可以在区块链上记录智能合约144中指定的数据,并基于智能合约144中指定的数据更新索引,例如索引136(图3)。在一些实施例中,执行层134可以索引从智能合约144获得的键值对的键以生成索引136。执行层134可以利用索引136来记录信息,该信息包含智能合约144与智能合约144中指定的键值对的关联性。索引136可以包括逻辑地表示例如上述的>的记录。
[0061] 在步骤406,节点102可以为执行层134提供用于发送遍历请求的接口,例如,通过调用遍历函数来遍历智能合约144中指定的数据。在一些实施例中,执行层134可以经过节点102提供的API调用遍历函数。在一些实施例中,节点102可以经过例如链上下文132(图3)的执行上下文来提供API。在一些实施例中,链上下文132可以包括执行上下文以支持智能合约144的执行。链上下文132可以包括例如可以用于提供关于区块链系统100的信息的变量和函数。链上下文132还可以包括遍历函数,例如上述的遍历(Smart_Contract_Identifie)或遍历(Smart_Contract_Identifier,Map_Identifier)。执行层134可以调用由链上下文132经过API提供的这些遍历函数中的一个或多个。
[0062] 在步骤408处,链上下文132可以执行遍历函数并从索引136获得所识别的智能合约中指定的初始键的列表。索引136可以包括如上所述的逻辑地表示>的记录。在一些实施例中,链上下文132还可以利用所获得的键来检索它们相对应的值。
[0063] 在步骤410处,链上下文132可以确定区块链系统100中的节点102是否与其他节点104至110关于索引136的一个或多个特征达成一致。在一些实施例中,链上下文132可以基于索引136中记录的键的总数量来确定。可选地和/或附加地,链上下文132可以基于索引
136的哈希值来确定。可以预测,还可以利用索引136的其他特征来确定。
[0064] 如果链上下文132确定区块链系统100中的节点102与其他节点104至110关于索引136的一个或多个特征达成一致,在步骤412处,链上下文132可以将键连同它们相对应的值一起返回给执行层134以完成遍历操作。在另一方面,如果链上下文132没有确定区块链系统100中的节点102与其他节点104-110关于索引136的一个或多个特征达成一致,则在步骤
414处,链上下文132可以将错误消息返回给执行层134。在一些实施例中,对从链上下文132接收到错误消息做出响应,执行层134可以例如利用在区块链系统100实施的共识协议来更新索引136。
[0065] 可以理解,虽然链上下文132被阐释为执行了上述的步骤408至步骤414,但这样的描述仅为示例性的且不旨在作为限制。可以预期,执行层134可以被实现以执行上述的步骤408至步骤414中的某些步骤,包括例如,利用所获得的键来检索它们相对应的值并确定区块链系统100中的节点102是否与其他节点104至110一致。还可以预期,例如步骤408的特定步骤可以被执行层134单独调用以在执行智能合约144或其他智能合约期间执行遍历操作。
[0066] 图5是根据实施例的用于数据遍历的装置500的框图。例如,装置500可以是软件处理的实现,并且可以对应于方法400(图4)。参考图5,装置500可以包括执行模块502、记录模块504、接口模块506、遍历模块508、确定模块510、返回模块512以及错误消息模块514。
[0067] 执行模块502可以将例如智能合约144(图3)的程序加载至运行时间环境,例如执行层134(图3)。执行层134可以解析智能合约144以从智能合约144获得一个或多个键值对。
[0068] 记录模块504可以在区块链120(图3)上记录来自智能合约144的键值对并基于该键值对来更新索引。
[0069] 接口模块506可以为执行层134提供接口以调用遍历函数来遍历键值对。在一些实施例中,接口模块506支持经过API调用遍历函数。
[0070] 遍历模块508可以执行遍历函数并从索引获得所请求的初始键的列表。
[0071] 确定模块510可以确定区块链系统中的多个节点,例如所有节点,关于用于执行遍历函数的索引的一个或多个特征是否达成一致。如果区块链系统中的所有节点关于索引的一个或多个特征达成一致,则返回模块512可以返回遍历函数的结果并完成遍历操作。如果不是区块链系统中的所有节点关于索引的一个或多个特征达成一致,则错误消息模块514可以报告错误消息。
[0072] 上述每个模块可以被实现为软件或硬件或软件和硬件的组合。例如,上述每个模块可以利用处理器执行存储在存储器中的指令实现。又例如,上述每个模块可以利用一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微型控制器、微型处理器或其他电子组件来实现,用于执行所述方法。还例如,上述每个模块可以通过使用计算机芯片或实体来实现或可以通过使用具有特定功能的产品来实现。在一个实施例中,装置500可以是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件接收和发送设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。
[0073] 对于装置500中每个模块的功能和作用的实施过程,可以参考上述方法中的相应步骤。为简单起见,这里省略了细节。
[0074] 在一些实施例中,计算机程序产品可以包括非暂态计算机可读存储介质,其上具有计算机可读程序指令以促使处理器执行上述方法。
[0075] 计算机可读存储介质可以是能够存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、机器编码的设备例如,在其上记录有指令的穿孔卡或凹槽凸起结构,以及前述的任何合适的组合。
[0076] 用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的编程语言和传统的过程编程语言。计算机可读程序指令可以完全在计算设备上作为独立软件包执行,或者部分在第一计算设备上执行并且部分在远离第一计算设备的第二计算设备上执行。在后一种情况下,第二远程计算设备可以通过任何类型的网络连接到第一计算设备,包括局域网(LAN)或广域网(WAN)。
[0077] 计算机可读程序指令可以被提供给通用计算机或专用计算机的处理器,或其他可编程数据处理装置,以产生这样一种机器使得指令经由计算机的处理器或其他可编程数据处理装置执行来创建用于实现上述方法的单元。
[0078] 附图中的流程图和图示出了根据本文各种实施例的设备、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或图中的框可以表示软件程序、段或代码的一部分,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些可选实施方式中,框中提到的功能可以不按图中所示的顺序进行。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,图和/或流程图的每个框以及图和流程图中的框的组合可以由执行特定功能或动作的基于硬件的专用系统或专用硬件和计算机指令的组合来实现。
[0079] 应当理解,为了清楚起见,在单独实施例的上下文中描述的本文的某些特征也可以在单个实施例的组合中提供。相反,为了简洁起见,在单个实施例的上下文中描述的本文的各种特征也可以单独提供或者以任何合适的子组合提供,或者在本文描述的任何其他实施例中合适地提供。除非另有说明,否则在各种实施例的上下文中描述的某些特征不是那些实施例的必要特征。
[0080] 尽管已经结合具体实施例描述了本文,但是许多替换、修改和变化对于本领域技术人员来说是显而易见的。因此,以下权利要求书包含落入权利要求书的范围内的所有这些替代、修改和变化。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈