CN114358934A - 智能合约的校验方法和相关设备 - Google Patents

智能合约的校验方法和相关设备 Download PDF

Info

Publication number
CN114358934A
CN114358934A CN202111638006.8A CN202111638006A CN114358934A CN 114358934 A CN114358934 A CN 114358934A CN 202111638006 A CN202111638006 A CN 202111638006A CN 114358934 A CN114358934 A CN 114358934A
Authority
CN
China
Prior art keywords
intelligent contract
execution
contract
checking
intelligent
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.)
Pending
Application number
CN202111638006.8A
Other languages
English (en)
Inventor
张健
吴殿丞
刘爽
延安
董华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN202111638006.8A priority Critical patent/CN114358934A/zh
Publication of CN114358934A publication Critical patent/CN114358934A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种智能合约的校验方法和相关设备,该方法包括:获取区块链节点设备执行待部署的智能合约所需的执行参数、智能合约的执行体;对智能合约的逻辑代码进行校验;在逻辑代码的校验通过时,根据执行参数执行执行体得到实际执行结果;在实际执行结果与存储的预期执行结果匹配时,将智能合约部署于区块链节点设备。本发明中,通过区块链节点设备自动的对智能合约的逻辑代码进行审核,无需人工审核,提高了智能合约的校验效率;同时,区块链节点设备模拟运行态的智能合约,使得区块链节点设备能够预先获取智能合约部署后的执行结果,若是执行结果与预期执行结果匹配,即可确定部署后的智能合约不存在运行漏洞,进而保证了用户财产安全。

Description

智能合约的校验方法和相关设备
技术领域
本发明涉及区块链技术,尤其涉及一种智能合约的校验方法和相关设备。
背景技术
智能合约又称为智能合同,由事件驱动的、具有状态的、获得多方承认的、运行在区块链上的、且能够根据预设条件自动处理资产的程序,智能合约最大优势是利用程序算法替代人仲裁和执行合同,从而实现在没有第三方的情况下进行可信交易,并实现交易的可追踪和不可逆转。简单来说,智能合约就是传统合约的数字化版本。
本质上来说,智能合约是一段程序,它以计算机指令的方式实现了传统合约的自动化处理,它不仅仅是一个可以自动执行的计算机程序,也是一个***参与者,对接收到的信息进行回应,它既可以接收和储存价值,也可以对外发送信息和价值。可以说,智能合约是区块链技术能够实现去中心化、不可篡改、过程透明可追踪等特点的关键要素。
伴随着为区块链技术带来的便捷性和高拓展性,智能合约本身也带来了一定安全风险,截止目前已经发生过若干起因智能合约漏洞造成用户损失的案例。常见的智能合约漏洞有:
1、隐私泄露:智能合约对区块链上所有用户可见,包括但不限于标记为private的资源,存在隐私泄露风险。
2、交易溢出与异常:因智能合约本身约束条件造成的交易溢出与异常。
3、合约故障:由于智能合约代码中不合理的故障处理机制,导致合约执行异常。
4、拒绝服务:由于各种原因造成的拒绝服务风险。
以上智能合约漏洞的最大共同点是均涉及到智能合约代码的编写问题,即合约开发者由于编码安全意识不足或蓄意植入恶意代码,造成区块链用户损失。而常见的处理策略主要是对智能合约的代码进行人工代码审核和代码漏洞扫描工具审核,其中人工代码审核虽然可以对源码进行彻底排查,但效率较低,且极度依赖审核团队的专业素质,并且无法规避合约开发者蓄意上传带有恶意代码的智能合约执行体的情况;代码漏洞扫描工具虽然扫描速度快、扫描效率高,但也只是对源码进行扫描,无法对编译后的运行态智能合约进行扫描。
发明内容
本发明提供一种智能合约的校验方法和相关设备,旨在提高智能合约的校验效率且保证用户财产安全。
一方面,本发明提供一种智能合约的校验方法,应用于区块链节点设备,包括:
获取所述第一区块链节点设备执行待部署的第一智能合约所需的执行参数,以及获取所述第一智能合约的第一执行体;
对所述第一智能合约的逻辑代码进行校验;
在所述逻辑代码的校验通过时,根据所述执行参数执行所述第一执行体得到实际执行结果;
在所述实际执行结果与存储的预期执行结果匹配时,将所述第一智能合约部署于所述第一区块链节点设备。
在一实施例中,所述对所述第一智能合约的逻辑代码进行校验的步骤包括:
获取所述第一智能合约中的文件;
根据所述文件获取所述第一智能合约对应的逻辑代码;
对所述逻辑代码进行校验。
在一实施例中,所述根据所述文件获取所述第一智能合约对应的逻辑代码的步骤包括:
在各个所述文件中确定目标文件,所述目标文件是包含目录的文件;
在各个所述目标文件中获取合约文件,并获取所述合约文件的字节码;
对所述字节码进行翻译得到所述逻辑代码。
在一实施例中,所述对所述第一智能合约的逻辑代码进行校验的步骤包括:
获取预先配置的校验规则,并根据所述校验规则获取校验方式;
根据所述校验方式对所述第一智能合约的逻辑代码进行校验。
在一实施例中,所述获取第一区块链节点设备执行待部署的第一智能合约所需的执行参数的步骤之前,还包括:
获取业务需求;
根据所述业务需求配置所述校验规则以及所述执行参数。
在一实施例中,所述根据所述执行参数执行所述第一执行体得到实际执行结果的步骤包括:
在所述第一区块链节点设备中设置执行空间;
在所述执行空间中采用所述执行参数执行所述第一执行体得到所述实际执行结果;
清除所述执行空间。
在一实施例中,所述根据所述执行参数执行所述第一执行体得到实际执行结果的步骤包括:
在确定需要进行跨合约调用时,获取第二区块链节点设备部署的第二智能合约;
采用所述执行参数执行所述第二智能合约的第二执行体以及所述第一执行体,得到所述实际执行结果。
另一方面,本发明还提供一种区块链节点设备,包括:
获取模块,用于获取第一区块链节点设备执行待部署的第一智能合约所需的执行参数,以及获取所述第一智能合约的第一执行体;
校验模块,用于对所述第一智能合约的逻辑代码进行校验;
执行模块,用于在所述逻辑代码的校验通过时,根据所述执行参数执行所述第一执行体得到实际执行结果;
部署模块,用于在所述实际执行结果与存储的预期执行结果匹配时,将所述第一智能合约部署于所述第一区块链节点设备。
另一方面,本发明还提供一种区块链节点设备,包括:存储器以及处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如上所述的智能合约的校验方法。
另一方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的智能合约的校验方法。
本发明提供的智能合约的校验方法和相关设备,获取区块链节点设备执行待部署的智能合约所需的执行参数,且获取智能合约的执行体,对智能合约的逻辑代码进行校验,并在逻辑代码的校验通过时,采用执行参数执行智能合约的执行体得到实际执行结果,在实际执行结果与预期执行结果匹配时,将智能合约部署于区块链节点设备。本发明中,通过区块链节点设备自动的对智能合约的逻辑代码进行审核,无需人工审核,提高了智能合约的校验效率;同时,区块链节点设备模拟运行态的智能合约,使得区块链节点设备能够预先获取智能合约部署后的执行结果,若是执行结果与预期执行结果匹配,即可确定部署后的智能合约不存在运行漏洞,进而保证了用户财产安全,也即在提高智能合约的校验效率的提前下,保证了用户的财产安全。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明实现智能合约的校验方法的***构架图;
图2为本发明智能合约的校验方法第一实施例的流程示意图;
图3为本发明智能合约的校验方法第二实施例中步骤S20的细化流程示意图;
图4为本发明智能合约的校验方法第二实施例中步骤S20的细化流程示意图
图5为本发明智能合约的校验方法第三实施例中步骤S30的细化流程示意图;
图6为本发明区块链节点设备的模块示意图;
图7为本发明区块链节点设备的硬件结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本发明提供一种智能合约的校验方法,可以通过图1所示的***架构实现。区块链网络由多个区块链节点构成,每个区块链节点对应设置一个设备,该设备即为区块链节点设备。如图1所示,区块链网络包括区块链节点A、区块链节点B、区块链节点C以及区块链节点D。每个区块链节点具有对应的智能合约的上传入口,智能合约可以通过上传入口传输至区块链节点进行部署。每个区块链节点中设置有对应的智能合约的校验装置,且每个区块链节点中智能合约的校验装置通信连接。区块链网络设有共识机制。当区块链节点部署新的智能合约时,需先通过智能合约校验装置完成合约校验,校验通过后方可部署智能合约至区块链节点。而在智能合约完成部署后,在执行具体链上交易及共识(节点共识)时,由于该智能合约为经校验的充分可信任的智能合约,故无需再通过智能合约校验装置再次校验。部署的智能合约的来源分为两种情况,一种是智能合约开发者通过区块链节点的智能合约上传入口上传智能合约;另一种情况为区块链节点为完成区块链共识部署,获取来自于其他区块链节点的智能合约,也即各个区块链节点中的智能合约的校验装置可以将其所在的区块链节点所部署的智能合约,传输至其他区块链节点的智能合约的校验装置进行校验。
以下对本发明实施例出现的名词进行解释。
智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议,智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
合约校验标准:定义合约中应包含的所有类、函数以及其他自定义的规则设定,由合约管理者进行制定与维护。
合约执行体:一段计算机执行的程序,在区块链交易时触发,对接收的信息进行回应和处理。
预执行:模拟区块链交易,对该合约的执行结果进行记录。预执行和真正的智能合约执行的区别是,预执行会使用区块链初始化的一段账本空间来进行智能合约数据持久层操作,预执行验证过程中会记录全部数据持久层操作和执行结果,以供同参数配置器中配置的预执行参数比对,预执行结束后会清理供预执行使用的账本空间。
区块链节点:区块链节点指的是区块链网络中的计算设备,包括手机、矿机和服务器等,是一种能够提供分布式账本的所有功能或者部分功能的实体。
合约开发者:部署在区块链上的智能合约代码的开发者。
合约管理者:各区块链节点负责制订合约编写规范、管理合约部署的人员。
智能合约校验装置:用于自动校验智能合约合法性的装置。
参数配置器:对智能合约校验标准和预执行参数进行配置的装置。
合约检测器:通过静态检测方式校验智能合约执行体对应的代码的合规性的装置。
合约执行引擎:合约执行体在区块链中能够将合约字节码解释为机器指令以供区块链应用执行的装置。
字节码:字节码是一种包含执行程序的二进制文件,是一种高级语言和机器语言之间的中间码。
操作码:指计算机程序中所规定的要执行操作的那一部分指令或字段。
合约预执行器:通过预执行方式动态检测智能合约执行情况的装置。
结果校验器:对合约检测器和合约预执行器的执行结果进行分析生成校验结果的装置。
账本空间:区块链中用于记录账本数据的一段特定的存储空间。
静态检测:通过合约检测器对智能合约源码级别的扫描与检测,主要目的是检测智能合约的编写规范。
动态检测:通过合约预执行器对智能合约进行预执行,分析执行结果,判断智能合约能否正常执行。
现有技术中,智能合约的合法性校验方法主要有两种:
1、人工代码审核,目前最常见的智能合约合法性校验的方式是人工代码审核,主要审核的维度有:(1)函数可见性审核,包括敏感函数继承权限检测和函数调用权限检测;(2)合约限制绕过审核,包括使合约失效、删除地址字节码和将所有合约资金发送到一个目标地址;(3)调用栈耗尽审核,包括栈高度限制检测等;(4)拒绝服务审核,包括合约交易异常过多导致交易回滚造成合约拒绝服务的审核。
人工代码审核通常需要组建一支具备过硬专业技术实力和审核经验的审核团队,人工代码审核的有效性取决于审核团队的技术实力。
2、代码漏洞扫描工具审核,可利用一些代码漏洞扫描工具实现识别、跟踪和修复源代码中的安全缺陷。在通过源代码漏洞扫描工具进行扫描时,无需进行代码的编译构建,也不需要提供代码依赖的库,只需要上传源码便可进行漏洞扫描。开发者可根据扫描结果完成对源代码的修复。
通过人工代码审核进行智能合约的合法性校验,需要组织专业的智能合约审核团队,人力成本较高,而且人工代码审核极度依赖审核团队的专业素质,无法保证审核质量的统一。通过人工代码审核通常审核速度较慢,审核效率低。另外,无论是人工代码审核还是代码漏洞扫描工具审核,均需合约开发者或合约管理员上传智能合约源码,均需要人工操作,无法实现合约的自动审核,一定程度上降低了智能合约审核效率。
此外,无论是现有的人工代码审计还是代码漏洞扫描工具扫描,均是针对智能合约源码进行的审核,而非对运行态智能合约进行审核。但最终在区块链上部署执行的是编译后的合约的执行体,存在合约开发者蓄意上传与审计代码不符的带有恶意代码的智能合约的风险,而现有方案均无法规避该风险。
对此,本发明提出一种智能合约的校验方法,用以解决现有技术中存在的问题。下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
参照图2,图2为本发明智能合约的校验方法的第一实施例,智能合约的校验方法包括以下步骤:
步骤S10,获取第一区块链节点设备执行待部署的第一智能合约所需的执行参数,以及获取第一智能合约的第一执行体。
在本实施例中,执行主体是区块链节点设备,且将当前需要部署智能合约的区块链节点设备定义为第一区块链节点设备。为了便于描述,以下采用第一设备指代第一区块链节点设备。
智能合约可以通过第一设备的智能合约上传入口传输至第一设备,智能合约可以是从其他区块链节点设备传输至第一设备的。第一设备中部署有参数配置器,参数配置器是配置合约校验标准和合约预执行参数的装置,包括合约校验标准配置单元和合约预执行参数配置单元。合约预执行参数配置单元用于配置智能合约预执行过程中需要使用的参数和能够检验智能合约执行情况的参数,用来完成智能合约的预执行及智能合约预执行结果的判定。合约预执行参数配置单元用于配置智能合约预执行过程中需要使用的参数和能够检验智能合约执行情况的参数,用来完成智能合约的预执行及智能合约预执行结果的判定。第一设备可以从合约预执行参数配置单元获取预执行参数,预执行参数即为第一设备执行第一智能合约所需的执行参数,第一智能合约是第一设备上待部署的智能合约。执行参数包括:运行智能合约的必要入参、运行智能合约过程中的必要的数据持久层操作参数、运行智能合约的预期执行结果。
需要说明的是,各个区块链节点设备可针对各自节点应用的需求设置自身需要的预执行参数。因为不同节点的业务需求不同,智能合约在区块链节点设备A的操作为合法操作,智能合约在区块链节点设备B的操作为非法操作的情况。区块链节点设备B可设置自身需要的预执行参数来避免部署其他区块链节点设备上智能。可以理解的是,第一设备可以根据业务需求设置执行参数。
在本实施例中,需要对智能合约进行静态检测以及动态检测。静态检测即为对智能合约的逻辑代码进行检测,动态检测则是模拟智能合约的运行,且第一设备需要先进行静态检测,静态检测通过后,再进行动态检测。若是静态检测未通过,则无需进行动态检测,且智能合约无法部署在第一设备上。
动态检测通过执行智能合约的执行体模拟智能合约的运行。对此,第一设备需要从第一智能合约中获取执行体,该执行体定义为第一执行体。
步骤S20,对第一智能合约的逻辑代码进行校验。
第一设备先对第一智能合约进行静态检测。第一设备中设置有合约检测器,合约检测器用于获取第一智能合约的逻辑代码,并对逻辑代码进行合规性的校验。需要说明的是,静态检测实际上是对第一执行体的检测,也即对第一执行体的逻辑代码进行检测。
参数配置器中的合约校验标准配置单元配置的是智能合约校验的标准,是对合约开发者进行合约开发的一系列编码规范的标准要求,通常运行在某区块链上的全部智能合约需遵守一系列通用的编码规范要求。合约检测器通过在合约校验标准配置单元获取校验规则,通过校验规则对逻辑代码进行校验,以确定第一智能合约是否符合设置的校验标准。
步骤S30,在逻辑代码的校验通过时,根据执行参数执行第一执行体得到实际执行结果。
在逻辑代码的校验通过时,即可确定静态检测通过,第一设备可以进行动态检测,因而通过执行参数执行第一执行体从而得到实际执行结果。在第一执行体执行过程中,记录智能合约的所有数据持久层的操作参数以及返回参数,并将操作参数定义为实际操作参数,且将返回参数定义为实际返回参数,实际执行结果包括操作参数以及返回参数。
若是逻辑代码的校验未通过,则会输出智能合约的违规项,违规项通过不合符校验规则的逻辑代码确定。
步骤S40,在实际执行结果与存储的预期执行结果匹配时,将第一智能合约部署于第一区块链节点设备。
第一设备在得到实际执行结果后,将实际执行结果与存储的预期执行结果进行比对,以确定实际执行结果与预期执行结果是否匹配。预期执行结果存储在参数配置器中。具体的,预期执行结果包括预期返回参数以及数据持久层的预期操作参数。第一设备比对实际返回参数与预期返回参数,且比对实际操作参数与预期操作参数。若是实际返回参数与预期返回参数匹配,且实际操作参数与预期操作参数匹配,即可确定实际执行结果与预期执行结果匹配,第一智能合约校验成功,第一设备即可将第一智能合约进行部署。
在本实施例提供的技术方案中,获取区块链节点设备执行待部署的智能合约所需的执行参数,且获取智能合约的执行体,对智能合约的逻辑代码进行校验,并在逻辑代码的校验通过时,采用执行参数执行智能合约的执行体得到实际执行结果,在实际执行结果与预期执行结果匹配时,将智能合约部署于区块链节点设备。本发明中,通过区块链节点设备自动的对智能合约的逻辑代码进行审核,无需人工审核,提高了智能合约的校验效率;同时,区块链节点设备模拟运行态的智能合约,使得区块链节点设备能够预先获取智能合约部署后的执行结果,若是执行结果与预期执行结果匹配,即可确定部署后的智能合约不存在运行漏洞,进而保证了用户财产安全,也即在提高智能合约的校验效率的提前下,保证了用户的财产安全。
参照图3,图3为本发明智能合约的校验方法第二实施例,基于第一实施例,步骤S20包括:
步骤S21,获取第一智能合约中的文件。
步骤S22,根据文件获取第一智能合约对应的逻辑代码。
在本实施例中,第一设备获取智能合约中的文件,再通过文件获取第一智能合约对应的逻辑代码。具体的,第一设备在各个文件中确定包含目录的文件作为目标文件,并在目标文件中获取合约文件,且获取合约文件的字节码,再对字节码进行翻译得到逻辑代码。以下对逻辑代码的获取进行详细说明。
静态检测通过合约检测器进行检测,而合约检测器设有合约类解析单元。合约类解析单元通过合约执行体来读取智能合约中的所有的文件目录,作为一个枚举集合。枚举集合中包含纯目录文件及包含目录的文件,通过循环遍历的方式将纯目录文件排除,将包含目录的文件筛选出来,也即得到目标文件。依次从目标文件的目录中读取文件的信息,该信息即为文件的输入流。将输入流写入到本地文件中,即可得到智能合约的所有合约类文件,也即获得合约文件。
合约检测器设有合约类反编译单元,合约类反编译单元获取合约类解析单元中解析出来的具体的合约文件,通过合约文件中的字节码依据合约执行引擎对应的操作码将其翻译为合约源码,合约代码即为逻辑代码。
步骤S23,对逻辑代码进行校验。
在确定逻辑代码后,第一设备基于校验规则对逻辑代码进行校验。若所有的逻辑代码校验通过,静态检测即可通过。
在本实施例提供的技术方案中,第一设备获取第一智能合约中的文件,并根据文件获取第一智能合约对有的逻辑代码,从而对逻辑代码进行准确的校验。
参照图4,图4为本发明智能合约的校验方法第三实施例,基于第一或第二实施例,步骤S20包括:
步骤S24,获取预先配置的校验规则,并根据校验规则获取校验方式。
步骤S25,根据校验方式对第一智能合约的逻辑代码进行校验。
在本实施例中,第一设备获取校验规则,校验规则从参数配置器中获取。第一设备基于校验规则确定校验方式,从而通过校验方式对第一智能合约的逻辑代码进行校验。
具体的,合约检测器中还设有规则匹配校验单元,规则匹配校验单元按照参数配置器中配置的合约校验标准进行规则校验。规则匹配校验单元基于校验规则确定正则表达式及关键字检索的校验方式,进而通过正则表达式及关键字检索的校验方式去逐行校验所有逻辑代码。若是逻辑代码校验通过,静态检测即可通过。
需要说明的是,第一设备可以自身根据业务需求设置参数配置器中的校验规则以及执行参数,也即在步骤S10之前,第一设备获取业务需求,从而根据业务需求配置校验规则以及执行参数。
在本实施例提供的技术方案中,第一设备获取预先配置的校验规则,根据校验规则获取校验方式,再通过加盐方式准确的对逻辑代码进行校验。
参照图5,图5为本发明智能合约的校验方法第四实施例,基于第一至第三中任一实施例,步骤S30包括:
步骤S31,在第一区块链节点设备中设置执行空间。
在本实施例中,动态检测通过第一设备所设置的合约执行器执行。合约预执行器通过执行参数对合约的执行体进行预执行,并返回实际执行结果,从而验证智能合约是否能按照预期结果执行成功。合约预执行操作包括加载合约、读取报文、执行合约、流程追踪、比对执行结果、操作回滚等步骤。
第一设备会初始化一段账本空间以供合约预执行器执行执行体。也即第一设备在自身中设置执行空间(账本空间)。
步骤S32,在执行空间中采用执行参数执行第一执行体得到实际执行结果。
第一设备通过合约预执行器在执行空间采用执行参数执行第一执行体即可得到实际执行结果。
步骤S33,清除执行空间。
在得到实际执行结果后,第一设备再清除执行空间,也即删除执行空间。
需要说明的是,若是智能合约的校验不通过,则在第一设备上清理第一智能合约。静态检测未通过、或者静态检测通过但动态检测未通过,即可确定智能合约的校验不通过。
在本实施例提供的技术方案中,第一设备通过执行空间执行执行体,避免第一设备内的其他部件对执行体的执行产生影响,从而能够准确的进行确定智能合约的校验。
在一实施例中,步骤S30包括:
在确定需要进行跨合约调用时,获取第二区块链节点设备部署的第二智能合约;
采用执行参数执行第二智能合约的第二执行体以及第一执行体,得到实际执行结果。
在本实施例中,第一智能合约的执行,第一设备确定是否需要进行跨合约调用,若是需要进行跨合约调用时,第一设备则需要获取第二区块链节点设备部署的第二智能合约,第二智能合约即为需要调用的合约。第一设备恩采用执行参数执行第二智能合约的第二执行体以及第一执行体,得到实际执行结果,从而准确的确定第一智能合约部署后的运行是否存在运行漏洞。
以下对本发明的智能合约的校验方法进行简要说明。
1、合约管理者预先设定合约开发的准则,该准则是合约开发者在合约开发时需要去遵循的开发准则。否则,在校验时会发生不必要的错误,影响合约的审核通过。合约管理者在确定准则后将其录入参数配置器中。
2、合约开发者提供该合约的必要信息,如合约执行时的必要参数,包括但不限于请求报文、预期结果和合约执行时产生的数据持久层操作。
3、获取合约开发者提供的合约信息后,各区块链节点用户可通过参数配置器对该智能合约校验所需的参数进行配置,同时也可针对该合约特性对既定的开发准则进行新增、修改或删除。
4、完成上述配置流程后,开始对部署至区块链的合约执行体进行检测,检测主要包括两个步骤:静态检测、动态检测。首先进行静态检测,静态检测主要是针对代码内容级别的检测,由合约检测器进行处理。合约检测器通过正则匹配等方式验证代码是否符合合法合约的标准。
5、静态检测通过后,开始对智能合约进行动态检测。该步骤主要模拟的是合约执行时的场景,由合约预执行器进行处理。区别于真正的合约执行过程,预执行过程是在预先初始化的一段账本空间中进行,该账本空间在预执行结束后会被自动清理。在合约执行过程中,合约预执行器会对合约预执行结果及数据持久化操作进行记录。合约执行结束后,合约预执行器会依据参数配置器中配置的参数校验数据持久化操作及执行结果。
6、完成合约的静态检测和动态检测后,检测结果会传入结果校验器,由结果校验器判断该合约的合法性,并根据静态检测和动态检测的结果生成智能合约总体校验的结果。如该智能合约最终检测结果为不通过,则结果校验器会自动清理该智能合约,以防止该合约对区块链***造成损害。
相比于现有技术,本发明支持对智能合约执行体的直接扫描,避免合约开发者上传包含恶意代码的合约执行体对区块链造成破坏,能够明显提升区块链的安全性。
相比于现有技术,本发明支持多种方式组合进行合约校验,包括静态校验和动态校验,并可以根据不同校验方式产生的结果实时生成最终的校验结果,方便合约管理者及合约开发者查看合约校验情况。
相比于现有技术,本发明支持灵活配置校验规则。当智能合约的编写规范有变更时,可以随时调整校验规则。
相比于现有技术,本发明可对运行态智能合约进行自动扫描,在节约了智能合约审核人力成本的同时,节约了审核时间,提升了审核效率。
本发明还提供一种区块链节点设备,参照图6,区块链节点设备600包括:
获取模块610,用于获取第一区块链节点设备执行待部署的第一智能合约所需的执行参数,以及获取第一智能合约的第一执行体;
校验模块620,用于对第一智能合约的逻辑代码进行校验;
执行模块630,用于在逻辑代码的校验通过时,根据执行参数执行第一执行体得到实际执行结果;
部署模块640,用于在实际执行结果与存储的预期执行结果匹配时,将第一智能合约部署于第一区块链节点设备。
在一实施例中,区块链节点设备600包括:
获取模块610,用于获取第一智能合约中的文件;
获取模块610,用于根据文件获取第一智能合约对应的逻辑代码;
校验模块620,用于对逻辑代码进行校验。
在一实施例中,区块链节点设备600包括:
确定模块,用于在各个文件中确定目标文件,目标文件是包含目录的文件;
获取模块610,用于在各个目标文件中获取合约文件,并获取合约文件的字节码;
翻译模块,用于对字节码进行翻译得到逻辑代码。
在一实施例中,区块链节点设备600包括:
获取模块610,用于获取预先配置的校验规则,并根据校验规则获取校验方式;
校验模块620,用于根据校验方式对第一智能合约的逻辑代码进行校验。
在一实施例中,区块链节点设备600包括:
获取模块610,用于获取业务需求;
配置模块,用于根据业务需求配置校验规则以及执行参数。
在一实施例中,区块链节点设备600包括:
设置模块,用于在第一区块链节点设备中设置执行空间;
执行模块630,用于在执行空间中采用执行参数执行第一执行体得到实际执行结果;
清除执行空间。
在一实施例中,区块链节点设备600包括:
获取模块610,用于在确定需要进行跨合约调用时,获取第二区块链节点设备部署的第二智能合约;
执行模块630,用于采用执行参数执行第二智能合约的第二执行体以及第一执行体,得到实际执行结果。
图7是根据一示例性实施例示出的一种区块链节点设备的硬件结构图。
区块链节点设备700可以包括:处理器701,例如CPU,存储器702以及收发器703。本领域技术人员可以理解,图7中示出的结构并不构成对区块链节点设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器701可以调用存储器702内存储的计算机程序,以完成上述的智能合约的校验方法的全部或部分步骤。
收发器703用于接收外部设备发送的信息以及向外部设备发送信息。
一种非临时性计算机可读存储介质,当该存储介质中的指令由区块链节点设备的处理器执行时,使得区块链节点设备能够执行上述智能合约的校验方法。
一种计算机程序产品,包括计算机程序,当该计算机程序由区块链节点设备的处理器执行时,使得区块链节点设备能够执行上述智能合约的校验方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

Claims (10)

1.一种智能合约的校验方法,其特征在于,应用于第一区块链节点设备,包括:
获取所述第一区块链节点设备执行待部署的第一智能合约所需的执行参数,以及获取所述第一智能合约的第一执行体;
对所述第一智能合约的逻辑代码进行校验;
在所述逻辑代码的校验通过时,根据所述执行参数执行所述第一执行体得到实际执行结果;
在所述实际执行结果与存储的预期执行结果匹配时,将所述第一智能合约部署于所述第一区块链节点设备。
2.根据权利要求1所述的智能合约的校验方法,其特征在于,所述对所述第一智能合约的逻辑代码进行校验的步骤包括:
获取所述第一智能合约中的文件;
根据所述文件获取所述第一智能合约对应的逻辑代码;
对所述逻辑代码进行校验。
3.根据权利要求2所述的智能合约的校验方法,其特征在于,所述根据所述文件获取所述第一智能合约对应的逻辑代码的步骤包括:
在各个所述文件中确定目标文件,所述目标文件是包含目录的文件;
在各个所述目标文件中获取合约文件,并获取所述合约文件的字节码;
对所述字节码进行翻译得到所述逻辑代码。
4.根据权利要求1所述的智能合约的校验方法,其特征在于,所述对所述第一智能合约的逻辑代码进行校验的步骤包括:
获取预先配置的校验规则,并根据所述校验规则获取校验方式;
根据所述校验方式对所述第一智能合约的逻辑代码进行校验。
5.根据权利要求4所述的智能合约的校验方法,其特征在于,所述获取第一区块链节点设备执行待部署的第一智能合约所需的执行参数的步骤之前,还包括:
获取业务需求;
根据所述业务需求配置所述校验规则以及所述执行参数。
6.根据权利要求1-5任一项所述的智能合约的校验方法,其特征在于,所述根据所述执行参数执行所述第一执行体得到实际执行结果的步骤包括:
在所述第一区块链节点设备中设置执行空间;
在所述执行空间中采用所述执行参数执行所述第一执行体得到所述实际执行结果;
清除所述执行空间。
7.根据权利要求1-5任一项所述的智能合约的校验方法,其特征在于,所述根据所述执行参数执行所述第一执行体得到实际执行结果的步骤包括:
在确定需要进行跨合约调用时,获取第二区块链节点设备部署的第二智能合约;
采用所述执行参数执行所述第二智能合约的第二执行体以及所述第一执行体,得到所述实际执行结果。
8.一种区块链节点设备,其特征在于,包括:
获取模块,用于获取第一区块链节点设备执行待部署的第一智能合约所需的执行参数,以及获取所述第一智能合约的第一执行体;
校验模块,用于对所述第一智能合约的逻辑代码进行校验;
执行模块,用于在所述逻辑代码的校验通过时,根据所述执行参数执行所述第一执行体得到实际执行结果;
部署模块,用于在所述实际执行结果与存储的预期执行结果匹配时,将所述第一智能合约部署于所述第一区块链节点设备。
9.一种区块链节点设备,其特征在于,包括:存储器以及处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至7任一项所述的智能合约的校验方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的智能合约的校验方法。
CN202111638006.8A 2021-12-29 2021-12-29 智能合约的校验方法和相关设备 Pending CN114358934A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111638006.8A CN114358934A (zh) 2021-12-29 2021-12-29 智能合约的校验方法和相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111638006.8A CN114358934A (zh) 2021-12-29 2021-12-29 智能合约的校验方法和相关设备

Publications (1)

Publication Number Publication Date
CN114358934A true CN114358934A (zh) 2022-04-15

Family

ID=81103096

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111638006.8A Pending CN114358934A (zh) 2021-12-29 2021-12-29 智能合约的校验方法和相关设备

Country Status (1)

Country Link
CN (1) CN114358934A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024001929A1 (zh) * 2022-06-27 2024-01-04 中国人民银行数字货币研究所 智能合约漏洞检测方法、装置和设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024001929A1 (zh) * 2022-06-27 2024-01-04 中国人民银行数字货币研究所 智能合约漏洞检测方法、装置和设备

Similar Documents

Publication Publication Date Title
US11727121B2 (en) Method and system for neural network deployment in software security vulnerability testing
Linares-Vásquez et al. An empirical study on android-related vulnerabilities
US9128728B2 (en) Locating security vulnerabilities in source code
US11748487B2 (en) Detecting a potential security leak by a microservice
RU2018129947A (ru) Система компьютерной безопасности, основанная на искусственном интеллекте
US11550923B2 (en) Systems and/or methods for static-dynamic security testing using a test configurator to identify vulnerabilities and automatically repair defects
CN105760787B (zh) 用于检测随机存取存储器中的恶意代码的***及方法
WO2023035751A1 (zh) 移动端应用的智能混淆
Praitheeshan et al. Security evaluation of smart contract-based on-chain ethereum wallets
US11397812B2 (en) System and method for categorization of .NET applications
Cope Strong security starts with software development
Aidee et al. Vulnerability assessment on ethereum based smart contract applications
CN114358934A (zh) 智能合约的校验方法和相关设备
CN117081818A (zh) 基于智能合约防火墙的攻击交易识别与拦截方法及***
CN114282221B (zh) 注入类漏洞检测方法、***、终端及存储介质
Jain et al. Sniffdroid: Detection of inter-app privacy leaks in android
CN113779589B (zh) 一种安卓智能手机应用误配置检测方法
Olivieri et al. On-Chain Smart Contract Verification over Tendermint
Tiwari et al. Demand-driven Information Flow Analysis of WebView in Android Hybrid Apps
Li Boosting static security analysis of android apps through code instrumentation
Norouzi et al. The greed trap: Uncovering intrinsic ethereum honeypots through symbolic execution
Antonino et al. A refinement-based approach to safe smart contract deployment and evolution
Khan et al. Dynamic Analysis for the Detection of Locked Ether Smart Contracts
US11403371B2 (en) Device and method for bypassing analysis evasion technique, and recording medium for a program for performing the same
Zhu et al. Evaluating Ethereum Reentrancy Detection Tools via Mutation Testing

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