[发明专利]一种基于Java智能合约的数据集合存储方法有效
申请号: | 201910404690.X | 申请日: | 2019-05-15 |
公开(公告)号: | CN110288340B | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 邱炜伟;李启雷;李伟;梁秀波;尹可挺;陶烨琪 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06Q20/38 | 分类号: | G06Q20/38;G06Q40/04;G06F16/25;G06F16/27 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310012 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种基于Java智能合约的数据集合存储方法,基于Java合约的集合存储方式,将合约中的集合数据能够准确的映射到区块链账本上的散列键值对中,而在使用与功能上与普通的Java集合相似,且保证不需要全量加载当前合约中的所有账本数据,在需要使用时进行懒加载,节约了合约执行时占用的内存空间,且将已加载的数据缓存起来,节约重复查询的时间。本发明既保证了Java集合在账本中的映射关系,同时又解决了合约数据量增大后的存储占用空间大的问题,提高了Java合约的数据可靠性。 | ||
搜索关键词: | 一种 基于 java 智能 合约 数据 集合 存储 方法 | ||
【主权项】:
1.一种基于Java智能合约的数据集合存储方法,其特征在于,该方法具体包括如下步骤:步骤一:使用Java智能合约存储数据,必然离不开对集合的使用,在Java智能合约中必须为合约的集合成员变量初始化,之后调用不同集合的构造函数;list集合初始化时,将会创建有序的集合,将集合的初始大小、集合内的缓存进行以及元素的泛型类型初始化;map集合初始化时,将会创建无序的集合,将集合的初始大小、集合内的读写缓存以及键值对的泛型信息进行初始化;初始化后可以集合进行操作,写入的数据可以映射到区块链账本,同时可以利用集合从账本中读取数据。步骤二:合约集合分别实现了标准JDK的map和list接口,当Java智能合约需要将数据持久化时,可以调用数据集合暴露的接口,将数据存入到不同的数据集合中;有序的数据集合list将会记录存入数据的顺序,可以通过角标的方式来获取;无序的数据集合map则会将数据的键值进行哈希计算来保证存入账本时键值的长度,同时可以将完整的map元素数据持久化,方便下次获取。步骤三:为了提高数据存取的性能,对Java智能合约的数据集合的元素内容进行了缓存;缓存可分为读缓存和写缓存,当插入新数据时会将数据加载到读写缓存中,写缓存最终会根据某种规则将其中的数据写入到账本中去,而读缓存则可以在读取数据时更高效的获取,降低延迟和减少对账本的操作,获取到的数据同样会加入到读缓存中。步骤四:Java智能合约数据集合需要与账本不断的发生交互,在读取数据阶段,list集合将以角标作为账本的键值来访问,获取到的数据进过反序列化为list指定的泛型类型数据;map集合则以自身键值的哈希值来访问账本,由于经过哈希计算后丢失了键值的内容,所以map集合需要将键值对一起进行反序列化来从账本还原为原始的map元素,向账本中存储数据时也是一样的道理。步骤五:最终在Java智能合约执行完成之后,会对数据进行统一写入区块链账本中,这样可以保证数据的原子性;判断合约数据集合在执行前后是否一致,来做是否写入账本的操作,写入账本的数据将从集合的写缓存中获取,最终以与读取方式一致的序列化形式将数据记录进账本,之后清空集合中的缓存来释放空间。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910404690.X/,转载请声明来源钻瓜专利网。