一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

智能合约的存储装置和方法与流程

2022-03-19 15:32:54 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,特别涉及一种智能合约的存储装置和方法。


背景技术:

2.mpt(merkle patricia trie,默克尔-帕特里夏树)树是区块链技术中经典的数据存储方式。mpt树能够将区块所涉及的智能合约的数据组织起来,实现了对数据的查找和追溯。
3.目前,区块链技术应用到了以清结算系统为代表的一些场景中。在这些场景下,计费流水清单、计费规则等数据都需要上链存储,字段很多、数据量大,并且部分情况下会有单次超过50k的数据存储到区块链的智能合约里。


技术实现要素:

4.发明人经过分析后发现,当历史数据逐渐增多时,会因为存储方式和磁盘i/o(input/output,输入/输出)导致性能问题。
5.本发明实施例所要解决的一个技术问题是:如何提高智能合约使用过程中的性能。
6.根据本发明一些实施例的第一个方面,提供一种智能合约的存储装置,包括:文档数据库,其中,文档数据库包括:一个或多个智能合约数据表,每个智能合约数据表对应一个智能合约,存储相应智能合约的数据;以及系统结构表,存储每个智能合约数据表的标识与哈希值之间的对应关系,以及智能合约的状态变更所涉及的交易记录的哈希值。
7.在一些实施例中,存储装置还包括:处理器,被配置为在接收智能合约的执行请求后,从文档数据库中被执行的智能合约的数据表中,读取被执行的智能合约的状态和代码;执行智能合约,获得被执行的智能合约变更后的状态;根据变更后的状态,更新相应的智能合约数据表。
8.在一些实施例中,处理器进一步被配置为:获取智能合约的创建请求,其中,创建请求中包括存储类型;在存储类型为文档类型的情况下,在文档数据库中建立被请求创建的智能合约对应的智能合约数据表;以及在系统结构表中添加建立的智能合约数据表所对应的条目。
9.在一些实施例中,处理器进一步被配置为:创建用于记录创建智能合约的交易记录,其中,交易记录中包括创建的智能合约的存储类型。
10.在一些实施例中,智能合约数据表中的每条记录包括一个文档,并且,文档采用bson数据结构。
11.在一些实施例中,在智能合约数据表中,每条记录的键为记录在智能合约中的序列号,每条记录的值为相应智能合约的成员属性的序列化的值。
12.在一些实施例中,文档数据库还包括权限表、分区表中的至少一种,权限表用于记录具备写权限的账户信息,分区表用于记录每个智能合约数据表所在的分区。
13.在一些实施例中,存储装置还包括:键值数据库,被配置为存储智能合约对应的mpt树中节点之间的对应关系。
14.根据本发明一些实施例的第二个方面,提供一种智能合约的存储方法,包括:在接收智能合约的执行请求后,从文档数据库中确定被执行的智能合约的数据表,并从数据表中读取被执行的智能合约的状态和代码,其中,文档数据库包括一个或多个智能合约数据表,每个智能合约数据表对应一个智能合约,存储相应智能合约的数据;执行智能合约,获得被执行的智能合约变更后的状态;根据变更后的状态,更新相应的智能合约数据表。
15.在一些实施例中,文档数据库还包括系统结构表,存储每个智能合约数据表的标识与校验值之间的对应关系、以及智能合约的状态变更所涉及的交易的哈希值。
16.在一些实施例中,存储方法还包括:获取智能合约的创建请求,其中,创建请求中包括存储类型;在存储类型为文档类型的情况下,在文档数据库中建立被请求创建的智能合约对应的智能合约数据表;以及在系统结构表中添加建立的智能合约数据表所对应的条目。
17.在一些实施例中,存储方法还包括:创建用于记录创建智能合约的交易记录,其中,交易记录中包括创建的智能合约的存储类型。
18.上述发明中的一些实施例具有如下优点或有益效果:本发明的实施例在满足区块链特性和要求的同时,以文档存储的方式代替了基于mpt树的松散的存储方式,从而能够为各类智能合约的应用提供读写性能更强的存储方案,提高了智能合约使用过程中的性能。
19.通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1示出了根据本发明一些实施例的智能合约的存储装置的结构示意图。
22.图2示出了根据本发明另一些实施例的智能合约的存储装置的结构示意图。
23.图3示出了根据本发明又一些实施例的智能合约的存储装置的结构示意图。
24.图4示出了根据本发明一些实施例的区块链系统的架构示意图。
25.图5示出了根据本发明一些实施例的智能合约的存储方法的流程示意图。
26.图6示出了根据本发明一些实施例的智能合约创建方法的流程示意图。
27.图7示出了根据本发明再一些实施例的智能合约的存储装置的结构示意图。
28.图8示出了根据本发明再一些实施例的智能合约的存储装置的结构示意图。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使
用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
31.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
32.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
33.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
34.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
35.发明人对相关技术进行分析后发现,在一些区块链系统中,区块中的交易对账户进行操作,进而改变账户中的数据,也就是账户的状态。智能合约的数据也是存储在账户下。每个账户内保存着这个智能合约“用户”的代码、参数、当前余额(nonce)等数据。智能合约参数的变化即意味着这个合约账户发生了变化。而这类区块链的底层数据库为键值(kv)数据库。
36.在相关技术中,区块中的数据是通过mpt树组织起来的。mpt树上节点的索引为这个节点的哈希(hash)值。在kv数据库中,当用键(key)查找值(value)的时候,是根据代表某节点的key获取下一个需要跳转的节点的hash值。在获取到下一个节点的hash值后,才能从底层数据库中取出下一个节点的数据,以此类推,直至到达value所在的叶子节点。当要索引新的数据时,用mpt新的根节点hash,从底层数据库查出新的根节点,再往后一层层遍历,最终找到新的数据。而如果要查询历史数据,则可用历史的树根hash,从底层数据库取出历史的根节点,再往下遍历,就可查询到历史数据。
37.当mpt树上某个叶子节点的数据更新后,此叶子节点的hash也会更新,随之而来的,是这个叶子节点回溯到根节点时所涉及的所有中间节点的hash都会更新。最终,mpt根节点的hash也会更新。虽然,从某个区块中取出这个区块的状态根(state root),查询到mpt树的根节点,就能索引到这个区块当时账户的数据历史。但是,mpt树的这种结构带来了大量的哈希计算,并且打散了底层数据的存储的连续性,大大降低了性能。但某些场景下,性能的需求是大于可追溯的需求的。
38.底层kv数据库通常使用leveldb数据库。在这种数据库中,一个文件只能放40个key-value对,因此尤其对于大于50k的value,存取和读取的效率非常低。所以,发明人提出了一种非mpt树组织的存储结构,来提高整体系统的性能。下面参考图1描述本发明智能合约存储装置的实施例。
39.图1示出了根据本发明一些实施例的智能合约的存储装置的结构示意图。如图1所示,该实施例的智能合约的存储装置10包括文档数据库110。文档数据库110包括一个或多个智能合约数据表1101、以及系统结构表1102。文档数据库110以文档为单位,对数据进行处理。由于文档可以支持较长、较复杂、无结构的数据,因此文档数据库110可以高效地存储多种类型的智能合约的数据,例如数据量较大的、或嵌套结构多的智能合约。一个文档相当
于关系数据库中的一条记录。
40.在一些实施例中,文档数据库110为mongo数据库。mongo支持的数据结构非常松散,可以存储比较复杂的数据类型。因此,对于各类智能合约,mongo数据库能够给予更好的支持。
41.每个智能合约数据表1101对应一个智能合约,存储相应智能合约的数据。智能合约例如根据智能合约账户的地址进行命名,以区分不同的智能合约数据表。
42.在一些实施例中,智能合约数据表1101的每条记录包括一个文档,并且,该文档采用bson数据结构。bson具有轻量性、可遍历性、高效性的特点。bson的数据结构使得处理文档型数据更为直接,并支持复杂的数据结构,例如支持在智能合约中定义复杂的嵌套类型映射(mapping)。
43.在一些实施例中,智能合约数据表1101的每条记录的键为该记录在智能合约中的序列号,每条记录的值为相应智能合约的成员属性的序列化的值。例如,在智能合约数据表中添加条目(entry)的定义,条目对应于表中的一行。所有的存储成员、即智能合约中的成员属性按照成员在智能合约中定义的位置从0开始索引编排,每次累加1,作为其对应的key值进行存储。value为相应的成员属性的序列化的值。从而,智能合约数据表1101中能够按照智能合约中对成员的定义位置来排序各个成员,使得数据表能够准确地反映智能合约的内容。
44.系统结构表1102存储每个智能合约数据表的标识与哈希值之间的对应关系,以及智能合约的状态变更所涉及的交易记录的哈希值。
45.当需要对某个智能合约进行校验时,通过比对系统结构表1102中存储的校验值、以及计算的智能合约数据表的校验值,可以确定智能合约数据表是否被篡改。因此,即使不使用mpt树的存储方式,也能够满足区块链中对数据的不可篡改性的要求。
46.当需要追溯智能合约的历史状态时,通过从系统结构表1102中读取智能合约的状态变更所涉及的交易的哈希值,能够定位到历史交易中智能合约的状态变化值。结合从智能合约数据表1101中取出最新状态以及状态变化值,可以确定智能合约的历史状态。因此,也能够满足区块链中对数据的可追溯性的要求。
47.在一些实施例中,文档数据库110还包括权限表1103,用于记录具备写权限的账户信息,例如账户地址。
48.在一些实施例中,文档数据库还包括分区表1104,用于记录每个智能合约数据表所在的分区。对于“超级账本”等应用场景,一些区块数据仅存储在部分节点中。通过分区表,能够快速定位存储有相关信息的节点,提高了读取效率。
49.上述实施例在满足区块链特性和要求的同时,以文档存储的方式代替了基于mpt树的松散的存储方式,从而能够为各类智能合约的应用提供读写性能更强的存储方案,提高了智能合约使用过程中的性能。
50.在区块链增值业务清结算或者区块链国际漫游清结算等项目中,通常要把计费数据、消费流水等数据上到区块链上,以便于追溯和存证。通常,这类c端(消费者端)用户数据的数据量大、结构比较复杂,频繁的大段数据上链会拖垮整个区块链系统的性能。而通过本发明实施例提供的高效的智能合约存储方式,可以带来系统性能质的飞跃。
51.图2示出了根据本发明另一些实施例的智能合约的存储装置的结构示意图。如图2
所示,该实施例的存储装置20包括文档数据库210以及处理器220。文档数据库210的具体实施方式参见图1实施例,这里不再赘述。
52.处理器220被配置为在接收智能合约的执行请求后,从文档数据库210中被执行的智能合约的数据表中,读取被执行的智能合约的状态和代码;执行智能合约,获得被执行的智能合约变更后的状态;根据变更后的状态,更新相应的智能合约数据表。
53.智能合约的执行请求中包括智能合约的信息,例如智能合约的地址。处理器通过该信息能够确定相应的智能合约数据表,从而不需要进行多次的索引过程,即可获得智能合约的全部信息。因此,提高了读写效率以及智能合约使用过程中的性能。
54.在一些实施例中,处理器220进一步被配置为:获取智能合约的创建请求,其中,创建请求中包括存储类型;在存储类型为文档类型的情况下,在文档数据库中建立被请求创建的智能合约对应的智能合约数据表;以及在系统结构表中添加建立的智能合约数据表所对应的条目。从而,创建者可以在创建智能合约时选择是否采用基于文档数据库的存储方式。
55.在一些实施例中,文档数据库与mpt树所使用的kv数据库可以并行存在于系统中。在智能合约创建时,创建者可以根据需要选择使用哪种方式存储。图3示出了根据本发明又一些实施例的智能合约的存储装置的结构示意图。如图3所示,该实施例的智能合约的存储装置30包括文档数据库310、处理器320以及键值(kv)数据库330。文档数据库310、处理器320的具体实施方式参考前述实施例,这里不再赘述。
56.键值数据库330被配置为存储智能合约对应的mpt树中节点之间的对应关系。
57.在一些实施例中,处理器320进一步被配置为:获取智能合约的创建请求;在存储类型为文档类型的情况下,在文档数据库中建立被请求创建的智能合约对应的智能合约数据表,以及在系统结构表中添加建立的智能合约数据表所对应的条目;在存储类型为mpt树类型的情况下,构建智能合约对应的mpt树,并在键值数据库330中存储mpt树的各个节点之间的索引关系。
58.在一些实施例中,通过创建交易的方式来记录被创建的智能合约及其类型:创建用于记录创建智能合约的交易记录,其中,交易记录中包括创建的智能合约的存储类型。从而,通过查询区块链的账本,能够获得智能合约的创建信息。
59.图4示出了根据本发明一些实施例的区块链系统的架构示意图。如图4所示,在系统40中,包括以太坊虚拟机(environment virtual machine,简称:evm)层41、数据接口层42以及底层数据库层43。数据接口层42包括mpt树模块421和sql模块42,分别使用基于mpt树的方式和基于文档数据库的方式操作数据,其中sql模块42包括数据库驱动421和智能合约数据表422,系统结构表等其他数据表在图中不再赘述。底层数据库层43包括键值数据库431(例如leveldb)以及文档数据库432(例如mongodb)。
60.当使用基于文档数据库的存储方式时,evm41的指令集、字节码解释器、逻辑执行等部分可以不进行太多改变,需要改变的是storage变量的存储类型,例如使用mongodb适合的bson对象格式,以增加数据的处理效率。
61.下面参考图5描述本发明智能合约的存储方法的实施例。
62.图5示出了根据本发明一些实施例的智能合约的存储方法的流程示意图。如图5所示,该实施例的智能合约的存储方法包括步骤s502~s506。
63.在步骤s502中,在接收智能合约的执行请求后,从文档数据库中确定被执行的智能合约的数据表,并从数据表中读取被执行的智能合约的状态和代码,其中,文档数据库包括一个或多个智能合约数据表,每个智能合约数据表对应一个智能合约,存储相应智能合约的数据。
64.在步骤s504中,执行智能合约,获得被执行的智能合约变更后的状态。
65.在步骤s506中,根据变更后的状态,更新相应的智能合约数据表。
66.上述实施例在满足区块链特性和要求的同时,以文档存储的方式代替了基于mpt树的松散的存储方式,从而能够为各类智能合约的应用提供读写性能更强的存储方案,提高了智能合约使用过程中的性能。
67.在一些实施例中,文档数据库还包括系统结构表,存储每个智能合约数据表的标识与校验值之间的对应关系、以及智能合约的状态变更所涉及的交易的哈希值。从而利用系统结构表,可以对智能合约数据表进行校验和追溯。
68.在一些实施例中,在智能合约被创建时,选择智能合约的存储方式。下面参考图6描述本发明智能合约创建方法的实施例。
69.图6示出了根据本发明一些实施例的智能合约创建方法的流程示意图。如图6所示,该实施例的智能合约创建方法包括步骤s602~s606。
70.在步骤s602中,获取智能合约的创建请求,其中,创建请求中包括存储类型。
71.在步骤s604中,在存储类型为文档类型的情况下,在文档数据库中建立被请求创建的智能合约对应的智能合约数据表。
72.在步骤s606中,在系统结构表中添加建立的智能合约数据表所对应的条目。
73.在智能合约创建时,创建者可以根据需要选择更适配于被创建的智能合约的存储方式。例如,对于结构复杂、数据量大的智能合约,可以使用基于文档数据库的存储方式,其他智能合约可以选择基于mpt树的存储方式。
74.在一些实施例中,智能合约创建方法还包括步骤s608。
75.在步骤s608中,创建用于记录创建智能合约的交易记录,其中,交易记录中包括创建的智能合约的存储类型。从而,通过查询区块链的账本,能够获得智能合约的创建信息。
76.图7示出了根据本发明再一些实施例的智能合约的存储装置的结构示意图。如图7所示,该实施例的智能合约的存储装置70包括:存储器710以及耦接至该存储器710的处理器720,处理器720被配置为基于存储在存储器710中的指令,执行前述任意一个实施例中的智能合约的存储方法。
77.其中,存储器710例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(boot loader)以及其他程序等。
78.图8示出了根据本发明再一些实施例的智能合约的存储装置的结构示意图。如图8所示,该实施例的智能合约的存储装置80包括:存储器810以及处理器820,还可以包括输入输出接口830、网络接口840、存储接口850等。这些接口830,840,850以及存储器810和处理器820之间例如可以通过总线860连接。其中,输入输出接口830为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口840为各种联网设备提供连接接口。存储接口850为sd卡、u盘等外置存储设备提供连接接口。
79.本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特
征在于,该程序被处理器执行时实现前述任意一种智能合约的存储方法。
80.本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
81.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
82.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
83.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
84.以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献