[发明专利]一种基于JAVA的智能合约的跨合约调用方法有效

专利信息
申请号: 201910550382.8 申请日: 2019-06-24
公开(公告)号: CN110297721B 公开(公告)日: 2021-08-03
发明(设计)人: 李伟;邱炜伟;梁秀波;尹可挺;汤凯凯 申请(专利权)人: 杭州趣链科技有限公司
主分类号: G06F9/54 分类号: G06F9/54;G06Q40/04
代理公司: 杭州求是专利事务所有限公司 33200 代理人: 贾玉霞
地址: 310051 浙江省杭州市*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于JAVA的智能合约的跨合约调用的方法,该方法通过实现一个自定义类加载器来加载指定合约地址ContractAddress对应的合约类,并根据相应调用接口基于链上账本数据实例化一个对应的contract实例或者library实例的对象。该对象中的变量体现了该合约的最新状态,用户通过该对象的方法使用指定合约的功能服务,在合约执行的持久化阶段,所有在contract实例上的变更均会在账本中体现,即会修改对应合约账户的状态,而所有在library实例上的变更均会被抛弃,即对应合约账户的状态不会被改变。由于相关接口的使用无其他限制,所以用户可以进行多重的跨合约调用。
搜索关键词: 一种 基于 java 智能 合约 调用 方法
【主权项】:
1.一种基于JAVA的智能合约的跨合约调用方法,其特征在于,该方法具体包括如下步骤:步骤一:编写使用接口的合约:根据业务需求在合约中定义相应的合约方法,当需要复用其他合约的工具方法逻辑时,通过获取library实例的接口来满足;当需要访问其他机构发布的合约服务以此实现跨机构合作时,通过获取contract实例的接口来满足;获取library实例和contract实例的接口,均接受一个合约地址ContractAddress作为参数,并返回一个合约对象,通过声明一个合约对象类型变量进行赋值。步骤二:调用合约,根据合约地址ContractAddress获取合约对象:首先,对合约地址ContractAddress进行长度检查,若长度未通过,则抛出异常;若长度通过,再作如下判断:若非首次创建,则表明在本次合约调用中已经获取过合约地址ContractAddress对应的合约对象,此时对于获取library实例的场景,作一次深拷贝,然后进行步骤三;对于获取contract实例的场景,则直接进行步骤三;若为首次创建,先进行下面流程:(1)智能合约执行引擎将根据合约地址ContractAddress试图从账本中该地址对应的合约账户中取出该合约对应的JAVA合约字节码,若未取到,则抛出异常;若取到,则进行安全性检查;(2)加载合约字节码:获得JAVA合约字节码后先进行安全性检查,若不通过,则抛出异常并退出;若检查通过,则通过自定义类加载器,将合约类字节码加载进虚拟机,并返回合约主体类的Class对象;(3)根据合约主体类Class对象创建合约对象并初始化:通过JAVA反射机制,调用主体类无参构造方法,若构造失败则抛出异常;若构造成功,则通过JAVA反射机制依次扫描该对象的成员变量,并从账本中取出该变量对应的值进行初始化;然后,如果获取的是contract实例,那么将该对象另外缓存于内存中,然后进行步骤三;如果获取的是library实例,那么直接进行步骤三。步骤三:触发合约对象的合约创建钩子函数,判断钩子函数是否运行正常,若是,则直接返回之前创建的对象;若否,则抛出异常;步骤四:调用结束,持久化:扫描本次调用中缓存的全部contract实例,得到对合约账户的修改集,并将修改集应用到对应的合约账户;所述的钩子函数,是指被调用合约作者自定义的重写的合约方法,在合约实例创建时被触发;所述的合约地址ContractAddress为固定长度的16进制字符串。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201910550382.8/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top