[发明专利]一种基于ASM的联盟链智能合约资源消耗检测方法及装置有效
申请号: | 202111416195.4 | 申请日: | 2021-11-26 |
公开(公告)号: | CN113835972B | 公开(公告)日: | 2022-03-08 |
发明(设计)人: | 石宁;高翔宇;许小明;李达 | 申请(专利权)人: | 南京金宁汇科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京弘权知识产权代理有限公司 11363 | 代理人: | 郭放;许伟群 |
地址: | 210031 江苏省南京市江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 asm 联盟 智能 合约 资源 消耗 检测 方法 装置 | ||
1.一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,包括:
检验智能合约的编写语法、编译所述智能合约,并将所述智能合约部署到联盟链中;
根据用户发起的调用指令,加载所述智能合约,通过ASM在所述智能合约中植入内存占用监控器、循环深度监控器以及cpu时间监控器;
根据所述调用指令运行所述智能合约,通过所述内存占用监控器、循环深度监控器以及cpu时间监控器对所述智能合约的资源消耗量进行检测;
通过所述内存占用监控器、循环深度监控器以及cpu时间监控器,监控所述智能合约的资源消耗量检测结果,并根据所述检测结果实时终止所述智能合约的运行;
通过所述内存占用监控器、循环深度监控器以及cpu时间监控器,对所述智能合约的资源消耗量进行检测具体包括:
通过所述内存占用监控器对所述智能合约的线程内存占用量进行检测;
通过所述循环深度监控器对所述智能合约的死循环或堆栈溢出量进行检测;
通过所述cpu时间监控器对所述智能合约的死循环或cpu占用量进行检测。
2.根据权利要求1所述的一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,通过所述内存占用监控器对所述智能合约的线程内存占用量进行检测,具体包括:
通过jmx组件获取运行的所述智能合约的指定线程信息,所述指定线程信息包括所述智能合约的线程内存占用量;
检测所述智能合约的线程内存占用量,当所述线程内存占用量大于设定阈值时,抛出内存占用过大的异常信息;
调用终止指令,结束所述智能合约的运行。
3.根据权利要求1所述的一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,通过所述循环深度监控器对所述智能合约的死循环或堆栈溢出量进行检测,具体包括:
通过循环计数器对所述智能合约的循环操作进行记录;
检测所述智能合约循环操作的记录数,当所述记录数大于设定阈值时,抛出循环次数过大的异常信息;
调用终止指令,结束所述智能合约的运行。
4.根据权利要求1所述的一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,通过所述cpu时间监控器对所述智能合约的死循环或cpu占用量进行检测,具体包括:
检测所述智能合约中死循环或cpu占用量较高的操作;
当所述线程被调度的总cpu时间超过设定阈值时,抛出cpu时间过长的异常信息;
调用终止指令,结束所述智能合约的运行。
5.根据权利要求1所述的一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,所述内存监控器在所述智能合约代码执行到字节码构造函数指令时植入,并在触发创建对象字节码指令时,进行线程内存占用量检测。
6.根据权利要求3所述的一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,所述循环深度监控器在所述智能合约代码执行到跳转指令时植入,并记录下跳转行数,通过触发相同跳转指令,进行所述循环计数器计数自增操作,判断所述计数器的记录数是否达到设定阈值。
7.根据权利要求1所述的一种基于ASM的联盟链智能合约资源消耗检测方法,其特征在于,所述cpu时间监控器在触发到所述内存占用监控器与所述循环深度监控器时,同时触发,获取所述线程的cpu时间,累计计算出所述cpu时间总值,辅助判断cpu时间是否超出设定阈值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京金宁汇科技有限公司,未经南京金宁汇科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111416195.4/1.html,转载请声明来源钻瓜专利网。