CN110288340B - 一种基于Java智能合约的数据集合存储方法 - Google Patents

一种基于Java智能合约的数据集合存储方法 Download PDF

Info

Publication number
CN110288340B
CN110288340B CN201910404690.XA CN201910404690A CN110288340B CN 110288340 B CN110288340 B CN 110288340B CN 201910404690 A CN201910404690 A CN 201910404690A CN 110288340 B CN110288340 B CN 110288340B
Authority
CN
China
Prior art keywords
data
account book
java
map
contract
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
Application number
CN201910404690.XA
Other languages
English (en)
Other versions
CN110288340A (zh
Inventor
邱炜伟
李启雷
李伟
梁秀波
尹可挺
陶烨琪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN201910404690.XA priority Critical patent/CN110288340B/zh
Publication of CN110288340A publication Critical patent/CN110288340A/zh
Application granted granted Critical
Publication of CN110288340B publication Critical patent/CN110288340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Computing Systems (AREA)
  • Technology Law (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开一种基于Java智能合约的数据集合存储方法,基于Java合约的集合存储方式,将合约中的集合数据能够准确的映射到区块链账本上的散列键值对中,而在使用与功能上与普通的Java集合相似,且保证不需要全量加载当前合约中的所有账本数据,在需要使用时进行懒加载,节约了合约执行时占用的内存空间,且将已加载的数据缓存起来,节约重复查询的时间。本发明既保证了Java集合在账本中的映射关系,同时又解决了合约数据量增大后的存储占用空间大的问题,提高了Java合约的数据可靠性。

Description

一种基于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元素,向账本中存储数据时也是一样的道理;
步骤五:最终在Java智能合约执行完成之后,会对数据进行统一写入区块链账本中,这样可以保证数据的原子性;判断合约数据集合在执行前后是否一致,来做是否写入账本的操作,写入账本的数据将从集合的写缓存中获取,最终以与读取方式一致的序列化形式将数据记录进账本,之后清空集合中的缓存来释放空间。
进一步地,所述的步骤二中,调用数据集合暴露的接口指的是,实现了标准JDK制定的在java.util包下的两个标准集合类型接口:List和Map的具体实现,分别实现了两种具备改接口功能的集合。
进一步地,所述的步骤三中,对合约的数据集合的元素内容进行了缓存,会将新***的数据和从账本读取的数据均写入读缓存中。
进一步地,所述的步骤四中,将map键值哈希计算是为了控制写入账本的键值长度,list集合则不存在这个问题。
进一步地,所述的步骤五中,不将每次集合操作都写入账本而将数据写入写缓存,在合约执行完交易成功后再将数据写入可以保证原子性。
本发明的有益效果如下:
本发明应用于联盟链背景下的区块链网络智能合约执行引擎上,既保证了与区块链账本的直接交互集合方便使用,同时又解决了多次账本数据操作的存储原子性问题,提高了智能合约的执行效率,是Java智能合约下jvm执行引擎的大突破。
附图说明
图1是本发明的方法的List集合流程图;
图2是本发明的方法的Map集合流程图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1和2所示,一种基于Java智能合约的数据集合存储方法,该方法具体包括如下步骤:
步骤一:使用Java智能合约存储数据,必然离不开对集合的使用,在Java智能合约中必须为合约的集合成员变量初始化,之后调用不同集合的构造函数;list集合初始化时,将会创建有序的集合,将集合的初始大小、集合内的缓存进行以及元素的泛型类型初始化;map集合初始化时,将会创建无序的集合,将集合的初始大小、集合内的读写缓存以及键值对的泛型信息进行初始化;初始化后可以集合进行操作,写入的数据可以映射到区块链账本,同时可以利用集合从账本中读取数据;
步骤二:合约集合分别实现了标准JDK的map和list接口,当Java智能合约需要将数据持久化时,可以调用数据集合暴露的接口,将数据存入到不同的数据集合中;有序的数据集合list将会记录存入数据的顺序,可以通过角标的方式来获取;无序的数据集合map则会将数据的键值进行哈希计算来保证存入账本时键值的长度,同时可以将完整的map元素数据持久化,方便下次获取;
步骤三:为了提高数据存取的性能,对Java智能合约的数据集合的元素内容进行了缓存;缓存可分为读缓存和写缓存,当***新数据时会将数据加载到读写缓存中,写缓存最终会根据某种规则将其中的数据写入到账本中去,而读缓存则可以在读取数据时更高效的获取,降低延迟和减少对账本的操作,获取到的数据同样会加入到读缓存中;
步骤四:Java智能合约数据集合需要与账本不断的发生交互,在读取数据阶段,list集合将以角标作为账本的键值来访问,获取到的数据进过反序列化为list指定的泛型类型数据;map集合则以自身键值的哈希值来访问账本,由于经过哈希计算后丢失了键值的内容,所以map集合需要将键值对一起进行反序列化来从账本还原为原始的map元素,向账本中存储数据时也是一样的道理;
步骤五:最终在Java智能合约执行完成之后,会对数据进行统一写入区块链账本中,这样可以保证数据的原子性;判断合约数据集合在执行前后是否一致,来做是否写入账本的操作,写入账本的数据将从集合的写缓存中获取,最终以与读取方式一致的序列化形式将数据记录进账本,之后清空集合中的缓存来释放空间。
进一步地,所述的步骤二中,调用数据集合暴露的接口指的是,实现了标准JDK制定的在java.util包下的两个标准集合类型接口:List和Map的具体实现,分别实现了两种具备改接口功能的集合。
进一步地,所述的步骤三中,对合约的数据集合的元素内容进行了缓存,会将新***的数据和从账本读取的数据均写入读缓存中。
进一步地,所述的步骤四中,将map键值哈希计算是为了控制写入账本的键值长度,list集合则不存在这个问题。
进一步地,所述的步骤五中,不将每次集合操作都写入账本而将数据写入写缓存,在合约执行完交易成功后再将数据写入可以保证原子性。
本发明中,实现了将Java标准集合List和Map映射到区块链账本的键值对数据上,做到操作数据能够像操作普通Java集合一样方便,同时又不需要全量加载大量的合约数据,在需要时进行懒加载,节省了空间,增加缓存策略可以提高合约数据获取的速度;再此基础上,把需要增加或者更新的数据记录在写缓存中,在合约执行期间不需要实时写入到账本中去,减少不必要的操作,在合约执行完成后,将写缓存中的数据同时写入到账本中,可以保证合约执行结果数据的原子性,减轻区块链节点的回滚压力。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

Claims (5)

1.一种基于Java智能合约的数据集合存储方法,其特征在于,该方法具体包括如下步骤:
步骤一:使用Java智能合约存储数据,必然离不开对集合的使用,在Java智能合约中必须为合约的集合成员变量初始化,之后调用不同集合的构造函数;list集合初始化时,将会创建有序的集合,将集合的初始大小、集合内的缓存进行以及元素的泛型类型初始化;map集合初始化时,将会创建无序的集合,将集合的初始大小、集合内的读写缓存以及键值对的泛型信息进行初始化;初始化后可以集合进行操作,写入的数据可以映射到区块链账本,同时可以利用集合从账本中读取数据;
步骤二:合约集合分别实现了标准JDK的map和list接口,当Java智能合约需要将数据持久化时,可以调用数据集合暴露的接口,将数据存入到不同的数据集合中;有序的数据集合list将会记录存入数据的顺序,可以通过角标的方式来获取;无序的数据集合map则会将数据的键值进行哈希计算来保证存入账本时键值的长度,同时可以将完整的map元素数据持久化,方便下次获取;
步骤三:为了提高数据存取的性能,对Java智能合约的数据集合的元素内容进行了缓存;缓存可分为读缓存和写缓存,当***新数据时会将数据加载到读写缓存中,写缓存最终会根据某种规则将其中的数据写入到账本中去,而读缓存则可以在读取数据时更高效的获取,降低延迟和减少对账本的操作,获取到的数据同样会加入到读缓存中;
步骤四:Java智能合约数据集合需要与账本不断的发生交互,在读取数据阶段,list集合将以角标作为账本的键值来访问,获取到的数据进过反序列化为list指定的泛型类型数据;map集合则以自身键值的哈希值来访问账本,由于经过哈希计算后丢失了键值的内容,所以map集合需要将键值对一起进行反序列化来从账本还原为原始的map元素,向账本中存储数据时也是一样的道理;
步骤五:最终在Java智能合约执行完成之后,会对数据进行统一写入区块链账本中,这样可以保证数据的原子性;判断合约数据集合在执行前后是否一致,来做是否写入账本的操作,写入账本的数据将从集合的写缓存中获取,最终以与读取方式一致的序列化形式将数据记录进账本,之后清空集合中的缓存来释放空间。
2.根据权利要求1所述的基于Java智能合约的数据集合存储方法,其特征在于,所述的步骤二中,调用数据集合暴露的接口指的是,实现了标准JDK制定的在java.util包下的两个标准集合类型接口:List和Map的具体实现,分别实现了两种具备改接口功能的集合。
3.根据权利要求1所述的基于Java智能合约的数据集合存储方法,其特征在于,所述的步骤三中,对合约的数据集合的元素内容进行了缓存,会将新***的数据和从账本读取的数据均写入读缓存中。
4.根据权利要求1所述的基于Java智能合约的数据集合存储方法,其特征在于,所述的步骤四中,将map键值哈希计算是为了控制写入账本的键值长度,list集合则不存在这个问题。
5.根据权利要求1所述的基于Java智能合约的数据集合存储方法,其特征在于,所述的步骤五中,不将每次集合操作都写入账本而将数据写入写缓存,在合约执行完交易成功后再将数据写入可以保证原子性。
CN201910404690.XA 2019-05-15 2019-05-15 一种基于Java智能合约的数据集合存储方法 Active CN110288340B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910404690.XA CN110288340B (zh) 2019-05-15 2019-05-15 一种基于Java智能合约的数据集合存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910404690.XA CN110288340B (zh) 2019-05-15 2019-05-15 一种基于Java智能合约的数据集合存储方法

Publications (2)

Publication Number Publication Date
CN110288340A CN110288340A (zh) 2019-09-27
CN110288340B true CN110288340B (zh) 2021-07-30

Family

ID=68002110

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910404690.XA Active CN110288340B (zh) 2019-05-15 2019-05-15 一种基于Java智能合约的数据集合存储方法

Country Status (1)

Country Link
CN (1) CN110288340B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782305B (zh) * 2020-07-21 2021-01-19 江苏荣泽信息科技股份有限公司 一种高效安全智能合约运行环境的方法
CN112765269B (zh) * 2020-12-31 2022-06-10 杭州趣链科技有限公司 数据处理方法、装置、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392610A (zh) * 2017-03-06 2017-11-24 钱德君 一种分布式网络的可靠数据源的实现方法
CN109522735A (zh) * 2018-11-29 2019-03-26 上海中信信息发展股份有限公司 一种基于智能合约的数据权限验证方法及装置
CN109710384A (zh) * 2018-12-29 2019-05-03 杭州趣链科技有限公司 一种安全的Java智能合约解释执行引擎及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886172B2 (en) * 2001-04-05 2005-04-26 Hewlett-Packard Development Company, L.P. Method for mapping procedural C++ code to java object-oriented classes
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392610A (zh) * 2017-03-06 2017-11-24 钱德君 一种分布式网络的可靠数据源的实现方法
CN109522735A (zh) * 2018-11-29 2019-03-26 上海中信信息发展股份有限公司 一种基于智能合约的数据权限验证方法及装置
CN109710384A (zh) * 2018-12-29 2019-05-03 杭州趣链科技有限公司 一种安全的Java智能合约解释执行引擎及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
众筹区块链上的智能合约设计;黄洁华等;《信息安全研究》;20170305(第03期);全文 *
区块链中的智能合约;马春光等;《信息网络安全》;20181110(第11期);全文 *

Also Published As

Publication number Publication date
CN110288340A (zh) 2019-09-27

Similar Documents

Publication Publication Date Title
CN110471795B (zh) 区块链状态数据恢复方法及装置、电子设备
TWI499909B (zh) 階層式不可改變的內容可定址的記憶體處理器
CN106570018B (zh) 序列化与反序列化的方法、装置、***以及电子设备
CN111125447A (zh) 一种元数据访问方法、装置、设备及可读存储介质
CN109445685B (zh) 一种用户态文件***处理方法
CN105183839A (zh) 一种基于Hadoop的小文件分级索引的存储优化方法
JP2009522638A5 (zh)
US7849060B2 (en) System and method for managing log information for transaction
CN103559027A (zh) 一种key与value分开存储的key-value存储***设计方法
CN110288340B (zh) 一种基于Java智能合约的数据集合存储方法
CN105393228A (zh) 读写闪存中数据的方法、装置及用户设备
CN105027067A (zh) 用于存储***中的基于对象的事务的方法和***
CN102541969B (zh) 基于fat文件***的文件保护方法、***及存储器
CN105260139B (zh) 一种磁盘管理方法以及***
CN114022148B (zh) 基于区块链的交易冲突检测方法、装置、设备和存储介质
CN110187834A (zh) 重删副本的数据处理方法、装置、电子设备
CN107590077B (zh) 一种Spark负载访存行为追踪方法及装置
CN109446258A (zh) 一种分布式数据存储方法及***
CN110187837B (zh) 一种文件存取方法、装置及文件***
CN110334034A (zh) 映射表动态加载的方法、装置、计算机设备及存储介质
CN113360095B (zh) 硬盘数据管理方法、装置、设备及介质
CN112035380B (zh) 一种数据处理方法、装置、设备及可读存储介质
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN112069088B (zh) 一种地址映射管理方法及相关装置、设备
CN114816509A (zh) 区块链版本兼容性验证方法及装置、电子设备

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
GR01 Patent grant
GR01 Patent grant