CN111628997A - 一种防止攻击方法及装置 - Google Patents
一种防止攻击方法及装置 Download PDFInfo
- Publication number
- CN111628997A CN111628997A CN202010456248.4A CN202010456248A CN111628997A CN 111628997 A CN111628997 A CN 111628997A CN 202010456248 A CN202010456248 A CN 202010456248A CN 111628997 A CN111628997 A CN 111628997A
- Authority
- CN
- China
- Prior art keywords
- calling
- depth
- intelligent contract
- calling depth
- called
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Economics (AREA)
- Signal Processing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种防止攻击方法及装置,属于通信技术领域。该防止攻击方法包括:记账节点检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;比较调用深度和预设的调用深度阈值,获得调用深度比较结果;根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送,可以对智能合约的攻击行为进行较为全面的防范,从而保障区块链网络用户的资产安全。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种防止攻击方法及装置。
背景技术
智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在区块链网络中,智能合约即为运行于区块链上的一段代码,如果智能合约的某个条款触发了执行条件,则代码就会自动执行以完成智能合约,从而节省人为沟通成本和监督成本。但是,由于智能合约代码编写不严谨等因素,容易导致黑客利用智能合约代码漏洞进行攻击来获取暴利。其中,重入攻击、时间戳依赖攻击和调用深度攻击是针对智能合约的常见攻击手段。重入攻击为攻击方在交易中通过恶意重复执行合约直到将合约账户资源消耗完的攻击方式,具体地,攻击者利用智能合约可以调用其他外部合约的特性,劫持外部调用,并在外部调用合约中植入恶意代码,从而迫使代码执行“重新进入”智能合约以再次执行资产转移,直到将合约账户的资产消耗完。时间戳依赖攻击为利用矿工设置区块的时间戳来尽可能满足有利于攻击者的条件来获利。调用深度攻击为攻击者利用智能合约调用深度的限制,恶意调用智能合约,使某些关键操作因达到调用深度阈值而无法执行。这些攻击行为可能导致区块链网络用户的资产损失,从而降低区块链网络的安全性和可靠性,影响用户的使用体验。目前,防止智能合约攻击的方法一般只针对某一特定类型的攻击行为,缺乏对智能合约攻击的全方面的防范。
因此,如何对智能合约的攻击进行较为全面的防范,保障用户的资产安全,成为本领域亟待解决的问题。
发明内容
为此,本发明提供一种防止攻击方法及装置,以解决只能单一防范某一特定类型的智能合约攻击行为,从而缺乏对智能合约攻击进行全方面防范的问题。
为了实现上述目的,本发明第一方面提供一种防止攻击方法,应用于记账节点,包括:
检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;
比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;
根据所述调用深度比较结果更新或重置所述调用深度,并向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约根据所述调用深度调用所述被调用智能合约,并在所述余额状态更新时执行资金发送。
进一步地,所述检测主调用智能合约的余额状态更新情况之后,在所述主调用智能合约的余额状态更新之前,还包括:
按照当前时间对应的时间戳确定所述主调用智能合约的有效时间戳参数;
基于所述有效时间戳参数和所述当前时间对应的时间戳生成有效时间戳参数见证消息;
在区块链网络中广播所述有效时间戳参数见证消息。
进一步地,所述检测被调用智能合约的调用深度之前,还包括:
为所述被调用智能合约设置栈深度标识;
初始化所述栈深度标识;
当所述被调用智能合约被调用时,更新所述栈深度标识;
将所述栈深度标识写入区块链网络的区块中。
进一步地,所述检测被调用智能合约的调用深度,包括:
获取所述被调用智能合约的所述栈深度标识;
根据所述栈深度标识确定所述被调用智能合约的所述调用深度。
进一步地,所述根据比较结果更新或重置所述调用深度,包括:
在所述调用深度小于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识,并将更新后的所述栈深度标识写入区块链网络的区块中;
在所述调用深度等于或大于所述调用深度阈值时,将所述被调用智能合约的所述栈深度标识重置为初始状态,并将重置后的所述栈深度标识写入区块链网络的区块中。
进一步地,所述在所述调用深度等于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识之后,还包括:
在区块链网络中广播调用深度告警消息。
为了实现上述目的,本发明第二方面提供一种防止攻击方法,应用于执行节点,包括:
获取被调用智能合约的调用深度;其中,所述调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,所述调用深度比较结果为比较所述记账节点检测获得的所述调用深度和预设的调用深度阈值获得的结果;
根据所述调用深度调用所述被调用智能合约;
接收所述记账节点发送的余额状态更新情况;其中,所述余额状态更新情况为所述记账节点通过检测获得的;
当所述余额状态更新时,执行主调用智能合约的资金发送。
进一步地,所述执行所述主调用智能合约的资金发送,包括:
接收所述记账节点在区块链网络中广播的有效时间戳参数见证消息;
从所述有效时间戳参数见证消息中提取有效时间戳参数;
根据所述有效时间戳参数计算转移金额;
基于所述转移金额执行所述主调用智能合约的资金发送。
为了实现上述目的,本发明第三方面提供一种防止攻击装置,应用于记账节点,包括:
检测模块,用于检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;
比较模块,用于比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;
更新模块,用于根据所述调用深度比较结果更新所述调用深度,以供所述主调用智能合约根据更新的所述调用深度调用所述被调用智能合约;
重置模块,用于根据所述调用深度比较结果重置所述调用深度,以供所述主调用智能合约根据重置的所述调用深度调用所述被调用智能合约;
发送模块,用于向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约在所述余额状态更新时执行资金发送。
为了实现上述目的,本发明第四方面提供一种防止攻击装置,应用于执行节点,包括:
获取模块,用于获取被调用智能合约的调用深度;其中,所述调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,所述调用深度比较结果为比较所述记账节点检测获得的所述调用深度和预设的调用深度阈值获得的结果;
调用模块,用于根据所述调用深度调用所述被调用智能合约;
接收模块,用于接收所述记账节点发送的余额状态更新情况;其中,所述余额状态更新情况为所述记账节点通过检测获得的;
执行模块,用于当所述余额状态更新时,执行主调用智能合约的资金发送。
本发明具有如下优点:
本发明提供的防止攻击方法,记账节点检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;比较调用深度和预设的调用深度阈值,获得调用深度比较结果;根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送,可以对智能合约的攻击行为进行较为全面的防范,从而保障区块链网络用户的资产安全。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。
图1为本发明第一实施例提供的一种防止攻击方法的流程图;
图2为本发明第二实施例提供的一种防止攻击方法的流程图;
图3为本发明第三实施例提供的一种防止攻击方法的流程图;
图4为本发明第四实施例提供的一种防止攻击方法的流程图;
图5为本发明第五实施例提供的一种防止攻击方法的流程图;
图6为本发明第六实施例提供的一种防止攻击装置的原理框图;
图7为本发明第七实施例提供的一种防止攻击装置的原理框图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明实施例提供的防止攻击方法及装置,考虑到针对智能合约的攻击类型众多,常见的包括重入攻击、时间戳依赖攻击和调用深度攻击等,这些攻击行为可能导致区块链网络用户的资产损失,降低区块链网络的安全性和可靠性。但是,目前防止智能合约攻击的方法一般只针对某一特定类型的攻击行为,缺乏对智能合约攻击的全方面的防范的问题,因此,提出一种新的防止攻击方法,可以对智能合约的攻击行为进行较为全面的防范,从而保障区块链网络用户的资产安全。
图1是本发明第一实施例提供的一种防止攻击方法的流程图,应用于记账节点。如图1所示,该防止攻击方法可包括如下步骤:
步骤S101,检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度。
其中,智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在区块链网络中,智能合约即为运行于区块链上的一段代码,如果智能合约的某个条款触发了执行条件,则代码就会自动执行以完成智能合约,从而可以节省人为沟通成本和监督成本。在实际使用过程中发现,有些功能往往无法通过一个智能合约完成,此时便需要利用智能合约之间的调用,通过智能合约的相互调用,可以实现更多功能的组合。在本实施例中,主调用智能合约为调用其他智能合约的调用方,被调用智能合约为被主调用智能合约调用的被调用方。可以理解的是,一个智能合约既可以是主调用智能合约,也可以是被调用智能合约,确定智能合约是主调用方还是被调用方需要结合具体的应用场景。
在区块链网络中,由于智能合约代码是人为编写的一段可执行代码,不可避免地存在由于编写不严谨等因素导致的漏洞,从而容易导致黑客利用智能合约的代码漏洞发起攻击。重入攻击即为攻击者利用智能合约可以调用其他外部合约的特性,在交易中通过恶意重复执行合约直到将合约账户资源消耗完的攻击方式。具体地,攻击者劫持外部调用,并在外部调用合约中植入恶意代码,从而迫使代码执行“重新进入”智能合约并再次执行资产转移操作,直到将合约账户的资产消耗完,从而给区块链网络用户造成经济损失。如,智能合约A为执行转账的智能合约,智能合约B为执行余额更新的智能合约,用户通过智能合约A发起转账请求,智能合约A调用智能合约B实现余额更新。当攻击者在智能合约B中植入一段“调用智能合约A”的代码时,智能合约A在完成第一次转账之后,为了获得调用结果,将按照智能合约B的要求再次调用智能合约A,进而再次执行转账操作,直到将智能合约A的Gas(Gas是一种执行费,用于补偿矿工为智能合约提供算力所需的计算资源)烧完或者将被害者的账户余额消耗完。因此,为防止重入攻击,在智能合约A执行资金发送之前,先获取余额更新情况,当余额更新完毕后方执行资金发送,否则采取等待措施,从而防止重复调用恶意代码并被不断消耗资金的情况。
另外,在调用智能合约时,需要遵循智能合约的调用深度限制。当超过调用深度限制时,即使满足调用逻辑,调用结果仍然是失败的。攻击者利用智能合约调用深度的限制,恶意调用智能合约,使得某些关键操作因达到调用深度阈值而无法执行,从而导致区块链网络用户的资产损失。如,以太坊EVM(虚拟机)将智能合约的调用深度限制为1024,即当调用深度小于1024时,可以正常执行智能合约的调用,当调用深度等于或大于1024时,无法执行调用操作。攻击者利用调用深度可以对区块链网络上的拍卖交易发起攻击,具体地,考虑到拍卖过程中存在多次竞价,而竞价需要调用出价智能合约,攻击者恶意刷新出价次数,当出价智能合约的调用次数达到1024时攻击者申请成交,但是由于出价智能合约达到调用深度阈值,无法执行支付操作,从而造成用户的财产损失。因此,在调用智能合约之前,先获取智能合约的调用深度,并根据调用深度进行调用操作,可以避免由于超过调用深度阈值无法调用导致的财产损失。
在一个实施方式中,在主调用智能合约执行本次资金发送之前,记账节点检测主调用智能合约的余额状态的更新情况;另外,记账节点还检测被调用智能合约的调用深度。
步骤S102,比较调用深度和预设的调用深度阈值,获得调用深度比较结果。
其中,调用深度阈值为预设的数值,可以根据业务需要或经验进行设置。
在一个实施方式中,记账节点将被调用智能合约的调用深度与预设的调用深度阈值作比较,获得调用深度比较结果。如,预设的调用深度阈值为cdthr。记账节点检测被调用智能合约的调用深度为cd1,比较cd1与cdthr的大小。当cd1<cdthr时,获得调用深度小于调用深度阈值的比较结果;当cd1≥cdthr时,获得调用深度大于或等于调用深度阈值的比较结果。
步骤S103,根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送。
为保障智能合约可以被顺利调用,需要根据调用深度比较结果更新其调用深度或者重置其调用深度。在本实施例中,当调用深度比较结果为调用深度小于调用深度阈值时,在主调用智能合约调用该被调用智能合约之后,将原有调用深度对应数值加一作为新的调用深度;当调用深度比较结果为调用深度大于或等于调用深度阈值时,先将原有调用深度进行初始化,获得初始化调用深度,主调用智能合约在初始化调用深度基础上调用被调用智能合约。
在一个实施方式中,对于被调用智能合约来说,如果调用深度小于调用深度阈值时,当主调用智能合约调用该被调用智能合约之后,被调用智能合约的调用深度增加了一次,记账节点将原有调用深度对应数值加一作为新的调用深度,并将新的调用深度写入区块链网络的区块中。经过多次调用之后,当智能合约的调用深度等于调用深度阈值时,本次调用过程正常进行,同时,记账节点在区块链网络中广播栈深度告警消息,向区块链网络的其他节点发出调用深度即将达到栈深度阈值的提示(其中,栈深度阈值减去调用深度阈值等于一),另外,记账节点将调用深度初始化为零,并将初始化的调用深度写入区块链网络的区块中。在下一次调用时,调用深度为初始化状态,其数值等于零,重新开始记录智能合约的调用深度,具体地,在该被调用智能合约被调用之后,记账节点将初始化调用深度对应数值加一作为新的调用深度(此时调用深度为1,表示调用深度被初始化之后,被调用智能合约只被调用了一次)。之后的调用过程中不断重复上述过程即可。
另外,记账节点还将主调用智能合约的余额状态更新情况发送至主调用智能合约的执行节点。当主调用智能合约的余额状态更新时,对应的执行节点执行主调用智能合约的资金发送操作;当主调用智能合约的余额状态没有更新时,对应的执行节点采取等待措施,以避免重复转账。
需要说明的是,在执行节点完成主调用智能合约的执行之后,记账节点将对应的执行数据写入区块链网络的区块中。
图2是本发明第二实施例提供的一种防止攻击方法的流程图,应用于记账节点,与本发明第一实施例基本相同,区别之处在于:在执行资金发送之前,在区块链网络中广播有效时间戳参数见证消息。如图2所示,该防止攻击方法可包括如下步骤:
步骤S201,检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度。
本实施例中的步骤S201与本发明第一实施例中步骤S101的内容相同,在此不再赘述。
步骤S202,按照当前时间对应的时间戳确定主调用智能合约的有效时间戳参数。
在区块链中,时间戳是由矿工生成的。智能合约不需要为了核心操作依赖于数据块的时间戳。太坊协议也提出了矿工处理一个新的区块时,如果新的区块的时间戳大于上一个区块,并且时间戳之差小于900秒,那么这个新区块的时间戳就是合法的。因此,攻击者利用这一特性可以针对智能合约发起时间依赖性攻击。如,存在一个抽奖合约,要求由当前的时间戳和其它可提前获知的变量计算出一个“幸运数”,与“幸运数”具有相同编码的参与者即将获得奖品。那么,矿工在挖矿过程中可以提前尝试不同的时间戳来计算好这个“幸运数”,从而将奖品送给自己想给的获奖者。针对时间依赖性攻击,可以在资金发送之前,先在区块链网络中广播关于时间戳的见证消息,以供执行节点按照见证消息中的时间戳相关信息执行资金发送操作。
在一个实施方式中,如果智能合约中包括关于时间戳的运算参数,记账节点检测主调用智能合约的余额状态更新情况,如果余额状态还没有更新,则记账节点按照当前时间对应的时间戳进行运算,从而确定时间戳参数,该时间戳参数即为有效时间戳参数。
步骤S203,基于有效时间戳参数和当前时间对应的时间戳生成有效时间戳参数见证消息。
在一个实施方式中,记账节点基于确定的有效时间戳参数和计算该有效时间戳参数对应的时间戳生成有效时间戳参数见证消息。
步骤S204,在区块链网络中广播有效时间戳参数见证消息。
在一个实施方式中,记账节点使用记账节点的私钥对有效时间戳参数见证消息进行签名,并将签名后的有效时间戳参数见证消息在区块链网络中广播,作为见证。当执行节点执行资金发送时,可以根据有效时间戳参数见证消息计算转账金额,并根据计算的转账金额执行资金发送操作。
步骤S205,比较调用深度和预设的调用深度阈值,获得调用深度比较结果。
本实施例中的步骤S205与本发明第一实施例中步骤S102的内容相同,在此不再赘述。
步骤S206,根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送。
本实施例中的步骤S206与本发明第一实施例中步骤S103的内容相同,在此不再赘述。
图3是本发明第三实施例提供的一种防止攻击方法的流程图,应用于记账节点,与本发明第一实施例基本相同,区别之处在于:为被调用智能合约设置栈深度标识。如图3所示,该防止攻击方法可包括如下步骤:
步骤S301,为被调用智能合约设置栈深度标识。
其中,栈深度标识为记录被调用智能合约调用深度或被调用次数的标识。
在一个实施方式中,记账节点为被调用智能合约设置对应的栈深度标识,从而可以根据栈深度标识获知被调用智能合约的调用深度/被调用次数。
步骤S302,初始化栈深度标识。
为智能合约设置栈深度标识之后,需要将栈深度标识进行初始化,以记录智能合约的调用深度或被调用次数。
在一个实施方式中,将刚设置的栈深度标识初始化为零,表示该被调用智能合约还未被调用过。
需要说明的是,在一些特殊情形中,栈深度标识可以被初始化为除零以外的其他数值。
步骤S303,当被调用智能合约被调用时,更新栈深度标识。
智能合约每次在被调用之后,均需要更新对应的栈深度标识,以准确记录智能合约的调用深度。
在一个实施方式中,当调用被调用智能合约时,被调用智能合约的调用深度或调用次数增加了一次,因此,将栈深度标识对应数值加一作为新的栈深度标识。
步骤S304,将栈深度标识写入区块链网络的区块中。
在一个实施方式中,记账节点将更新后的栈深度标识写入区块链网络的区块中,以供其他节点获知被调用智能合约的调用深度信息,并根据调用深度信息执行调用操作。
步骤S305,检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度。
本实施例中的步骤S305与本发明第一实施例中步骤S101的内容相同,在此不再赘述。
步骤S306,比较调用深度和预设的调用深度阈值,获得调用深度比较结果。
本实施例中的步骤S306与本发明第一实施例中步骤S102的内容相同,在此不再赘述。
步骤S307,根据调用深度比较结果更新或重置调用深度,并向主调用智能合约发送余额状态更新情况,以供主调用智能合约根据调用深度调用被调用智能合约,并在余额状态更新时执行资金发送。
本实施例中的步骤S307与本发明第一实施例中步骤S103的内容相同,在此不再赘述。
图4是本发明第四实施例提供的一种防止攻击方法的流程图,应用于执行节点。如图4所示,该防止攻击方法可包括如下步骤:
步骤S401,获取被调用智能合约的调用深度。
其中,调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,调用深度比较结果为比较记账节点检测获得的调用深度和预设的调用深度阈值获得的结果。
在区块链网络中,以太坊EVM会为智能合约设置调用深度限制,当超过调用深度限制时,即使满足调用逻辑,调用结果仍然是失败的。因此,在被调用智能合约被调用之前,先获取被调用智能合约的调用深度,以便根据调用深度执行后续的调用操作。
在一个实施方式中,记账节点为被调用智能合约设置栈深度标识,并在每次调用被调用智能合约之后,将栈深度标识更新或重置后写入区块链网络的区块中。执行节点从区块链网络的区块中提取被调用智能合约的栈深度标识,然后根据栈深度标识确定被调用智能合约的调用深度,然后基于调用深度执行相应的调用操作。
步骤S402,根据调用深度调用被调用智能合约。
在一个实施方式中,当调用深度小于调用深度阈值时,执行节点执行主调用智能合约调用该被调用智能合约的操作,并由记账节点更新被调用智能合约的调用深度;当调用深度等于调用深度阈值时,执行节点同样执行主调用智能合约调用该被调用智能合约的操作,同时,记账节点在区块链网络广播栈深度告警消息,并将调用深度重置为初始化状态,然后将重置后的调用深度写入区块链网络的区块中。在下一次调用过程中,执行节点调用被调用智能合约,在调用之后更新调用深度,并由记账节点将更新后的调用深度写入区块链网络的区块中。
在上述描述中,一旦调用深度达到调用深度阈值时,则将调用深度进行初始化,从而避免调用深度超过调用深度阈值而无法被有效调用。可以理解的是,在某些特殊情形中,如果检测到调用深度大于调用深度阈值时,可以直接对调用深度进行初始化操作,从而保障智能合约可以被顺利调用。
步骤S403,接收记账节点发送的余额状态更新情况。
其中,余额状态更新情况为记账节点通过检测获得的,余额状态更新情况包括余额状态已更新和余额状态未更新两种情况。
在一个实施方式中,记账节点检测主调用智能合约的余额状态更新情况,并将余额状态更新情况发送至执行节点。执行节点接收记账节点发送的余额状态更新情况。
可以理解的是,余额状态更新情况可以由记账节点通过广播消息的形式发送至执行节点,也可以由记账节点将余额状态更新情况与对应的检测时间点写入区块链网络的区块中,再由执行节点从区块链网络的区块中获取主调用智能合约的余额状态更新情况。
步骤S404,当余额状态更新时,执行主调用智能合约的资金发送。
当余额状态更新时,攻击者无法再利用更新余额状态来恶意重复执行资金发送。
在一个实施方式中,当执行节点确定余额状态更新时,即执行主调用智能合约的资金发送操作,将相应的金额的资金转移至对应的账户中。
图5是本发明第五实施例提供的一种防止攻击方法的流程图,应用于执行节点,是本发明第四实施例中步骤S404具体实施的描述。如图5所示,该防止攻击方法可包括如下步骤:
步骤S501,当余额状态更新时,接收记账节点在区块链网络中广播的有效时间戳参数见证消息。
其中,有效时间戳参数见证消息为记账节点基于有效时间戳参数和确定该有效时间戳参数对应的时间戳生成的消息。
有效时间戳参数见证消息为防止针对智能合约发起的时间依赖性攻击,在执行节点未执行资金发送之前,由记账节点在区块链网络中广播的、具有见证意义的消息,可以有效防止矿工在等待余额状态更新的时间内,提前利用不同的时间戳尝试计算有效时间戳参数,从而获取非法利益。
在一个实施方式中,执行节点接收经过记账节点私钥签名的有效时间戳参数见证消息,并利用记账节点的公钥对有效时间戳参数见证消息进行签名验证。
步骤S502,从有效时间戳参数见证消息中提取有效时间戳参数。
其中,有效时间戳参数是基于有效时间戳计算获得的时间戳参数。
在一个实施方式中,执行节点接收记账节点广播的有效时间戳参数见证消息后,并当有效时间戳参数见证消息通过签名验证后,从有效时间戳参数见证消息中提取有效时间戳参数。
步骤S503,根据有效时间戳参数计算转移金额。
在一个实施方式中,转移金额是关于有效时间戳参数的函数,通过有效时间戳参数可以计算出转移金额。
可以理解的是,转移金额可能还与除有效时间戳参数以外的其他参数相关,在这种情况下,需要通过有效时间戳参数和其他相关参数共同计算转移金额。
步骤S504,基于转移金额执行主调用智能合约的资金发送。
当转移金额确定后,执行节点按照转移金额通过主调用智能合约执行资金发送操作。
在一个实施方式中,执行节点确定转移金额之后,通过主调用智能合约将与转移金额等额的资金转移至对应账户中,从而实现资金发送。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
图6是本发明第六实施例提供的一种防止攻击装置的原理框图,应用于记账节点。如图6所示,该防止攻击装置包括:检测模块601、比较模块602、更新模块603、重置模块604和发送模块605。
检测模块601,用于检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度。
其中,智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在实际使用过程中发现,有些功能往往无法通过一个智能合约完成,此时便需要利用智能合约之间的调用,通过智能合约的相互调用,可以实现更多功能的组合。在本实施例中,主调用智能合约为调用其他智能合约的调用方,被调用智能合约为被主调用智能合约调用的被调用方。可以理解的是,一个智能合约既可以是主调用智能合约,也可以是被调用智能合约,确定智能合约是主调用方还是被调用方需要结合具体的应用场景。
在区块链网络中,由于智能合约代码是人为编写的一段可执行代码,不可避免地存在由于编写不严谨等因素导致的漏洞,从而容易导致黑客利用智能合约的代码漏洞发起攻击。重入攻击即为攻击者利用智能合约可以调用其他外部合约的特性,在交易中通过恶意重复执行合约直到将合约账户资源消耗完的攻击方式。具体地,攻击者劫持外部调用,并在外部调用合约中植入恶意代码,从而迫使代码执行“重新进入”智能合约并再次执行资产转移操作,直到将合约账户的资产消耗完,从而给区块链网络用户造成经济损失。因此,为防止重入攻击,在智能合约执行资金发送之前,先获取余额更新情况,当余额更新完毕后方执行资金发送,否则采取等待措施,从而防止重复调用恶意代码并被不断消耗资金的情况。
另外,在调用智能合约时,需要遵循智能合约的调用深度限制。当超过调用深度限制时,即使满足调用逻辑,调用结果仍然是失败的。攻击者利用智能合约调用深度的限制,恶意调用智能合约,使得某些关键操作因达到调用深度阈值而无法执行,从而导致区块链网络用户的资产损失。因此,在调用智能合约之前,先获取智能合约的调用深度,并根据调用深度进行调用操作,可以避免由于超过调用深度阈值无法调用导致的财产损失。
在一个实施方式中,在主调用智能合约执行本次资金发送之前,记账节点检测主调用智能合约的余额状态的更新情况;另外,记账节点还检测被调用智能合约的调用深度。
比较模块602,用于比较调用深度和预设的调用深度阈值,获得调用深度比较结果。
在一个实施方式中,记账节点将被调用智能合约的调用深度与预设的调用深度阈值作比较,获得调用深度比较结果。如果调用深度小于调用深度阈值时,获得调用深度小于调用深度阈值的比较结果;如果调用深度大于等于调用深度阈值时,获得调用深度大于或等于调用深度阈值的比较结果。
更新模块603,用于根据调用深度比较结果更新调用深度,以供主调用智能合约根据更新的调用深度调用被调用智能合约。
为保障智能合约可以被顺利调用,需要根据调用深度比较结果更新其调用深度或者重置其调用深度。在本实施例中,当调用深度比较结果为调用深度小于调用深度阈值时,在主调用智能合约调用该被调用智能合约之后,将原有调用深度对应数值加一作为新的调用深度;当调用深度比较结果为调用深度大于或等于调用深度阈值时,先将原有调用深度进行初始化,获得初始化调用深度,主调用智能合约在初始化调用深度基础上调用被调用智能合约。
在一个实施方式中,对于被调用智能合约来说,如果调用深度小于调用深度阈值时,当主调用智能合约调用该被调用智能合约之后,被调用智能合约的调用深度增加了一次,记账节点通过更新模块603将原有调用深度对应数值加一作为新的调用深度,并将新的调用深度写入区块链网络的区块中。
重置模块604,用于根据调用深度比较结果重置调用深度,以供主调用智能合约根据重置的调用深度调用被调用智能合约。
当智能合约被多次调用之后,智能合约的调用深度会一直更新,直到等于调用深度阈值,此时为保障智能合约可以被一直正常调用,需要重置智能合约的调用深度。
在一个实施方式中,当调用深度等于调用深度阈值时,本次调用过程正常进行,同时,记账节点在区块链网络中广播栈深度告警消息,向区块链网络的其他节点发出调用深度即将达到栈深度阈值的提示(其中,栈深度阈值减去调用深度阈值等于一),另外,记账节点通过重置模块604将调用深度初始化为零,并将初始化的调用深度写入区块链网络的区块中。在下一次调用时,调用深度为初始化状态,其数值等于零,记账节点重新开始记录智能合约的调用深度,具体地,在该被调用智能合约被调用之后,记账节点将初始化调用深度对应数值加一作为新的调用深度(此时调用深度为1,表示调用深度被初始化之后,被调用智能合约只被调用了一次)。
发送模块605,用于向主调用智能合约发送余额状态更新情况,以供主调用智能合约在余额状态更新时执行资金发送。
在一个实施方式中,记账节点通过发送模块605将主调用智能合约的余额状态更新情况发送至主调用智能合约的执行节点,以便执行节点根据余额状态更新情况执行资金发送操作。具体地,当主调用智能合约的余额状态更新时,对应的执行节点执行主调用智能合约的资金发送操作;当主调用智能合约的余额状态没有更新时,对应的执行节点采取等待措施,以避免重复转账。
图7是本发明第七实施例提供的一种防止攻击装置的原理框图,应用于执行节点。如图7所示,该防止攻击装置包括:获取模块701、调用模块702、接收模块703和执行模块704。
获取模块701,用于获取被调用智能合约的调用深度。
其中,调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,调用深度比较结果为比较记账节点检测获得的调用深度和预设的调用深度阈值获得的结果。
在区块链网络中,以太坊EVM会为智能合约设置调用深度限制,当超过调用深度限制时,即使满足调用逻辑,调用结果仍然是失败的。因此,在被调用智能合约被调用之前,先获取被调用智能合约的调用深度,以便根据调用深度执行后续的调用操作。
在一个实施方式中,记账节点为被调用智能合约设置栈深度标识,并在每次调用被调用智能合约之后,将栈深度标识更新或重置后写入区块链网络的区块中。执行节点通过获取模块701从区块链网络的区块中提取被调用智能合约的栈深度标识,然后根据栈深度标识确定被调用智能合约的调用深度,然后基于调用深度执行相应的调用操作。
调用模块702,用于根据调用深度调用被调用智能合约。
在一个实施方式中,当调用深度小于调用深度阈值时,执行节点通过调用模块702执行主调用智能合约调用该被调用智能合约的操作,并由记账节点更新被调用智能合约的调用深度;当调用深度等于调用深度阈值时,执行节点同样通过调用模块702执行主调用智能合约调用该被调用智能合约的操作,同时,记账节点在区块链网络广播栈深度告警消息,并将调用深度重置为初始化状态,然后将重置后的调用深度写入区块链网络的区块中。在下一次调用过程中,执行节点通过调用模块702调用被调用智能合约,并在调用之后更新调用深度,然后由记账节点将更新后的调用深度写入区块链网络的区块中。
接收模块703,用于接收记账节点发送的余额状态更新情况。
其中,余额状态更新情况为记账节点通过检测获得的,余额状态更新情况包括余额状态已更新和余额状态未更新两种情况。
在一个实施方式中,记账节点检测主调用智能合约的余额状态更新情况,并将余额状态更新情况发送至执行节点。执行节点通过接收模块703接收记账节点发送的余额状态更新情况。
可以理解的是,余额状态更新情况可以由记账节点通过广播消息的形式发送至执行节点,也可以由记账节点将余额状态更新情况与对应的检测时间点写入区块链网络的区块中,再由执行节点从区块链网络的区块中获取主调用智能合约的余额状态更新情况。
执行模块704,用于当余额状态更新时,执行主调用智能合约的资金发送。
当余额状态更新时,攻击者无法再利用更新余额状态来恶意重复执行资金发送。
在第一个实施方式中,当执行节点确定余额状态更新时,通过执行模块704执行主调用智能合约的资金发送操作,将相应的金额的资金转移至对应的账户中。
在第二个实施方式中,当主调用智能合约为涉及时间戳参数的智能合约时,需要根据有效时间戳参数执行资金发送。具体地,执行节点接收记账节点在区块链网络中广播的有效时间戳参数见证消息,并从有效时间戳参数见证消息中提取有效时间戳参数,然后根据有效时间戳参数计算转移金额,并由执行模块704基于转移金额执行主调用智能合约的资金发送。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (10)
1.一种防止攻击方法,应用于记账节点,其特征在于,包括:
检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;
比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;
根据所述调用深度比较结果更新或重置所述调用深度,并向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约根据所述调用深度调用所述被调用智能合约,并在所述余额状态更新时执行资金发送。
2.根据权利要求1所述的防止攻击方法,其特征在于,所述检测主调用智能合约的余额状态更新情况之后,在所述主调用智能合约的余额状态更新之前,还包括:
按照当前时间对应的时间戳确定所述主调用智能合约的有效时间戳参数;
基于所述有效时间戳参数和所述当前时间对应的时间戳生成有效时间戳参数见证消息;
在区块链网络中广播所述有效时间戳参数见证消息。
3.根据权利要求1所述的防止攻击方法,其特征在于,所述检测被调用智能合约的调用深度之前,还包括:
为所述被调用智能合约设置栈深度标识;
初始化所述栈深度标识;
当所述被调用智能合约被调用时,更新所述栈深度标识;
将所述栈深度标识写入区块链网络的区块中。
4.根据权利要求3所述的防止攻击方法,其特征在于,所述检测被调用智能合约的调用深度,包括:
获取所述被调用智能合约的所述栈深度标识;
根据所述栈深度标识确定所述被调用智能合约的所述调用深度。
5.根据权利要求4所述的防止攻击方法,其特征在于,所述根据比较结果更新或重置所述调用深度,包括:
在所述调用深度小于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识,并将更新后的所述栈深度标识写入区块链网络的区块中;
在所述调用深度等于或大于所述调用深度阈值时,将所述被调用智能合约的所述栈深度标识重置为初始状态,并将重置后的所述栈深度标识写入区块链网络的区块中。
6.根据权利要求5所述的防止攻击方法,其特征在于,所述在所述调用深度等于所述调用深度阈值时,更新所述被调用智能合约的所述栈深度标识之后,还包括:
在区块链网络中广播调用深度告警消息。
7.一种防止攻击方法,应用于执行节点,其特征在于,包括:
获取被调用智能合约的调用深度;其中,所述调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,所述调用深度比较结果为比较所述记账节点检测获得的所述调用深度和预设的调用深度阈值获得的结果;
根据所述调用深度调用所述被调用智能合约;
接收所述记账节点发送的余额状态更新情况;其中,所述余额状态更新情况为所述记账节点通过检测获得的;
当所述余额状态更新时,执行主调用智能合约的资金发送。
8.根据权利要求7所述的防止攻击方法,其特征在于,所述执行所述主调用智能合约的资金发送,包括:
接收所述记账节点在区块链网络中广播的有效时间戳参数见证消息;
从所述有效时间戳参数见证消息中提取有效时间戳参数;
根据所述有效时间戳参数计算转移金额;
基于所述转移金额执行所述主调用智能合约的资金发送。
9.一种防止攻击装置,应用于记账节点,其特征在于,包括:
检测模块,用于检测主调用智能合约的余额状态更新情况和被调用智能合约的调用深度;
比较模块,用于比较所述调用深度和预设的调用深度阈值,获得调用深度比较结果;
更新模块,用于根据所述调用深度比较结果更新所述调用深度,以供所述主调用智能合约根据更新的所述调用深度调用所述被调用智能合约;
重置模块,用于根据所述调用深度比较结果重置所述调用深度,以供所述主调用智能合约根据重置的所述调用深度调用所述被调用智能合约;
发送模块,用于向所述主调用智能合约发送所述余额状态更新情况,以供所述主调用智能合约在所述余额状态更新时执行资金发送。
10.一种防止攻击方法,应用于执行节点,其特征在于,包括:
获取模块,用于获取被调用智能合约的调用深度;其中,所述调用深度为根据调用深度比较结果对记账节点检测获得的调用深度进行更新或重置后获得的,所述调用深度比较结果为比较所述记账节点检测获得的所述调用深度和预设的调用深度阈值获得的结果;
调用模块,用于根据所述调用深度调用所述被调用智能合约;
接收模块,用于接收所述记账节点发送的余额状态更新情况;其中,所述余额状态更新情况为所述记账节点通过检测获得的;
执行模块,用于当所述余额状态更新时,执行主调用智能合约的资金发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456248.4A CN111628997B (zh) | 2020-05-26 | 2020-05-26 | 一种防止攻击方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456248.4A CN111628997B (zh) | 2020-05-26 | 2020-05-26 | 一种防止攻击方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111628997A true CN111628997A (zh) | 2020-09-04 |
CN111628997B CN111628997B (zh) | 2022-04-26 |
Family
ID=72260773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010456248.4A Active CN111628997B (zh) | 2020-05-26 | 2020-05-26 | 一种防止攻击方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111628997B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112330453A (zh) * | 2020-11-23 | 2021-02-05 | 杭州趣链科技有限公司 | 基于区块链的智能合约调用方法、装置、设备和存储介质 |
CN114422535A (zh) * | 2022-01-18 | 2022-04-29 | 网易(杭州)网络有限公司 | 区块链中部署合约的方法、装置、计算机设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4270801A (en) * | 1979-08-14 | 1981-06-02 | Cmi Corporation | Steering and cutter drum positioning in a paved roadway planing machine |
US20070011428A1 (en) * | 2005-06-08 | 2007-01-11 | Kurtz Robert G | System and method for auditing memory |
US20090055813A1 (en) * | 2007-08-21 | 2009-02-26 | Gad Haber | Method for Enabling Profile-Based Call Site Tailor-ing Using Profile Gathering of Cloned Functions |
US20150127512A1 (en) * | 2013-11-07 | 2015-05-07 | Chicago Mercantile Exchange Inc. | Transactionally Deterministic High Speed Financial Exchange Having Improved, Efficiency, Communication, Customization, Performance, Access, Trading Opportunities, Credit Controls, and Fault Tolerance |
US20160042180A1 (en) * | 2014-08-07 | 2016-02-11 | Ut Battelle, Llc | Behavior specification, finding main, and call graph visualizations |
US20170031874A1 (en) * | 2015-07-28 | 2017-02-02 | Wesley John Boudville | Blockchain and deep links for mobile apps |
CN107844294A (zh) * | 2017-11-17 | 2018-03-27 | 杭州秘猿科技有限公司 | 一种高可用的合约执行方法及系统 |
CN110737899A (zh) * | 2019-09-24 | 2020-01-31 | 暨南大学 | 一种基于机器学习的智能合约安全漏洞检测方法 |
-
2020
- 2020-05-26 CN CN202010456248.4A patent/CN111628997B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4270801A (en) * | 1979-08-14 | 1981-06-02 | Cmi Corporation | Steering and cutter drum positioning in a paved roadway planing machine |
US20070011428A1 (en) * | 2005-06-08 | 2007-01-11 | Kurtz Robert G | System and method for auditing memory |
US20090240909A1 (en) * | 2005-06-08 | 2009-09-24 | Raytheon Company | System and Method for Auditing Memory |
US20090055813A1 (en) * | 2007-08-21 | 2009-02-26 | Gad Haber | Method for Enabling Profile-Based Call Site Tailor-ing Using Profile Gathering of Cloned Functions |
US20150127512A1 (en) * | 2013-11-07 | 2015-05-07 | Chicago Mercantile Exchange Inc. | Transactionally Deterministic High Speed Financial Exchange Having Improved, Efficiency, Communication, Customization, Performance, Access, Trading Opportunities, Credit Controls, and Fault Tolerance |
US20160042180A1 (en) * | 2014-08-07 | 2016-02-11 | Ut Battelle, Llc | Behavior specification, finding main, and call graph visualizations |
US20170031874A1 (en) * | 2015-07-28 | 2017-02-02 | Wesley John Boudville | Blockchain and deep links for mobile apps |
CN107844294A (zh) * | 2017-11-17 | 2018-03-27 | 杭州秘猿科技有限公司 | 一种高可用的合约执行方法及系统 |
CN110737899A (zh) * | 2019-09-24 | 2020-01-31 | 暨南大学 | 一种基于机器学习的智能合约安全漏洞检测方法 |
Non-Patent Citations (2)
Title |
---|
JOANNA MOUBARAK ET AL: "On Blockchain Security and Relevant Attacks", 《2018 IEEE MIDDLE EAST AND NORTH AFRICA COMMUNICATIONS CONFERENCE (MENACOMM)》 * |
房卫东等: "区块链的网络安全:威胁与对策", 《信息安全学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112330453A (zh) * | 2020-11-23 | 2021-02-05 | 杭州趣链科技有限公司 | 基于区块链的智能合约调用方法、装置、设备和存储介质 |
CN112330453B (zh) * | 2020-11-23 | 2024-05-10 | 杭州趣链科技有限公司 | 基于区块链的智能合约调用方法、装置、设备和存储介质 |
CN114422535A (zh) * | 2022-01-18 | 2022-04-29 | 网易(杭州)网络有限公司 | 区块链中部署合约的方法、装置、计算机设备及存储介质 |
CN114422535B (zh) * | 2022-01-18 | 2024-04-09 | 网易(杭州)网络有限公司 | 区块链中部署合约的方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111628997B (zh) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101836B (zh) | 区块链网络的记账方法和系统 | |
CN109117250B (zh) | 一种模拟器识别方法、识别设备及计算机可读介质 | |
CN109086626B (zh) | 区块链网络的记账方法和系统 | |
CN111343142B (zh) | 一种基于区块链网络的数据处理方法、装置及存储介质 | |
CN108256353B (zh) | 一种数据完整性校验方法、装置及客户端 | |
CN110661658B (zh) | 一种区块链网络的节点管理方法、装置及计算机存储介质 | |
CN111523890B (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN109144665B (zh) | 一种模拟器识别方法、识别设备及计算机可读介质 | |
CN111628997B (zh) | 一种防止攻击方法及装置 | |
CN110690974B (zh) | 基于区块链的数据验证方法、装置、设备及可读存储介质 | |
CN111885050B (zh) | 基于区块链网络的数据存储方法、装置、相关设备及介质 | |
CN109062667B (zh) | 一种模拟器识别方法、识别设备及计算机可读介质 | |
JP2020505663A (ja) | リプレイ攻撃の検出のためのシステム及び方法 | |
WO2022073340A1 (zh) | 移动终端应用程序安全检测方法、系统、终端及存储介质 | |
CN109508562B (zh) | 基于tee的可信远程验证的方法 | |
CN111800262A (zh) | 数字资产的处理方法、装置和电子设备 | |
CN111258986A (zh) | 一种区块链的回滚方法 | |
CN111367923A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
US11574046B2 (en) | Protecting a software program against tampering | |
CN111260475A (zh) | 一种数据处理方法、区块链节点设备及存储介质 | |
CN109241783A (zh) | 移动终端管控策略的实施方法及装置 | |
CN115664669B (zh) | 金融设备认证方法、取款机、外接设备及存储介质 | |
CN110597557B (zh) | 一种系统信息获取方法、终端及介质 | |
CN110995756B (zh) | 调用服务的方法和装置 | |
CN112926956A (zh) | 一种区块链财务支付管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |