[发明专利]一种执行智能合约的方法、区块链节点和存储介质有效
申请号: | 202010901429.3 | 申请日: | 2020-08-31 |
公开(公告)号: | CN111815310B | 公开(公告)日: | 2021-08-17 |
发明(设计)人: | 刘琦 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06Q20/06 | 分类号: | G06Q20/06;G06Q20/38;G06Q40/04;H04L29/08 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 李威 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 执行 智能 合约 方法 区块 节点 存储 介质 | ||
1.一种执行智能合约的方法,包括:
区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;
所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过JIT编译为机器码并存储;
所述区块链节点执行部署的所述智能合约时,如果所述JIT编译已完成,则执行JIT编译得到并存储的所述机器码;
所述区块链节点执行部署的所述智能合约时,如果所述JIT编译未完成,则对所述智能合约的字节码进行解释执行,包括:
所述区块链节点执行部署的所述智能合约时,如果本地没有存储所述智能合约的机器码,所述区块链节点还查询当前对所述智能合约的字节码的JIT编译情况,如果正处于JIT编译中,则对所述智能合约的字节码进行解释执行;如果尚未开始JIT编译,则启动JIT编译,并对所述智能合约的字节码进行解释执行。
2.如权利要求1所述的方法,所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过JIT编译为机器码,包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行JIT编译;或,
所述区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行JIT编译;或,
所述区块链节点接收到调用创建的所述智能合约的交易请求后,对所述智能合约的字节码进行JIT编译。
3.如权利要求1所述的方法,所述将所述智能合约的字节码通过JIT编译为机器码并存储,包括:
对所述智能合约的字节码进行翻译和/或执行的过程中识别热点字节码进行编译并存储;
和/或,
对所述智能合约的字节码进行翻译和/或执行的过程中进行优化编译并存储。
4.如权利要求3所述的方法,所述识别热点字节码的粒度包括函数级别或代码块级别。
5.如权利要求1所述的方法,所述区块链节点对所述智能合约的字节码进行解释执行,包括:
所述区块链节点对所述智能合约中对应于所调用函数的字节码进行解释执行。
6.如权利要求1所述的方法,所述区块链节点执行所述机器码,包括:
所述区块链节点执行存储的所述智能合约中对应于所调用函数和/或代码块的机器码。
7.如权利要求1-6中任一项所述的方法,所述存储为缓存。
8.一种执行智能合约的方法,包括:
区块链节点部署所述智能合约的字节码后,开始将所述智能合约的字节码通过JIT编译为机器码并存储;
所述区块链节点执行部署的所述智能合约时,如果所述JIT编译已完成,则执行JIT编译得到并存储的所述机器码;
所述区块链节点执行部署的所述智能合约时,如果所述JIT编译未完成,则对所述智能合约的字节码进行解释执行,包括:
所述区块链节点执行部署的所述智能合约时,如果本地没有存储所述智能合约的机器码,所述区块链节点还查询当前对所述智能合约的字节码的JIT编译情况,如果正处于JIT编译中,则对所述智能合约的字节码进行解释执行;如果尚未开始JIT编译,则启动JIT编译,并对所述智能合约的字节码进行解释执行。
9.如权利要求8所述的方法,所述区块链节点部署所述智能合约的字节码后,开始将所述智能合约的字节码通过JIT编译为机器码,包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行JIT编译;或,
区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行JIT编译;或,
区块链节点接收到调用创建的所述智能合约的交易请求后,对所述智能合约的字节码进行JIT编译。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010901429.3/1.html,转载请声明来源钻瓜专利网。