[发明专利]编译和执行智能合约的方法及装置有效
申请号: | 201910939504.2 | 申请日: | 2019-09-30 |
公开(公告)号: | CN110688122B | 公开(公告)日: | 2021-09-21 |
发明(设计)人: | 姚忠孝 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/455;G06Q40/04 |
代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 陈霁;周良玉 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 编译 执行 智能 合约 方法 装置 | ||
本说明书实施例提供一种编译和执行智能合约的方法和装置,根据上述方法,在对智能合约进行编译而该智能合约依赖于外部函数时,不再将外部函数的实现代码纳入到合约中进行编译,而是将其转化为一条对该外部函数的调用指令,并将函数的声明信息添加到合约模块的导入区段中。如此生成的合约模块中仅包含外部函数的声明信息,而不包含该外部函数的实现代码。在执行该智能合约时,由虚拟机从本地的操作系统函数库中获取上述外部函数的实现代码,并将该实现代码与合约代码相链接,从而执行该外部函数。
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及编译和执行区块链中的智能合约的方法及装置。
背景技术
目前,越来越多的区块链平台支持智能合约,来执行更为丰富的交易。智能合约是一种可以自动执行的交易合约,它以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。例如,以太坊提供了一种开源的区块链底层系统,通过提供诸多接口,允许开发人员在此基础上开发各种区块链应用,编写智能合约。
如此,区块链平台允许用户进行内容更加丰富的交易,从而提供更加丰富的功能。相应的,越来越多的数据存储、程序应用(例如分布式应用Dapp),通过区块链实现。相应地,在区块链的各个节点中提供有虚拟机,用于执行区块链中的智能合约,并通过共识机制,保证各个节点中的虚拟机具有相同的执行状态和执行结果。因此,智能合约的执行效率,成为区块链平台的主要性能指标。
因此,希望提供有效的方案,提高区块链中智能合约的执行效率,改进区块链平台的性能。
发明内容
本说明书一个或多个实施例描述了一种编译和执行智能合约的方法和装置,用以提升智能合约的部署效率和执行性能。
根据第一方面,提供了一种编译智能合约的方法,通过编译器执行,该方法包括:
读取智能合约的源代码中的第一语句,其中该第一语句包括对第一外部函数的调用;
根据与所述第一外部函数对应的函数库,确定所述第一外部函数为预定类型函数,所述预定类型函数为在执行所述智能合约的虚拟机中实现的函数;
针对所述第一语句,生成对所述第一外部函数的调用指令,并将该调用指令转换为对应的字节码;
将所述调用指令对应的字节码包含在有待形成的合约模块的代码区段中,并将所述第一外部函数的函数声明信息包含在所述合约模块的导入区段中。
在一个实施例中,所述函数库为系统函数库或第三方函数库。
根据一种实施方式,通过以下方式确定第一外部函数为预定类型函数:
通过函数名在所述函数库中查询所述第一外部函数;
当所述函数库中针对所述第一外部函数标记有用于指示所述预定类型函数的预定标记时,确定所述第一外部函数为所述预定类型函数。
根据另一种实施方式,通过以下方式确定第一外部函数为预定类型函数:
通过函数名在所述函数库中查询所述第一外部函数;
当所述函数库中针对所述第一外部函数仅记录有函数声明而不包含函数的实现代码时,确定所述第一外部函数为所述预定类型函数。
根据又一种实施方式,通过以下方式确定第一外部函数为预定类型函数:
当确定所述函数库为专用于定义所述预定类型函数的函数库时,确定所述第一外部函数为预定类型函数。
在一个实施例中,生成对所述第一外部函数的调用指令,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910939504.2/2.html,转载请声明来源钻瓜专利网。