CN111028077B - 一种基于输入过滤器的智能合约防护方法及系统 - Google Patents
一种基于输入过滤器的智能合约防护方法及系统 Download PDFInfo
- Publication number
- CN111028077B CN111028077B CN201911141988.2A CN201911141988A CN111028077B CN 111028077 B CN111028077 B CN 111028077B CN 201911141988 A CN201911141988 A CN 201911141988A CN 111028077 B CN111028077 B CN 111028077B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- filter
- transaction
- contract
- defect
- 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.)
- Active
Links
Images
Classifications
-
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
Abstract
本发明公开了一种基于输入过滤器的智能合约防护方法,属于区块链领域,包括:第一用户发现并确定已部署且存在缺陷的目标智能合约后,获取缺陷信息,并生成相应的输入过滤器;第一用户将输入过滤器编码为过滤器智能合约后,将其发布到区块链网络中,以使得区块链节点将过滤器智能合约部署到区块链网络中,并建立过滤器智能合约与目标智能合约之间的关联;区块链节点接收到第二用户发送的、需要执行智能合约中缺陷函数的交易Tf后,利用与被调用的智能合约SCf相关联的过滤器智能合约对交易Tf的输入进行验证,验证输入合理之后,调用智能合约SCf执行交易Tf。本发明能够在保障智能合约可用性的情况下,针对多样化的智能合约缺陷提供全面的防护。
Description
技术领域
本发明属于区块链领域,更具体地,涉及一种基于输入过滤器的智能合约防护方法及系统。
背景技术
比特币和以太坊的成功,以及智能合约在区块链系统中的应用,使得区块链技术能够解决很多领域中存在的难题,如物联网中数据共享问题、数据交换的安全性问题、公钥基础设施中的中央证书授权者(CA)易受损问题等,因此区块链技术得到了广泛的关注。但智能合约由于与巨额数字资产挂钩,且开发人员对这种新型的编程模式以及合约生存环境(区块链网络及虚拟机执行环境)不熟悉,导致合约频繁遭受攻击,即使前期开发阶段经过严格测试,也难保已部署智能合约不存在缺陷。区块链智能合约一旦部署便无法修改,因此即使有缺陷也无法修复。
目前已有的针对已部署缺陷智能合约的解决方案有很多,例如用户可以选择销毁掉链上的缺陷合约,然后再开发一个新的合约,但是开发周期过长会降低合约可用性。又例如,用户可以使用合约更新模式,将智能合约分解为数据处理合约和业务逻辑合约,尽可能保证数据处理合约简单免于缺陷,并留下一个接口用于指向新的合约,当逻辑合约出现缺陷时,则开发部署一个新的合约,将原始缺陷合约中留下的接口指向新的合约完成更新,但是,此种更新模式无法解决数据处理合约出现缺陷的情况,而且开发新的足够安全的逻辑合约同样需要很长时间,影响智能合约的可用性。再例如,区块链社区也可以改进智能合约虚拟机执行环境,如对以太坊系统中的EVM进行插桩,实时监测交易运行状态,及时终止掉将要触发缺陷的交易,但是此种方法若针对多种缺陷进行插桩的话,会导致虚拟机体积急剧增加,执行开销过大,而且智能合约分布式执行的特点会加剧这种开销。
总的来说,现有的针对已部署的智能合约进行防护的方法,要么只能针对特定缺陷,要么严重影响到合约可用性,而由于智能合约缺陷多种多样,如重入缺陷、时间戳依赖缺陷、交易顺序依赖缺陷、未检查send输入返回值、访问控制不合理等,并且随着Dapp(去中心化分散式应用)分布领域越来越广,合约的可用性直接影响到Dapp在广大市场中的竞争力。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于输入过滤器的智能合约防护方法及系统,其目的在于,在保障智能合约可用性的情况下,针对多样化的智能合约缺陷提供全面的防护。
为实现上述目的,按照本发明的第一方面,提供了一种基于输入过滤器的智能合约防护方法,包括:
第一用户发现并确定已部署且存在缺陷的目标智能合约后,获取缺陷信息,并生成相应的输入过滤器,用于验证与该缺陷相关的交易输入是否合理;
第一用户将输入过滤器编码为过滤器智能合约后,将其发布到区块链网络中,以使得区块链节点将过滤器智能合约部署到区块链网络中,并建立过滤器智能合约与目标智能合约之间的关联;
区块链节点接收到第二用户发送的、需要执行智能合约中缺陷函数的交易Tf后,利用与被调用的智能合约SCf相关联的过滤器智能合约对交易Tf的输入进行验证,验证输入合理之后,调用智能合约SCf执行交易Tf;
其中,第一用户为目标智能合约的拥有者或者发布者,第二用户为任意的区块链用户。
本发明提供的基于输入过滤器的智能合约防护方法,针对特定的智能合约中的特定缺陷,生成用于验证与该缺陷相关的交易输入是否合理的输入过滤器,并以智能合约的形式将输入过滤器部署到区块链中,之后区块链节点接收到需要调用智能合约中缺陷函数的交易,即可能触发缺陷的交易之后,先利用相关联的输入过滤器对交易输入的合理性进行验证,验证输入合理之后,才会调用存在缺陷的智能合约执行该交易,从而能够有效拦截会触发缺陷的交易,实现对已部署智能合约的有效防护。
本发明提供的基于输入过滤器的智能合约防护方法,利用输入过滤器识别并拦截可能触发缺陷的交易,可用于对任意智能合约中任意缺陷的防护,因此,本发明能够针对多样化的智能合约缺陷提供全面的防护;在部署输入过滤器的过程中,无需终止智能合约的执行,并且由于智能合约的设计仅需考虑具体的缺陷,其开发周期较短,因此,本发明能够保证智能合约的可用性,尤其有助于Dapp保证用户体现效果,提高市场竞争力。总的来说,本发明能够在保障智能合约可用性的情况下,针对多样化的智能合约缺陷提供全面的防护。
进一步地,本发明第一方面提供的基于输入过滤器的智能合约防护方法,还包括:
(S1)区块链节点接收到第二用户发送的交易T后,获取与被调用的智能合约SC相关联的过滤器智能合约FSC,若获取成功,说明被调用的智能合约SC存在缺陷,则转入步骤(S2);否则,说明被调用的智能合约SC不存在缺陷,转入步骤(S4);
(S2)判断交易T要执行的函数与过滤器智能合约FSC所关联的缺陷入口点函数是否一致,若是,说明交易T所要执行的函数是智能合约SC所关联的缺陷函数,则转入步骤(S3);否则,说明交易T所要执行的函数不是缺陷函数,转入步骤(S4);
(S3)调用过滤器智能合约FSC执行交易T,以验证交易T的输入是否合理,若合理,则转入步骤(S4);否则,终止交易执行,交易结束;
(S4)调用智能合约SC执行交易T,交易结束。
通过上述步骤,本发明能够从任意交易中识别出可能触发缺陷的交易,并利用相关联的过滤器智能合约对这样的交易的输入合理性进行验证,并拒绝执行输入不合理的交易,从而在不修改原目标智能合约的情况下,间接地修补合约缺陷,完美地兼容智能合约一旦部署便无法修改的特性。
进一步地,缺陷信息包括:缺陷在合约中的入口点函数、缺陷类型以及缺陷触发条件。
进一步地,第一用户生成与缺陷信息相应的输入过滤器,包括:
利用缺陷类型和缺陷触发条件生成条件语句,用于判断是否触发缺陷,并将所生成的条件语句作为输入过滤器的函数体;
将缺陷在合约中的入口点函数的函数头作为输入过滤器的函数头。
进一步地,第一用户将过滤器智能合约发布到区块链网络中,以使得区块链节点将过滤器智能合约部署到区块链网络中,包括:
第一用户在客户端将目标智能合约的地址、过滤器智能合约、缺陷的入口点函数的签名,以及用于发布目标智能合约的交易序列号编码为过滤器合约部署交易,并将过滤器合约部署交易发送到区块链网络中预设的用于标志过滤器部署的地址;
区块链节点根据交易的接收者地址识别出过滤器合约部署交易后,对过滤器合约部署交易进行解析,并将解析得到的过滤器智能合约部署到区块链网络中。
进一步地,本发明第一方面提供的基于输入过滤器的智能合约防护方法,还包括:
区块链节点将解析得到的过滤器智能合约部署到区块链网络中之前,根据解析结果验证过过滤器智能合约的合法性,若验证合法,则将过滤器智能合约部署到区块链网络中;否则,拒绝执行过滤器智能合约部署交易。
进一步地,区块链节点验证过滤器智能合约的合法性,包括:
对第一用户的地址与用于发布目标智能合约的交易序列号进行哈希运算,得到参考地址;
将参考地址与目标智能合约的地址进行比对,若一致,则判定过滤器智能合约合法;否则,判定过滤器智能合约不合法。
进一步地,区块链节点建立过滤器智能合约与目标智能合约之间的关联,包括:
区块链节点在目标智能合约的账户结构中增加第一关联字段,并在第一关联字段中记录过滤器智能合约的地址;
同时,区块链节点在过滤器智能合约的账户结构中增加第二关联字段,并在第二关联字段中记录缺陷的入口点函数签名。
进一步地,步骤(S2)中,判断交易T要执行的函数与过滤器智能合约FSC中的缺陷入口点函数是否一致,包括:
从过滤器智能合约FSC的账户结构中获得第二关联字段,以获得过滤器智能合约FSC所针对的缺陷的入口点函数签名;
将交易T中记录的函数签名作比较,若一致,则判定交易T要执行的函数与过滤器智能合约FSC中的缺陷入口点函数一致;否则,判定交易T要执行的函数与过滤器智能合约FSC中的缺陷入口点函数不一致。
按照本发明的第二方面,提供了一种基于输入过滤器的智能合约防护系统,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储可执行程序:
处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的基于输入过滤器的智能合约防护方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明提供的基于输入过滤器的智能合约防护方法及系统,利用输入过滤器识别并拦截可能触发缺陷的交易,可用于对任意智能合约中任意缺陷的防护,因此,本发明能够针对多样化的智能合约缺陷提供全面的防护;在部署输入过滤器的过程中,无需终止智能合约的执行,并且由于智能合约的设计仅需考虑具体的缺陷,其开发周期较短,因此,本发明能够保证智能合约的可用性,尤其有助于Dapp保证用户体现效果,提高市场竞争力。总的来说,本发明能够在保障智能合约可用性的情况下,针对多样化的智能合约缺陷提供全面的防护。
(2)本发明提供的基于输入过滤器的智能合约防护方法及系统,通过对相关联的过滤器智能合约的获取以及缺陷函数的比对,能够从任意交易中识别出可能触发缺陷的交易,并利用相关联的过滤器智能合约对这样的交易的输入合理性进行验证,拒绝执行输入不合理的交易,从而在不修改原目标智能合约的情况下,间接地修补合约缺陷,完美地兼容智能合约一旦部署便无法修改的特性。
附图说明
图1为本发明实施例提供的基于输入过滤器的智能合约防护方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了在保障智能合约可用性的情况下,针对多样化的智能合约缺陷提供全面的防护,本发明提供的基于输入过滤器的智能合约防护方法,如图1所示,包括:
第一用户发现并确定已部署且存在缺陷的目标智能合约后,获取缺陷信息,并生成相应的输入过滤器,用于验证与该缺陷相关的交易输入是否合理;第一用户为目标智能合约的拥有者或者发布者,本发明所针对的,是智能合约所属者在监控维护已部署的合约时,先于其他恶意者发现合约存在缺陷后,在合约无法修改的情况下,挽救合约免于缺陷导致的攻击的情形;若合约缺陷被恶意者先于合约所属这发现并利用,那么所导致的损失无法挽回,因此,本发明并不考虑这种情形;获取目标智能合约中存在的缺陷后,可利用程序分析等技术获取具体的缺陷信息;
第一用户将输入过滤器编码为过滤器智能合约后,将其发布到区块链网络中,以使得区块链节点将过滤器智能合约部署到区块链网络中,并建立过滤器智能合约与目标智能合约之间的关联;
区块链节点接收到第二用户发送的、需要执行智能合约中缺陷函数的交易Tf后,利用与被调用的智能合约SCf相关联的过滤器智能合约对交易Tf的输入进行验证,验证输入合理之后,调用智能合约SCf执行交易Tf;第二用户为任意的区块链用户。
上述基于输入过滤器的智能合约防护方法,针对特定的智能合约中的特定缺陷,生成用于验证与该缺陷相关的交易输入是否合理的输入过滤器,并以智能合约的形式将输入过滤器部署到区块链中,之后区块链节点接收到需要调用智能合约中缺陷函数的交易,即可能触发缺陷的交易之后,先利用相关联的输入过滤器对交易输入的合理性进行验证,验证输入合理之后,才会调用存在缺陷的智能合约执行该交易,从而能够有效拦截会触发缺陷的交易,实现对已部署智能合约的有效防护。
上述基于输入过滤器的智能合约防护方法,利用输入过滤器识别并拦截可能触发缺陷的交易,可用于对任意智能合约中任意缺陷的防护,因此,能够针对多样化的智能合约缺陷提供全面的防护;在部署输入过滤器的过程中,无需终止智能合约的执行,并且由于智能合约的设计仅需考虑具体的缺陷,其开发周期较短,因此,能够保证智能合约的可用性,尤其有助于Dapp保证用户体现效果,提高市场竞争力。总的来说,上述基于输入过滤器的智能合约防护方法,能够在保障智能合约可用性的情况下,针对多样化的智能合约缺陷提供全面的防护。
在过滤器智能合约部署完成之后,为了利用过滤器智能合约实现防护,上述基于输入过滤器的智能合约防护方法,还可包括:
(S1)区块链节点接收到第二用户发送的交易T后,获取与被调用的智能合约SC相关联的过滤器智能合约FSC,若获取成功,说明被调用的智能合约SC存在缺陷,则转入步骤(S2);否则,说明被调用的智能合约SC不存在缺陷,转入步骤(S4);
(S2)判断交易T要执行的函数与过滤器智能合约FSC所关联的缺陷入口点函数是否一致,若是,说明交易T所要执行的函数是智能合约SC所关联的缺陷函数,则转入步骤(S3);否则,说明交易T所要执行的函数不是缺陷函数,转入步骤(S4);
(S3)调用过滤器智能合约FSC执行交易T,以验证交易T的输入是否合理,若合理,则转入步骤(S4);否则,终止交易执行,交易结束;
(S4)调用智能合约SC执行交易T,交易结束;
通过上述步骤,能够从任意交易中识别出可能触发缺陷的交易,并利用相关联的过滤器智能合约对这样的交易的输入合理性进行验证,并拒绝执行输入不合理的交易,从而在不修改原目标智能合约的情况下,间接地修补合约缺陷,完美地兼容智能合约一旦部署便无法修改的特性。
在一个可选的实施方式中,所获取的缺陷信息具体包括:缺陷在合约中的入口点函数、缺陷类型以及缺陷触发条件;
以上信息为构造相应的输入过滤器所需要的基本信息,应当说明的是,根据实际的交易特性、应用需求等,具体选取的用于构造输入过滤器的缺陷信息可在此基础上扩展,或者选取其他的缺陷信息;
基于所选取的上述缺陷信息,第一用户生成与缺陷信息相应的输入过滤器,包括:
利用缺陷类型和缺陷触发条件生成条件语句,用于判断是否触发缺陷,并将所生成的条件语句作为输入过滤器的函数体;条件语句的具体构造,可根据实际采用的编码语言确定,例如,可以是if-else语句、require表达式、assert表达式等;
将缺陷在合约中的入口点函数的函数头,即函数名及参数列表,作为输入过滤器的函数头;
确定了输入过滤器的函数体和函数头之后,相应的输入过滤器即构造完成。
在一个可选的实施方式中,第一用户将过滤器智能合约发布到区块链网络中,以使得区块链节点将过滤器智能合约部署到区块链网络中,包括:
第一用户在客户端将目标智能合约的地址、过滤器智能合约、缺陷的入口点函数的签名,以及用于发布目标智能合约的交易序列号编码为过滤器合约部署交易,并将过滤器合约部署交易发送到区块链网络中预设的用于标志过滤器部署的地址;
区块链节点根据交易的接收者地址识别出过滤器合约部署交易后,对过滤器合约部署交易进行解析,并将解析得到的过滤器智能合约部署到区块链网络中;
为了进一步保证安全性,上述基于输入过滤器的智能合约防护方法,还可包括:区块链节点将解析得到的过滤器智能合约部署到区块链网络中之前,根据解析结果(即目标智能合约的地址、过滤器智能合约、缺陷的入口点函数的签名,以及用于发布目标智能合约的交易序列号)验证过滤器智能合约的合法性,若验证合法,则将过滤器智能合约部署到区块链网络中;否则,拒绝执行过滤器智能合约部署交易;
上述过滤器合约部署交易实际上是一种特殊交易,上述过滤器智能合约的部署就是通过特殊交易完成的;由于该交易是发送到特定的接收者地址的,区块链节点接收到该交易后,通过地址解析即可识别出该交易为过滤器合约部署交易;应当说明的是,区块链节点在对过滤器合约部署交易进行解析,得到过滤器智能合约时候,是否需要验证过滤器智能合约的合法性,应根据实际的应用场景确定;
采用上述特殊交易实现过滤器智能合约的发布之后,区块链节点可通过验证过滤器合约的发布者是否是目标智能合约的拥有者,来验证过滤器智能合约的合法性,包括:
对第一用户的地址与用于发布目标智能合约的交易序列号进行哈希运算,得到参考地址;
将参考地址与目标智能合约的地址进行比对,若一致,则判定过滤器智能合约合法;否则,判定过滤器智能合约不合法;
应当说明的是,上述验证过滤器智能合约是否合法的方式,仅为一种可选的实施方式,不应理解为对本发明的唯一限定,其他可验证交易是否合法的方式,同样可应用于本发明。
在一个可选的实施方中,区块链节点部署过滤器智能合约之后,可通过在合约的账户结构中增加字段的方式建立过滤器智能合约与目标智能合约之间的关联,具体包括:
区块链节点在目标智能合约的账户结构中增加第一关联字段,并在第一关联字段中记录过滤器智能合约的地址;
同时,区块链节点在过滤器智能合约的账户结构中增加第二关联字段,并在第二关联字段中记录缺陷的入口点函数签名;
应当说明的是,上述通过增加关联字段在智能合约之间建立关联的方式,仅为一种示例性描述,不应理解为对本发明的唯一限定,其他用于建立关联的方式,如建立映射表等方式,同样可以用于本发明;
相应地,步骤(S1)中,获取与被调用的智能合约SC相关联的过滤器智能合约FSC,可通过查找智能合约SC的账户结构中是否存在第一关联字段,若存在,则说明存在与智能合约SC相关联的过滤器智能合约,根据第一关联字段中记录的地址即可获得相关联的过滤器智能合约FSC;若不存在,则说明不存与智能合约SC相关联的过滤器智能合约;
在获取到与智能合约SC相关联的过滤器智能合约FSC之后,步骤(S2)中,判断交易T要执行的函数与过滤器智能合约FSC中的缺陷入口点函数是否一致,包括:
从过滤器智能合约FSC的账户结构中获得第二关联字段,以获得过滤器智能合约FSC所针对的缺陷的入口点函数签名;
将交易T中记录的函数签名作比较,若一致,则判定交易T要执行的函数与过滤器智能合约FSC中的缺陷入口点函数一致;否则,判定交易T要执行的函数与过滤器智能合约FSC中的缺陷入口点函数不一致。
本发明还提供了一种基于输入过滤器的智能合约防护系统,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储可执行程序:
处理器用于读取计算机可读存储介质中存储的可执行程序,执行上述基于输入过滤器的智能合约防护方法。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于输入过滤器的智能合约防护方法,其特征在于,包括:
第一用户发现并确定已部署且存在缺陷的目标智能合约后,获取缺陷信息,并生成相应的输入过滤器,用于验证与该缺陷相关的交易输入是否合理;
所述第一用户将所述输入过滤器编码为过滤器智能合约后,将其发布到区块链网络中,以使得区块链节点将所述过滤器智能合约部署到所述区块链网络中,并建立所述过滤器智能合约与所述目标智能合约之间的关联;
区块链节点接收到第二用户发送的、需要执行智能合约中缺陷函数的交易Tf后,利用与被调用的智能合约SCf相关联的过滤器智能合约对交易Tf的输入进行验证,验证输入合理之后,调用智能合约SCf执行所述交易Tf;
其中,所述第一用户为所述目标智能合约的拥有者或者发布者,所述第二用户为任意的区块链用户。
2.如权利要求1所述的基于输入过滤器的智能合约防护方法,其特征在于,还包括:
(S1)区块链节点接收到第二用户发送的交易T后,获取与被调用的智能合约SC相关联的过滤器智能合约FSC,若获取成功,则转入步骤(S2);否则,转入步骤(S4);
(S2)判断所述交易T要执行的函数与所述过滤器智能合约FSC所关联的缺陷入口点函数是否一致,若是,则转入步骤(S3);否则,转入步骤(S4);
(S3)调用所述过滤器智能合约FSC执行所述交易T,以验证所述交易T的输入是否合理,若合理,则转入步骤(S4);否则,终止交易执行,交易结束;
(S4)调用所述智能合约SC执行所述交易T,交易结束。
3.如权利要求1或2所述的基于输入过滤器的智能合约防护方法,其特征在于,所述缺陷信息包括:缺陷在合约中的入口点函数、缺陷类型以及缺陷触发条件。
4.如权利要求3所述的基于输入过滤器的智能合约防护方法,其特征在于,所述第一用户生成与缺陷信息相应的输入过滤器,包括:
利用缺陷类型和缺陷触发条件生成条件语句,用于判断是否触发缺陷,并将所生成的条件语句作为所述输入过滤器的函数体;
将缺陷在合约中的入口点函数的函数头作为所述输入过滤器的函数头。
5.如权利要求1或2所述的基于输入过滤器的智能合约防护方法,其特征在于,所述第一用户将所述过滤器智能合约发布到区块链网络中,以使得区块链节点将所述过滤器智能合约部署到所述区块链网络中,包括:
所述第一用户在客户端将所述目标智能合约的地址、所述过滤器智能合约、缺陷的入口点函数的签名,以及用于发布所述目标智能合约的交易序列号编码为过滤器合约部署交易,并将所述过滤器合约部署交易发送到区块链网络中预设的用于标志过滤器部署的地址;
区块链节点根据交易的接收者地址识别出所述过滤器合约部署交易后,对所述过滤器合约部署交易进行解析,并将解析得到的过滤器智能合约部署到所述区块链网络中。
6.如权利要求5所述的基于输入过滤器的智能合约防护方法,其特征在于,还包括:
区块链节点将解析得到的过滤器智能合约部署到所述区块链网络中之前,根据解析结果验证所述过滤器智能合约的合法性,若验证合法,则将所述过滤器智能合约部署到所述区块链网络中;否则,拒绝执行所述过滤器智能合约部署交易。
7.如权利要求6所述的基于输入过滤器的智能合约防护方法,其特征在于,区块链节点验证所述过滤器智能合约的合法性,包括:
对所述第一用户的地址与用于发布所述目标智能合约的交易序列号进行哈希运算,得到参考地址;
将所述参考地址与所述目标智能合约的地址进行比对,若一致,则判定所述过滤器智能合约合法;否则,判定所述过滤器智能合约不合法。
8.如权利要求2所述的基于输入过滤器的智能合约防护方法,其特征在于,区块链节点建立所述过滤器智能合约与所述目标智能合约之间的关联,包括:
区块链节点在所述目标智能合约的账户结构中增加第一关联字段,并在所述第一关联字段中记录所述过滤器智能合约的地址;
同时,区块链节点在所述过滤器智能合约的账户结构中增加第二关联字段,并在所述第二关联字段中记录缺陷的入口点函数签名。
9.如权利要求8所述的基于输入过滤器的智能合约防护方法,其特征在于,所述步骤(S2)中,判断所述交易T要执行的函数与所述过滤器智能合约FSC中的缺陷入口点函数是否一致,包括:
从所述过滤器智能合约FSC的账户结构中获得第二关联字段,以获得所述过滤器智能合约FSC所针对的缺陷的入口点函数签名;
将所述交易T中记录的函数签名作比较,若一致,则判定所述交易T要执行的函数与所述过滤器智能合约FSC中的缺陷入口点函数一致;否则,判定所述交易T要执行的函数与所述过滤器智能合约FSC中的缺陷入口点函数不一致。
10.一种基于输入过滤器的智能合约防护系统,包括计算机可读存储介质和处理器,其特征在于,所述计算机可读存储介质用于存储可执行程序:
所述处理器用于读取所述计算机可读存储介质中存储的可执行程序,执行权利要求1-9任一项所述的基于输入过滤器的智能合约防护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911141988.2A CN111028077B (zh) | 2019-11-20 | 2019-11-20 | 一种基于输入过滤器的智能合约防护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911141988.2A CN111028077B (zh) | 2019-11-20 | 2019-11-20 | 一种基于输入过滤器的智能合约防护方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111028077A CN111028077A (zh) | 2020-04-17 |
CN111028077B true CN111028077B (zh) | 2023-04-11 |
Family
ID=70201778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911141988.2A Active CN111028077B (zh) | 2019-11-20 | 2019-11-20 | 一种基于输入过滤器的智能合约防护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111028077B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111598574A (zh) * | 2020-05-12 | 2020-08-28 | 江苏大学 | 面向智能服务交易的监管方法及监管接口 |
CN112085600A (zh) * | 2020-09-04 | 2020-12-15 | 芜湖明轩科技有限公司 | 区块链智能合约方法、电子设备、计算机可读存储介质及区块链系统 |
CN112560114B (zh) * | 2021-02-22 | 2022-01-11 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107342858A (zh) * | 2017-07-05 | 2017-11-10 | 武汉凤链科技有限公司 | 一种基于可信环境的智能合约保护方法和系统 |
CN108596613A (zh) * | 2018-03-22 | 2018-09-28 | 深圳市网心科技有限公司 | 区块链交易处理方法、装置及存储介质 |
KR101947760B1 (ko) * | 2018-09-04 | 2019-02-13 | 김종현 | 스마트콘트랙트의 보안 인증 서버 |
EP3477569A1 (en) * | 2017-10-30 | 2019-05-01 | NEC Laboratories Europe GmbH | Method and system for securing smart contracts in blockchains |
CN110097467A (zh) * | 2019-05-05 | 2019-08-06 | 华中科技大学 | 一种针对智能合约安全性和稳定性的侧链测试方法 |
CN110443075A (zh) * | 2019-08-05 | 2019-11-12 | 中国工商银行股份有限公司 | 一种区块链智能合约验证部署的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019169401A1 (en) * | 2018-03-02 | 2019-09-06 | BlockSafe Technologies, Inc. | Systems and methods for controlling access to a blockchain |
-
2019
- 2019-11-20 CN CN201911141988.2A patent/CN111028077B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107342858A (zh) * | 2017-07-05 | 2017-11-10 | 武汉凤链科技有限公司 | 一种基于可信环境的智能合约保护方法和系统 |
EP3477569A1 (en) * | 2017-10-30 | 2019-05-01 | NEC Laboratories Europe GmbH | Method and system for securing smart contracts in blockchains |
CN108596613A (zh) * | 2018-03-22 | 2018-09-28 | 深圳市网心科技有限公司 | 区块链交易处理方法、装置及存储介质 |
KR101947760B1 (ko) * | 2018-09-04 | 2019-02-13 | 김종현 | 스마트콘트랙트의 보안 인증 서버 |
CN110097467A (zh) * | 2019-05-05 | 2019-08-06 | 华中科技大学 | 一种针对智能合约安全性和稳定性的侧链测试方法 |
CN110443075A (zh) * | 2019-08-05 | 2019-11-12 | 中国工商银行股份有限公司 | 一种区块链智能合约验证部署的方法及装置 |
Non-Patent Citations (2)
Title |
---|
高枫 ; .区块链智能合约漏洞 修复困难.计算机与网络.2018,(12),全文. * |
黄洁华 ; 高灵超 ; 许玉壮 ; 白晓敏 ; 胡凯 ; .众筹区块链上的智能合约设计.信息安全研究.2017,(03),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111028077A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7411011B2 (ja) | セキュアな投票及び配布に利用されるブロックチェーンが実装された計数システム及び方法 | |
US10862870B2 (en) | Privacy as a service by offloading user identification and network protection to a third party | |
JP7019697B2 (ja) | ブロックチェーン上の動的アクセス制御 | |
CN111028077B (zh) | 一种基于输入过滤器的智能合约防护方法及系统 | |
JP2023100981A (ja) | ブロックチェーンスクリプトにおける制御フロー | |
CN104426906A (zh) | 识别计算机网络内的恶意设备 | |
CN101872400B (zh) | 建立根据计算系统操作请求关联关系判断计算机操作请求安全性的计算机信息安全防护方法 | |
CN113986459A (zh) | 一种容器访问的控制方法、系统、电子设备及存储介质 | |
CN109543457B (zh) | 管控智能合约之间调用的方法及装置 | |
CN107463839A (zh) | 一种管理应用程序的系统和方法 | |
US11588646B2 (en) | Identity-based application and file verification | |
CN112651039A (zh) | 一种融合业务场景的电力数据差异化脱敏方法及装置 | |
CN109165509B (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
CN111177171A (zh) | 基于区块链的业务数据认证与管理方法及系统 | |
CN105653932A (zh) | 软件升级验证的方法和装置 | |
CN114358934A (zh) | 智能合约的校验方法和相关设备 | |
CN112766971A (zh) | 在区块链中发送交易和执行交易的方法和装置 | |
CN113469811A (zh) | 区块链交易处理方法及装置 | |
CN104598821A (zh) | 一种用于计算机病毒、木马、黑客通用防控方法及装置 | |
CN112053243B (zh) | 一种区块链中智能合约升级的方法及装置 | |
CN117131515B (zh) | 一种应用请求执行方法、装置、计算机设备和存储介质 | |
US20230281321A1 (en) | Secure application development using distributed ledgers | |
CN112765588B (zh) | 一种身份识别方法、装置、电子设备及存储介质 | |
CN116150770A (zh) | 区块链的合约漏洞检测方法、装置和设备 | |
CN117009931A (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 |