[发明专利]智能合约的类调用方法、装置及电子设备有效
申请号: | 202011345713.3 | 申请日: | 2020-11-26 |
公开(公告)号: | CN112445543B | 公开(公告)日: | 2023-03-10 |
发明(设计)人: | 邱炜伟;李伟;黄方蕾;张珂杰;胡麦芳 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 深圳中一联合知识产权代理有限公司 44414 | 代理人: | 赵倩 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 智能 合约 调用 方法 装置 电子设备 | ||
本申请提供一种智能合约的类调用方法、装置及电子设备,涉及区块链智能合约技术领域,其中,该方法包括:根据合约调用请求,确定待调用的第一智能合约,然后查找第一智能合约对应的第一类加载器,最后通过第一类加载器调用第一智能合约的目标类。其中,类加载器与智能合约一一对应,每个智能合约全部的类均由该智能合约对应的类加载器进行加载。本申请提供的技术方案可以为每个智能合约设置一个唯一对应的类加载器,使得不同智能合约的类可以独立加载,保证不同智能合约的类之间互不干扰,并且可以正常执行。
技术领域
本申请涉及区块链技术,尤其涉及一种智能合约的类调用方法、装置及电子设备,属于区块链智能合约技术领域。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,且信息不可伪造和篡改;区块链上的交易确认由区块链上的所有节点共同完成,通过共识算法保证其一致性;另外,区块链上会维护一个公共的账本,公共账本位于存储区块上并在任何节点都可见,从而保证其不可伪造和篡改。
智能合约是编程在区块链上的汇编语言,该术语是跨领域法律学者尼克·萨博提出来的,他对智能合约的定义是“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”,换句话说,智能合约就是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。
基于区块链的技术特征,智能合约需要在对应的虚拟机中才能被执行,例如,Java智能合约要在Java虚拟机中执行。Java智能合约在执行时需要用到不同的类,包括Java智能合约中的用户类和用户自定义的功能类。在实际使用时,Java虚拟机是通过Java虚拟机内部的类加载器将需要使用的类加载到缓存中,以执行Java智能合约。每个类加载器可以加载多个Java智能合约的类,但是,随着Java智能合约种类的增多,容易出现智能合约执行失败的情况。
发明内容
有鉴于此,本申请提供了一种智能合约的类调用方法、装置及电子设备,可以在Java智能合约种类增多时,保证Java智能合约正常执行。
为了实现上述目的,第一方面,本申请实施例提供一种智能合约的类调用方法,包括:
根据合约调用请求,确定待调用的第一智能合约;
查找第一智能合约对应的第一类加载器,其中,类加载器与智能合约一一对应,每个智能合约全部的类均由智能合约对应的类加载器进行加载;
通过第一类加载器调用第一智能合约的目标类。
可选的,合约调用请求包括第一智能合约的合约地址,查找第一智能合约对应的第一类加载器,包括:
根据第一智能合约的合约地址,查找第一类加载器。
可选的,在通过第一类加载器调用第一智能合约的目标类之前,该方法还包括:
若没有查找到第一类加载器,则创建第一类加载器。
可选的,该方法还包括:
若缓存第一类加载器的Java虚拟机的缓存超过阈值,则将Java虚拟机缓存中满足最近最少使用条件的类加载器删除。
可选的,目标类包括第一智能合约中预设的用户类,通过第一类加载器调用第一智能合约的目标类,包括:
根据用户类的全限定名,在第一类加载器的缓存中查找与用户类的全限定名相同的同名用户类;
若没有查找到同名用户类,则根据用户类的字节码,在第一类加载器的缓存中加载并调用用户类;
若查找到同名用户类,则调用同名用户类。
可选的,目标类包括用户自定义的功能类,合约调用请求包括功能类的字节码和全限定名,通过第一类加载器调用第一智能合约的目标类,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011345713.3/2.html,转载请声明来源钻瓜专利网。