[发明专利]一种基于ASM的联盟链智能合约资源消耗检测方法及装置有效
申请号: | 202111416195.4 | 申请日: | 2021-11-26 |
公开(公告)号: | CN113835972B | 公开(公告)日: | 2022-03-08 |
发明(设计)人: | 石宁;高翔宇;许小明;李达 | 申请(专利权)人: | 南京金宁汇科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京弘权知识产权代理有限公司 11363 | 代理人: | 郭放;许伟群 |
地址: | 210031 江苏省南京市江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 asm 联盟 智能 合约 资源 消耗 检测 方法 装置 | ||
本申请提供了一种基于ASM的联盟链智能合约资源消耗检测方法及装置,包括:检验智能合约的编写语法、编译所述智能合约,并将所述智能合约部署到联盟链中;根据用户发起的调用指令,加载所述智能合约,通过ASM在所述智能合约中植入内存占用监控器、循环深度监控器以及cpu时间监控器;根据所述调用指令运行所述智能合约,对所述智能合约的资源消耗量进行检测;监控所述智能合约的资源消耗量检测结果,并根据所述检测结果实时终止所述智能合约的运行。所述装置包括:部署单元,加载单元,运行单元以及监控单元。
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于ASM的联盟链智能合约资源消耗检测方法及装置。
背景技术
智能合约,作为区块链在处理多方数据和数据关系的重要手段,其安全性也备受关注。作为一段可在区块链上执行的代码,不仅需要通过代码语言的语法限制,还需要更加健壮和效率。
目前常规的手段是通过人工和工具结合的审计模式,执行引擎字节码级别的管控,达到智能合约静态代码一定程度上的可信。
但处于运行时的智能合约,仍可能由于数据上下文的异同,导致出现执行时的动态异常行为。包括但不限于由于数据输入的异常,导致的循环调用,甚至死循环的出现,运行时占用内存或cpu时间过于高,导致影响区块链的主体运行等。
发明内容
本申请提供了一种基于ASM的联盟链智能合约资源消耗检测方法,以解决现有智能合约资源消耗检测技术中由于数据输入的异常,导致的循环调用,甚至死循环的出现,运行时占用内存或cpu时间过于高,导致影响区块链的主体运行等问题。
第一方面,本申请提供了一种基于ASM的联盟链智能合约资源消耗检测方法,所述方法包括:
检验智能合约的编写语法、编译所述智能合约,并将所述智能合约部署到联盟链中;
根据用户发起的调用指令,加载所述智能合约,通过ASM在所述智能合约中植入内存占用监控器、循环深度监控器以及cpu时间监控器;
根据所述调用指令运行所述智能合约,通过所述内存占用监控器、循环深度监控器以及cpu时间监控器对所述智能合约的资源消耗量进行检测;
通过所述内存占用监控器、循环深度监控器以及cpu时间监控器,监控所述智能合约的资源消耗量检测结果,并根据所述检测结果实时终止所述智能合约的运行。
在一种实现方式中,对所述智能合约的资源消耗量进行检测具体包括:
通过所述内存占用监控器对所述智能合约的线程内存占用量进行检测;
通过所述循环深度监控器对所述智能合约的死循环或堆栈溢出量进行检测;
通过所述cpu时间监控器对所述智能合约的死循环或cpu占用量进行检测。
在一种实现方式中,通过所述内存占用监控器对所述智能合约的线程内存占用量进行检测,具体包括:
通过jmx组件获取运行的所述智能合约的指定线程信息,所述指定线程信息包括所述智能合约的线程内存占用量;
检测所述智能合约的线程内存占用量,当所述线程内存占用量大于设定阈值时,抛出内存占用过大的异常信息;
调用终止指令,结束所述智能合约的运行。
在一种实现方式中,通过所述循环深度监控器对所述智能合约的死循环或堆栈溢出量进行检测,具体包括:
通过循环计数器对所述智能合约的循环操作进行记录;
检测所述智能合约循环操作的记录数,当所述记录数大于设定阈值时,抛出循环次数过大的异常信息;
调用终止指令,结束所述智能合约的运行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京金宁汇科技有限公司,未经南京金宁汇科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111416195.4/2.html,转载请声明来源钻瓜专利网。