[发明专利]一种基于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合约的数据可靠性。
技术领域
本发明涉及去中心化的区块链智能合约数据存储的设计领域,尤其涉及一种基于Java智能合约的数据集合存储方法。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改;智能合约是一种可以在区块链网络环境中部署和执行的一段代码,这段代码的部署以及执行都是可以在区块链网络中以交易的形式呈现,其部署和执行结果可以随着交易被全网共识;目前智能合约支持的语言包括Solidity、Java等等,智能合约也在基于区块链的各种业务应用中广泛应用。
传统联盟区块链智能合约执行引擎包括evm和jvm,以jvm为例,jvm无法采用直接映射到区块链账本的集合类型来存储数据,需要按键值对的形式读取或写入到账本中,且无法保证所有写入数据的原子性,在插入部分数据后合约执行失败需要将合约数据回滚,这部分压力将会落在区块链节点上,如何让Java智能合约方便的使用自定义集合来操作账本的同时又保证一次交易执行的账本数据修改的原子性,保证区块链智能合约执行引擎稳定高效是一项全新的挑战。
发明内容
针对现有技术的不足,本发明提出一种基于Java智能合约的数据集合存储方法,既保证了与区块链账本的直接交互集合方便使用,同时又解决了多次账本数据操作的存储原子性问题。
本发明的目的是通过以下技术方案来实现的:一种基于Java智能合约的数据集合存储方法,该方法具体包括如下步骤:
步骤一:使用Java智能合约存储数据,必然离不开对集合的使用,在Java智能合约中必须为合约的集合成员变量初始化,之后调用不同集合的构造函数;list集合初始化时,将会创建有序的集合,将集合的初始大小、集合内的缓存进行以及元素的泛型类型初始化;map集合初始化时,将会创建无序的集合,将集合的初始大小、集合内的读写缓存以及键值对的泛型信息进行初始化;初始化后可以集合进行操作,写入的数据可以映射到区块链账本,同时可以利用集合从账本中读取数据;
步骤二:合约集合分别实现了标准JDK的map和list接口,当Java智能合约需要将数据持久化时,可以调用数据集合暴露的接口,将数据存入到不同的数据集合中;有序的数据集合list将会记录存入数据的顺序,可以通过角标的方式来获取;无序的数据集合map则会将数据的键值进行哈希计算来保证存入账本时键值的长度,同时可以将完整的map元素数据持久化,方便下次获取;
步骤三:为了提高数据存取的性能,对Java智能合约的数据集合的元素内容进行了缓存;缓存可分为读缓存和写缓存,当插入新数据时会将数据加载到读写缓存中,写缓存最终会根据某种规则将其中的数据写入到账本中去,而读缓存则可以在读取数据时更高效的获取,降低延迟和减少对账本的操作,获取到的数据同样会加入到读缓存中;
步骤四:Java智能合约数据集合需要与账本不断的发生交互,在读取数据阶段,list集合将以角标作为账本的键值来访问,获取到的数据进过反序列化为list指定的泛型类型数据;map集合则以自身键值的哈希值来访问账本,由于经过哈希计算后丢失了键值的内容,所以map集合需要将键值对一起进行反序列化来从账本还原为原始的map元素,向账本中存储数据时也是一样的道理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910404690.X/2.html,转载请声明来源钻瓜专利网。