一种防止攻击方法及装置制造方法及图纸

技术编号:25528698 阅读:19 留言:0更新日期:2020-09-04 17:16
本发明专利技术公开了一种防止攻击方法及装置,属于通信技术领域。该防止攻击方法包括:记账节点检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;比较调用深度和预设的调用深度阈值,获得调用深度比较结果;根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送,可以对智能合约的攻击行为进行较为全面的防范,从而保障区块链网络用户的资产安全。

【技术实现步骤摘要】
一种防止攻击方法及装置
本专利技术涉及通信
,具体涉及一种防止攻击方法及装置。
技术介绍
智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在区块链网络中,智能合约即为运行于区块链上的一段代码,如果智能合约的某个条款触发了执行条件,则代码就会自动执行以完成智能合约,从而节省人为沟通成本和监督成本。但是,由于智能合约代码编写不严谨等因素,容易导致黑客利用智能合约代码漏洞进行攻击来获取暴利。其中,重入攻击、时间戳依赖攻击和调用深度攻击是针对智能合约的常见攻击手段。重入攻击为攻击方在交易中通过恶意重复执行合约直到将合约账户资源消耗完的攻击方式,具体地,攻击者利用智能合约可以调用其他外部合约的特性,劫持外部调用,并在外部调用合约中植入恶意代码,从而迫使代码执行“重新进入”智能合约以再次执行资产转移,直到将合约账户的资产消耗完。时间戳依赖攻击为利用矿工设置区块的时间戳来尽可能满足有利于攻击者的条件来获利。调用深度攻击为攻击者利用智能合约调用深度的限制,恶意调用智能合约,使某些关键操作因达到调用深度阈值而无法执行。这些攻击行为可能导致区块链网络用户的资产损失,从而降低区块链网络的安全性和可靠性,影响用户的使用体验。目前,防止智能合约攻击的方法一般只针对某一特定类型的攻击行为,缺乏对智能合约攻击的全方面的防范。因此,如何对智能合约的攻击进行较为全面的防范,保障用户的资产安全,成为本领域亟待解决的问题。
技术实现思路
为此,本专利技术提供一种防止攻击方法及装置,以解决只能单一防范某一特定类型的智能合约攻击行为,从而缺乏对智能合约攻击进行全方面防范的问题。为了实现上述目的,本专利技术第一方面提供一种防止攻击方法,应用于记账节点,包括:检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;根据所述调用深度比较结果更新或重置所述调用深度,并向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约根据所述调用深度调用所述被调用智能合约,并在所述余额状态更新时执行资金发送。进一步地,所述检测主调用智能合约的余额状态更新情况之后,在所述主调用智能合约的余额状态更新之前,还包括:按照当前时间对应的时间戳确定所述主调用智能合约的有效时间戳参数;基于所述有效时间戳参数和所述当前时间对应的时间戳生成有效时间戳参数见证消息;在区块链网络中广播所述有效时间戳参数见证消息。进一步地,所述检测被调用智能合约的调用深度之前,还包括:为所述被调用智能合约设置栈深度标识;初始化所述栈深度标识;当所述被调用智能合约被调用时,更新所述栈深度标识;将所述栈深度标识写入区块链网络的区块中。进一步地,所述检测被调用智能合约的调用深度,包括:获取所述被调用智能合约的所述栈深度标识;根据所述栈深度标识确定所述被调用智能合约的所述调用深度。进一步地,所述根据比较结果更新或重置所述调用深度,包括:在所述调用深度小于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识,并将更新后的所述栈深度标识写入区块链网络的区块中;在所述调用深度等于或大于所述调用深度阈值时,将所述被调用智能合约的所述栈深度标识重置为初始状态,并将重置后的所述栈深度标识写入区块链网络的区块中。进一步地,所述在所述调用深度等于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识之后,还包括:在区块链网络中广播调用深度告警消息。为了实现上述目的,本专利技术第二方面提供一种防止攻击方法,应用于执行节点,包括:获取被调用智能合约的调用深度;其中,所述调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,所述调用深度比较结果为比较所述记账节点检测获得的所述调用深度和预设的调用深度阈值获得的结果;根据所述调用深度调用所述被调用智能合约;接收所述记账节点发送的余额状态更新情况;其中,所述余额状态更新情况为所述记账节点通过检测获得的;当所述余额状态更新时,执行主调用智能合约的资金发送。进一步地,所述执行所述主调用智能合约的资金发送,包括:接收所述记账节点在区块链网络中广播的有效时间戳参数见证消息;从所述有效时间戳参数见证消息中提取有效时间戳参数;根据所述有效时间戳参数计算转移金额;基于所述转移金额执行所述主调用智能合约的资金发送。为了实现上述目的,本专利技术第三方面提供一种防止攻击装置,应用于记账节点,包括:检测模块,用于检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;比较模块,用于比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;更新模块,用于根据所述调用深度比较结果更新所述调用深度,以供所述主调用智能合约根据更新的所述调用深度调用所述被调用智能合约;重置模块,用于根据所述调用深度比较结果重置所述调用深度,以供所述主调用智能合约根据重置的所述调用深度调用所述被调用智能合约;发送模块,用于向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约在所述余额状态更新时执行资金发送。为了实现上述目的,本专利技术第四方面提供一种防止攻击装置,应用于执行节点,包括:获取模块,用于获取被调用智能合约的调用深度;其中,所述调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,所述调用深度比较结果为比较所述记账节点检测获得的所述调用深度和预设的调用深度阈值获得的结果;调用模块,用于根据所述调用深度调用所述被调用智能合约;接收模块,用于接收所述记账节点发送的余额状态更新情况;其中,所述余额状态更新情况为所述记账节点通过检测获得的;执行模块,用于当所述余额状态更新时,执行主调用智能合约的资金发送。本专利技术具有如下优点:本专利技术提供的防止攻击方法,记账节点检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;比较调用深度和预设的调用深度阈值,获得调用深度比较结果;根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送,可以对智能合约的攻击行为进行较为全面的防范,从而保障区块链网络用户的资产安全。附图说明附图是用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本专利技术,但并不构成对本专利技术的限制。图1为本专利技术第一实施例提供的一种防止攻击方法的流程图;图2为本专利技术第二实施例提供的一种防止攻击方法的流程图;图3为本专利技术第三实施例提供的一种防止攻击方法的流程图;图4为本专利技术第四实施例提供的一种防止攻击方法的流程图;图5为本文档来自技高网...

【技术保护点】
1.一种防止攻击方法,应用于记账节点,其特征在于,包括:/n检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;/n比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;/n根据所述调用深度比较结果更新或重置所述调用深度,并向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约根据所述调用深度调用所述被调用智能合约,并在所述余额状态更新时执行资金发送。/n

【技术特征摘要】
1.一种防止攻击方法,应用于记账节点,其特征在于,包括:
检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;
比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;
根据所述调用深度比较结果更新或重置所述调用深度,并向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约根据所述调用深度调用所述被调用智能合约,并在所述余额状态更新时执行资金发送。


2.根据权利要求1所述的防止攻击方法,其特征在于,所述检测主调用智能合约的余额状态更新情况之后,在所述主调用智能合约的余额状态更新之前,还包括:
按照当前时间对应的时间戳确定所述主调用智能合约的有效时间戳参数;
基于所述有效时间戳参数和所述当前时间对应的时间戳生成有效时间戳参数见证消息;
在区块链网络中广播所述有效时间戳参数见证消息。


3.根据权利要求1所述的防止攻击方法,其特征在于,所述检测被调用智能合约的调用深度之前,还包括:
为所述被调用智能合约设置栈深度标识;
初始化所述栈深度标识;
当所述被调用智能合约被调用时,更新所述栈深度标识;
将所述栈深度标识写入区块链网络的区块中。


4.根据权利要求3所述的防止攻击方法,其特征在于,所述检测被调用智能合约的调用深度,包括:
获取所述被调用智能合约的所述栈深度标识;
根据所述栈深度标识确定所述被调用智能合约的所述调用深度。


5.根据权利要求4所述的防止攻击方法,其特征在于,所述根据比较结果更新或重置所述调用深度,包括:
在所述调用深度小于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识,并将更新后的所述栈深度标识写入区块链网络的区块中;
在所述调用深度等于或大于所述调用深度阈值时,将所述被调用智能合约的所述栈深度标识重置为初始状态,并将重置后的所述栈深度标识写入区块链网络的区块中。


6.根据权利要求5所述的防止攻击方法,其特征在于,所述在所述调用深度等于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识之后,还包括:
在区块链网络中广播调用深度告警消息。


7.一种防止攻击方法,应用于执行节点,其特征在于...

【专利技术属性】
技术研发人员:田新雪肖征荣马书惠杨子文董慧
申请(专利权)人:中国联合网络通信集团有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1