[发明专利]一种基于JAVA的智能合约的跨合约调用方法有效
申请号: | 201910550382.8 | 申请日: | 2019-06-24 |
公开(公告)号: | CN110297721B | 公开(公告)日: | 2021-08-03 |
发明(设计)人: | 李伟;邱炜伟;梁秀波;尹可挺;汤凯凯 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06Q40/04 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞 |
地址: | 310051 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 java 智能 合约 调用 方法 | ||
本发明公开了一种基于JAVA的智能合约的跨合约调用的方法,该方法通过实现一个自定义类加载器来加载指定合约地址ContractAddress对应的合约类,并根据相应调用接口基于链上账本数据实例化一个对应的contract实例或者library实例的对象。该对象中的变量体现了该合约的最新状态,用户通过该对象的方法使用指定合约的功能服务,在合约执行的持久化阶段,所有在contract实例上的变更均会在账本中体现,即会修改对应合约账户的状态,而所有在library实例上的变更均会被抛弃,即对应合约账户的状态不会被改变。由于相关接口的使用无其他限制,所以用户可以进行多重的跨合约调用。
技术领域
本发明涉及区块链技术,尤其涉及一种基于JAVA的智能合约的跨合约调用方法。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
智能合约是编程在区块链上的汇编语言,该术语是跨领域法律学者尼克·萨博提出来的,他对智能合约的定义是“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”,换句话说,智能合约就是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。通常人们不会自己写字节码,但是会从更高级的语言来编译它,例如用Solidity等类似的专用语言。
区块链的去中心化与不可篡改的特性给智能合约提供了一个很好的发展环境,因此近年来,比特币网络、以太坊网络等一系列区块链社区都陆续开始提供了公开的智能合约编程的接口。但是在智能合约尤其是JAVA合约的开发过程中,一直缺少一个使用简单、运行高效、安全的跨合约调用方式。
发明内容
针对现有技术的不足,本发明提出一种基于JAVA的智能合约的跨合约调用方法,提供两种跨合约方式,具体技术方案如下:
一种基于JAVA的智能合约的跨合约调用方法,其特征在于,该方法具体包括如下步骤:
步骤一:编写使用接口的合约:
根据业务需求在合约中定义相应的合约方法,当需要复用其他合约的工具方法逻辑时,通过获取library实例的接口来满足;当需要访问其他机构发布的合约服务以此实现跨机构合作时,通过获取contract实例的接口来满足;获取library实例和contract实例的接口,均接受一个合约地址ContractAddress作为参数,并返回一个合约对象,通过声明一个合约对象类型变量进行赋值;
步骤二:调用合约,根据合约地址ContractAddress获取合约对象:
首先,对合约地址ContractAddress进行长度检查,若长度未通过,则抛出异常;若长度通过,再作如下判断:
若非首次创建,则表明在本次合约调用中已经获取过合约地址ContractAddress对应的合约对象,此时对于获取library实例的场景,作一次深拷贝,然后进行步骤三;对于获取contract实例的场景,则直接进行步骤三;
若为首次创建,先进行下面流程:
(1)智能合约执行引擎将根据合约地址ContractAddress试图从账本中该地址对应的合约账户中取出该合约对应的JAVA合约字节码,若未取到,则抛出异常;若取到,则进行安全性检查;
(2)加载合约字节码:获得JAVA合约字节码后先进行安全性检查,若不通过,则抛出异常并退出;若检查通过,则通过自定义类加载器,将合约类字节码加载进虚拟机,并返回合约主体类的Class对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910550382.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:通知装置、通知方法及存储通知程序的介质
- 下一篇:线程任务通信方法及相关产品